Skip to content

Latest commit

 

History

History
3736 lines (2569 loc) · 121 KB

CHANGES.txt

File metadata and controls

3736 lines (2569 loc) · 121 KB

Changes

Significant changes to vimfiles (newest changes first).

Changes marked with "BREAKING CHANGE" indicate an incompatible change that may require adjustment of per-user settings.

2024-11-13

  • Fix problem with :Highlight trailingspace in C code comments. At some point, changes to Vim's C syntax highlighting caused the trailing space highlight to stop working. Originally, :Highlight was implemented via :syntax match commands; these now interact badly with other part of the syntax highlighting mechanism. :Highlight has been reimplemented using Vim's matchadd() feature, which takes precedence over :syntax match.

2024-11-10

  • Upgrade Neovim cmp plugin to version 2024-11-02. This fixes the warning vim.lsp.parse_snippet() is deprecated in Neovim 0.10.0.
  • Upgrade Neovim cmp-cmdline plugin to version 2024-03-22.
  • Upgrade Neovim cmp-nvim-lsp plugin to version 2024-03-17.
  • Upgrade Neovim cmp-nvim-ultisnips plugin to version 2024-08-02.
  • Upgrade Neovim plenary plugin to version 2024-09-17.

2024-11-02

  • Upgrade togglecursor plugin to version 0.6.0. This adds support for WezTerm and kitty, changes tmux escaping to default to off as tmux has long worked correctly out-of-the-box, and drops support for g:togglecursor_disable_neovim as it's no longer necessary.

2024-10-22

  • Fix use of mypy --python-executable on Neovim. Lua if not expression must be written as if expression == 0 for integer-valued expressions such as vim.fn.has('win32').

2024-10-20

  • Upgrade ALE plugin to version 2024-10-14.

  • Upgrade vim-lsp plugin to version 2024-10-23.

  • Improved Python support:

    • New Vimfiles-supplied custom commands for Python virtual environments:

      Venvinfo
      Venvdeactivate
      Venvactivate
      

      See :help notes_venv for details.

    • Use mypy --python-executable on Unix only to allow a globally installed mypy to follow dependent Python modules in venvs that lack a dedicated copy of mypy. python3 (if found on PATH) or python on the will be used as the interpreter for mypy type checking. On Windows, this technique doesn't seem to work for some reason, so --python-executable is not used.

      Note that there is a new recommended global configuration for mypy to help this work smoothly; see :help notes_optional for details.

  • :help notes_lsp documents how to debug LSP issues with log files.

  • Make Vimfiles startup cleanly with Vim-7.4.

2024-10-16

  • When installed, use the impressive Ruff Python linter/formatter instead of the slew of alternatives it replaces (flake8, black, isort, mccabe, pyflakes, pylint, etc.).

  • Update the instructions in :help notes_setup_optional for installing Python-based linters and formatters. In particular, the steps for python-lsp-server have been updated to use ruff in lieu of the above-mentioned alternatives. It's recommended to re-install python-lsp-server to take advantage of Ruff; if you've set things up following the notes in the past, this amounts to:

    pipx uninstall python-lsp-server
    pipx install python-lsp-server
    pipx inject python-lsp-server pylsp-mypy
    pipx inject python-lsp-server python-lsp-ruff
    

    In addition, it's recommended to create ~/.config/ruff/pyproject.toml to configure Ruff globally as explained in the notes.

  • Fix the configuration of Python's mypy type checker so that it properly picks up modules from a virtual environment. If mypy is installed globally (in its own virtual environment, for example), then it defaults to using its own Python interpreter and therefore can't find the Python modules installed in the virtual environment of the files being scanned. Use the switch mypy --python-executable PYTHON to point to a Python interpreter in the PATH. PYTHON here is python3 if that's in the PATH (as on Unix machines), and python otherwise (such as for Windows). If a project's virtual environment is activated before launching the editor, mypy will automatically pick up that environment's modules; otherwise, it will continue to work as before, typing checking what it can but being unable to compare against third-party modules. This mypy configuration applies when running under the language server python-lsp-server, for both Vim and Neovim.

2024-10-13

  • Update :help notes_search to mention # as the preferred method of launching a recursive search for the word under the cursor. This is implemented in terms of the custom :G command that invokes the :Grepper plugin using the best recursive searcher detected on the system. Ripgrep is the preferred tools and is highly recommended.
  • Upgrade Neovim LSP-related plugins: - lspconfig - null-ls is now none-ls (community-supported fork) - none-ls-shellcheck (Shellcheck support was pulled out of none-ls)
  • Move "Plugins" section of :help notes to the end, promoting :help notes_customizations and :help notes_tips to be earlier in the file and not lost behind the large number of plugins.

2024-08-22

  • Fix error E492: Not an editor command: SetupBashFixcommand when using Bash fc (fix command) to edit the shell command line using the Ubuntu stock build of Vim. Because of global settings in /etc/vim/vimrc, launching Vim via Bash's fc command causes ~/.vim/filetype.vim to be processed and a filetype autocmd to fire before ~/.vim/vimrc has a chance to be processed. Because the autocmd is fired again once vimrc has been fully read, the work-around just checks for the existence of the custom SetupBashFixcommand command before invoking it. This is not an issue for custom-compiled Vim that lacks the Debian-derived global vimrc settings.

2024-07-21

  • Add standard source-code support for C#. See :SetupCs in vimrc, which currently just chains to the usual :SetupSource.

2024-07-11

  • Upgrade Mundo plugin to version 2023-12-15. This fixes an incompatibility with Python 3.12.

2024-07-04

  • Update Neovim Telescope plugin to version 0.1.8 (along with dependent plugin plenary. This allows Telescope to work with Neovim 0.10.0.
  • Note how to install Neovim using the Ubuntu package manager.

2024-05-25

  • Setup titlestring to include the "server name" of the running editor instance. On Vim, this comes from --servername, and on Neovim it comes from the named pipe used by Neovim at startup or by the --listen argument. This allows activating the running instance's window by searching for the expected name in the window's title (e.g., using wmctrl -a on X11).

  • BREAKING CHANGE: upgrade ALE plugin to version 2024-05-08.

    Support for the old python-language-server was removed from ALE in 2021 because that LSP became unmaintained. python-lsp-server is a community-supported fork of the LSP that ALE (and other plugins) support.

    The old LSP's executable was named pyls; the new one is pylsp. Configuration in ALE (and in Vimfiles) had been done using variables containing the string pyls, but now they contain pylsp.

    See :help notes_setup_optional in the python-lsp-server section for instructions on setting up the new pylsp. If desired, you may also uninstall the old pyls via pipx uninstall python-language-server (or similar, depending on how you installed it).

    The Vimfiles variable g:EnableVimLsp_pyls has become g:EnableVimLsp_pylsp.

    The support in Vimfiles for Neovim and Python LSPs was already using the new pylsp, so you might already have it installed. The installation instructions mentioned above have some additional details that might make it worth reinstalling pylsp for some optional extra features.

  • Switch ALE Rust support from old rls to rust-analyzer.

  • Recommend newer lua-language-server-3.9.1.

2024-04-20

  • Restore the :Highlight command functionality that went missing due to some change in Vim or Vimfiles. The underlying cause of the regression hasn't been determined, but something is clearing the syntax match commands that the :Highlight command was adding. To work around this, the syntax match commands are now re-added when the Syntax autocmd fires.

2024-03-28

  • Add custom surround character S to surround with double-backticks (for use with the surround plugin). This is especially convenient for reStructuredText literal text (as found in this paragraph). For example, to to surround the below expression with double-backticks:

    y = m*x + b
    

    Visually highlight the portion to surround, then press SS, yielding:

    ``y = m*x + b``
    
  • Upgrade surround plugin to version 2022-10-25.

2024-03-16

  • Restructure :help notes for easier maintenance.
  • Move loremipsum plugin into bundle/ directory.
  • Move project plugin into bundle/ directory.
  • Update setup instructions now that .vimrc/_vimrc is no longer needed. The obsolete setup.py script and home.vimrc have been removed.
  • Update instructions for building Vim from source.
  • Update installation instructions for Vim and Neovim.

2024-03-02

  • Fix some syntax highlighting issues in .rst and .md files caused by embedding both cpp and c languages into code blocks. Because cpp internally includes the definitions for c, some syntax regions were being duplicated, causing issues. Also adjust the number of lines used for resynchronization of syntax highlighting for several languages to:

    syntax sync minlines=300 maxlines=300
    

    This helps keep Vim from becoming confused when hopping around a file containing lengthy snippets of an embedded language (such as example c code inside an .rst file).

2024-01-13

  • Disable the use of UltiSnips as a source for the Neovim cmp plugin (which provides completion options as you type). When there are many snippets defined, performance of insertion-mode typing is unusably slow when UltiSnips are used.

2024-01-01

  • Add <Space>fq for Telescope over QuickFix list (Neovim only).

  • Add <Space>fg for Telescope live_grep defaulting to the word under the cursor (Neovim only).

  • Follow symlinks for Telescope find_files operations:

    <Space>ff       - find files
    <Space>pf       - find files at project root
    <Space>pp       - find files at project root
    

2023-12-30

  • BREAKING CHANGE: change cscope mapping prefix from CTRL-\ to <Space>c for better typing ergonomics.
  • Add Neovim support for cscope. See :help notes_cscope for details.

2023-12-29

  • Reorganize colorscheme plugins in :help notes.
  • Add Nightfox customizable dark colorscheme for Neovim.
  • Add Iceberg bluish colorscheme for Vim and Neovim.
  • Add Melange dark or light colorscheme for Neovim.
  • Add Sonokai colorscheme (Monokai with reduced contrast) for Vim and Neovim.
  • Restore Dr. Chip's Align plugin; use prefix \| for mappings instead of the default \ to avoid mapping collisions. See :help notes_align for details.

2023-11-23

  • Do not allow writing a file named apostrophe (a too-common error for Mike on his laptop keyboard).

2023-11-22

  • Provide helper functions for plugin enable status:

    To enable, disable, or check the enabled status of a plugin, use the below functions:

    call vimf#plugin#enable('plugin_name')
    call vimf#plugin#disable('plugin_name')
    if vimf#plugin#enabled('plugin_name')
        " 'plugin_name' is enabled....
    endif
    

2023-11-11

  • Update pathogen plugin to version 2022-08-24.

  • Adjust patterns where Pathogen probes for bundles below each directory in 'runtimepath':

    bundle/{}           # Both Vim and Neovim
    vim-bundle/{}       # Vim only
    nvim-bundle/{}      # Neovim only
    pre-bundle/{}       # Higher-priority; both Vim and Neovim
    pre-vim-bundle/{}   # Higher-priority; Vim only
    pre-nvim-bundle/{}  # Higher-priority; Neovim only
    

    So, for example, to add a Neovim-only bundle named SomeBundle to your personal ~/.vimuser/ tree, place it in:

    ~/.vimuser/nvim-bundle/SomeBundle
    

    See :help bundle_installation for details.

2023-08-27

  • Extend "SwapIt" plugin to support TODO/DOING/DONE. With the cursor on one of these words, pressing CTRL-A will increment to the next one, and pressing CTRL-X will decrement to the previous one.

2023-08-19

  • Enable UltiSnips only if Python3 is available. UltiSnips no longer supports Python2.
  • Wrap :lua command in execute to prevent errors on Vim builds that lack Lua. Even though the :lua command was inside an if body where the predicate was false, Vim still complains about the lack of Lua while skipping over the inactive line.
  • Detect location of pynvim for Python support on Windows. Previous probing looked only for bin/python in the venv; now Scripts/python.exe is probed as well.
  • Upgrade fontsize plugin to version 0.5.0 to support Neovim GUIs.

2023-08-12

  • Adjust mappings for fuzzy file finding:

    <Space>pf       - find files at project directory
    
    " Experimental: same as <Space>pf but easier to type:
    <Space>pp       - find files at project directory
    

    In Vim, this is for CtrlPRoot; in Neovim, it's for Telescope.

    For fuzzy file finding relative to the current file's directory, the existing mapping for Vim has been extended to Neovim:

    <Space>ff       - find files at current file's directory
    

    In Vim, this is for CtrlPCurFile; in Neovim, it's for Telescope.

  • For Neovim, probe at ~/venvs/pynvim and /opt/pynvim for the virtual environment holding pynvim.

2023-08-05

  • Update UltiSnips plugin to version 2023-08-05. This works around a crash caused in part by a bug in Neovim 0.9.1 (slated to be fixed in a later 0.9 release).

2023-07-31

  • Disable the WhichKey plugins for marks and registers because of laggy behavior on slower machines. The worst behavior comes from the use of nvim_feedkeys() without the i flag, causing sequences like CTRL-r 0 moreStuff to be processed out-of-order, with moreStuff coming before the value of register 0. It's possible that using the i flag would fix the out-of-order issues, but these plugins don't add much value and best-case would cause typing lag even if the out-of-order behavior were fixed.

2023-07-30

  • Update Telescope plugin to version 2023-07-29. This uses a better work-around for the fast typing problem noted 2023-07-22.

2023-07-29

  • Disable the Eunuch plugin's insert-mode mapping of <CR>. This is needed to avoid interfering with vim-endwise while using Neovim with the cmp plugin. In particular, vim-endwise would fail to work after typing if true; then<CR> in a shell script after editing the shell script via :e shellscript.sh (though it works with nvim shellscript.sh for some reason).

    Eunuch's insert-mode mapping of <CR> isn't necessary and this is the easiest way to avoid breaking vim-endwise.

  • Upgrade the Endwise plugin to version 2023-04-23.

  • Work around lack of 'autoread' feature in Neovim GUIs. Both nvim-qt and neovide as of 2023-07-29 do not correctly work with the 'autoread' feature. (see equalsraf/neovim-qt#846).

    For now, provide a work-around to detect the FocusGained event and perform a :checktime manually to trigger the 'autoread' logic.

2023-07-22

  • Restore timeoutlen to 3 seconds.

    The previous shortening to 1.5 seconds was too short. If waiting the full 3 seconds for WhichKey to pop up feels too long, it turns out plugin can be triggered directly via:

    :WhichKey
    
  • Upgrade Telescope plugin to version 2023-07-22. This fixes problems with fast typing wherein the user's keystrokes intended to be used as a search pattern can be ignored or can cause mis-behavior of the Picker.

  • Add Telescope mappings for tags:

    <Space>ft       - find tags in current directory
    <Space>fT       - find tags in current buffer
    

2023-07-15

  • Upgrade CtrlP plugin to version 2022-08-03. This includes a patch to prevent referencing the 'cst' ('cscopetag') option when it is unavailable (a patch needed for use with Neovim, as the latter lacks this option).

  • Require case-sensitive matching for tags by setting tagcase=match.

    Previously Vim's default value tagcase=followic was used, meaning it followed the ignorecase setting. But generally tag lookup should ignore case, as most of the time tags are looked up by pointing the cursor on a tag and pressing CTRL-]. When case is ignored, the binary search optimization for sorted tagfiles can't be done, and tag searches with large tags files are very slow.

    Note that using a regular expression for tag lookup causes the ignorecase setting to be honored again. So:

    " `sometag` must match the case exactly:
    :tag sometag
    
    " `sometag` is treated like a regex, so it matches case-insensitively.
    " Note that this is a substring match as well, so it would match
    " `anothersometag` as well:
    :tag /sometag
    

2023-07-09

  • Add experimental support for Neovim. Documentation is greatly lacking for setting this up. Neovim-specific changes shouldn't take effect until ~/.config/nvim/init.lua is changed to explicitly chain to ~/.vim/init.lua.

2023-07-08

  • Upgrade UltiSnips plugin to version 2023-02-01.

2023-07-05

  • Shorten timeoutlen to 1.5 seconds.

    This attempts to balance competing desires:

    • A longer delay gives the user more time to recall and press the keys in a multi-key mapping.
    • A shorter delay allows the Neovim which-key plugin to pop up a help menu faster to show possible menu completions when the user is unsure of the available mappings.

    timeoutlen also controls how long "micro modes" last for things like the BufMRU plugin (launched via <C-^>).

    Hopefully this timeoutlen strikes a good balance.

  • Keep signcolumn on all the time, rather than allow it to disconcertingly come and go as errors are detected. This was previously the case when ALE was enabled; this change ensures the signcolumn is active even without ALE.

2023-07-04

  • Increase szakdark colorscheme contrast to aid in readability for NonText and SpecialKey highlight groups by lightening the foreground color.

    To opt back into the subtle highlighting for these highlight groups:

    let g:szakdark_subtle = 1
    

    Subtle highlighting of the Search group was already available via:

    let g:szakdark_subtle_search = 1
    

    By default, g:szakdark_subtle_search = 0, after which by default g:szakdark_subtle = g:szakdark_subtle_search; therefore, opting into subtle Search highlighting also opts into subtle NonText and SpecialKey highlighting by default as well. To separately control these features, define both variables explicitly.

  • Remove ~/.vim/scripts.vim. Vim uses this file for extended filetype detection. Neovim no longer supports this. At present, the only use was to detect #format rst at the start of certain files from an obsolete Wiki engine, so this file has been removed.

  • Avoid v:true for Vim 7.4 compatibility.

2023-06-30

  • Set printoptions only if the :hardcopy feature is available. Note that Neovim recently removed the :hardcopy command. Until a better solution arrives, the suggestion is to use the :TOhtml command and use a browser to make the actual printout.

2023-06-03

  • Update vim-lsp plugin to version 2023-05-16.
  • Update vim-lsp-ale plugin to version 2021-12-29.
  • Update tool/gentags to sort tags to put C prototypes later in the tags file. This makes function definitions appear first so that :tag and CTRL-] will jump to the definition. Previously it appeared this would naturally be the case anyway, but it turns out that tags files sort first on the tag name, then on the filename where the tag is found, then on other fields. If file.c contains the tag myfunc (a function definition, type f) and file.h contains the tag myfunc (a function prototype, type p), the definition sorts first because file.c sorts before file.h; but if the paths are inc/file.h and src/file.c, the former sorts first (inc comes before src) and the prototype ends up first in the sort order. Post-sorting ensures that the prototype comes later regardless of the file name.

2023-05-29

  • Configure .toml files (analogously to .yaml files) (expand tab characters, two-space indentation, configurable spell checking).

2023-05-27

  • Adjust t_8f and t_8b (terminal foreground and background colors) for TERM values starting with tmux in addition to those starting with screen. Historically, tmux has used TERM values starting with screen, but more recent tmux now uses value starting with tmux (noticed in Ubuntu 23.04).

2023-05-08

  • Update Grepper plugin to version 2021-08-30. Also fix the Grepper patch that forces a BufReadPost event when a search operation finishes. Previously, setqflist(list) was used to write the current search results back to the current QuickFix list, but this actually creates a new QuickFix list. setqflist(list, 'r') replaces the list with itself so that :colder operations don't encounter duplicate sets of search results.

2023-05-06

  • Update extline plugin to v0.2.1. This fixes the line length for titles with multi-byte characters and allows multi-byte characters for "horizontal line update".

2023-05-01

  • Stop overriding CTRL-] and friends for following tags. The built-in defaults are actually more convenient than originally thought. The defaults are:

    • CTRL-] jumps to the definition directly, saving the navigation of a menu in this common case.
    • g ] always results in a menu for matching tags.
    • g CTRL-] makes a menu unless there's only one matching tag.

    To restore the old mappings, let g:SwapTagKeys = 1 in your VIMRC_BEFORE file.

