*todo.txt*      For Vim version 8.2.  Last change: 2019 Dec 11


		  VIM REFERENCE MANUAL	  by Bram Moolenaar


			      TODO list for Vim		*todo*

This is a veeeery long list of known bugs, current work and desired
improvements.  To make it a little bit accessible, the older items are grouped
by subject.  In the first column of the line a classification is used to be
able to look for "the next thing to do":

Priority classification:
9   next point release
8   next release
7   as soon as possible
6   soon
5   should be included
4   nice to have
3   consider including
2   maybe not
1   probably not
-   unclassified

						    *votes-for-changes*
See |develop.txt| for development plans.  You can vote for which items should
be worked on, but only if you sponsor Vim development.  See |sponsor|.

Issues can also be entered online: https://github.com/vim/vim/issues
Only use this for bug reports, not for questions!  Those belong on the
maillist.  Updates will be forwarded to the |vim_dev| maillist.  Issues
entered there will not be repeated below, unless there is extra information.

The #1234 numbers refer to an issue or pull request on github.  To see it in a
browser use: https://github.com/vim/vim/issues/1234
(replace 1234 with the issue/pull number)
							*known-bugs*
-------------------- Known bugs and current work -----------------------

Popup windows:
- Use popup (or popup menu) for command line completion
- Implement flip option
- Make redrawing more efficient and avoid flicker:
    - put popup menu also in popup_mask?
- Any other commands to disable in a popup window?
  Use ERROR_IF_POPUP_WINDOW for these.
- Figure out the size and position better if wrapping inserts indent

Text properties:
- Implement prop_find() issue #4970
- Text properties spanning more than one line
- See remarks at top of src/textprop.c