2023-04-29

  • Update Fixkey plugin to v0.3.15. This fixes a regression in version 0.3.14 for terminals that lack TermResponse. Now, in addition to TermResponse, Fixkey watches for the VimEnter autocmd to ensure Fixkey setup will always be invoked. Notably tmux, PuTTY, and Linux console do not trigger TermResponse autocmd events.

2023-04-22

  • Remove obsolete :ResetGuiFont command. This was a work-around from at least a dozen years ago to handle a long-forgotten bug in Fedora's build of Vim. The work-around was to use :let &guifont=&guifont to set the font back to its current value. This function had been part of :RefreshScreen (invoked by CTRL-L).

2023-04-12

  • Adjust ALE flake8 settings. Note that newer flake8 no longer supports a user-wide configuration file in ~/.config/flake8, so per-user adjustments no longer take place automatically. Adjustments:

    • Ignore "I202 Additional newline in a group of imports".
    • Match Black's use of double-quoted strings with --inline-quotes=double.
    • Match the python-language-server default McCabe complexity value via --max-complexity=15.

    Override these changes by adjusting g:AleFlake8Ignores and/or g:ale_python_flake8_options (see vimrc).

2023-04-01

  • Disable spell-checking for readonly help pages to make reading them easier. When editing a help file, spell checking remains on. To enable this, spelling may now be disabled on a per-buffer basis using b:Spell (see :help notes).
  • Upgrade Fixkey plugin to v0.3.14. This works around a problem with newer Vim and gnome-terminal whereby the user's first keystroke is swallowed. See :help fixkey for details.

2023-03-29

  • Setup ALE to use the C pre-processor with assembly files.

2023-03-25

  • Suggest use of ~/.config/clangd/config.yaml to configure clangd to disable warning about unused functions in header files (see :help notes near linters/formatters).
  • When clangd is available, remove linters "cc" and "clangtidy", as they just get in the way.

2023-03-18

  • Remove insufficiently maintained Clojure language support (thanks to John Szakmeister).

2023-03-17

  • Add t snippet for - TODO: in reStructuredText and Markdown.

  • Set wildignore to ignore a few directories:

    • Meson build-related directories:

      builddir
      bindir
      subprojects
      
    • Python virtual environments:

      venv
      

2023-02-04

  • Rework configuration settings for markdownlint (mdl).

    • Any ~/.mdlrc file will take precedence; if this file does not exist, g:ale_markdown_mdl_options will be set to point mdl at the file $VIMFILES/etc/mdl-style.rb, which contains rule adjustments for mdl.

    • To use the above $VIMFILES/etc/mdl-style.rb file when running mdl from the command line, create ~/.mdlrc with contents:

      style "#{File.dirname(__FILE__)}/.vim/etc/mdl-style.rb"
      