'incsearch' with :s:
- :s/foo  using CTRL-G moves to another line, should not happen, or use the
  correct line (it uses the last but one line) (Lifepillar, Aug 18, #3345)
- :s@pat/tern@ doesn't include "/" in the pattern. (Takahiro Yoshihara, #3637)
   pass delim to do_search() ?
- Also support range: :/foo/,/bar/delete
- Also support for user command, e.g. Cfilter
- :%s/foo should take the first match below the cursor line, unless there
  isn't one?
  Then :%s?foo should take the first match above the cursor line.

Prompt buffer:
- Add a command line history, using up/down keys.  issue #5010
- delay next prompt until plugin gives OK?
- add prompt_addtext({buf}, {expr})	none	add text to a prompt buffer

Terminal debugger:
- Make prompt-buffer variant work better.
- Add option to not open the program window.  It's not used when attaching to
  an already running program. (M. Kelly)
- When only gdb window exists, on "quit" edit another buffer.
- Use a sign group
- Termdebug does not work when Vim was build with mzscheme: gdb hangs just
  after "run".  Everything else works, including communication channel.  Not
  initializing mzscheme avoid the problem, thus it's not some #ifdef.
- Add support for lldb?  issue #3565
- Could we do something similar for debugging Vim scripts?  At least see the
  script while stepping through it.  Simple version would use an extra window.
  More complete solution would actually run Vim in a Terminal and control it
  with another Vim instance.

Terminal emulator window:
- When the job in the terminal doesn't use mouse events, let the scroll wheel
  scroll the scrollback, like a terminal does at the shell prompt. #2490
  And use modeless selection.  #2962
- When Vim runs in the terminal and changes the title, the statusline needs to
  be redrawn.
- GUI: When using ":set go+=!" a system() call causes the hit-enter prompt.
  (#3327)
- GUI: hang until key typed. (#3530)
- Allow for specifying the directory, with ++cwd={dir}.
- With a vertical split only one window is updated. (Linwei, 2018 Jun 2,
  #2977)
- When pasting should call vterm_keyboard_start_paste(), e.g. when using
  K_MIDDLEMOUSE, calling insert_reg().
- Users expect parsing the :term argument like a shell does, also support
  single quotes.  E.g. with:  :term grep 'alice says "hello"'  (#1999)
- Win32: Redirecting input does not work, half of Test_terminal_redir_file()
  is disabled.
- Win32: Redirecting output works but includes escape sequences.
- Win32: Make terminal used for :!cmd in the GUI work better.  Allow for
  redirection.
- When the job only outputs lines, we could handle resizing the terminal
  better: store lines separated by line breaks, instead of screen lines,
  then when the window is resized redraw those lines.
- Redrawing is slow with Athena and Motif. (Ramel Eshed)
- For the GUI fill termios with default values, perhaps like pangoterm:
  http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134
- When 'encoding' is not utf-8, or the job is using another encoding, setup
  conversions.

Error numbers available:
E290, E292, E362, E366, E450, E451, E452,
E453, E454, E460, E489, E491, E565, E578, E610, E611, E653,
E654, E856, E857, E860, E861, E863, E889, E900

Patch to move duplicated code to a function. (Yegappan Lakshmanan, #5330)

Patch to use more FOR_ALL_ macros and use them. (Yegappan Lakshmanan, #5339)

Running test_gui and test_gui_init with Motif sometimes kills the window
manager.  Problem with Motif? Now test_gui crashes in submenu_change().
Athena is OK.
Motif: Build on Ubuntu can't enter any text in dialog text fields.

Patch to properly break CJK lines: Anton Kochkov, #3875
Flag in 'formatoptions' is not used in the tests.

Patch to add 'vtp' option. (#5344)
Needs better docs.  Is there a better name?

undo result wrong: Masato Nishihata, #4798

Undo puts cursor in wrong line after "cG<Esc>" undo.

Sound: support on Mac?  Or does libcanberra work there?

Patch to fix session file when using multiple tab pages. (Jason Franklin, 2019
May 20)
Also put :argadd commands at the start for all buffers, so that their order
remains equal?  Then %argdel to clean it up.  Do try this with 'hidden' set.
Also #4994: window-local options not always restored, related to using :badd.
Also #5326: netrw buffers are not restored.

Completion mixes results from the current buffer with tags and other files.
Happens when typing CTRL-N while still searching for results.  E.g., type "b_"
in terminal.c and then CTRL-N twice.
Should do current file first and not split it up when more results are found.
(Also #1890)

Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
(#4087)

Instead of using a syntax error, use #error to fail early when something is
wrong.  E.g. in vim.h "Error:", and blowfish.c "error!". (#5299)

":helptags ALL" should skip directories where "tags" cannot be written.
(Matěj Cepl, #5026)

":bnext" in a help buffer is supposed to go to the next help buffer, but it
goes to any buffer, and then :bnext skips help buffers, since they are
unlisted. (#4478)

Enable 'termbidi' if $VTE_VERSION >= 5703 ?

Universal solution to detect if t_RS is working, using cursor position.
Koichi Iwamoto, #2126

The :syntax cchar value can only be a single character.  It would be useful to
support combining characters. (Charles Campbell)  Also #4687

Include Haiku port. (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
It can replace the BeOS code, which is likely not used anymore.
Now on github: #1856.  Updated Oct 2017
Got permission to include this under the Vim license.

Result of synID() sometimes wrong in help files. (#5252)

Problem showing a line if the number column width changes when using "o".
(Mateusz Morusiewicz, #4245)

When using :packadd for a replacement language plugin, it is loaded after the
default one.  #4698

When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994)

Patch to add new motion ]( and ]{.  (Yasuhiro Matsumoto, #5320)

Modeless selection doesn't work in gvim. (#4783)
Caused by patch 8.1.1534.

Visual highlight not removed when 'dipslay' is "lastline" and line doesn't
fit. (Kevin Lawler, #4457)

Patch to add per-tabpage and per-window previous directory: "lcd -" and "tcd
-". (Yegappan Lakshmanan, #4362)

Does not build with MinGW out of the box:
- _stat64 is not defined, need to use "struct stat" in vim.h
- WINVER conflict, should use 0x0600 by default?

Crash when mixing matchadd and substitute()? (Max Christian Pohle, 2018 May
13, #2910)  Can't reproduce?

Patch to configure BUILD_DATE for reproducible builds. (James McCoy, #513)

Patch to add MODIFIED_BY to MSVC build file. (Chen Lei, 2016 Nov 24, #1275)

Patch to support "0o" for octal numbers. (Ken Takata, #5304)

When getting a focus event halfway a mapping this aborts the mapping.  E.g.
when "qq" is mapped and after the first "q" the mouse is moved outside of the
gvim window (with focus follows mouse), then the K_FOCUSLOST key is put in the
input buffer. (#5302)

xterm should be able to pass focus changes to Vim, so that Vim can check for
buffers that changed.  Perhaps in misc.c, function selectwindow().
Xterm 224 supports it!
Patch to make FocusGained and FocusLost work in modern terminals. (Hayaki
Saito, 2013 Apr 24) Update 2016 Aug 12.
Also see issue #609.
We could add the enable/disable sequences to t_ti/t_te or t_ks/t_ke.

Check_external_diff() is used too often. (Daniel Hahler, #4800)

Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis,
2007 Feb 18)
Patch by Alex Dobrynin, 2007 Jun 3.  Also fixes other scroll wheel problems.

Add a WindowScrolled event.  Trigger around the same time as CursorMoved.
Can be used to update highlighting. #3127  #5181

Patch for Template string: #4491.  New pull: #4634
Implementation is too inefficient, avoid using lambda.

Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909)

Patch to add the :bvimgrep command.  (Christian Brabandt, 2014 Nov 12)
Updated 2016 Jun 10, #858  Update 2017 Mar 28: use <buffer>

Errors found with random data:
    heap-buffer-overflow in alist_add (#2472)

Patch to support CamelCase for spell checking: See a lower-to-upper case
change as a word boundary. (btucker-MPCData, 2016 Nov 6, #1235)
patch for 'spellcamelcase' option: spellcheck each CamelCased word.
(Ben Tucker, 2016 Dec 2)

Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24)
Update 2016 Jun 10, #861

Patch to add "cmdline" completion to getcompletion(). (Shougo, Oct 1, #1140)

Improve fallback for menu translations, to avoid having to create lots of
files that source the actual file.  E.g. menu_da_de -> menu_da
Include part of #3242?

When a terminal exit_cb closes the window, a following typed key is lost, if
it's in a mapping. (2018 Oct 6, #2302, #3522)

Patch to have text objects defined by arbitrary single characters. (Daniel
Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31)
Added tests (James McCoy, 2016 Aug 3, #958).  Still needs more work.

Patch for multi-byte characters in langmap and applying a mapping on them.
(Christian Brabandt, 2015 Jun 12, update July 25)
Is this the right solution?  Need to cleanup langmap behavior:
- in vgetorpeek() apply langmap to the typeahead buffer and put the result in
  a copy-buffer, only when langmap is appropriate for the current mode. Then
  check for mapping and let gotchars() work on the copy-buffer.
- Remove LANGMAP_ADJUST() in other parts of the code.  Make sure the mode is
  covered by the above change.
So that replaying the register doesn't use keymap/langmap and still does the
same thing.  Remarks on PR #543 (Roland Puntaier).
Also see #737: langmap not applied to replaying recording.

Would be nice to set tab-local values for 'diffexpr' and 'diffopt'.  Use
t:diffexpr_option t:diffopt_option? (#4782)

v:register isn't reset early enough, may be used by next command.
(Andy Massimino, #5294, possible fix in #5305)

Internal diff doesn't handle binary file like external diff does. (Mike
Williams, 2018 Oct 30)

'[ mark in wrong column after put. (#4776)

"exepath('bin/cmd')" does not work while ":!bin/cmd" does work.
(Daniel Hahler, #4710)  and executable('bin/cmd') returns 1

Error drawing the number column when 'cursorline' is set. (#3893)

Problem with :tlmenu: Detach item added with all modes?  Issue #3563.

Add an argument to expandcmd() to expand like ":next" does.

When both "a" and "l" is in 'formatoptions' then auto-formatting also happens
in a long line. #5189

The quoting of the [command] argument of :terminal is not clearly documented.
Give a few examples. (#4288)

Opening a file with --remote-tab-silent that matches 'wildignore' does not
work, results in (E479: No match". (#4610)

Patch for this (Tristan Konolige, #1011, only adds the option, no implem.):
7   Add an option to add one pixel column to the character width?  Lucida
    Console italic is wider than the normal font ("d" overlaps with next char).
    Opposite of 'linespace': 'columnspace'.

Bug: script written with "-W scriptout" contains Key codes, while the script
read with "-s scriptin" expects escape codes.  Probably "scriptout" needs to
be adjusted. (Daniel Steinberg, 2019 Feb 24, #4041)

Add a string to the 'display' option ("smoothscroll" ?) to make CTRL-E and
CTRL-Y scroll one screen line, also if this means the first line doesn't start
with the first character (like what happens with a last line that doesn't
fit).  Display "<<<" at the start of the first visible line (like "@@@" is
displayed in the last line). (Arseny Nasokin,  #5154)

Patch for ambiguous width characters in libvterm on MS-Windows 10.
(Nobuhiro Takasaki, #4411)

Window size changes after closing a tab. (#4741)

Problem with colors in terminal window. (Jason Franklin, 2019 May 12)

Lifepillar: Updated/cleaned up color schemes:
https://github.com/lifepillar/vim8-colorschemes.

Include a few color schemes, based on popularity:
http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search
http://vimawesome.com/?q=tag:color-scheme
Use names that indicate their appearance (Christian Brabandt, 2017 Aug 3)
- monokai - Xia Crusoe (2017 Aug 4)
- seoul256 - Christian Brabandt (2017 Aug 3)
- gruvbox -  Christian Brabandt (2017 Aug 3) (simplified version from
      Lifepillar, 2018 Jan 22, #2573)
- janah - Marco Hinz (2017 Aug 4)
- apprentice - Romain Lafourcade (2017 Aug 6)  remarks about help file #1964
Suggested by Hiroki Kokubun:
- [Iceberg](https://github.com/cocopon/iceberg.vim) (my one)
- [hybrid](https://github.com/w0ng/vim-hybrid)
Include solarized color scheme?, it does not support termguicolors.
- Sanitized version of pablo (Lifepillar, 2017 Nov 21)

Bug: "vipgw" does not put cursor back where it belongs. (Jason Franklin, 2019
Mar 5)

Many users don't like 'thesaurus' to match so many words. (#4667, #1611)
- when the match with the first word is partial, don't add other words on that
  line.
- support other file formats, such as comma separated.  Indicate by a prefix
  to the file in the 'thesaurus' option.
- 'threglookexp' option: only match with first word in thesaurus file.
  (Jakson A. Aquino, 2006 Jun 14)

Some composing characters actually add a cell width to the character they are
on top off, making the whole thing two characters wide. (#4526)

Should we include some part of pull request #4505, not increment changedtick
in some cases?  E.g. for ":write" when the changed flag was already off, the
buffer didn't change at all.

Patch to add getreginfo() and setreg() with an option to set the unnamed
register "", So that registers can be saved and fully restored.
(Andy Massimino, 2018 Aug 24, #3370)

Line numbers in profile are off when function was defined with ":execute".
(Daniel Hahler, #4511)

Add a way to create an empty, hidden buffer.  Like doing ":new|hide".
":let buf = bufcreate('name')

Session file contains absolute paths when "curdir" is removed form
'sessionoptions', making it impossible to have a session with a relative path.
(#4450)

When using a timer callback vgetc_busy is reset, allowing for using input().
But in a channel callback this does not happen.  We need to do something
similar to check_due_timer().  Also see #3809.

C syntax: {} inside () causes following {} to be highlighted as error.
(Michalis Giannakidis, 2006 Jun 1)

Support setting the character displayed below the last line?  Neovim uses
"eob:X" in 'fillchars'.

Check: __attribute__((format(printf, on semsg() and siemsg().  Where was this
added?

Patch to add a flatten() function.  #3676.  Check that the doc explains the
maxdepth argument (applies to the input "recursiveness").

Add test for urxvt mouse codes.  Also test that mouse coordinates can be
negative. (see #4326)

'cmdheight' has a tab-local value, but it cannot be obtained with
`:echo gettabwinvar(2, 1, '&cmdheight')` returns the value for the _current_
tab page. (Ingo Karkat, #4324)
:call settabwinvar(1, 1, '&cmdheight', 2) also doesn't work well.

This modeline throws unexpected errors: (#4165)
    vim: syn=nosyntax

":doau SomeEvent" gives "No matching autocommands".  This message doesn't give
a hint about how to fix it. (#4300)

Make balloon_show() work outside of 'balloonexpr'?  Users expect it to work:
#2948. (related to #1512?)
On Win32 it stops showing, because showState is already ShS_SHOWING.
balloon_show() does not work properly in the terminal. (Ben Jackson, 2017 Dec
20, #2481)
Also see #2352, want better control over balloon, perhaps set the position.
Should also be possible to add highlighting, like in the status line?
balloonexpr() on MS-Windows GUI doesn't handle accented chars? (nivaemail,
2018 Sep 14)
Another request: #3811.

More warnings from static analysis:
https://lgtm.com/projects/g/vim/vim/alerts/?mode=list

Still a E315 error when using terminal. (Masato Nishihata, #3959)

Not existing directory in CDPATH leads to two shell calls. (#4525)

Use dict_iterate_start() / dict_iterate_next() instead of relying on the
internals of the dict structure.

nvo-mode mapping works on Windows, not on Linux. (#3678)

Missing tests for:
- add_termcap_entry()

Redo only remembers the last change.  Could use "{count}g." to redo an older
change.  How does the user know which change?  At least have a way to list
them: ":repeats".  Add to history, like search history and command line history.

Incsearch test fails when locale is "C". (Dominique Pelle, #3986)
Also run all tests with C locale?

"vat" doesn't work well on XML when the closing > is on another line.
#3927

Pasting foo} causes Vim to behave weird. (John Little, 2018 Jun 17)
Related to bracketed paste.  I cannot reproduce it.

When 'confirm' is set a "silent q" doesn't show the prompt.  It should in this
case. (Nate Peterson, 2019 Jan 31, #3892)
For "silent! q" it should not prompt and just fail.

Add <aevent>, which expands to the currently triggered autocommand event name.
(Daniel Hahler, #4232)  Or add it to v:event (easier to use but slightly more
expensive).

Some xterm responses are not properly handled: (Markus Gömmel, 2019 Apr 1)
    DCS 0 $ r Pt ST    should be ignored.
    DCS 0 + r/Pt/  ST  already ignored?

Using CTRL-L to add a character to the search string that contains \v,
punctuation is repeated. (Smylers, 2018 Nov 17, #3621)

ml_get error: (Israel Chauca Fuentes, 2018 Oct 17, #3550).

Patch to add more info to OptionSet.  Should mention what triggered the change
":set", ":setlocal", ":setglobal", "modeline"; and the old global value.
#4118.  Proposed implementation: 2019 Mar 27.
Updated 2019 May 25.

Using single wide base character with double wide composing character gives
drawing errors.  Fill up the base character?  (Dominique, #4328)

Problem with two buffers with the same name a/b, if it didn't exist before and
is created outside of Vim. (dskloetg, 2018 Jul 16, #3219)

When 'sidescrolloff' is set, using "zl" to go to the end of the line, suddenly
scrolls back.  Should allow for this scrolling, like 'scrolloff' does when
using CTRL-E. (Yee Cheng Chin, #3721)

Invalid memory access with old regexp engine. (Dominique Pelle, 2018 Sep 3,
#3405)  Introduced by 8.0.1517, which was fixing another memory access error.
(Sep 8)

Add function to make use of internal diff, working on two lists and returning
unified diff (list of lines).

When splitting a window with few text lines, the relative cursor position is
kept, which means part of the text isn't displayed.  Better show all the text
when possible. (Dylan Lloyd, #3973)

Make ":interactive !cmd" stop termcap mode, also when used in an autocommand.
(#3692)

Add buffer argument to undotree(). (#4001)

Using uninitialized value in test_gn
Using uninitialized value in test_crypt.
memory leak in test_paste
Memory leak in test_terminal:
==23530==    by 0x2640D7: alloc (misc2.c:874)
==23530==    by 0x2646D6: vim_strsave (misc2.c:1315)
==23530==    by 0x25841D: FullName_save (misc1.c:5443)
==23530==    by 0x17CB4F: fix_fname (buffer.c:4794)
==23530==    by 0x17CB9A: fname_expand (buffer.c:4838)
==23530==    by 0x1759AB: buflist_new (buffer.c:1889)
==23530==    by 0x35C923: term_start (terminal.c:421)
==23530==    by 0x2AFF30: mch_call_shell_terminal (os_unix.c:4377)
==23530==    by 0x2B16BE: mch_call_shell (os_unix.c:5383)
TODO: be able to run all parts of test_alot with valgrind separately
Memory leak in test_alot with pyeval() (allocating partial)
Memory leak in test_alot with expand()
Memory leaks in test_channel? (or is it because of fork())

gethostbyname() is old, use getaddrinfo() if available. (#3227)

matchaddpos() gets slow with many matches.  Proposal by Rick Howe, 2018 Jul
19.

Should make 'listchars' global-local.  Local to window or to buffer?
Probably window.
Add something like 'fillchars' local to window, but allow for specifying a
highlight name.  Esp. for the statusline.
And "extends" and "precedes" are also useful without 'list' set.  Also in
'fillchars' or another option?

Sourceforge Vim pages still have content, redirect from empty page.
Check for PHP errors. (Wayne Davison, 2018 Oct 26)

Patch to support ":tag <tagkind> <tagname>". (emmrk, 2018 May 7, #2871)
Use something like ":tag {kind}/{tagname}".
Not ready to include.

Problem with Visual yank when 'linebreak' and 'showbreak' are set.
Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018
Nov 17)  Asked about this, Dec 22. Christian will have a look.

Patch for larger icons in installer. (#978)  Still not good.

Patch to fix that using "5gj" starting inside a closed fold does not work on
screen lines but on text lines. (Julius Hulsmann, #4095)  Lacks a test.

Patch to implement 'diffref' option. (#3535)
  Easier to use a 'diffmaster' option, is the extra complexity needed?
  Not ready to include.

Patch to specify color for cterm=underline and cterm=undercurl, like "guisp".
Patch #2405 does something like this, but in the wrong way.

home_replace() uses $HOME instead of "homedir". (Cesar Martins, 2018 Aug 9)

When the status line uses term_gettitle(), it does not get updated when the
terminal title changes. (Josh Triplett, 2018 Sep 9, #3418)
How would we know that the status line needs to be updated?

Adjust windows installer explanation of behavior. (scootergrisen, #3310)

Update for xim-input-style help (Tony Mechelynck, 2019 Jan 10).
Feedback from someone who uses this?

ml_get error. (Dominique Pelle, 2018 Sep 14, #3434)

Only output t_Cs when t_Ce is also set.  do not use Cs and Ce termcap entries.  (Daniel Hahler, 2018 Sep 25)
Add t_cS and t_cR for cursor color select and reset.  Use Cs and Cr terminfo
values.

Further xdiff changes:
- More options, e.g. different kind of whitespace diff.
- when editing text, update the surrounding diff blocks.
- omit diff.exe from distribution
- Can we make this show differences within a line?
- add option to use external diff above a certain size.

Difference between two regexp engines: #3373

Patch to add ch_listen() (Yasuhiro Matsumoto, 2018 Nov 26, #3639)
What is the practical use for this?

When the last line wraps, selecting with the mouse below that line only
includes the first screen line. (2018 Aug 23, #3368)

Refactored HTML indent file. (Michael Lee, #1821)
Asked to write a test.

MS-Windows: .lnk file not resolved properly when 'encoding' is set.
(lkintact, 2018 Sep 22, #3473)

Merge checking for 'cursorline' and 'concealcursor', see neovim #9492.

Display error when a conceal match uses '\%>1l'. (#4854)

Add a windowID argument to placing a sign, so that it only shows up in one
window for the buffer.

Request to add sign_setlist() to make it faster to add a lot of signs, e.g.
when adding a sign for every quickfix entry. (#4557)

Win32 key codes are messy.  Mike Williams tried to fix that, but now old
mappings no longer work.  Create a new terminal for the better solution?

Patch to "fix" 'visualbell'. Add option to set delay?  (#1789)

Script generated by :mksession does not work well if there are windows with
modified buffers
  change "silent only" into "silent only!"
  change "edit fname" of first buffer to "hide edit fname"
  skip "badd fname" if "fname" is already in the buffer list
  remove remark about unloading buffers from documentation

Compiler warnings (geeknik, 2017 Oct 26):
- signed integer overflow in do_sub() (#2249)
- signed integer overflow in get_address() (#2248)
- signed integer overflow in getdecchrs() (#2254)
- undefined left shift in get_string_tv() (#2250)

Win32 console: <F11> and <F12> typed in Insert mode don't result in normal
characters. (#3246)

'foldtext' is evaluated too often. (Daniel Hahler, #2773)

Add Native language protocol server (LSP) support. (Yegappan Lakshmanan, 2018
Oct 28)

ml_get error when using a Python script. (Yggdroot, 2017 Jun 1, #1737)
Lemonboy can reproduce (2017 Jun 5)
Also reproduced by Benjamin Doherty, 2018 Oct 4.
Simpler way: Ken Takata, Oct 6.

Add more testing of the GTK GUI.
- gtk_test_widget_click() can be used to simulate a click in a widget.

Tests failing for "make testgui" with GTK:
- Test_setbufvar_options()
- Test_exit_callback_interval()

Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6)
Update Sep 7.  Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1.
Patch to be able to disable default digraphs (incomplete) (Eric Pruitt, 2018
Nov 22).

Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14)

Patch to add digraph() function. (Christian Brabandt, 2013 Aug 22, update Aug
24)

Try out background make plugin:
  https://github.com/AndrewVos/vim-make-background
or asyncmake:
  https://github.com/yegappan/asyncmake

Add a ModeChanged autocommand that has an argument indicating the old and new
mode, as what's returned from mode().  Also used for switching Terminal mode.

Add an option with file patterns, to be used when unloading a buffer: If there
is a match, remove entries for the buffer from marks, jumplist, etc.  To be
used for git temp files.

Cursor in wrong position when line wraps. (#2540)

Setting 'columns' in a BufEnter autocommand causes a second tab width to
behave strangely, as if there is a gap and a vertical window separator.
(Michael Soyka, 2018 Sep 23, #3477)

Make {skip} argument of searchpair() consistent with other places where we
pass an expression to evaluate.  Allow passing zero for "never skip".

Add an option similar to 'lazyredraw' to skip redrawing while executing a
script or function.

When using a menu item while the "more" prompt is displayed doesn't work well.
E.g. after using help->version.  Have a key that ends the "more" prompt and
does nothing otherwise?

MS-Windows: write may fail if another program is reading the file.
If 'readonly' is not set but the file appears to be readonly later, try again
(wait a little while).
CreateFile() returns ERROR_SHARING_VIOLATION (Linwei, 2018 May 5)

Using --remote to open a file in which a # appears does not work on
MS-Windows.  Perhaps in \#  the \ is seen as a path separator. (Axel Bender,
2017 Feb 9)  Can we expand wildcards first and send the path literally to the
receiving Vim?  Or make an exception for #, it's not useful remotely.

Should add a test for every command line argument.  Check coverage for what is
missing: --nofork, -A , -b, -h, etc.

":au * * command" should not be allowed, only use * for event when listing or
deleting autocmds, not when adding them.

Alternative manpager.vim. (Enno, 2018 Jan 5, #2529)

Delete all the specific stuff for the Borland compiler? (#3374)
Patch in #3377 (Thomas Dziedzic)

With 'foldmethod' "indent" and appending an empty line, what follows isn't
included in the existing fold.  Deleting the empty line and undo fixes it.
(Oleg Koshovetc, 2018 Jul 15, #3214)

Patch to support "xxd -ps". (Erik Auerswald, 2018 May 1)
Lacks a test.

Column number is wrong when using 'linebreak' and 'wrap'. (Keith Smiley, 2018
Jan 15, #2555)

":bufdo e" disabled syntax HL in windows other than the current. (BPJ)

Check argument of systemlist(). (Pavlov)

No maintainer for Vietnamese translations.
No maintainer for Simplified Chinese translations.

Python indenting: alternative way to indent arguments:
http://orchistro.tistory.com/236
Should be supported with a flag.

Starting job with cwd option, when the directory does not exist, gives a
confusing error message. (Wang Shidong, 2018 Jan 2, #2519)

Add the debug command line history to viminfo.

Add Makefiles to the runtime/spell directory tree, since nobody uses Aap.
Will have to explain the manual steps (downloading the .aff and .dic files,
applying the diff, etc.

Pasting a register in Visual mode cannot be repeated. (Mahmoud Al-Qudsi, 2018
Apr 26, #2849)

User dictionary ~/.vim/spell/lang.utf-8.add not used for spell checking until a
word is re-added to it. (Matej Cepl, 2018 Feb 6)

Fold at end of the buffer behaves inconsistently. (James McCoy, 2017 Oct 9)

With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
(Marcin Szewczyk, 2017 Apr 26)

Using 'wildignore' also applies to literally entered file name.  Also with
:drop (remote commands).

Inserting a line in a CompleteDone autocommand may confuse undo. (micbou,
2018 Jun 18, #3027)

Implement option_save() and option_restore():
option_restore({list})					*option_restore()*
		Restore options previously saved by option_save().
		When buffer-local options have been saved, this function must
		be called when the same buffer is the current buffer.
		When window-local options have been saved, this function must
		be called when the same window is the current window.
		When in the wrong buffer and/or window an error is given and
		the local options won't be restored.

option_save({list})					*option_save()*
		Saves the options named in {list}.  The returned value can be
		passed to option_restore().  Example: >
			let s:saved_options = option_save([
			    \ 'ignorecase',
			    \ 'iskeyword',
			    \ ])
			 au <buffer> BufLeave *
			    \ call option_restore(s:saved_options)
<		The advantage over using `:let` is that global and local
		values are handled and the script ID is restored, so that
		`:verbose set` will show where the option was originally set,
		not where it was restored.
  Alternatively: save and restore ALL options.  Implementation needs to use
	copy-on-write.  Return an ID from option_save(), when
	option_restore(ID) is called give an error if another option_save()
	was called in the meantime, they must be balanced.

"gvim --remote" from a directory with non-word characters changes the current
directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266)
Also see #1689.

crash when removing an element while inside map(). (Nikolai Pavlov, 2018 Feb
17, #2652)

When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be
highlighted. (van-de-bugger, 2018 Jan 23, #2576)

":file" does not show anything when 'shortmess' contains 'F'. (#3070)

No profile information for function that executes ":quit". (Daniel Hahler,
2017 Dec 26, #2501)

A function on a dictionary is not profiled. (ZyX, 2010 Dec 25)

Add script number to profile?  (#3330 breaks tests).

A function defined locally and lambda's are not easily recognized.
Mention where they were defined somewhere.

Invalid range error when using BufWinLeave for closing terminal.
(Gabriel Barta, 2017 Nov 15, #2339)

ml_get errors with buggy script. (Dominique, 2017 Apr 30)

Error in emsg with buggy script. (Dominique, 2017 Apr 30)

Join truncates xml comment. (Dmitrii Tcyganok, 2017 Dec 24, #2494)
Requires 'formatoptions' to include "j". (Gary Johnson, 2017 Dec 24)

Patch to support hunspell. (Matej Cepl, Jan 2018, #2500) Based on older patch
in #846)
Doesn't work on Windows yet.  Not ready to included, hard coded paths.

Win32 GUI: when running a fast timer, the cursor no longer blinks.
Was reported: cursor blinks in terminal on widows with a timer. (xtal8, #2142)

When a timer is running and typing CTRL-R on the command line, it is not
redrawn properly. (xtal8, 2017 Oct 23, #2241)

In an optional package the "after" directory is not scanned?
(Renato Fabbri, 2018 Feb 22)

Patch for Neovim concerning restoring when closing help window. (glacambre
neovim #7431)

Patch for improving detecting Ruby on Mac in configure. (Ilya Mikhaltsou, 2017
Nov 21)

When t_Co is changed from termresponse, the OptionSet autocmmand event isn't
triggered.  Use the code from the end of set_num_option() in
set_color_count().

Add another autocommand like TermResponse that is fired for the other terminal
responses, such as bg and fg.  Use "bg", "fg", "blink", etc. for the name.

When using command line window, CmdlineLeave is triggered without
CmdlineEnter.  (xtal8, 2017 Oct 30, #2263)
Add some way to get the nested state.  Although CmdwinEnter is obviously
always nested.

matchit hasn't been maintained for a long time.  #955.

Problem with 'delcombine'. (agguser, 2017 Nov 10, #2313)

MS-Windows: buffer completion doesn't work when using backslash (or slash)
for a path separator. (xtal8, #2201)

Would be nice for Insert mode completion to highlight the text that was added
(and may change when picking another completion).

Test runtime files.
Start with filetype detection: testdir/test_filetype.vim

Window not closed when deleting buffer. (Harm te Hennepe, 2017 Aug 27, #2029)

Add options_default() / options_restore() to set several options to Vim
defaults for a plugin. Comments from Zyx, 2017 May 10.
Perhaps use a vimcontext / endvimcontext command block.

After using :noautocmd CursorMoved may still trigger. (Andy Stewart, 2017 Sep
13, #2084).  Set old position after the command.

When bracketed paste is used, pasting at the ":append" prompt does not get the
line breaks. (Ken Takata, 2017 Aug 22)

The ":move" command does not honor closed folds. (Ryan Lue, #2351)

Patch to fix increment/decrement not working properly when 'virtualedit' is
set. (Hirohito Higashi, 2016 Aug 1, #923)

Cannot copy modeless selection when cursor is inside it. (lkintact, #2300)

Test_writefile_fails_conversion failure on Solaris because if different iconv
behavior.  Skip when "uname" returns "SunOS"? (Pavel Heimlich, #1872)

'tagrelative' is broken in specific situation. (xaizek, 2017 Oct 19, #2221)

The ++ options for the :edit command are also useful on the Vim command line.

When recovering a file, put the swap file name in b:recovered_swapfile.  Then
a command can delete it.

Overlong utf-8 sequence is displayed wrong. (Harm te Hennepe, 2017 Sep 14,
#2089)  Patch with possible solution by Björn Linse.

The change list index is local to a buffer, but it doesn't make sense using it
for another buffer.  (lacygoll) Copy w_changelistidx to wininfo_S and back.

X11: Putting more than about 262040 characters of text on the clipboard and
pasting it in another Vim doesn't work.  (Dominique Pelle, 2008 Aug 21-23)
clip_x11_request_selection_cb() is called with zero value and length.
Also: Get an error message from free() in the process that owns the selection.
Seems to happen when the selection is requested the second time, but before
clip_x11_convert_selection_cb() is invoked, thus in X library code.
Kazunobu Kuriyama is working on a proper fix. (2017 Jul 25)

Problem with three-piece comment. (Michael Lee, 2017 May 11, #1696)

Creating a partial with an autoload function is confused about the "self"
attribute of the function.  For an unknown function assume "self" and make
that optiona? (Bjorn Linse, 2017 Aug 5)

Cindent: returning a structure has more indent for the second item.
(Sam Pagenkopf, 2017 Sep 14, #2090)

Patch from Christian Brabandt to preserve upper case marks when wiping out a
buffer. (2013 Dec 9)
Also fixes #2166?

Patch to add argument to :cquit. (Thinca, 2014 Oct 12)

Python: After "import vim" error messages only show the first line of the
stack trace. (Yggdroot, 2017 Jul 28, #1887)

Profile of a dict function is lost when the dict is deleted.  Would it be
possible to collect this?  (Daniel Hahler, #2350)

When checking if a bufref is valid, also check the buffer number, to catch the
case of :bwipe followed by :new.

Patch to skip writing a temp file for diffing if the buffer is equal to the
existing file. (Akria Sheng, 2017 Jul 22)
Could also skip writing lines that are the same.

Patch with Files for Latvian language. (Vitolins, 2017 May 3, #1675)

MS-Windows: Opening same file in a second gvim hangs. (Sven Bruggemann, 2017
Jul 4)

Setting 'clipboard' to "unnamed" makes a global command very slow (Daniel
Drucker, 2017 May 8).
This was supposed to be fixed, did it break again somehow?
Christian cannot reproduce it.

Using composing char in mapping does not work properly. maparg() shows the
wrong thing. (Nikolai Pavlov, 2017 Jul 8, #1827)
Or is this not an actual problem?

Better TeX indent file. (Christian Brabandt, 2017 May 3)

Patch to use a separate code for BS on Windows. (Linwei, #1823)

Use gvimext.dll from the nightly build? (Issue #249)

'synmaxcol' works with bytes instead of screen cells. (Llandon, 2017 May 31,
#1736)

Problem with using :cd when remotely editing a file. (Gerd Wachsmuth, 2017 May
8, #1690)

Bogus characters inserted when triggering indent while changing text.
(Vitor Antunes, 2016 Nov 22, #1269)

Using "wviminfo /tmp/viminfo" does not store file marks that Vim knows about,
it only works when merging with an existing file.  (Shougo, 2017 Jun 19, #1781)

Segmentation fault with complete(). (Lifepillar, 2017 Apr 29, #1668)
Check for "pat" to be NULL in search_for_exact_line()?
How did it get NULL?  Comment by Christian, Apr 30.

Is it possible to keep the complete menu open when calling complete()?
(Prabir Shrestha, 2017 May 19, #1713)

Memory leak in test97?  The string is actually freed.  Weird.

assert_fails() can only check for the first error.  Make it possible to have
it catch multiple errors and check all of them.

Add a toolbar in the terminal.  Can be global, above all windows, or specific
for one window.

Make maparg() also return the raw rhs, so that it doesn't depend on 'cpo'.
(Brett Stahlman, 2017 May 23)
Even better: add a way to disable a mapping temporarily and re-enable it
later.  This is for a sub-mode that is active for a short while (one buffer).
Still need maplist() to find the mappings.  What can we use to identify a
mapping?  Something unique would be better than the LHS.
Perhaps simpler: actually delete the mappings.  Use maplist() to list matching
mappings (with a lhs prefix, like maparg()), mapdelete() to delete,
maprestore() to restore (using the output of maplist()).

Add an argument to :mkvimrc (or add another command) to skip mappings from
plugins (source is a Vim script).  No need to put these in a .vimrc, they will
be defined when the plugin is loaded.

Use tb_set(winid, [{'text': 'stop', 'cb': callback, 'hi': 'Green'}])
    tb_highlight(winid, 'ToolBar')
    tb_get(winid)

json_encode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
What if there is an invalid character?

Json string with trailing \u should be an error. (Lcd)

import can't be used in define option when include matches too.
(Romain Lafourcade, 2017 Jun 18, #1519)

When session file has name in argument list but the buffer was deleted, the
buffer is not deleted when using the session file. (#1393)
Should add the buffer in hidden state.

Wrong diff highlighting with three files. (2016 Oct 20, #1186)
Also get E749 on exit.
Another example in #1309

When deleting a mark or register, leave a tombstone, so that it's also deleted
when writing viminfo (and the delete was the most recent action). #1339

Suggestion to improve pt-br spell checking. (Marcelo D Montu, 2016 Dec 15,
#1330)

Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17)

Completion for :!cmd shows each match twice. #1435

GTK: When adding a timer from 'balloonexpr' it won't fire, because
g_main_context_iteration() doesn't return.  Need to trigger an event when the
timer expires.

Screen update bug related to matchparen.  (Chris Heath, 2017 Mar 4, #1532)

Rule to use "^" for statusline does not work if a space is defined with
highlighting for both stl and stlnc.  Patch by Ken Hamada (itchyny, 2016 Dec 11)

8   "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
    Patch by Christian Wellenbrock, 2013 Jul 5.

Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca
Fuentes, 2017 Feb 12, #1470)

Add a "keytrans()" function, which turns the internal byte representation of a
key into a form that can be used for :map.  E.g.
    let xx = "\<C-Home>"
    echo keytrans(xx)
    <C-Home>

Check for errors E704 and E705 only does VAR_FUNC, should also do VAR_PARTIAL.
(Nikolai Pavlov, 2017 Mar 13, #1557)
Make a function to check for function-like type?

Screen updated delayed when using CTRL-O u in Insert mode.
(Barlik, #1191)  Perhaps because status message?

Implement optional arguments for functions.
    func Foo(start, count = 1 all = 1)
    call Foo(12)
    call Foo(12, all = 0)
    call Foo(12, 15, 0)

Add a command to take a range of lines, filter them and put the output
somewhere else.  :{range}copy {dest} !cmd

Patch to fix that empty first tab is not in session.
(Hirohito Higashi, 2016 Nov 25, #1282)

Patch to fix escaping of job arguments. (Yasuhiro Matsumoto, 2016 Oct 5)
Update Oct 14: https://gist.github.com/mattn/d47e7d3bfe5ade4be86062b565a4bfca
Update Aug 2017: #1954

The TermResponse event is not triggered when a plugin has set 'eventignore' to
"all".  Netrw does this. (Gary Johnson, 2017 Jan 24)
Postpone the event until 'eventignore' is reset.

Expanding /**/ is slow.  Idea by Luc Hermitte, 2017 Apr 14.

Once .exe with updated installer is available: Add remark to download page
about /S and /D options (Ken Takata, 2016 Apr 13)
Or point to nightly builds: https://github.com/vim/vim-win32-installer/releases

Problem passing non-UTF-8 strings to Python 3. (Björn Linse, 2016 Sep 11,
#1053)  With patch, does it work?

":sbr" docs state it respects 'switchbuf', but "vsplit" does not cause a
vertical split. (Haldean Brown, 2017 Mar 1)

Use ADDR_OTHER instead of ADDR_LINES for many more commands.
E.g. all the location list commands use a count.
Add tests for using number larger than number of lines in buffer.

Might be useful to have isreadonly(), like we have islocked().
Avoids exceptions, e.g. when using the b: namespace as a dict.

Patch to make v:shell_error writable. (Christian Brabandt, 2016 Sep 27)
Useful to restore it.  Is there another solution?

"ci[" does not look for next [ like ci" does look for next ".
(J.F. 2017 Jan 7)

Patch for wrong cursor position on wrapped line, involving breakindent.
(Ozaki Kiichi, 2016 Nov 25)
Does this also fix #1408 ?

'cursorline' and match interfere. (Ozaki Kiichi, 2017 Jun 23, #1792)

Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30)

When 'completeopt' has "noselect" does not insert a newline. (Lifepillar, 2017
Apr 23, #1653)

Window resizing with 'winfixheight': With a vertical split the height changes
anyway. (Tommy allen, 2017 Feb 21, #1502)

Invalid behavior with NULL list. (Nikolai Pavlov, #768)
E.g. deepcopy(test_null_list())

Patch to make it possible to extend a list with itself.
(Nikolai Pavlov, 2016 Sep 23)

Patch to add Zstandard compressed file support. (Nick Terrell, 2016 Oct 24)

On Windows buffer completion sees backslash as escape char instead of path
separator. (Toffanim, 2016 Nov 24, #1274)

min() and max() spawn lots of error messages if sorted list/dictionary
contains invalid data (Nikolay Pavlov, 2016 Sep 4, #1039)

Should :vmap in matchit.vim be :xmap?  (Tony Mechelynck)

Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807)

Undo problem: "g-" doesn't go back, gets stuck. (Björn Linse, 2016 Jul 18)

Add "unicode true" to NSIS installer.  Doesn't work with Windows 95, which we
no longer support.

sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
4#1038)

+channel:
- Add a in_cb, invoked when the write buffer has become empty. (Matteo Landi)
- Add ch_readlines(): for a channel in NL mode, reads as many lines as are
  available.  Should be more efficient than looping over ch_read() with
  ch_status() to check for more.
- Add a separate timeout for opening a socket.  Currently it's fixed at 50
  msec, which is too small for a remote connection. (tverniquet, #2130)
- Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026)
- Writing raw mode to a buffer should still handle NL characters as line
  breaks. (Dmitry Zotikov, 2017 Aug 16)
- When out_cb executes :sleep, the close_cb may be invoked. (Daniel Hahler,
  2016 Dec 11, #1320)
- Implement |job-term| ?
- Calling a function when receiving a "call" on a channel, using feedkeys()
  does not work.  It does work from a timer. (Qiming Zhao, #3852)
- Channel test fails with Motif.  Sometimes kills the X11 server.
- When a message in the queue but there is no callback, drop it after a while?
  Add timestamp to queued messages and callbacks with ID, remove after a
  minute.  Option to set the droptime.
- Add an option to drop text of very long lines?  Default to 1 Mbyte.
- Add remark about undo sync, is there a way to force it?
- When starting a job, have an option to open the server socket, so we know
  the port, and pass it to the command with --socket-fd {nr}. (Olaf Dabrunz,
  Feb 9)  How to do this on MS-Windows?
- For connection to server, a "keep open" flag would be useful.  Retry
  connecting in the main loop with zero timeout.
- job_start(): run job in a newly opened terminal (not a terminal window).
    With xterm could use -S{pty}.
    Although user could use "xterm -e 'cmd arg'".

Regexp problems:
- NFA engine can be slow for some patterns.  Dominique found out that most
  time is spent in addstate_here() copying the threads.  Instead of copying,
  let each thread point to the next one (by offset, the list is reallocated).
  (Dominique Pelle, 2019 Feb 18)
- Old engine: using 'incsearch' /\Zabc does not highlight the "c" if it has a
  composing character.  New engine is OK. (Tony Mechelynck, 2019 May 5)
- When search pattern has the base character both with and without combining
  character, search fails.  E.g. "รรีบ" in "การรีบรักใคร". (agguser, #2312)
- [:space:] only matches ASCII spaces.  Add [:white:] for all space-like
  characters, esp. including 0xa0.  Use character class zero.
- Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6.
  (Manuel Ortega, 2016 Apr 24)
  Test fails on Mac.  Avoid using isalpha(), isalnum(), etc?  Depends on
  LC_CTYPE
- The old engine does not find a match for "/\%#=1\(\)\{80}", the new engine
  matches everywhere.
- Using win_linetabsize() can still be slow. Cache the result, store col and
  vcol. Reset them when moving to another line.
- Very slow with a long line and Ruby highlighting. (John Whitley, 2014 Dec 4)
- Bug with pattern: '\vblock (\d+)\.\n.*\d+%(\1)@<!\.$'
  (Lech Lorens, 2014 Feb 3)
- Issue 164: freeze on regexp search.
- Ignorecase not handled properly for multi-byte characters. (Axel Bender,
  2013 Dec 11)
- Using \@> and \?. (Brett Stahlman, 2013 Dec 21) Remark from Marcin
  Szamotulski; Remark from Brett 2014 Jan 6 and 7.
- NFA regexp doesn't handle \%<v correctly. (Ingo Karkat, 2014 May 12)
- Does not work with NFA regexp engine:
  \%u, \%x, \%o, \%d followed by a composing character
- Search for \%d0\+ may fail with E363. (Christian Brabandt, 2016 Oct 4)
- \%'[ does not work.  '%'] does work.  (Masaaki Nakamura, 2016 Apr 4)
- Bug relating to back references. (Ingo Karkat, 2014 Jul 24)
- New RE does not give an error for empty group: "\(\)\{2}" (Dominique Pelle,
  2015 Feb 7)
- Using back reference before the capturing group sometimes works with the old
  engine, can we do this with the new engine?  E.g. with
  "/\%(<\1>\)\@<=.*\%(<\/\(\w\+\)>\)\@=" matching text inside HTML tags.
  This problem is probably the same: "\%(^\1.*$\n\)\@<=\(\d\+\).*$".
  (guotuofeng, 2015 Jun 22)
- Strange matching with "\(Hello\n\)\@<=A". (Anas Syed, 2015 Feb 12)
- Problem with \v(A)@<=b+\1c. (Issue 334)
- Diff highlighting can be very slow. (Issue 309)
- Using %> for a virtual column has a check based on 'tabsize'.  Better would
  be to cache the result of win_linetabsize(col), storing both col and vcol,
  and use them to decide whether win_linetabsize() needs to be called.  Reset
  col and vcol when moving to another line.
- this doesn't work: "syntax match ErrorMsg /.\%9l\%>20c\&\%<28c/".  Leaving
  out the \& works.  Seems any column check after \& fails.
- Difference between two engines: ".*\zs\/\@>\/" on text "///"
  (Chris Paul, 2016 Nov 13)  New engine not greedy enough?
  Another one: echom matchstr(" sdfsfsf\n sfdsdfsdf",'[^\n]*')
  (2017 May 15, #1252)

Feature request: Complete members of a dictionary. (Luc Hermitte, 2017 Jan 4,
#1350)

Undo message is not always properly displayed.  Patch by Ken Takata, 2013 oct
3.  Doesn't work properly according to Yukihiro Nakadaira.
Also see #1635.

Patch for systemlist(), add empty item. (thinca, Sep 30, #1135)
Add an argument to choose binary or non-binary (like readfile()), when omitted
use the current behavior.
Include the test.

When 'keywordprg' starts with ":" the argument is still escaped as a shell
command argument. (Romain Lafourcade, 2016 Oct 16, #1175)

Idea from Sven: record sequence of keys.  Useful to show others what they are
doing (look over the shoulder), and also to see what happened.
Probably list of keystrokes, with some annotations for mode changes.
Could store in logfile to be able to analyse it with an external command.
E.g. to see when's the last time a plugin command was used.

execute() cannot be used with command completion. (Daniel Hahler, 2016 Oct 1,
#1141)

cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983)

:map X may print invalid data. (Nikolay Pavlov, 2017 Jul 3, #1816)

Patch to order results from taglist(). (Duncan McDougall, 2016 Oct 25)

When using ":diffput" through a mapping, undo in the target buffer isn't
synced.  (Ryan Carney, 2016 Sep 14)

Syntax highlighting for messages with RFC3339 timestamp (#946)
Did maintainer reply?

Patch to avoid problem with special characters in file name.
(Shougo, 2016 Sept 19, #1099)  Not finished?

ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19)
Also with latest version.

Cannot delete a file with square brackets with delete(). (#696)

Patch to add ":syn foldlevel" to use fold level further down the line.
(Brad King, 2016 Oct 19, update 2017 Jan 30)

Completion for input() does not expand environment variables. (chdiza, 2016
Jul 25, #948)

Patch to add 'systemencoding', convert between 'encoding' and this for file
names, shell commands and the like.  (Kikuchan, 2010 Oct 14)
Assume the system converts between the actual encoding of the filesystem to
the system encoding (usually utf-8).

Using ":tab drop file" does not trigger BufEnter or TabEnter events.
(Andy Stewart, 2017 Apr 27, #1660)
Autocommands blocked in do_arg_all().  Supposed to happen later?

'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9)

MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c?
Otherwise task flickers in taskbar.

Should make ":@r" handle line continuation. (Cesar Romani, 2016 Jun 26)
Also for ":@.".

Repeating 'opfunc' in a function only works once. (Tarmean, 2016 Jul 15, #925)

Have a way to get the call stack, in a function and from an exception.
#1125

Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple
times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5)

Possibly wrong value for seq_cur. (Florent Fayolle, 2016 May 15, #806)

Filetype plugin for awk. (Doug Kearns, 2016 Sep 5)

Patch to improve map documentation. Issue #799.

Patch for syntax folding optimization. (Shougo, 2016 Sep 6, #1045)

We can use '. to go to the last change in the current buffer, but how about
the last change in any buffer?  Can we use ', (, is next to .)?

Ramel Eshed: system() is much slower than job_start(), why? (Aug 26)

When generating the Unicode tables with runtime/tools/unicode.vim the
emoji_width table has only one entry.

It's possible to add ",," to 'wildignore', an empty entry.  Causes problems.
Reject the value? #710.

When doing "vi buf.md" a BufNew autocommand for *.md is not triggered.
Because of using the initial buffer? (Dun Peal, 2016 May 12)

Add redrawtabline command. (Naruhiko Nishino, 2016 Jun 11)

Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574
No test, needs some work to include.

Patch to improve indenting for C++ constructor with initializer list.
(Hirohito Higashi, 2016 Mar 31)

Zero-out krypt key information when no longer in use. (Ben Fritz, 2017 May 15)

Add stronger encryption.  Could use libsodium (NaCl).
https://github.com/jedisct1/libsodium/
Possibly include the needed code so that it can be build everywhere.

Add a way to restart a timer.  It's similar to timer_stop() and timer_start(),
but the reference remains valid.

Need to try out instructions in INSTALLpc.txt about how to install all
interfaces and how to build Vim with them.
Appveyor build with self-installing executable, includes getting most
interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build
result: https://ci.appveyor.com/project/k-takata/vim/history

Problem that a previous silent ":throw" causes a following try/catch not to
work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24)

Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)

Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10)

Add ":read :command", to insert the output of an Ex command?
Can already do it with ":$put =execute('command')".

When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016
Apr 17)  #762

exists(":tearoff") does not tell you if the command is implemented. (Tony
Mechelynck)  Perhaps use exists("::tearoff") to check?

Use vim.vim syntax highlighting for help file examples, but without ":" in
'iskeyword' for syntax.

Patch to make "%:h:h" return "." instead of the full path.
(Coot, 2016 Jan 24, #592)

Remove SPACE_IN_FILENAME ? What could possibly go wrong?

When command names are very long :command output is difficult to read.  Use a
maximum for the column width?  (#871)
Patcy by varmanishant, 2016 Jun 18, #876

Installation of .desktop files does not work everywhere.
It's now fixed, but the target directory probably isn't right.
Add configure check?
Should use /usr/local/share/applications or /usr/share/applications.
Or use $XDG_DATA_DIRS.
Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4)

Test object i{ and it do not behave the same. #1379
Do not include the linebreak at the start?

Feature request: add the "al" text object, to manipulate a screen line.
Especially useful when using 'linebreak'

":cd C:\Windows\System32\drivers\etc*" does not work, even though the
directory exists. (Sergio Gallelli, 2013 Dec 29)

In debug mode one can inspect variables, but not the function parameters
(starting with a:). (Luc Hermitte, 2017 Jan 4, #1352)

If ":bd" also closes a Tab page then the " mark is not set.  (Harm te Hennepe,
2016 Apr 25, #780)

Patch to avoid redrawing tabline when the popup menu is visible.
(Christian Brabandt, 2016 Jan 28)

Patch to show search statistics. (Christian Brabandt, 2016 Jul 22)

When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot
restore the mode properly. (Andrew Stewart, 2016 Apr 20)
Do not trigger the event?

Using ":windo" to set options in all windows has the side effect that it
changes the window layout and the current window.  Make a variant that saves
and restores.  Use in the matchparen plugin.
Perhaps we can use ":windo <restore> {cmd}"?
Patch to add <restore> to :windo, :bufdo, etc. (Christian Brabandt, 2015 Jan
6, 2nd message)
Alternative: ":keeppos" command modifier: ":keeppos windo {cmd}".

Patch to fix display of listchars on the cursorline. (Nayuri Aohime, 2013)
Update suggested by Yasuhiro Matsumoto, 2014 Nov 25:
https://gist.github.com/presuku/d3d6b230b9b6dcfc0477

Patch to make the behavior of "w" more straightforward, but not Vi compatible.
With a 'cpo' flag.  (Christian Brabandt, 2016 Feb 8)

Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27, update Apr 13)

Patch to add TagNotFound autocommand. (Anton Lindqvist, 2016 Feb 3)

Patch to add Error autocommand. (Anton Lindqvist, 2016 Feb 17)
Only remembers one error.

GVim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab.

Unexpected delay when using CTRL-O u.  It's not timeoutlen.
(Gary Johnson, 2015 Aug 28)

Instead of separately uploading patches to the ftp site, we can get them from
github with a URL like this:
   https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff
Diff for version.c contains more context, can't skip a patch.

Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)

Comparing nested structures with "==" uses a different comparator than when
comparing individual items.
Also, "'' == 0" evaluates to true, which isn't nice.
Add "===" to have a strict comparison (type and value match).
Add "==*" (?) to have a value match, but no automatic conversion, and v:true
equals 1 and 1.0, v:false equals 0 and 0.0.?

Using uninitialized memory. (Dominique Pelle, 2015 Nov 4)

MS-Windows: When editing a file with a leading space, writing it uses the
wrong name. (Aram, 2014 Nov 7)  Vim 7.4.

Can't recognize the $ProgramFiles(x86) environment variable.  Recognize it
specifically?  First try with the parens, then without.

Patch to add :mapgroup, put mappings in a group like augroup.
(Yasuhiro Matsumoto, 2016 Feb 19)

Value returned by virtcol() changes depending on how lines wrap.  This is
inconsistent with the documentation.

Value of virtcol() for '[ and '] depend on multi-byte character.
(Luchr, #277)

Can we cache the syntax attributes, so that updates for 'relativenumber' and
'cursorline'/'cursorcolumn' are a lot faster?  Thus store the attributes
before combining them.

C highlighting: modern C allows: /* comment */ #ifdef
and also line continuation after #include.
I can't recommend it though.

Build with Python on Mac does not always use the right library.
(Kazunobu Kuriyama, 2015 Mar 28)

To support Thai (and other languages) word boundaries, include the ICU
library:  http://userguide.icu-project.org/boundaryanalysis

When complete() first argument is before where insert started and 'backspace'
is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19)

Patch to use two highlight groups for relative numbers. (Shaun Brady, 2016 Jan
30)

MS-Windows: Crash opening very long file name starting with "\\".
(Christian Brock, 2012 Jun 29)

The OptionSet autocommand event is not always triggered. (Rick Howe, 2015 Sep
24): :diffthis, :diffoff.

":set all&" still does not handle all side effects.  Centralize handling side
effects for when set by the user, on init and when reset to default.

":tag" does not jump to the right entry of a :tselect. (James Speros, 2015 Oct
9)

The argument for "-S" is not taken literally, the ":so" command expands
wildcards.  Add a ":nowild" command modifier?  (ZyX, 2015 March 4)

Proposal to make options.txt easier to read. (Arnaud Decara, 2015 Aug 5)
Update Aug 14.

When using --remote-tab on MS-Windows 'encoding' hasn't been initialized yet,
the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21)

Example in editing.txt uses $HOME with the expectation that it ends in a
slash.  For me it does, but perhaps not for everybody.  Add a function that
inserts a slash when needed?  pathconcat(dir, path) (Thilo Six, 2015 Aug 12)

ml_updatechunk() is slow when retrying for another encoding. (John Little,
2014 Sep 11)

Patch to fix checking global option value when not using it.
(Arnaud Decara, 2015 Jul 23)

When 'showbreak' is set repeating a Visual operation counts the size of the
'showbreak' text as part of the operation. (Axel Bender, 2015 Jul 20)

Patch to add grepfile(). (Scott Prager, 2015 May 26)
Work in progress.

Would be useful to have a treemap() or deepmap() function.  Like map() but
when an item is a list or dict would recurse into it.

Patch for global-local options consistency. (Arnaud Decara, 2015 Jul 22)
Is this right?

Patch to make getregtype() return the right size for non-linux systems.
(Yasuhiro Matsumoto, 2014 Jul 8)
Breaks test_eval.  Inefficient, can we only compute y_width when needed?

Patch to use different terminal mode settings for system(). (Hayaki Saito)
Does this work for everybody?

Patch for man.vim. (SungHyun Nam, 2015 May 20)
Doesn't work completely (Dominique Orban)

Patch to add a "literal" argument to bufnr().  (Olaf Dabrunz, 2015 Aug 4)

When a session file is created and there are "nofile" buffers, these are not
filled.  Need to trigger BufReadCmd autocommands.  Also handle deleting the
initial empty buffer better. (ZyX, 2015 March 8)

Extended file attributes lost on write (backupcopy=no).  Issue 306.

Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25)
OK to not block marks?

Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1)

Patch on Issue 72: 'autochdir' causes problems for :vimgrep.

When two SIGWINCH arrive very quickly, the second one may be lost.
(Josh Triplett, 2015 Sep 17)

Make comments in the test Makefile silent. (Kartik Agaram, 2014 Sep 24)

Result of systemlist() does not show whether text ended in line break.
(Bjorn Linse, 2014 Nov 27)

When in 'comments' "n:x" follows after three-part comment directly it repeats
any one-character from the previous line. (Kartik Agaram, 2014 Sep 19)

Syntax highlighting slow (hangs) in SASS file. (Niek Bosch, 2013 Aug 21)

Adding "~" to 'cdpath' doesn't work for completion?  (Davido, 2013 Aug 19)

Patch: Let rare word highlighting overrule good word highlighting.
(Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2)

Patch to add digits argument to round(). (Yasuhiro Matsumoto, 2015 Apr 26)

Can assign to s:type when a function s:type has been defined.
Also the other way around: define a function while a variable with that name
was already defined.
(Yasuhiro Matsumoto, 2014 Nov 3)

Patch for ordered dict. (Ozaki Kiichi, 2015 May 7)

Patch to make closed folds line up. (Charles Campbell, 2014 Sep 12)
Remark from Roland Eggner: does it cause crashes? (2014 Dec 12)
Updated patch by Roland Eggner, Dec 16
Updated patch from Charles, 2016 Jul 2

Patch for building a 32bit Vim with 64bit MingW compiler.
(Michael Soyka, 2014 Oct 15)

Patch: On MS-Windows shellescape() may have to triple double quotes.
(Ingo Karkat, 2015 Jan 16)

Patch for glob(), adding slash to normal files. (Ingo Karkat, 2014 Dec 22)

When entering and leaving the preview window autocommands are triggered, but
these may not work well.  Perhaps set a flag to indicate that the preview
window is involved? (John Otter, 2015 Oct 27)

Using "." to repeat an Ex command puts that command in history.  Probably
should not happen.  If the command is the result of a mapping it's not put in
history either. (Jacob Niehus, 2014 Nov 2)
Patch from Jacob, Nov 2.

"hi link" does not respect groups with GUI settings only. (Mark Lodato, 2014
Jun 8)

Bug: Autocompleting ":tag/pat" replaces "/pat" with a match but does not
insert a space. (Micha Mos, 2014 Nov 7)

No error for missing endwhile. (ZyX, 2014 Mar 20)

Patch to make extend() fail early when it might fail at some point.
(Olaf Dabrunz, 2015 May 2)  Makes extend() slower, do we still want it?
Perhaps only the checks that can be done without looping over the dict or
arguments.

Problem with transparent and matchgroup.  Issue #475

Patch to add :arglocal and :arglists. (Marcin Szamotulski, 2014 Aug 6)

Spell files use a latin single quote. Unicode also has another single quote:
0x2019.  (Ron Aaron, 2014 Apr 4)
New OpenOffice spell files support this with ICONV.  But they are not
compatible with Vim spell files.  The old files can no longer be downloaded.

Spell checking: Add a feature to only consider two spaces after a dot to start
a new sentence.  Don't give the capitalization error when there is one space.

Idea: For a window in the middle (has window above and below it), use
right-mouse-drag on the status line to move a window up/down without changing
its height?  It's like dragging the status bar above it at the same time.

Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)

This does not give an error: (Andre Sihera, 2014 Mar 21)
    vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1'
This neither: (ZyX)
    vim -u NONE 1 2 3 -c 'bufdo while 1 | echo 1'

'viewdir' default on MS-Windows is not a good choice, it's a system directory.
Change 'viewdir' to "$HOME/vimfiles/view" and use 'viewdiralt' to also read
from?

Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman,
2014 Jun 8)

Include a plugin manager with Vim? Neobundle seems to be the best currently.
Also Vundle: https://github.com/gmarik/vundle
Long message about this from ZyX, 2014 Mar 23.  And following replies.
Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html
User view:
- Support multiple sources, basically any http:// URL. Or a central place that
  will work for everybody (github?  redirects from vim.org?).
  Be able to look into the files before deciding to install.
- Be able to try out a plugin and remove it again with (almost) no traces.
- Each plugin needs a "manifest" file that has the version, dependencies
  (including Vim version and features), conflicts, list of files, etc.
  Updater uses that to decide what/how to update.
  Dependencies can use a URL for specific versions, or short name for scripts
  on vim.org.
- Once a plugin is installed it remembers where it came from, updater checks
  there.  Can manually update when really needed.
- Must be possible to install for one user.  Also system wide?
- Can edit plugin config with Vim. Can temporarily disable a plugin.
- Run the update manually, find latest version and install.
- Be able to d                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              