2023-01-28

  • Disable highlighting of the markdownError syntax group for Markdown files; this group indicates the presence of underscores within words. Such underscores are not generally errors (see https://spec.commonmark.org/0.30/#emphasis-and-strong-emphasis). To retain the original highlighting anyway, use:

    let g:LocalAllowMarkdownError = 1
    

2023-01-19

  • Add UltiSnips for Rust eprintln!() and friends:
    • epr => eprintln!("{}", ...);
    • eprd => eprintln!("{:?}", ...);
    • epri => eprint!("{}", ...);
    • eprid => eprint!("{:?}", ...);

2023-01-01

  • Add new gentags utility supporting both Universal and Exuberant Ctags.

2022-12-31

  • Upgrade tagbar plugin to version 3.1.1.
  • Upgrade Rust plugin to version 2022-11-27.

2022-12-29

  • Disable ShellCheck overly-cautious warning: "SC2016: Expressions don't expand in single quotes", as using single quotes is idiomatic for suppressing special behavior of characters such as backticks.

2022-12-17

  • Update Rust snippets.

2022-11-07

  • Disable markdownlint warning MD036 (emphasis used instead of a header).

2022-10-17

  • Update Eunuch plugin to version 2022-10-12. See :help notes_eunuch for summary of plugin commands.
  • Update tComment plugin to version 2022-07-22.

2022-10-15

  • Add Iface/ directory for the FSwitch plugin. Now pressing \of will switch between *.c/*.cpp files in src/ and correspondingly named *.h files in any of pubinc/, include/, inc/, and Iface/ directories.
  • Upgrade Markdown language support plugin to version 2022-10-13.

2022-09-06

  • Fix gx mapping that was inadvertently broken by removing the obsolete netrw plugin. netrw (which ships with Vim) renamed the function netrw#NetrwBrowseX() to netrw#BrowseX() in Vim v7.4.567. The gx mapping, which calls this function, now adapts to whichever name is available.

2022-08-20

  • Map Jenkinsfile to filetype groovy.

  • Add inc/ directory for the FSwitch plugin. Now pressing \of will switch between *.c/*.cpp files in src/ and correspondingly named *.h files in any of pubinc/, include/, and inc/ directories.

  • Update the reStructuredText footnote snippet to automatically insert # when appropriate. Typing foot<Tab> will now insert the following:

    .. [#label_num_star_or_backspace]
    

    The label_num_star_or_backspace will be selected. Type desired footnote label, overwriting the selection. If the label is * or a decimal number, the # will be removed; if the label is any other non-empty value (or if the label is deleted by pressing Backspace), the # will be kept. For example:

    .. [#text] After typing ``text`` and <Tab>.
    
    .. [1234] After typing ``1234`` and <Tab>.
    
    .. [*] After typing ``*`` and <Tab>.
    
    .. [#] After typing <Backspace> and <Tab>.
    

2022-08-13

  • Remove obsolete netrw plugin (version v147, from November 2012). This plugin comes bundled with Vim. At some point, the bundled netrw in old versions of Vim had an issue (now long forgotten) that was solved by including a newer netrw in Vimfiles. That version is now ancient; even Vim 7.4 has a better netrw version (v156, from Feb 2016).

2022-08-06

  • Add backtick as a reStructuredText snippet for inserting literal text.

    To get this:

    ``some literal text``
    

    Press this:

    `<Tab>
    

    to get this:

    ``<cursor_here>``
    

    then type some literal text and press Tab to get:

    ``some literal text``<cursor_here>
    

    Two backticks are usable as the trigger as well.

    This is the same as the trigger lit, but a bit less to type and easier to use after already typing one or two backticks by habit.

2022-06-03

  • :set history=10000 to keep the maximum amount of command-line history.

2022-05-26

  • Note how to install mdl (Markdown linter).
  • Use #!/usr/bin/env python3 for buildtool.
  • Use #!/usr/bin/env python3 for setup.py.
  • Tweak tool/execargs.py for Python 3.
  • Use #!/usr/bin/env python3 for tool/markdown2ctags/markdown2ctags.py.
  • Use #!/usr/bin/env python3 for tool/rst2ctags/rst2ctags.py.
  • Modernize to Python 3 + Black various UltiSnips-related Python scripts (pythonx/sniputil.py, UltiSnips/*.py).

2022-05-15

  • Add yaml to embedded languages for reStructuredText and Markdown.
  • Configure markdownlint (mdl) warnings for ALE.

2022-04-29

  • set virtualedit=block to enable "virtual" space (beyond end-of-line) when in visual-block mode. This is useful for making a rectangular selection at the end of the longest line in a set of lines of varying lengths.

2022-04-02

  • Change ALE configuration for flake8 from using --ignore to using --extend-ignore; otherwise, any ignores set in configuration files will be replaced with the list in g:ale_python_flake8_options. Currently, Vimfiles uses:

    --extend-ignore=E203,N811,N812,N813,N814,W503
    

2022-03-30

  • Add support for Zig programming language (syntax highlighting, ALE, vim-lsp).

2022-03-26

  • After using :DiffOrig, wipe out scratch buffer when it is removed from the window. Remove obsolete :DiffClose, :DiffOff commands.

  • Upgrade endwise plugin to version 2022-03-24.

  • Add DiffChar plugin for highlighting differences based on characters and words. Mappings for navigating among differences:

    [b Jump to the start position of the previous difference unit ]b Jump to the start position of the next difference unit [e Jump to the end position of the previous difference unit ]e Jump to the end position of the next difference unit <Leader>g Get difference unit from other buffer <Leader>p Put difference unit to other buffer

  • Add SpotDiff plugin for partial diffs of areas and line ranges.

    Commands:

    :[range]Diffthis
        Select a range of lines with [range] (default: current line) and make
        the current window diff mode.
    
    :Diffoff[!]
        Clear the selected range of lines and reset diff mode for the current
        window. If ! flag is specified, clear and reset for all windows in the
        current tab page.
    
    :Diffupdate
        Update the differences for the selected range of lines in the current
        tab page.
    
  • Upgrade tool/ack to v3.5.0.

  • Synchronize fifosignal, fifowait, and gentags (found in ~/.vim/tool/) with upstream copies living in home.git (in ~/bin/).

  • Use distinct undodir for Neovim-0.5 (since format has changed from Vim). For Neovim 0.5+, use $VIM_CACHE_DIR/undo2 instead of $VIM_CACHE_DIR/undo.

  • Add support for Python isort (using the black profile). If isort is installed, it will be used by <Space>= (which invokes :ALEFix).

2022-03-22

  • Silently ignore missing syntax languages included into reStructuredText and Markdown files. This fixes errors trying to include syntax support for filetype=bash for Vim versions prior to 8.1.2088 (where support for bash was added).

2022-03-06

  • Update cpsm plugin to version 2021-07-25. This fixes a compilation error based on a missing include of <limits>.
  • Promote the date snippet from being language-specific (just .rst and .md) to all file contexts. Press date<Tab> to expand to today's date in the format yyyy-mm-dd.
  • Update CtrlP plugin to version 2022-02-09.

2022-02-17

  • Set 'filetype' to sshconfig for */.ssh/config.d/*.conf. Allows adding snippets of configuration in ~/.ssh/config.d/xxx.conf that may be included with the following line in ~/.ssh/config:

    Include config.d/*.conf
    
  • Add extend_list plugin v0.1.0 (thanks to Matt). Press CTRL-o n to extend a list with a new list item (bulleted or numbered). For example, starting in insert mode with your cursor at <CURSOR_HERE> below:

    1. First list item.<CURSOR_HERE>
    

    Pressing CTRL-o n will automatically insert a newline and the next line number, e.g.:

    1. First list item.
    2. <CURSOR_HERE>
    

    :help extend_list for details.

  • Upgrade Markdown language support plugin to version 2022-01-24.

  • Add bash embedded syntax highlighting for Markdown, reStructuredText.

  • Add bash UltiSnips snippet for Markdown and reStructuredText to start Bash-syntax code blocks.

  • Refine the :RstLiteralBlockFix command. Previously, enumerators were permitted to be digits and letters, allowing list items like this:

    i.  The first thing.
    ii. The second thing.
    

    Though this is legal reStructuredText, it is uncommon; moreover, due to limitations with the regular expression for detecting enumerators in a list while checking for the :: at the end of a line, in the more common case shown below, literals aren't detected properly. Consider this example of reStructuredText:

    This is a sentence with many
    words.  Now a literal follows::
    
        But it is not highlighted correctly because "words." looks like
        an enumerator, so the indentation is insufficient to be considered
        a valid literal (it would need to be indented beneath the "Now").
    

    Any single word followed by a period will trigger this unwanted behavior. Since digits are by far more common and it's not very likely to have both an alphabetic enumerator and a :: at end-of-line, a new control variable has been defined to disable alphabetic enumerators:

    g:RstLiteralBlockFix_alphaEnumerators
    

    This defaults to zero, but it may be overridden in a VIMRC_BEFORE script to restore the previous treatment.

2021-12-12

  • Fix problem with :syntax on in system vimrc (e.g., /etc/vimrc for Fedora 35). With an early :syntax on in the system vimrc, Vim will load files from ~/.vim/after/syntax/ before ~/.vim/vimrc has been sourced. This causes problems for syntax files that refer to functions defined in ~/.vim/vimrc (e.g., SetupRstSyntax for .rst files).

    To work around this, Vimfiles now performs an early :syntax off (in case the system vimrc has turned it on), and places guards in the various after/syntax scripts to check for the existence of g:VimfilesFiletypeReady (which proves ~/.vim/vimrc has run).

2021-11-02

2021-10-19

  • Add non-Doxygen snippets for C code to sit alongside the Doxygen ones for:
    • main()
    • struct
    • enum

2021-10-04

  • Default to activating the cpsm matcher for use with the CtrlP plugin if the user has compiled it. See :help notes_cpsm for instructions on compiling cpsm.

2021-10-02

  • Add C-language snippets (with aliases):
    • unsigned char (uc) -> unsigned char
    • printf (pr) -> printf("fmt", ...)
    • dprintf (dpr) -> dprintf(fd, "fmt", ...)
    • fpprintf (fpr) -> fprintf(stderr, "fmt", ...)
    • sprintf (spr) -> sprintf(buf, "fmt", ...)
    • snprintf (snpr) -> snprintf(buf, sizeof(buf), "fmt", ...)

2021-09-08

  • Adjust *, #, and <F3> mappings so that no register values are clobbered.

2021-08-18

  • Add vim-lsp plugin for Language Server Protocol support. This plugin has better LSP support than ALE, and the vim-lsp-ale plugin eases the integration of these two plugins. :help notes_vim-lsp for more information, and see the "Linters/formatters" section of :help notes_setup_vimfiles for installation instructions for various linters, LSP servers, etc.

2021-08-16

  • When using cpsm and ripgrep for listing files in a Git repo, explicitly ignore .git directories using rg -g "!.git/".

2021-08-09

  • Update rust snippets:
    • Remove parentheses from if (pred) and while (pred).
    • Add snippets for assert!(), assert_eq!(), and assert_ne!().

2021-08-04

  • Upgrade Fugitive plugin to version 2021-08-03. This fixes a Fugitive error with recent Vim; the error is E1208: -complete used without -nargs, as reported in tpope/vim-fugitive#1791.

2021-05-31

  • Add Unicode plugin. See :help notes_unicode for details. The main new feature is insertion-mode completion of a Unicode character name. For example, to insert a ZERO WIDTH SPACE Unicode character, type zero and press CTRL-x CTRL-z to get a list of possible completions; use cursors to choose desired matching character.
  • Remove Characterize plugin; the ga functionality (identifying the Unicode character under the cursor) is now provided by the Unicode plugin.
  • Fix E16 error when pressing <F4> before populating the QuickFix window.

2021-05-29

  • Convert the patch to the reStructuredText syntax highlighting file into a command that allows selectively enabling/disabling the fix. The fix will be enabled by default, but it may be disabled via:

    :RstLiteralBlockFix off
    

    See :help notes_rst for more information.

2021-05-22

  • Upgrade "misc" plugin to version 1.17.6 (2015-05-21). This is a dependency for the "session" plugin.

  • Upgrade "session" plugin to version 2.13.1 (2015-11-01).

  • Patch "misc" plugin to add :silent during system("uname") during processing of VimEnter (from "session" plugin). This avoids interrupting terminal negotiations (especially for terminals such as Kitty and XTerm) and prevents display of these junk escape sequences such as:

    ^[[2;2R^[[3;1R^[[>1;4000;20c^[]10;rgb:dddd/dddd/dddd^[\^[]11;rgb:0000/0000/0000^[\
    
  • Upgrade "swapit" plugin to version 2020-11-30.

  • Fix the global list of "swapit" swap lists. Previously, this was being done incorrectly in $VIMFILES/after/plugin/swaplist.vim via :SwapList commands (which are supposed to be per-filetype, not global); now the global lists is being overwritten directly in g:default_swap_list. See the swaplist.vim file for details.

  • Upgrade "gruvbox" colorscheme to version 2020-07-03. This includes a fix for the error:

    Error detected while processing function signature#Input..signature#mark#Toggle..signature#mark#Place..signature#sign#Place..signature#sign#RefreshLine:
    line   20:
    E121: Undefined variable: SignatureMarkText
    

    This was fixed in morhetz/gruvbox#38.

  • Upgrade "signature" plugin to version 2018-07-06. This required a corresponding tweak to the szakdark colorscheme. Previously, the signature plugin required the variables below to contain embedded quotation marks, so szakdark used to have this:

    let g:SignatureMarkerTextHL='"SignatureMarkerText"'
    let g:SignatureMarkTextHL='"SignatureMarkText"'
    

    Now the quotes are not permitted, so szakdark now does this:

    let g:SignatureMarkerTextHL='SignatureMarkerText'
    let g:SignatureMarkTextHL='SignatureMarkText'
    
  • Upgrade "surround" plugin to version 2019-11-28.

  • Upgrade "ale" plugin to version 2021-05-04.

2021-05-17

  • Fix E108: No such variable: "g:is_kornshell" with Bash fc in newer Vim. For some reason, in newer Vim the SetupBashFixcommand() function is called twice by the autocmds in filetype.vim, so now unlet! g:is_kornshell is used to avoid this error.

2021-05-09

  • Switch CMake syntax support to be based on upstream CMake-supplied files.

2021-05-08

  • Update Markdown syntax support to version 2021-04-21.

  • Add a few snippets for Markdown:

    • Triggers for code blocks of the form:

      ```language
      some language text here
      ```
      

      Languages:

      code sh python ruby rust text
      
    • date (to insert the date).

  • Use double-quotes for Python ifmain snippet, which generates:

    if __name__ == "__main__":
        main()
    
  • Update Fugitive plugin to version 2021-05-02.

  • Add CMake syntax support.

2021-03-09

  • Configure Grepper options for ripgrep and The Silver Searcher to remove redundant copies of lines containing multiple matches of the pattern, preventing errors in the Quickfix Reflector plugin (which sees duplicate lines as editing conflicts). Interestingly, ripgrep's --vimgrep option, presumably named to reflect Vim's :vimgrep output format, goes to extra trouble to duplicate matching lines even though Vim's own :vimgrep command does not generate redundant lines.

2021-02-22

  • Add updated reStructuredText language support plugin. This fixes some literal block highlighting issues as shown in this example:

    - A bullet with literal following::
    
        Correctly highlighted literal
    
      Incorrectly highlighted as literal
    
    Correctly unhighlighted.
    
  • Update Vis plugin to version v22 (Jan 7, 2020). This fixes problems with :B; see :help notes_vis for usage.

  • Update Visincr plugin to version 21h (Nov 22, 2017).

  • Update Visswap plugin to version v4g (Feb 18, 2016).

  • Update Vissort plugin to version v4 (Apr 16, 2013).

  • Update RunView plugin to version v4e (Jan 12, 2018).

2021-02-18

  • Update Fixkey to version v0.3.13, bringing support for alt-shifted-numbers.

2020-12-06

  • Upgrade cpsm to version 2020-08-01. This fixes some build issues on Ubuntu 20.04.

2020-10-18

  • Fix EasyAlign pattern for C macro line continuations, ensuring the backslashes are found only at end-of-line. For example, given this C code:

    #define SOME_MACRO() \
        printf("Hello\n"); \
        someFunction(with, many, args); \
        printf("Bye\n");
    

    Visually select the above lines and type:

    \a\
    

    This will align the final backslashes as:

    #define SOME_MACRO()                \
        printf("Hello\n");              \
        someFunction(with, many, args); \
        printf("Bye\n");
    

2020-10-06

  • Update rst2ctags to v0.2.2 and markdown2ctags to v0.2.5 (thanks to John Szakmeister). This fixes issues some users were having with the chevron character with the tagbar plugin.
  • Update rst2ctags to v0.2.3 and markdown2ctags to v0.2.6 (thanks to John Szakmeister). These come with 100 ms startup time savings which should improve tagbar responsiveness.

2020-09-28

  • Update Fugitive plugin to version 2020-09-27.

2020-09-17

  • Avoid changing termguicolors when unsupported on older Vim (thanks to John Szakmeister).

2020-08-16

  • Update Fixkey plugin to version v0.3.12. This extends detection of TERM=linux to include color cases such as linux-16color (thanks to Andy Weidenbaum).

2020-07-15

  • Leave indentkeys at the default value for YAML files. Previously several keys were removed from indentkeys for a better editing experience, but recent changes to Vim's YAML indentation logic has made it important to leave indentkeys unmodified. The new logic indents a new line after a key:value pair until a subsequent key:value pair is typed (signified by pressing :). For example, typing the text key1: value1<CR>key2 yields:

    key1: value1
      key2
    

    But typing the additional text : value2 causes re-indentation (due to the : key), yielding the expected:

    key1: value1
    key2: value2
    
  • Map CTRL-6 to CTRL-^ to work around bug introduced in Gvim 8.2.0851: vim/vim#6457 The bug impacts Gvim on Linux, making both CTRL-6 and CTRL-^ no longer work with the BufMRU plugin. The work-around fixes CTRL-6 (but not CTRL-^).

2020-07-12

  • Upgrade localvimrc plugin to 2020-06-30, fixing the below error that's exposed via newer Vim 8.3 (thanks to @unimpossible):

    E654: missing delimiter after search pattern: Vim\%((\a\+)\)\=:E48
    

2020-05-17

  • Upgrade matchup plugin to version 5.0 2020-05-07.

2020-03-22

  • Update Python indentation support to version 2020-03-20. This fixes the over-indentation for functions with long arguments. Previously, Vim would cause 8-character indentation when typing this function:

    def some_function(
            some_long_argument, another_long_argument, third_long_argument,
    

    Now it's properly indented as:

    def some_function(
        some_long_argument, another_long_argument, third_long_argument,
    

2020-03-14

  • Add settings for Dockerfile files.

2020-02-29

  • If ripgrep (rg) is available, use g:ctrlp_user_command to configure CtrlP to use ripgrep within Git repositories. This has the benefit of automatically taking into account .gitignore files.

2020-02-23

  • Upgrade BufExplorer plugin to version 2020-02-17.

2020-02-22

  • Suppress annoying Press <cr> to continue message when using gx on Windows.

2020-02-01

  • Ignore flake8 (pep8-naming) warnings:

    • "N811 constant imported as non constant"
    • "N812 lowercase imported as non lowercase"
    • "N813 camelcase imported as lowercase"
    • "N814 camelcase imported as constant"

    Such renamings are almost certainly intentional.

2020-01-30

  • Ignore shellcheck warning "SC1090: Can't follow non-constant source".

2020-01-17

  • Ignore rstcheck warning regarding 'Enumerated list start value not ordinal-1'.

2019-12-31

  • Disable ALE auto-completion. The completion menu pops up too often and steals keystrokes (especially Enter), impeding text entry. Especially bad is the case where an identifier has been manually typed and is followed by Enter; in this case, the popup menu steals the Enter key. Consider this Python snippet:

    if condition:
        return variable
    something()
    

    When typing return variable<Enter>something() without attempting to use the popup menu, ALE notices that variable can be completed and it pops up the completion menu. Even though the user has typed the entire name variable, the menu stays up. Vim then swallows the Enter key to close the menu, injecting an error into the typed text:

    if condition:
        return variablesomething()
    

    Therefore, ALE's automatic completion menu feature has been disabled. To manually invoke the completion menu, press CTRL-X CTRL-O.

2019-12-30

  • Disable ALE's python-language-server (pyls) pycodestyle plugin, allowing the flake8 plugin to be used instead. This allows the global ~/.config/flake8 configuration file to be honored when checking Python source files.

2019-11-26

  • Add configurability for Vim's 'comments' setting and the TComment plugin's comment definitions for C and C++. By default, TComment's gcc command will now use // C++-style comments for both C and C++. As before, Vim's 'comments' setting defaults to avoiding the use of leading asterisks in C-style comments. Now both of these defaults may be changed as explained in :help notes_tcomment.

2019-11-21

  • Use completeopt+=noselect,noinsert only for Vim 7.4.775+ (thanks to John Szakmeister).

2019-11-14

  • Re-implement paragraph reformatting (<M-q>) so it doesn't require a named mark register.

2019-10-28

  • Fix Quickfix-reflector problem triggered by modifying QuickFix results without saving them, followed by generating new results. This had been causing exceptions that are now avoided by setting nomodified when new QuickFix results are read.

2019-10-16

  • Fix :help notes_mundo to give the correct mapping for MundoToggle:

    <Space>qu     :MundoToggle
    

2019-10-15

  • Add mapping gV to visually select the text that was last edited/pasted.
  • Enable the [n/m] message for searching (by removing S from 'shortmess'). In addition, adjust the mappings for *, g*, n, and N to ensure the message is visible.
  • For Vim 8.1.0360 and onward, enable the new internal diff engine (via the diffopt option) with two new features:
    • indent-heuristic: uses indentation to perform smarter diffing.
    • algorithm:histogram: uses the "histogram" algorithm (a derivative of the "patience" algorithm) as use in Git.

2019-10-13

  • Use the q register to mark and restore the cursor position when rewrapping paragraphs using <M-q>. This works in normal, visual, and insert modes. See :help notes_reformatting for details.

2019-10-08

  • Fix CHANGES.txt note that erroneously suggested using the VIMRC_BEFORE file (typically ~/.vimuser/vimrc-before.vim) to force use of Powerline; this should have said VIMRC_VARS (typically ~/.vimuser/vimrc-vars.vim). If you have the line below (or similar g:EnableXxx lines) in your vimrc-before.vim file, move them to vimrc-vars.vim:

    let g:EnablePowerline = 1
    
  • Allow override of g:PythonExecutable in VIMRC_VARS.

  • Add g:EnableSyntastic to allow disabling both ALE and Syntastic.

  • For internal function ReplacePowerlineSyntastic(), return early if Syntastic is disabled (only matters is Powerline is being used).

2019-10-05

  • Add clang-format into g:ale_fixers for the C and C++ languages. Use <Space>= to auto-format the current file (for C/C++ or any other supported language).
  • Detect POSIX shell vs. Bash for ALE shfmt (the default ALE fixer).

2019-09-30

  • Enable 24-bit color for terminals that support it. These include xterm and screen/tmux where the environment variable COLORTERM is set to truecolor.

2019-09-28

  • Remove sneak plugin; similar functionality is already present in the EasyMotion plugin. See :help notes_easymotion for details.
  • Upgrade BufExplorer plugin to version 2019-02-13, with patches that allow deletion of the final buffer.
  • Replace manpageview plugin with Vim's built-in support for Manpages. The interface is similar: press K to get help for the word under the cursor. Use :Man topic to get help on topic. The in-built support works properly with PageUp/PageDown, unlike the old manpageview plugin.

2019-09-21

  • Upgrade ALE plugin to version 2019-09-20.
  • Setup completeopt to require menu selection (for better ALE support).
  • Setup ALE auto-completion with Rust Language Server for Rust.
  • Change mapping for toggling Mundo window to be <Space>qu (to match the theme that <Space>q is the toggle window prefix.
  • Upgrade EasyMotion plugin to version 2019-03-23.
  • Add Python Language Server (pls) support for ALE. See :help notes_setup_vimfiles for information on installing pls.
  • Fade to black: adopt the black formatter's quote-character style (using double quotes instead of single). Formatting with <Space>= will now reformat quotes in a Python source file. See :help notes_setup_vimfiles for information on configuring a given project via pyproject.toml to change any black options. In addition, the flake8 installation instructions have been updated to include a section on creating a flake8 configuration file.
  • Upgrade endwise plugin to version 2018-12-26.

2019-09-20

  • Replace unmaintained Gundo plugin with Mundo (a fork that brings Python 3 support and other new features). Change mapping for toggling the undo window to <Space>uu. See :help notes_mundo for details.

  • Enable matchup plugin by default, and remove the obsolete matchit plugin it replaces. The matchup plugin provides enhanced support for matching related items.

    Press % to match: - Bracket pairs: () [] {} - C-language #if / #else / #endif - HTML tags <start> / </end> - etc.

    See :help notes_matchup and :help matchup for more details.

2019-09-19

  • Adjust Rust comment style for block comments.

2019-09-18

  • Merge correct branch of the rust plugin (was using master instead of the vimfiles branch).
  • Restore the cursor position only for regular buffers. This avoids strange interactions with the ALE plugin and the QuickFix window.

2019-09-15

  • Organize plugin patches into separate Git repositories:

    • BufMRU.
    • Grepper.
    • manpageview.
    • rust.
    • OmniCppComplete.
    • Powerline.
    • z80.
  • Update Vimball plugin to version 33.

  • Update manpageview plugin to version 25u.

  • Update rust plugin to version 2019-08-30.

  • Update Grepper plugin to version 2019-09-04.

    Also increase g:grepper.stop (the maximum number of matches before stopping) from 5000 to 20000.

2019-09-14

  • ~/.vim/buildtool, a helper for compiling custom builds of Vim, now prefers /usr/bin/ruby (if it exists) for the embedded Ruby interpreter. This avoids problems with Ruby interpreters installed via rvm that live earlier in the PATH.

2019-09-12

  • Add rubocop into g:ale_fixers for the Ruby language. Use <Space>= to auto-format the current file (for Ruby or any other supported language).

2019-09-11

  • Update vim-snippets plugin to version 2019-09-03. Note that these snippets are not active by default; see :help notes_snippets for details.
  • Add some snippets for the Rust language.

2019-09-01

  • Default to ALE (Asynchronous Lint Engine) instead of Syntastic where possible. ALE provides a better experience than Syntastic, giving immediate feedback as you type. ALE requires Vim 8.1.0834 or newer; for older Vim, Syntastic will be used instead of ALE. To force the use of Syntastic instead of ALE, place the following in your vimrc-vars.vim file:

    let g:EnableAle = 0
    

    For more details about ALE, see :help notes_ale and :help ale.

  • For better syntax highlighting speed, choose a synchronization point 1000 lines before the top of the current window instead of always choosing the top of the file. This makes a large improvement in speed for large files (e.g., a 10,000 lines reStructuredText file). In the rare event that 1000 lines is not enough to synchronize the syntax highlighting, issue the following command:

    syntax sync fromstart
    
  • Stop forcing the use of Python 2 when both Python 2 and Python 3 are available. Python 2 support terminates by January 1, 2020. The variable g:ForcePython2 has been removed; the Python version is now chosen solely by detecting Vim's compiled-in interpreter support by probing in the order pythonx then python3 then python.

  • Ship an example gentags script in ~/.vim/tool/gentags. See :help notes_tag_files for details. Add some notes about the Tagbar plugin.

2019-08-28

  • Upgrade airline and airline-themes plugins.
  • Upgrade fugitive plugin to version 2019-08-21.
  • Fix speed regression caused by dynamic :Highlight command, wherein navigation in large reStructuredText files was too slow.
  • Upgrade experimental ale plugin to version 2019-08-18 (disabled by default).
  • Ignore "Possible incomplete section title" warning for ale rstcheck.

2019-08-27

  • Add experimental support for Matchup plugin (disabled by default).
  • Adjust default Search highlighting for more readable contrast (especially in Console Vim).

2019-08-25

  • Add toml syntax highlighting for reStructuredText and Markdown files.

2019-08-24

  • Update Fixkey plugin to version 0.3.11. This works around issues with newer Xterm.

2019-08-24

  • Improve :Highlight feature:
    • Long lines are now defined dynamically by the 'textwidth'.
    • Highlighting colors are more muted.

2019-08-21

  • Update reStructuredText snippets:

    • Remove over-indentation of some block snippets.

    • Add snippets for several new code-block types (sh, python, ruby, rust, text).

    • Add snippets for some directives (.. math:, .. [footnote], .. image:, centered .. image:.

    • Bring in several markup snippets from John Szakmeister: literal syntax via lit`, inline math via m, superscript and subscript via sup/sub, hyperlink markup via link, title role via title, and today's date via date.

    • Supply visual-mode support for many of the snippets. Normally, snippets are expanded by typing the trigger followed by the <Tab> key; for example, to make a level-one heading, type h1 followed by <Tab>, which will generate the following:

      Section
      =======
      

      Typing New Title will cause the highlighted Section to be replaced, yielding:

      New Title
      =========
      

      Alternatively, the new title may be typed in and visually selected, followed by <Tab>, h1, and <Tab> again. In this case, the original visually selected text will be used as the title.

  • Add some mappings:

    • <Space>bd :BW ; Wipe out buffer
    • <Space>bD :BW! ; Wipe out buffer (even if modified)
    • <Space>bb :CtrlPBuffer ; Select from open buffers
    • <Space>ff :CtrlPCurFile ; Select files relative to current file
    • <Space>pf :CtrlPRoot ; Select files relative to project root
    • <Space>w <C-w> ; Make window operations easier to type
    • <Space>xdw :StripTrailingWhitespace
  • More experimental configuration for ALE.

2019-08-20

  • Remove obsolete incsearch and incsearch-fuzzy plugins. The primary feature (highlighting matches while typing a search pattern) has been incorporated into Vim itself, and as a result the plugins aren't being maintained.

    After starting a search with / or ?, Vim will highlight the matches incrementally as you type in a search pattern. Before pressing Enter, you can press CTRL-t or CTRL-g to move to the previous or next match.

    Note also that Vimfiles remaps some keys in command-line mode (which applies during searching as well) in order to provide familiar EMACS-style editing (as found in the Bash shell, for example). To invoke the previous functionality for a given key, precede it by CTRL-o. For example, to access the search history which is normally available by pressing CTRL-f, use CTRL-o CTRL-f.

    See :help cmdline.txt for more about Vim's command-line-mode keys.

2019-08-04

  • Update Rust language support plugin to version 2019-08-01, fixing some indentation issues.

2019-07-24

  • Adjust CMake keyword color in szakdark colorscheme (thanks to John Szakmeister).

2019-07-23

  • Support .ini syntax within Markdown files (thanks to John Szakmeister).
  • Sort the results from ripgrep by path to keep related matches together.

2019-05-27

  • Detect additional form of Bash temporary files. Bash temporary files (used for the fc command) may be one of two forms, depending on whether Bash is compiled to use mkstemp():

    /tmp/bash-fc.XXXXXX     ; for mkstemp()
    /tmp/bash-fc-dddddd     ; without mkstemp()
    

    There doesn't appear to be any particular reason Bash should use a period in one case and a hyphen in the other; it's probably just an unfortunate oversight.

2019-05-04

  • Allow embedded Ruby and .ini file syntax in code-block sections of reStructuredText files.

2019-04-18

  • For the :G (grep) command, change the priority to put Ripgrep (rg) first and The Silver Searcher (ag) second. This makes a difference only if you have Ripgrep installed. Also, default Ripgrep to smart-case when used with :G (or :Grepper in general) to align with the other tools' configuration.

2019-04-10

  • Fix Rust syntax highlighting so that it embeds properly in .rst files. Previous to the patch, highlighting would continue on beyond the code-block.

2019-04-07

  • Extend the gf (goto file) mapping to first try the built-in gf functionality before falling back to tags (thanks to Enno Konfekt). Forcing the use of tags may be done by visually selecting the filename and pressing ctrl-] to follow the selected tag.

2019-03-23

  • Update fixkey plugin to v0.3.10 to support mapping Alt-numbers.
  • Add "rust" to the list of languages embeddable in reStructuredText code blocks.

2019-03-16

  • Add Rust's target/ directory to wildignore.
  • Add Inc() function for generating incrementing sequences of numbers (say, to number some lines); see :help notes_list_of_numbers.

2019-02-15

  • Add filetype support for *.toml files.

2019-02-09

  • Update Rust language support files to 2019-01-10.
  • Update ALE plugin to version 2019-02-08.

2019-01-27

  • Gvim bug vim/vim#3417 is fixed in Gvim 8.1.0834, so the ALE work-around for this bug is no longer needed. Eventually, if/when ALE graduates from experimental status, it will be activated only for Gvim version 8.1.0834 and beyond.

2019-01-21

  • Squelch Python flake8 warnings that go against recent PEP8 guidance:

    • E203: whitespace before ':'
    • W503: line break before binary operator
  • BREAKING CHANGE: Move "pylib" directory and contents to "pythonx" and adjust the Python path augmentation to follow the pattern described in :help python-special-path, introduced in Vim 7.3.1163. Vim versions 7.3.1163 and newer, compiled with Python support, automatically attempt to load modules in subdirectories of 'runtimepath' named "python2" (for Python 2), "python3" (for Python 3), and "pythonx" (for both Python 2 and 3). For older versions of Vim, we continue augment the Python path manually with the appropriate "python2", "python3", and "pythonx" directories found in the Vim runtimepath at startup.

    With this change, Python scripts need to be located in a "python2", "python3", or "pythonx" based on language support. See :help python-special-path for more information.

    Future uses of Python throughout vimfiles should support Python 3.

    Force Python 2 if compiled with both Python 2 and Python 3 support and both interpreters are available. To disable forcing and allow the selection pattern of pythonx then python3 then python place the following in your VIMRC_VARS file:

    let g:ForcePython2 = 0
    

    Thanks to Mike Haig for this support.

2018-10-28

  • Remove pythoncomplete.vim. This package used to lag behind the files distributed in Vim, but it hasn't been updated since 2009 and Vim has been bundling it (and the Python 3-compatible equivalent) since 2010 (Vim 7.2).

2018-10-27

  • Update fontdetect plugin to 0.3.0, supporting Python 3 on OS X (thanks to Mike Haig).

  • Update localvimrc plugin to version 2018-09-24, allowing graceful failure when Python is not available.

  • Update python-pep8-indent plugin to version 2018-09-17.

  • Remove Python syntax highlighting plugin. At one time, this plugin was an improvement over Vim's built-in support, but the plugin is no longer maintained and Vim's built-in support is now better.

    This removes the :Python2Syntax and :Python3Syntax commands. The built-in support tries to support highlighting for Python 2 and 3 simultaneously.

  • Support Python 3 with buildtool.

2018-10-17

  • Update Clojure syntax highlighting support; drop other Clojure-related support (fireplace and redl) (thanks to John Szakmeister).

2018-10-07

  • Update markdown2ctags and rst2ctags plugins (thanks to John Szakmeister).

2018-09-10

  • Update Grepper plugin to 2018-09-08, fixing quadratic slowdown for searches with many hits when running with Vim 8+ (implying asynchronous searching).

2018-09-01

  • Add ! option to :DiffOff command to turn off diff for all windows.
  • Stop asking for confirmation from :BW when the buffer is in multiple windows, as the option for confirmation adds no safety, just inconvenience.
  • Setup ALE options for shfmt.

2018-08-12

  • Adjust airline sections for updated airline plugin capabilities.

2018-08-11

  • Update airline plugin to version 2018-07-26 and airline-themes to version 2018-07-30.
  • Update grepper plugin to version 2018-04-23.
  • Update fugitive plugin to version 2018-08-11.
  • Update documentation on the :G command (see :help :G).
  • Update ack plugin to version 2018-02-07 and ack to version 2.24.
  • Remove deprecated ag plugin; create commands that map onto the Ack plugin but which use the "ag" utility (e.g., :Ag -> :Ack, but using "ag").
  • Update bufexplorer plugin to version 2018-01-25.
  • Update endwise plugin to version 2018-05-13.
  • Update surround plugin to version 2018-07-23.
  • Update bufkill plugin to version 2018-03-20.
  • Update ultisnips plugin to version 2018-05-01 and sample snippets plugin to version 2018-07-16.
  • Update easy-align plugin to version 2017-06-03.
  • Update Lusty plugin (combining LustyExplorer and LustyJuggler) to version 2018-07-24.
  • Update localvimrc plugin to version 2018-08-10.
  • Update quickfix-reflector plugin to version 2018-01-26.
  • Tidy up setup.py formatting and verify it works with Python 2/3.
  • When pressing <F4>/<s-F4> to view the next/previous QuickFix/Location List message, close the QuickFix/Location List window if we've run out of messages in that direction as a convenience.
  • Fix IsGetQuickFixWin() function to properly use getwininfo() fields.
  • Patch grepper plugin as a better work-around for its interaction problems with QuickFix Reflector.
  • Update buildtool to use build/ instead of __TMP__/ so that this temporary directory will be ignored by default by many searching tools.

2018-08-10

  • Update incsearch plugin to version 2017-11-23 and incsearch-fuzzy plugin to version 2016-02-15.

  • To further avoid conflict with tmux's CTRL-j key, the CtrlP plugin's primary keybindings for navigating its command prompt history have been changed to ALT-n/ALT-p. (For backward compatibility, CTRL-j/CTRL-k remain as aliases for ALT-n/ALT-p.)

  • For incsearch plugin, change bindings for scrolling from CTRL-j/CTRL-k to ALT-n/ALT-p to avoid conflict with tmux's CTRL-j key and to allow entry of digraphs via CTRL-k. Also, change "g/" to invoke the stock Vim "/" behavior for cases where incsearch is too slow.

  • Upgrade eunuch plugin to version 2018-08-10.

  • Update buildtool to automate setting up environment variables on Fedora, and to ensure use of GTK3 for the GUI.

  • No longer recommend copying the distro's vimrc file when compiling Vim. Distro-provided vim settings are no longer required because Vim now includes reasonable defaults for users without .vimrc files. Distro-provided defaults can also supply bad settings (e.g., pointing Vim's runtime path to the old distro-supplied runtime files); therefore, it's recommended to remove any distro-supplied vimrc file via:

    sudo rm -f /usr/local/share/vim/vimrc
    

    This fixes errors in ~/.vim/filetype.vim of the form:

    E10: \ should be followed by /, ? or &
    

2018-08-09

  • Set 'foldlevel' to 99 for reStructuredText files. Vim v8.1.0025 added support for syntax-based folding for reST files, which has the unfortunate side-effect of activating folding by default. Setting 'foldlevel' to 99 prevents this while making it easy to re-enable via zM or :set foldlevel=0.

2018-08-02

  • Update plugins (thanks to John Szakmeister):
    • textobj-user
    • scriptease
    • vim-repeat
    • tcomment_vim

2018-07-29

  • Rewrite ~/.vim/buildtool, a tool for building Vim from source. Now written in Python, buildtool is easier to use and more flexible. Run ~/.vim/buildtool --help for details.
  • Upgrade CtrlP plugin to version 2018-06-27.
  • Upgrade cpsm plugin to version 2018-02-01.

2018-07-26

  • Reduce Gvim default number of screen lines from 45 to 40 because 45 lines doesn't quite fit on some screens, causing Gvim to reduce the lines. For some reason, this prevents Gvim from properly restoring the number of screen lines as saved in a session file with mksession. Ensuring that Gvim doesn't need to reduce lines allows Gvim to properly restore the saved window geometry from a session file.

  • Make <Space>-based mappings for things requiring CTRL-q. This avoids the need to fix the XON/XOFF problem when using Vim in a terminal. The replacement mappings are documented throughout notes.txt; briefly, they are:

    <C-q><C-q> Toggle QuickFix window
    <Space>qq  Toggle QuickFix window
    <C-q><C-l> Toggle Location List window
    <Space>ql  Toggle Location List window
    
    <C-q><C-h> Toggle help window
    <Space>qh  Toggle help window
    
    <C-q><C-p> Toggle project window
    <Space>qp  Toggle project window
    
    <C-q><C-t> Toggle tagbar window
    <Space>qt  Toggle tagbar window
    
    <C-p><C-q> CtrlPQuickfix
    <C-q>q     CtrlPQuickfix
    
  • Change default from Powerline to Airline. This change of default fell through the cracks (support for Airline was added to Vimfiles over two years ago!). To use Powerline instead of Airline, place the following line in your VIMRC_VARS file:

    let g:EnablePowerline = 1
    
  • Update Fixkey plugin to version 0.3.9. This is a documentation-only fix clarifying that Konsole need not be reconfigured just for the <S-F1> through <S-F4> keys to work.

2018-07-24

  • Similar to the mapping for <F12>, add a new mapping for <F11> to signal the fifo .fifo2 in the current working directory. See the "Building and Running" section of :help notes for details.
  • Add support for Z80 assembly language via the vim-z80 plugin.
  • Check for the existence of the relatively recently added getwininfo() function in addition to win_getid() to avoid errors on Vim 7.4 (thanks to Jonathan Shuman).
  • Fix :Redir END to :set more instead of :set nomore.
  • Remove unused ctrlp matchers (ctrlp-py-matcher, ctrlp-cmatcher, abbrev-matcher).

2018-02-18

  • Make tagbar leave tag order unsorted so it matches the order of declaration in files (rather than being sorted alphabetically). Pressing s will still toggle sorting on and off; this only affects the startup default.

2018-01-07

  • Move omni#cpp#utils#IsCursorInCommentOrString() work-around from ~/.vim/vimrc into ~/.vim/autoload/omni/cpp/utils.vim to avoid error E746: Function name does not match script file name: on Fedora 27.

2018-01-01

  • Setup Ruby for two-space indentation to match community standards.
  • Add "Rubocop" as Syntastic checker for Ruby.

2017-11-12

  • Update tagbar plugin to version 2017-10-18.

2017-11-11

  • Fix ~/.vim/buildtool syntax for detecting GNU tar.

2017-10-24

  • Change <F12> mapping to use :silent! wall so that it works even when unnamed (and thus unwritable) buffers are present.

  • Add some new 'C' snippets:

    st --> size_t sst --> ssize_t un --> unsigned

2017-10-17

  • Pressing '*' on Vim versions prior to 7.4.243 could lead to the error 'E118: Too many arguments for function: getreg' because support for using lists for register values in getreg() and setreg() was not completed until 7.4.243. As a work-around, the string-flavored getreg() and setreg() are now used on these older versions of Vim.

2017-09-27

  • Customize the highlighting for CursorLineNr in the szakdark color scheme (thanks to John Szakmeister).

2017-09-26

  • Upgrade vim-togglecursor to version 0.5.2, which avoids some extra work when Vim supports the t_SR option (thanks to John Szakmeister).

2017-09-26

  • Fix ~/.vim/buildtool to explicitly set file permissions in generated tarball, for systems where umask is unsuitable (e.g., umask=007); also detect use of GNU tar and avoid GNU-specific switches for non-GNU implementations such as found on OS X (thanks to Dave Shepherd).

2017-08-24

  • Update the IsQuickFixWin() function to work with Vim 8.0 (thanks for John Szakmeister).

2017-06-28

  • Update airline to v2017-05-08 (thanks to John Szakmeister).

2017-03-01

  • Update markdown2ctags to v0.1.3 (thanks to John Szakmeister). This fixes a bug when nesting sections that were more than one-level apart from the current section (putting h4's in h2's).

2017-01-14

  • Fix visual-mode Y mapping to handle blank lines. Y maps to DedentParagraph() which removes common prefixes of whitespace from the selected lines before yanking. This function now ignores empty lines when computing the common whitespace prefix.

2017-01-01

  • Add notes for building on Fedora 23+. As of Fedora 23, all RPMs are "hardened" by default. When building with --enable-rubyinterp, Vim uses hardened linker settings provided by the Fedora-supplied ruby libraries without using the necessary hardened compiler settings, causing the ./configure operation to fail.

2016-12-23

  • Update togglecursor to version 0.5.1 to support OS X's native Terminal in Sierra or better.

2016-12-02

  • Ctrlp defaults to a maximum 10,000 files which has proved to be insufficient, so the limit has been raised to Jim's suggested value because, as he pointed out, 640K ought to be enough for anyone.

2016-11-15

  • Update fontsize plugin to version 0.4.1 to support GTK3-based GUI. Change default font setting logic to handle GTK3 as well.

2016-11-11

  • Update the Grepper plugin to version 2016-11-11. This fixes problems with hanging for certain search tools (ag, ack, rg, ...) that try to detect whether stdin is a pipe, and if so, search the data on stdin.

2016-10-31

  • Allow the Git rebase actions to be repeated with dot (thanks to John Szakmeister). See the SetupRebaseMappings() function in vimrc for details.

2016-10-30

  • Extend the VIMUSERFILES idea to allow three kinds of override directories. Environment variables now allow these configurable directories (in order of increasing priority):

    • VIMLOCALFILES: location-specific settings (e.g., for your workgroup)
    • VIMUSERFILES: per-user settings usable at all locations
    • VIMUSERLOCALFILES: per-user location-specific settings

    See :help notes_overrides for more details.

2016-10-29

  • Add support for the Rust programming language.

2016-10-23

  • Add simple file completion for :G, :Findx, :FFX, :FFG.

2016-10-10

  • Update rst2ctags to version 0.1.5, which uses python2 in the shebang line and ensures the heading characters are homogeneous (thanks to John Szakmeister).

2016-10-04

  • Upgrade to Fixkey version 0.3.8, which works around a problem with TERM=tmux wherein the <Home> and <End> keys weren't working correctly due to conflicts with Vim's incorrectly detected mouse settings.

2016-10-01

  • Make :Copen and :Lopen always switch to the QuickFix/Location list, even if the window is already open.

  • Add Grepper plugin. :help grepper for details. For now, using a forked version with better quoting/escaping. Implement :Findx, :FFX, :FFG in terms of :Grepper.

  • BREAKING CHANGE: Reorganize some search-related functions and commands to make them easier to discover (via :Search<tab>, for example) and to base them on the Grepper plugin:

    :LmcSearch              --> :SearchLmc
    :UmcSearch              --> :SearchUmc
    :UnderscoreSearch       --> :UnderscoreUmc
    :WordSearch             --> :SearchWord
    :LmcGrep                --> :GrepLmc
    LmcPattern()            --> SearchLmcPattern()
    UmcPattern()            --> SearchUmcPattern()
    UnderscorePattern()     --> SearchUnderscorePattern()
    :LmcGrepPattern         --> :GrepLmcPattern
    :UmcGrepPattern         --> :GrepUmcPattern
    :UnderscoreGrepPattern  --> :GrepUnderscorePattern
    

    Also add the following:

    :GrepUmc
    :GrepUnderscore
    

2016-09-30

  • Mapping <CR> didn't turn out to be convenient enough, so it's no longer mapped to easymotion-s2.

2016-09-18

  • Use "Hack" as the preferred font (if installed). Most systems don't have it installed by default, so mostly this won't be noticeable unless you've gone out of your way to install Hack. Notably, Hack includes font patches to support Powerline symbols (used by Airline as well), making Vim's status line look a bit better.

  • Remove <Space>l mapping for easymotion-sol-bd-jk, and replace with three mappings beginning with <Space>j ("j" for "jump"):

    <Space>jj easymotion-s <Space>jJ easymotion-s2 <Space>jl easymotion-sol-bd-jk

    Also map <CR> to be a more convenient alias for easymotion-s2.

  • Add new commands :Findx, :FFG, :FFX to integrate the findx utility.

  • Map normal-mode Y to mean "yank to end of line" (equivalent to y$), for consistency with most other uppercase variants (e.g., D, C, ...). To yank a single line, use yy.

  • Map visual-mode "Y" to perform a yank-and-dedent operation on the selected text, where the largest common whitespace prefix is removed from all lines. For now, the destination register is hard-coded to be "0 (along with both clipboard-related registers "+ and "*). This is convenient when yanking shell commands to be pasted into a terminal.

2016-08-28

  • Use two-space indentation and disable spell checking for YAML files.
  • Disable auto-indentation on certain keypresses in YAML files (most importantly for : and #).

2016-08-22

  • Add better support for Airline fonts (thanks to John Szakmeister). Redefine the AirlineCustomizeSymbols command in your vimrc-after file to change the airline symbol definitions.

2016-08-21

  • Upgrade incsearch plugin to version 2016-05-06.
  • Add incsearch-fuzzy plugin; like incsearch with fuzzy pattern support.

2016-08-16

  • Add some functions in vimrc to help locate script-local symbols (GetSymbol(), GetSID(), GetScript(), ScriptPaths()).
  • Add support for JSON files.

2016-06-19

  • Detect *.vader as Vader test files.

2016-06-5

  • Add Vader plugin version 2016-05-22 for Vim unit testing.
  • Port vimrc unit tests to Vader.
  • Remove UnitTest plugin (Vader has replaced its function).

2016-05-22

  • Upgrade Fugitive plugin to version 2016-05-11.
  • Fix :DiffClose to use new :DiffOff command that understands how to restore Fugitive's diff-restoration logic. Now 'cursorbind' is no longer left set on Fugitive working-copy windows after :OneWindow command (bound to CTRL-w o).
  • Have CtrlP plugin follow symlinks.

2016-05-17

  • Work around Vim prior to 7.4.725 in SetReg() function. On older Vim, invoking setreg() with an empty list would generate an internal error.

2016-05-15

  • Add experimental support for CtrlP matcher plugins:

    • cpsm:

      let g:ctrlp_match_func = {'match': 'cpsm#CtrlPMatch'}
      let g:cpsm_query_inverting_delimiter = ' '
      
    • ctrlp-py-matcher:

      let g:ctrlp_match_func = {'match': 'pymatcher#PyMatch'}
      
    • ctrlp-cmatcher:

      let g:ctrlp_match_func = {'match' : 'matcher#cmatch'}
      
    • abbrev-matcher:

      let g:ctrlp_match_func = {'match': 'ctrlp#abbrev_matcher#match'}
      

    None of these are enabled by default during their evaluation phase.

2016-05-14

  • Upgrade airline to version 2016-05-13 and airline-themes to version 2016-05-10. Airline now supports suppression of empty sections.
  • Patch airline to support disabling whitespace checks on a per-buffer basis, and disable these checks for QuickFix windows.

2016-05-11

  • Preserve register "0 (the most recent yank) for # mapping (which launches a :G operation to search using Ag or Ack).
  • Upgrade BufExplorer to version 2016-04-16.

2016-05-10

  • Add new mappings for QuickFix and Location List windows. See :help notes_quickfix_keys for details.

2016-05-07

  • Remove mapping of svn-prop*.tmp to filetype svn. That filetype is intended only for Subversion commit messages, and it doesn't play well when editing other properites like svn:externals and svn:ignore. When using svn propset --revprop svn:log ..., use :setf svn to turn on the svn filetype.

2016-05-05

  • Fix missing noautocmd inside IsQuickFixWin(), which can cause a autocommand recursion issues in some cases.

2016-05-02

  • On <F4>/<s-F4>, leave Quickfix window closed if already closed.
  • :Copen/:Lopen now do nothing if the QuickFix/Location List window is already open, which preserves the existing window height.

2016-04-28

  • Add pkgexp to 'wildignore' setting.

2016-04-26

  • Add filetype support for Scheme (*.scm) files.

2016-04-19

  • Use :G for use with the # search mapping (rather than boiling it down to either :Ack! or :Ag!) to allow easier location of previous invocations in the command history.

2016-04-18

  • Update to the new method that UltiSnips uses to disable itself. Without this change, UltiSnips warns about missing Python integration.

2016-04-12

  • Fix broken logic for disabling airline (thanks to Mike Haig).

2016-03-27

  • Add experimental airline plugin.

2016-03-12

  • Update fixkey to version 0.3.7. This corrects a problem with Fedora's patched version of Vim, allowing F1 to F4 to work correctly in the terminal.

2016-02-28

  • Update tcomment plugin to version 2016-02-28.
  • Update Ultisnips plugin to version 2016-02-13.
  • Update Snippets examples to version 2016-02-19.
  • Update Bufkill plugin to version 2015-09-24.
  • Update Easymotion plugin to version 2016-02-15.

2016-02-24

  • Update quickfix-reflector plugin to version 2015-11-21. This fixes an issue with modifying long lines in the QuickFix window (around 181 characters long).

2016-02-23

  • Update signature plugin to version 2016-02-21. This fixes some instances of signs being left behind after deletion of the associated mark.
  • Update CtrlP plugin to version 2016-01-17.
  • Update bufexplorer plugin to version 2015-10-02.

2016-01-02

  • Update buildtool to pull from Git repository instead of Mercurial.

2015-11-05

  • Update localvimrc to version 2015-10-02 (thanks to John Szakmeister).

2015-10-22

  • Update to vim-fixkey v0.3.6, bringing support for TERM=tmux (for tmux v2.1 and beyond). Useful for italic support under tmux.

2015-10-04

  • Update to vim-fontsize v0.4.0, bringing the ability to configure the "font mode" time-out value independently from Vim's 'timeout'/'timeoutlen' settings.

2015-09-13

  • Patch Powerline to work around buggy behavior (thanks to John Szakmeister). This fixes a problem where BRANCH and LINE symbols would eventually become ["].

2015-09-08

  • Update vim-session plugin to version 2.13 (thanks to John Szakmeister). This new version allows persisting of 'guifont' to be disabled. Now changes to 'guifont' in a configuration file will not be overwritten when a session is reloaded.

2015-09-02

  • Update bufkill plugin to version 0.12 (thanks to John Szakmeister).

2015-08-20

  • Update to v0.5.0 of vim-togglecursor (thanks to John Szakmeister). This adds support for enabling cursor changing under Neovim, VTE3 support, along with better XTerm support. It also allows you to force the particular kind of escape sequence used, if your terminal is not automatically detected.

    Note: the new versios does change the default cursors to be blinking to better match gvim's behavior.

2015-08-08

  • Vim's syntax file for shell scripts has grown a mis-feature of adding "." to 'iskeyword'. This breaks editing expectations for an extremely rare use case in certain dialects of shell script. We now set "g:sh_noisk" to disable the addition of ".".

  • Remove Signature maps that hide valuable Vim built-in functionality for jumping to the start or end of recent yanks or changes:

    '[, '], `[, and `]
    

    This is done via assignment to g:SignatureMap in vimrc. To restore this functionality, unlet g:SignatureMap in your vimrc-after.vim file.

  • Improve automatic period insertion behavior in snippets like @todo.

2015-08-04

  • Adjust :DiffOrig command to work correctly if the user sets the 'splitright' option (which puts the focus on the rightmost window after a vertical split).

2015-06-20

  • Tighten the regular expression for ignoring Syntastic warnings about unused imports from Python's "future" package; package names must now be found only on word boundaries.

2015-05-31

  • Turn off Syntastic's automatic opening of the Location list. It causes problems when doing a quick edit on a file with errors, as :wq causes the Location list to pop up and prevent exiting Vim. The Location list may always be toggled via CTRL-Q CTRL-L. Because the Location list is no longer opened automatically, <F4>/<s-F4> have changed to prioritize the use of the Location list when both it and the QuickFix list are closed (or both open); as before, if one list is open and the other is closed, the open window takes precedence. Syntastic will still automatically close the Location list when it becomes empty.
  • Use CTRL-SHIFT-PageUp/PageDown to move tab pages (in analogy to the built-in CTRL-PageUp/PageDown that switch tabs). This works only in Gvim, not in console Vim.
  • Remove most EasyMotion mappings that in practice didn't get used. Map <Space>l to (easymotion-bd-jk) to navigate to lines.
  • Ignore Syntastic warnings about unused imports from Python's "future" package.
  • Default to ":SyntasticBufferSetup strict" for Python files. For details on controlling this via localvimrc files, see :help notes_syntastic.

2015-05-28

  • When pressing <F4>/<s-F4> to traverse the QuickFix or Location list, detect when it has run off the end/beginning of the list and use :cc/:ll to jump to the last/first entry; this allows these keys to be useful when there is only one entry in the list to begin with (such as when there is a single Syntastic error in the Location list).

2015-05-17

  • Enable UltiSnips if either Python 2 or Python 3 is available (previously, it was enabled only for Python 2).

  • Use the system clipboard in addition to the X11 primary selection for the unnamed register. Yanks will go into both the clipboard and the primary selection; puts will come from the clipboard. To use the primary selection directly, use <C-S-Insert> or reference the * register explicitly, e.g.:

    "*p
    

    This provides smoother integration with the bulk of applications that use the clipboard instead of the primary selection.

  • Remove some extra GUI features that take up screen space unnecessarily. Now disabled are:

    • Scrollbars.
    • GUI menu.

    To learn how to re-enable these features, see :help notes_guioptions.

2015-05-11

  • Update incsearch to version 2015-05-04. Also disable activation if Vim is too old (before 7.3.32), fixing problems on CentOS 6 with Vim 7.2.x.

2015-04-30

  • Update to fontsize v0.3.4 (now loads plugin only if GUI is running).

2015-04-29

  • Unmap/re-map 'ds' for BufExplorer buffers. This eliminates the delay when using 'd' in BufExplorer to delete a buffer.
  • Add Quickfix-reflector plugin, allowing the user to edit the results of a QuickFix-based search and then save the QuickFix buffer itself, propagating the changes back to the original files. See :help notes-quickfix-reflector for details.

2015-04-27

  • Update to headerguard v0.2.2 (adds feature to use C++-style comments on the "#endif" line).

2015-04-26

  • Preserve "endwise" plugin hook of insert-mode <CR> when re-sourcing vimrc. Previously, endwise's hook to this insert-mode mapping would be clobbered by the one in vimrc on a second :source of vimrc.
  • Stop squelching Syntastic warnings globally. Use :SyntasticBufferSetup in a localvimrc file to adjust Syntastic behavior on a per-directory basis.
  • Chain invocations of :Ack through Python where possible to work around problems with quote handling in Strawberry Perl and ActivePerl on Windows.
  • Default to 79-column margin for Python for PEP8 compliance. When using :SyntasticBufferSetup lax, however, fall back to 80-column margins.
  • Incorporated vim-python-pep8-indent plugin for improved Python indentation support for PEP8 compliance.

2015-04-25

  • Removed space after C snippets for fixed-width integers (int8_t and friends), as for several use cases the space is incorrect and must be deleted manually (which feels like correcting a mistake in the snippet). It simplifies the mental model of the snippet, which is can now be viewed as an abbreviation for the corresponding type. To restore the old behavior in the event that adjusting to the new snippets proves difficult, these snippets can be overridden by per-user snippets that contain the space.
  • Change :SyntasticSetup strict/strict_except_case for Python to avoid pylint (which is very strict). Add new style very_strict to enable full-bore pylint-based checking. Set default Python checkers to just 'python' and 'flake8'.
  • Restore automatic opening of the location list when Syntastic discovers errors by changing g:syntastic_auto_loc_list from 2 back to 1. Syntastic internally uses autocmds to toggle the location list. When the location list is focused and :lclose is issued, the associated buffer is re-entered and Syntastic sees that the location list should be open, so it re-opens it. Now CTRL-Q CTRL-L uses :noautocmd lclose to close the location list, preventing Syntastic from re-opening it.
  • Add folding support for QuickFix and Location List windows. See :help FoldQuickFixFiles and :help FoldQuickFixDirs for details.

2015-04-22

  • Remove leftover files from old EnhancedCommentify plugin (thanks to Mike Haig).

2015-04-21

  • Disable custom QuickFix mappings for Ack and Ag plugins. They stop working after the QuickFix window is closed and re-opened, and they don't work generically for all uses of QuickFix.

2015-04-19

  • Add a number of features in support of finding and renaming identifiers of various naming conventions. See :help notes_identifier_case for details on :LmcToUnderscore and friends.

2015-04-12

  • Stop automatically opening the location list when Syntastic discovers errors by changing g:syntastic_auto_loc_list from 1 to 2. Syntastic somehow interferes with the proper operation of toggling the location list via CTRL-Q CTRL-L unless the above change is made. Hopefully eventually we'll figure out what's causing that interaction such that we can re-enable automatic opening of the list. Until then, you may manually open the location list via CTRL-Q CTRL-L.
  • Add many Syntastic-related commands; see :help notes_syntastic for details.

2015-04-09

  • Improve font size logic for OS/X (thanks for John Szakmeister). DPI scaling is now done via the new AdjustBaseFontSize() function.
  • Treat Coverage configuration file (.coveragerc) as a config file (thanks to John Szakmeister).

2015-03-21

  • Update Syntastic plugin to version 2015-03-19.

2015-03-14

  • Update UltiSnips to version 2015-03-05. This version supports the snippet flag "m" which removes end-of-line whitespace on all snippet lines. This keeps the indentation of empty snippet lines from acquiring spurious extra whitespace. ~/.vim/pylib/sniputil.py has been adjusted to add the "m" flag for any snippet containing a blank line; other snippets are left as-is, allowing snippets such as "int8_t " to retain their trailing whitespace without modification to their definitions. This sniputil.py feature will not take effect until the .snippets files are regenerated. /.vim/UltiSnips/*.snippets have already been regenerated as follows:

    cd ~/.vim/UltiSnips
    touch *.py
    make
    

2015-03-09

  • Update rst2ctags to version v0.1.4. rst2ctags now works with headings that contain UTF-8 characters (thanks to John Szakmeister).

2015-02-16

  • Update markdown2ctags to v0.1.2 (thanks to John Szakmeister). This fixes an issue where comments inside GitHub Flavored Markdown code blocks would be seen as section headers.

2015-01-28

  • Remove Startify plugin. It has not proved valuable to new users while managing to be irritating to power users.

2015-01-18

  • Escape the pipe character when using <F3> to search for a literal string.
  • Change "#" to use double-quotes on Windows when constructing the proper arguments for :Ack/:Ag.

2015-01-04

  • Update the Syntastic plugin to version 2015-01-04 (thanks to John Szakmeister). This fixes an issue where wildignore was affecting calls to expand(), glob(), and globpath() causing some checkers to fail in interesting ways (javac, for example).

2014-12-26

  • For determining the user's login name, use $USERNAME on Windows instead of $USER (thanks to John Szakmeister).

2014-12-15

  • Use executable("ag") instead of exepath("ag") for compatibility with older Vim.

2014-12-06

  • Add single-file implementation of "ack" script and use it for the :Ack command. This ensures that all systems with Perl installed will have Ack functionality.

2014-12-04

  • Add Ack plugin for searching using the 'ack' utility. See :help notes_ack for details.
  • Add Ag plugin for searching using the 'ag' utility. See :help notes_ag for details.
  • Add '#' to search for the word under the cursor (in Normal mode) or the current selection (in Visual mode) using :Ag! (if available) or :Ack! (otherwise).
  • Add :G to search using :Ag! (if available) or :Ack! (otherwise).

2014-12-03

  • Use automatic period for certain snippets (e.g., "func" for function definitions). Automatically provides period to end the sentence unless a period or exclamation point is already provided.
  • Enable UltiSnips by default only when Python is built into Vim.

2014-12-02

  • Support <Leader>of for snippets files (thanks to Mike Haig).
  • Add C snippets for static function (sfunc), function prototype (Func), and enumerations (enum) (thanks to Mike Haig).
  • Use 79-character comment banners.
  • Add EasyMotion plugin. This adds several new kinds of motions. See :help notes_easymotion for details.

2014-11-25

  • Add <Space><Space> as an additional mapping to invoke BufMRU mode. This is aimed at preserving the muscle memory of the original single-<Space> mapping while retaining the use of <Space> as a leader key.

2014-11-24

  • BREAKING CHANGE: Change BufMRU key from <Space> to <C-6>. The space key is too valuable to be dedicated to this single function. Note that <C-6> is the same as <C-^>, so you don't have to press the shift key to invoke BufMRU mode. This is also the same as Vim's keystroke to toggle between buffers, so it's a natural fit for this plugin.
  • BREAKING CHANGE: Change key mapping of recently added "sneak" plugin. The default mappings were hard to remember, since they were different in normal, visual, and operator-pending modes. Now <Space>s sneaks forward and <Space>S sneaks backward in all modes. See :help notes_sneak for more details.
  • Fix Easy-Align mapping prefix to be <Leader>a instead of a.

2014-11-23

  • Detect salt server files (thanks to John Szakmeister).
  • Add Easy-Align plugin. Visually select a group of lines, then press a to begin alignment. Press a delimiter key (such as <Space>, =, comma, etc.) to align on that delimiter. See :help notes_easyalign for more details.
  • BREAKING CHANGE: Remove Align plugin (replaced by Easy-Align).
  • Change indentation for backslash-continuations in vimscript to be 8 characters instead of 12.

2014-11-22

  • Tighten up diff highlighting in emails to avoid mistakenly highlighting bulleted lists that start with hyphens.
  • Synchronize email syntax highlighting from start to keep highlighting in-sync for lengthy patches.
  • Update rst2ctags to version 0.1.3. This updates heading detection to include all of the recommended characters that can be used to underline headings (thanks to John Szakmeister).

2014-11-19

  • Add EditSnippets command (thanks to John Szakmeister).
  • During a Git rebase operation, the following mappings are now available (thanks to John Szakmeister):
    • <Leader><Leader>e Change rebase action to "edit"
    • <Leader><Leader>f Change rebase action to "fixup"
    • <Leader><Leader>p Change rebase action to "pick"
    • <Leader><Leader>r Change rebase action to "reword"
    • <Leader><Leader>s Change rebase action to "squash"
  • Setup 'shellpipe' to keep Vim from hiding failures (thanks to John Szakmeister).
  • Synchronize python and shell syntax highlighting from start-of-file to avoid highlighting errors (thanks to John Szakmeister).
  • Highlight diffs in emails (thanks to John Szakmeister).
  • Reuse the current window when opening a new file with CtrlP (thanks to John Szakmeister). Try this via CTRL-p CTRL-p (or any other file-based CtrlP operation), type a filename that doesn't exist, then press CTRL-y to create that file.
  • Disable Powerline support for terminals with eight or fewer colors (thanks to John Szakmeister).
  • Treat .syntastic_c_config files as vim files (thanks to John Szakmeister).
  • Add AddTags() function for use in .lvimrc files (thanks to John Szakmeister).

2014-11-16

  • Update "lusty-juggler" plugin to version 2014-11-15 (0e73d8d) which includes John Szakmeister's fix.
  • Update "lusty-explorer" plugin to version 2014-11-15 (0e73d8d).
  • Add "sneak" plugin, bringing new "s{char}{char}" motion and "z{char}{char}" operator. Pressing "s" followed by two consecutive characters in your file to move to that location. See :help notes_sneak for more details.
  • Add "incsearch" plugin. Now "/" and "?" highlight all matches incrementally while typing. See :help notes_incsearch for more details.
  • Update "surround" plugin to version 2014-07-26.

2014-11-15

  • Prevent the highly irritating problem wherein the cursor jumps back to the previously saved position when the user scrolls the inactive window with the mouse wheel and then clicks in the window.
  • Make localvimrc decisions persistent only for uppercase answers (Y/N/A). This way, you can provide a one-time approval for the given .lvimrc.
  • Don't run .lvimrc files in a sandbox. The user must approve the use of any given .lvimrc file, and he must re-approve it whenever the contents of the .lvimrc file changes; therefore, it's safe to run them outside of the :sandbox command. In particular, this permits using things like :HighlightOff inside a .lvimrc.
  • Fix bad interaction between the LustyJuggler and endwise plugins (thanks to John Szakmeister).

2014-11-13

  • Change the Sphinx syntax checker to use HTML output instead of text. This fixes some length slow-downs when saving .rst files that are part of a Sphinx-based project.

2014-11-11

  • Update CtrlP plugin to version 2014-10-13, switching from the unmaintained version from the original author (who seems to have fallen off the grid).

    Set g:ctrlp_switch_buffer empty to prevent CtrlP from jumping to other windows. Now selected buffers will open in the current window, even if the buffer is already open in another window.

  • Adjust snippets for Makefiles.

  • Update endwise plugin to version 2014-10-01.

2014-11-04

  • Update signature plugin to 2014-11-03. This makes marks work like they are supposed to work in Vim, which is that setting a mark on a line via mx does not toggle the mark. To delete mark x, use dmx. This is controlled via these two variables in vimrc (they may be overridden in your vimrc-after if you'd like signature's toggling-mark behavior back):

    " Disable toggling of marks and markers.
    let g:SignatureForceMarkPlacement = 1
    let g:SignatureForceMarkerPlacement = 1
    

2014-11-04

  • Make :L, :L2, etc., account for the presence of extra columns in the gutter (for line numbers and for diff-mode indicators).

2014-10-26

  • Add signature plugin to display Vim :marks. Now, after setting a mark (such as with ma), a Vim "sign" will be shown in the gutter to show the mark's location.
  • Enable the use of the "colorcolumn" feature. When 'textwidth' is non-zero, a vertical colored line will be displayed one column beyond 'textwidth' to help visually track the margin.
  • Set szakdark's ColorColumn color to be a muted dark gray.

2014-10-25

  • Update bufexplorer plugin to 7.4.5 (the nnoremap patch has been merged).

2014-10-23

  • Adjust :L, :L2, etc., to use 82-column window widths by default, to accommodate the use of Vim's :signs (which take two extra columns). See :help notes for details on configuring the window width.

2014-10-15

  • Break undo for insert-mode CTRL-u and CTRL-w; otherwise, an undo will just remove all text from the current insert operation instead of bringing back the deleted text.

2014-10-14

  • Patch BufExplorer to define mappings only for normal mode. The overly broad "noremap" command used previously created undesirable select-mode mappings for "be" and friends.
  • Unmap some stray undesirable select-mode mappings that appeared after a plugin upgrade.
  • Turn off UltiSnips's feature of unmapping select-mode mappings. It ought to :sunmap only mappings that start with a printable character, but it unmaps too much (e.g., it removes select-mode <M-z>).

2014-10-13

  • Update BufExplorer to version 7.4.4 (no significant changes; updated to prepare for future patches).

2014-10-10

  • Map <M-u><M-l> to list snippets matching trigger at cursor. This is useful for Console Vim, where the default <C-Tab> mapping doesn't work.
  • Map <M-u><Tab> to the UltiSnips "jump forward" action. <Tab> is overloaded to expand a snippet if possible, and to jump forward if no trigger is found. When this is not desired, <M-u><Tab> can be used to force the jump action instead of expanding the trigger (perhaps after undoing the erroneous snippet expansion via <M-u><M-u> or <M-z>).
  • Break undo when triggering a snippet, so that if you undo after expanding a snippet, only the snippet expansion is undone.

2014-09-18

  • Upgrade UltiSnips to version 2014-09-13.
  • Improve <M-z> (undo) mapping to stay in the same mode from which is was invoked. Add <M-u><M-u> mapping as an alias, as it's expected to be easier to type and remember in some cases.

2014-09-13

  • Automatically shorten filenames in QuickFix window. Commands like :Regrep leave absolute paths in the QuickFix results for files not already open in Vim. A new autocmd now invokes ShortenFilenames() to perform Vim's filename shortening algorithm (such as converting to a relative path when the result is contained within the current working directory).
  • Add documentation for colorscheme detection and for configuring ssh to propagate the COLORFGBG environment variable to aid background color detection accuracy.

2014-09-07

  • Provide support for extremely early per-user configuration of variables via the new VIMRC_VARS script file. Most users won't need this; it comes in handy for disabling bundles before the main vimrc activates them all.

  • BREAKING CHANGE: To better support the use of bundles in vimrc-before.vim scripts, all bundles are activated now before sourcing this script. In the off chance that you were setting g:pathogen_disabled in your vimrc-before.vim script, you'll need to move this definition to a vimrc-vars.vim file.

    With this change, all supported colorschemes are available for use directly in the vimrc-before.vim script; tricks with pathogen#surround() are no longer required.

  • Add some new colorschemes: - badwolf (dark) - base16-* (collection of colorschemes) - gruvbox (dark) - hemisu (dark) - hybrid (dark) - monokai (dark) - wombat256i (dark)

  • Update grep plugin to version 1.11.

2014-09-06

  • Disable Startify for Vim versions prior to 7.3.633. Startify hangs on Windows with Vim 7.3.46 on some machines, but works with 7.3.633. Since I can't replicate it with Vim 7.3.46 on another machine, its easier to just disable Startify as a work-around.

2014-08-31

  • Add "Startify" plugin to show recently used files in custom startup screen, with the side benefit of displaying a reminder about ':help notes' and ':help localnotes'.

2014-08-28

  • Mention that ":help localnotes" provides access to any "local" notes (covering vimfiles additions stored in ~/.vim/local/).

2014-08-27

  • When Vim can be trusted, vimfiles will now honor its light-background detection choice. Vim can't really detect the background color properly in many cases (especially when running in a console). For example, it loses detection accuracy after ssh'ing to another machine and after executing su - or sudo -i. For this reason, vimfiles used to unconditionally force a dark-background colorscheme (unless the user preselects a preferred colorscheme using the VIMUSER mechanism). But in the special case that the COLORFGBG environment variable is set accurately, console Vim can correctly detect the background color. Not all terminal emulators set this variable, but rxvt and KDE's konsole do (but sadly, xterm does not). This variable is lost when executing su - or sudo -i, and when ssh'ing to another machine (unless the ssh client and server settings are changed to propagate the variable to the server). In the cases where this variable has been set, vimfiles will now honor it, so rxvt and konsole terminals that use a light background will work out-of-the-box, at least until the user loses the COLORFGBG definition for some reason (such as the above scenarios).

2014-08-24

  • Fix a problem with :Highlight seeming to be turned off by default on older Vim versions. The newly refactored :Highlight command was tested on a recent Vim; that version of Vim allowed syntax groups defined in a FileType autocmd to survive, such that things worked as expected. Older versions of Vim do not seem to preserve syntax groups defined in the FileType autocmd, so the checks turned on by the :Highlight command appeared to be off by default. As a work-around, the :HighlightOn command may be issued manually to re-apply the groups after a file has been loaded.

    The change in Vim occurred somewhere between versions 7.4.179 and 7.4.410.

2014-08-08

  • Eliminate invalid l: prefix on a function name. This was apparently always illegal, but Vim used to permit it.

2014-07-30

  • BREAKING CHANGE: Rename Foldsearch, Foldcomments, and Toascii to FoldSearch, FoldComments, and ToAscii for uniformity with other commands.

  • When embedding languages into .rst files for syntax highlighting, don't allow the languages to change 'iskeyword'. Previously, the sh language was adding a period to 'iskeyword'.

  • Improved interface for :Highlight command:

    • New g:HighlightEnabled variable to control the default disposition of highlighting. In vimrc, this is set to 1, but it may be overridden in a vimrc-after file.
    • New :HighlightOn and :HighlightOff commands that toggle highlighting for a single buffer.

    It's recommended to avoid invoking ":Highlight no*" to disable highlighting, as that makes it difficult to restore highlighting of the items configured for the filetype; instead, use a combination of g:HighlightEnabled and :HighlightOn/:HighlightOff.

  • When pressing <CR> in insert mode, trailing whitespace will be removed from the previous line. So, with your cursor on the "X" below:

    Place cursor on X and press Enter

    Pressing Enter will remove the trailing space from "Place cursor on ". This helps avoid leaving trailing whitespace in a file.

    See :help notes for ideas to intentionally preserve whitespace when pressing <Enter>.

2014-07-27

  • Add "unittest" plugin.
  • Add routines for path manipulation in vimrc.
  • Add unit tests for vimrc in test/test_vimrc.vim.
  • Add RtpInherit() to allow inheriting from another user's configuration.

2014-07-26

  • Update fixkey to version 0.3.5 (supports TERM=screen-it and similar).

2014-07-22

  • Cause cpp snippets to inherit c snippet (thanks to John Szakmeister).

2014-07-13

  • Upgrade fugitive to version 2014-07-07. Incorporates a fix to ensure fugitive disables diff-mode only when it caused diff-mode in the first place.

2014-06-26

  • Upgrade fixkey to version 0.3.4. This includes a changed default for 'ttimeoutlen' (which won't impact much, as 5 ms is already set in vimrc), and documentation of an inherent problem using Vim macros to play back ambiguous keycodes.

2014-06-23

  • Upgrade textobj-user to version 0.6.3 and textobj-function to version 0.4.0. This fixes problems with newer versions of Vim. John Szakmeister worked with the maintainer of these plugins to get the needed corrections in-place.

2014-06-21

  • Upgrade to UltiSnips 3.0 (thanks to John Szakmeister). The "sample" snippets that used to ship with UltiSnips were removed in UltiSnips 3.0 and repackaged with the "vim-snippets" project. In addition, the "clearsnippets" functionality in UltiSnips 3.0 is no longer very useful, since snippet priority based on runtimepath ordering is no longer a feature. Therefore, these sample snippets have been imported for reference into vimfiles/optional-bundle/snippets, with instructions at :help notes_snippets for activating them.

2014-05-17

  • Upgrade fixkey plugin to 0.3.3 (fixes PuTTY SCO keymap for F1 through F12 for console Vim).

2014-04-05

  • Upgrade fontsize plugin to 0.3.3 (adds support for [count]).

2014-03-28

  • Add John Szakmeister's work-around to define UltiSnips_FileTypeChanged when UltiSnips is disabled.
  • Upgraded togglecursor to 0.2.0.

2014-03-15

  • Change ttimeoutlen to 5 ms to avoid Console vim errors when pressing <Esc> followed too closely by a letter (which look too much like the terminal's encoding for Alt+letter).

2014-03-04

  • Add support for Lua and Moonscript languages.

2014-02-23

  • Update rst2ctags to v0.1.2 and markdown2ctags to v0.1.1. This fixes some issues with having backslash characters in headings (thanks for John Szakmeister for these updates).
  • Add g:EnableUltiSnips to allow UltiSnips to be disabled. This helps with NeoVim, a Vim fork that doesn't support Python bindings yet.

2014-02-18

  • Fail gracefully when setting the 'j' flag in 'formatoptions' on Vim older than 7.3.541 (when this flag was first introduced).

2014-02-17

  • Consolidate 'formatoptions' settings for filetypes into shared setup functions. SetupCommon(), SetupText(), and SetupSource() now collaborate to provide textfile-like and sourcecode-like format settings that should be usable unchanged across most types of files.

    In addition, the flag 'n' is now included in all filetypes, so that the reformatting operator "gq" (also mapped to Alt-Q) now properly preserves bulleted and numbered items. For example, this text:

    Some text
    - with a
      bulleted
      item
    - and another
      one
    

    Will reformat (using Alt-Q) to the following text:

    Some text
    - with a bulleted item
    - and another one
    
  • Extend 'formatlistpat' to view a header's underline as it would a list item. This hack prevents Vim from reformatting underlined headers. So, for example, pressing Alt-Q when on the below text leaves it unchanged:

    An underlined header
    ====================
    

    Unfortunately, it doesn't work for over/under headers. This text:

    =================
    Over/under header
    =================
    

    will be reformatted badly to this:

    ================= Over/under header
    =================
    

    But since underlined headers are the most common, this is better than nothing, and it's much easier to use Vim's built-in formatting logic than to write something custom.

2013-12-13

  • Augment Python Path with all "pylib" directories in Vim runtimepath. Migrate "sniputil" to ~/.vim/pypath. See "Python Path" section in notes.txt for more details.
  • Incorporate more uses of John Szakmeister's "betterVisual()" support for UltiSnips snippets.

2013-12-12

  • Start at the top of the buffer when doing a git rebase -i

2013-12-10

  • Moved fswitch to a bundle and updated to 0.9.5.

2013-12-05

  • Add John Szakmeister's markdown2ctags tool to support Markdown files in tagbar.

2013-12-01

  • Default to Python version 2 syntax highlighting with the newly upgraded Python syntax file. This is done by setting g:python_2_syntax to 1. It may be overridden using b:python_2_syntax on a per-buffer basis, or globally by setting g:python_2_syntax from "vimrc_before.vim" or "vimrc_after.vim".

    Also, :Python2Syntax and :Python3Syntax allow switching dynamically between the two syntax highlighting schemes.

2013-11-24

  • Add :VisualHelp to perform :help on the visual selection. In visual mode, this may be invoked via <F1>, <C-Q>h, or <C-Q><C-H>.

2013-11-23

  • Add "Characterize" plugin. Now typing ga shows more information about the character under the cursor.
  • Update the "szakdark" colorscheme:
    • Provide better Error highlighting.
    • Ensure that the background is cleared for pythonDot.
    • Tone down the indent guides so they're less distracting.
    • Make the git commit summary line standout a little more.
  • Add :OneWindow command to avoid "Already only one window" error messages. Map <C-W><C-O> and <C-W>o to use it.
  • :DiffOrig now closes other windows before starting diff.
  • Add :DiffClose to close all diff windows except current window. Perform this as first step of :OneWindow.
  • Add :Diff command to initiate a diff between current window and the "next" window or a file given as an argument.

2013-11-21

  • Add support for "##" comments in makefiles.

2013-11-13

  • Update vim-eunuch to version 2013-03-02.
  • Convert from use of glob(expr, nosuf, list) to older glob(expr, nosuf) for compatibility with older Vim. Apparently the third argument to glob() was added in Vim 7.3.465.

2013-11-11

  • Convert from Blacklisting of font families that don't support Unicode Symbols properly to having a whitelist of known-good font families, since Powerline looks very bad when using Powerlines_symbols == "unicode" with a font family that doesn't support the symbols. The variable g:GoodUnicodeSymbolFontFamilyPatterns may now be set from a VIMRC_BEFORE script to extend the list of font families that have known-good support for Unicode Powerline symbols. See vimrc for more details.

  • Add a way to detect changes in Powerline settings and automatically delete stale cached Powerline*.cache files as Vim starts.

    As a result, these cache files now live below the $VIM_CACHE_DIR directory (typically ~/.cache/vim on Unix). For tidiness, you may want to delete any old Powerline cache files in your vimfiles directory. For example, on Unix:

    find ~/.vim -name 'Powerline*.cache' -delete
    

    In addition, if you make adjustments to Powerline settings in your per-user VIMRC_BEFORE, set g:PowerlineRequiredCacheTag to a unique value every time you make a change to the format. For example:

    let g:PowerlineRequiredCacheTag = "2013-11-11"
    
  • Cleaned up references to VIMRC_BEFORE and VIMRC_AFTER.

  • Add Powerline segment to detect trailing whitespace.

2013-11-09

  • Update Python syntax highlighting support to version 3.3.5.
  • Update ColorSamplerPack to version 2012-10-28.
  • Unlink the syntax group pythonDot from Normal; this keeps :hardcopy output from having a dark background for dot characters in Python.
  • Blacklist Consolas from using g:Powerline_symbols == "unicode", as that font doesn't properly support the needed Unicode symbols.
  • Enable fontdetect and colorsamplerpack bundles early for use in VIMRC_BEFORE scripts.
  • Allow g:DefaultFontFamilies to be set from VIMRC_BEFORE scripts.
  • Update swapit plugin to version 0.3.2.
  • Update BufExplorer plugin to version 7.4.2.
  • Update ManPageView plugin to version 25l. Patch "sleep 2" calls to be "sleep 250m" to drop the irritating 2-second delay when K is pressed accidentally and no manpage exists under cursor. Changed g:manpageview_winopen back to the default "hsplit"; the value "reuse" is painful when pressing "K" for a non-existent manpage, since ManPageView will forcibly close the original window after displaying the error.

2013-11-05

  • Installed Dr. Chip's HiLinkTrace plugin to display the syntax highlighting stack. Use HLT! to toggle display of the syntax stack. See :help notes_hilinktrace for details.

2013-11-03

  • Restored :Highlight functionality. Highlight groups that are cleared via :highlight clear are not removed, but are changed to have the inactive value xxx cleared, causing hlexists() to unhelpfully return true. Now a new function, HighlightGroupExists(), works around this behavior.

    See :help notes for details on disabling the :Highlight feature.

2013-10-30

  • Added the vim-session and vim-misc plugins. The vim-session plugin provides some nice session management features. Use :SaveSession to save a session, :OpenSession to load a saved session, and :CloseSession to close the current session. See :help notes_session for more information about how vim-session is configured, or :help session.txt to see vim-session's documentation

2013-10-29

  • Restore customized settings for the fswitch plugin which were accidentally lost when adding the ability to override them with .lvimrc files. The fswitch plugin provides the of ("Other File") functionality (see :help notes for details).

2013-10-27

  • Perform :diffupdate on <C-L> as part of screen refreshing.

  • Define SetupMakeIndent to override some indent-related settings for makefiles.

  • Define first-cut experimental snippets for Makefiles.

    Makefiles. Now 'autoindent' is enabled and the colon key won't force a re-indentation.

  • Update fugitive plugin to version 2013-10-24 (34e2d253).

2013-10-03

  • Upgrade to headerguard 0.2.0; migrate it to bundle-based installation. Version 0.2.0 provide buffer-local override capabilities for inserting header guards.
  • BREAKING CHANGE: Upgrade to fontsize 0.3.0, migrating to bundle-based installation. The default keystrokes have changed to <Leader><Leader>x instead of <Leader>xx. See :help fontsize-customization for configuring non-default mappings.

2013-09-15

  • Add fontdetect plugin, fixing broken font fallback logic.

2013-09-08

  • Add CHANGES.txt to document significant changes.
  • Move all interesting documentation into doc/notes.txt, leaving README.txt as a pointer into the notes.