sponsor Vim development Vim logo Vim Book Ad

quickfixsigns : Show signs at lines with quickfix items (e.g. errors), VCS diffs & marks etc.

 script karma  Rating 51/20, Downloaded by 5185  Comments, bugs, improvements  Vim wiki

created by
Tom Link
script type

Display |signs| at interesting lines:

    - items in the |quickfix| and |location-lists| (e.g. compilation errors)
    - |marks| a-zA-Z
    - changes (given the file is under a VCS like git, svn, mercurial,
      or bazaar -- see |g:tlib#vcs#def| for a list of supported VCSs)
    - breakpoints: vim
    - cursor position
    - relative line numbers (show numbers only until the cursor moves;
      this requires that you add the following command to |vimrc|:
        noremap <silent> <leader><c-l> :call quickfixsigns#RelNumbersOnce()<cr>
    - etc.

Other lists can be configured via the |g:quickfixsigns_lists| variable.

The text attached to a quickfix or location-list entry is displayed in a
balloon via 'balloonexpr'.
NOTE: This could cause a conflict with other plugins that make use of

If you want nicer looking images instead of the ASCII markers, you have
to change the following signs' definition either in your |vimrc| file or
in $VIMFILES/after/plugin/quickfixsigns.vim (by use of |sign-define|):

    QFS_QFL ... Entries in the |quickfix| list
    QFS_LOC ... Entries in the |location-list|
    QFS_Mark_[a-zA-Z] ... Marks
    QFS_CURSOR ... Current cursor position
    QFS_BREAKPOINT ... Breakpoints
    QFS_REL_x ... Relative line numbers
    QFS_VCS_{ADD,DEL,CHANGE} ... VCS changes (see also

quickfixsigns includes some icons from the open icon library. See
http://openiconlibrary.sourceforge.net for details.
install details
Requirements: has('signs')

Edit the vba file and type: >

    :so %

See :help vimball (vimscript #1502) for details.

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
quickfixsigns.vba 1.05 2014-04-02 7.0 Tom Link - FIX: regexp-related error @ windows: properly escape backslashes
MD5 checksum: 7e465b9bdccd1736746d8f02ba4637e9
quickfixsigns.vba 1.04 2014-03-27 7.0 Tom Link - FIX #48: Omit 3rd arg for getbufvar() (vim 7.3 compatibility)
MD5 checksum: 556e79d0556d77801d76c634f7a3be50
quickfixsigns.vba 1.03 2014-03-26 7.0 Tom Link - FIX: set quickfix signs when loaded after vim_starting
- Additional icon files from the open icon library
- Use different signs for errors & warnings (closes #42)
- g:quickfixsign_type_rx: patch suboptimal 'errorformat' definitions (fix #42)
- Changed icons
- FIX #42: Use "*" if &ft is empty (it is never unset)
- Configurable g:quickfixsign_timeout (default value for timeout option)
- Remove InsertChange from g:quickfixsigns_events
- g:quickfixsigns_blacklist_buffer matches full filename (don't check buffers with empty filenames)
- Minor improvements to avoid unnecessary updates (fix #43)
- Call s:UpdateLineNumbers() only if necessary
- g:quickfixsign_use_dummy: Option to set dummy sign (fix #44)
- Make sure to use new IDs for dummy signs
- Set the dummy sign ID correctly
- g:quickfixsign_use_dummy defaults to 1
- g:quickfixsigns_class_vcsdiff: Update on FocusGained events
- Add -bar to command definitions
- Call s:UpdateLineNumbers() only when the list has actually changed
- g:quickfixsigns_class_vcsdiff: Remove FocusGained event Caused infinite loop when calling git etc.
- doc: fix grammar/typos with "Adding new sign classes"
- :QuickfixsignsSet: Takes sign classes as optional arguments
- quickfixsigns_register is script-local; FIX #47: Use g:quickfixsigns_lists to toggle state
- Call RemoveBuffer on BufDelete, not BufUnload (fix #46)
MD5 checksum: 415d45c58cbbce01e276d80685ce3096
quickfixsigns.vba 1.02 2014-02-24 7.0 Tom Link - vcsdiff: Trigger on BufRead instead of BufEnter events (fixes #30)
- vcsdiff: Trigger update on FocusGained events
- vcsdiff: cache intermediate results
- quickfixsigns#vcsdiff#GetList(): Make sure to return a list (fixes #32)
- vcsdiff: Change signs to be more like diff -y
- vcsdiff: Removed FocusGained event (fixes #33)
- Don't unplace signs on BufUnload events
- Merge branch 'master' of https://github.com/Chronial/vim-quickfixsigns into vcsdiff_deletes
- vcsdiff: Support for alternative list display (see https://github.com/Chronial/vim-quickfixsigns/commit/1cf739c790746157c3cb9b6234c1454333397c9e)
- QuickfixsignsBalloon(): use elseif
- Help template
- Blacklist unite buffers
- Provide an example with "Sign Regexp" input
- Fix off-by-one error
- Display debug message, if quickfixsigns_max is reached
- Merge branch 'debug-info-with-max-reached' of https://github.com/blueyed/quickfixsigns_vim
- Support for setting maxsigns per class (closes #38)
- g:quickfixsigns#vcsdiff#list_type defaults to 1; use scriptencoding
- g:quickfixsigns#vcsdiff#del_numbered: If enabled, add a number to DEL signs to indicate the number of deleted lines (fixes #37)
- Use own colors
MD5 checksum: df86c09e3a6fca2f363fcfd2af7d9fd5
quickfixsigns.vba 1.01 2013-03-27 7.0 Tom Link - Debug: Removed check for invalid line numbers (e.g. fugitive's Glog uses qfl for file lists only)
- QuickfixsignsRemoveBuffer(): take a bufnr as argument (not a bufname)
- Rename QuickfixsignsRemoveBuffer() to s:RemoveBuffer()
- Call s:PurgeRegister() on BufLeave events (not CursorHold)
- quickfixsigns#AssertUniqueSigns(): Additional debug message: Empty bsign1
- s:Redir(): Protect against verbose != 0
- QuickfixsignsUnique(): Collapse multiple items at one line
- QuickfixsignsBalloon(): Make sure the balloon text doesn't include \n if !has('balloon_multiline')
- s:UpdateLineNumbers(): Don't update line numbers if bufnr <= 0
- g:quickfixsigns_class_loc: Update on QuickFixCmdPost events
- QuickfixsignsSelect(): Clear unselected signs
- QuickfixsignsSet(): match g:quickfixsigns_blacklist_buffer against the base filename
- QuickfixsignsToggle command
- s:Redir: Deal with :redir bug
- Merge branch 'toggle' of https://github.com/iNecas/quickfixsigns_vim
- Blacklist buffers used by nerdtree & minibufferexplorer (fixes #23).
- Optional enhancement: use tinykeymap (vimscript #4199) to move between signs/sign groups (closes #24)
- quickfixsigns#AssertUniqueSigns(): buffer sign is a dictionary now; use bsign.sign
- readme: don't mention tlib as dependency (fixes #25)
- UpdateLineNumbers(): bufnrsigns[sign.id] = sign.lnum
- b:quickfixsigns_ignore: Ignore sign classes per buffer
- addon-info
- allow to customize QFS_VCS_* signs
- Avoid irrelevant checks when no buffer signs will be displayed
MD5 checksum: 8dbfd054978cc99491cf9fbe150cd636
quickfixsigns.vba 1.00 2012-02-03 7.0 Tom Link - g:quickfixsigns_debug, quickfixsigns#AssertUniqueSigns()
- Be smarter at detecting old signs that already exist: s:SignExistsAt() etc.
- debugging
- if !exists('g:quickfixsigns_class_rel2')
- QuickfixsignsSet: clean up
- QuickfixsignsDisable, QuickfixsignsEnable commands (fixes #12)
- Don't call QuickfixsignsSet during startup (fixes #13)
- Use full filenames
- GetLocList(): call getloclist with the window number
- quickfixsigns#AssertUniqueSigns: Debug message includes bufnr
- s:GetScopeTest(): Build query in advance if possible
- QuickfixsignsRemoveBuffer() on BufDelete events
- don't allow external diff applications for git
- Make the highlight group for mark sign user configurable (teranex)
- Distinguish between buffer-local and global marks
- Try 1 to fix SetItemId etc.
- Explicitely set the sign level for most sign classes
- Make sure item.sign is the actual sign (not a generator function)
- Events for "cursor" class: BufEnter, CursorHoldI?, CursorMovedI?
- Removed use of always_new
- vcsdiff: Changed how DEL lines are displayed
- Remove s:PruneRegister()
- Debug: quickfixsigns#CheckBuffers()
- autocmd BufDelete: Forgot the pattern
- Don't place signs for unloaded buffers
- call QuickfixsignsRemoveBuffer() also on BufUnload
- Rename quickfixsigns#CheckBuffers() -> quickfixsigns#AssertNoObsoleteBuffers(register)
- Update line numbers in order to avoid unnecessarily setting signs
- s:UpdateLineNumbers(): Debug messages on internal errors
- g:quickfixsigns#use_relativenumber = v:version >= 703
- Call cd only for diff command (don't cd vim's dir; fixes #15)
- Reset ikey after updating line numbers (avoid inconsistent registry entries & duplicate signs)
- Call QuickfixsignsRemoveBuffer() also on BufWipeout events
- Call s:PurgeRegister() on CursorHoldI? events
- s:BufferSigns(): Return empty list if :sign-place returns fewer than 2 lines
- BufferSigns(): Show debug message only if g:quickfixsigns_debug is true
- Update signs also in QuickfixsignsBalloon()
- Update signs also in QuickfixsignsBalloon()
- QuickfixsignsBalloon(): Don't update signs (undo previous change)
- Guess vcs type (replaced g:quickfixsigns#vcsdiff#cmds with g:quickfixsigns#vcsdiff#vcs)
- Search for guess vcs type only once.
- quickfixsigns#vcsdiff#GetList(): Set last_del also on CHANGEs
- Consistently use bufloaded
- UpdateLineNumbers(): Remove old items only when the items match
- Display "Invalid lnum" message only when g:quickfixsigns_debug is set (fixes #16)
- UpdateLineNumbers(): Avoid duplicate signs
- Support for bzr
- quickfixsigns#vcsdiff#GuessType(): Make sure to pick the lower repo directory
- Run brz diff with -U0
- Show diffs on first and last line
- Make svn diff use "diff -U0"
- UpdateLineNumbers(): Use str2nr(), not char2nr()
MD5 checksum: 00e4af7843f2619e55ee3cee3e614240
quickfixsigns.vba 0.14 2011-05-18 7.0 Tom Link - Take more care to run autocommands on the right buffer
- vcsdiff: always run the vcs command in the buffer's directory
- make last_run buffer-local
- make last_run buffer-local
- QuickfixsignsBalloon: Error after recent change
- .gitignore
- Merge branch 'master' of github.com:tomtom/quickfixsigns_vim
- Support for git combined diff format
- Don't run vcsdiff#GetList() in special buffers (reported by rememberthemer)
- Doc review
- Do not change directory to current buffer's.
- Included the doc fixes by blueyed into the doc template.
- Merge git://github.com/blueyed/quickfixsigns_vim
- quickfixsigns#vcsdiff#GetList(): Ignore files that are not readable
- s:PlaceSign(): E706: Variable type mismatch for: item https://github.com/tomtom/quickfixsigns_vim/issues/#issue/7
- s:SetItemId() returns {} if item.bufnr == -1 (fix issue #7?)
- quickfixsigns#RelNumbersOnce(): temporarily enable &cul and &cuc
- s:ClearBuffer(): Check bufnr(def.bufnr) != -1 (issue #9)
- quickfixsigns#RelNumbersOnce(): Remove highlighting also on TabLeave and WinLeave events
- Clear*(): duplicate code
- always_new: avoid wrong optimizations for certain sign classes (e.g. vcsdiff), fixes #10
MD5 checksum: 542b6deeb5a0505f5bd6cfcaaeca9c57
quickfixsigns.vba 0.13 2010-12-29 7.0 Tom Link - QuickfixsignsSelect(): check if g:quickfixsigns_class_{what} exists
MD5 checksum: 833e1a48f7a3d7460ae29795fb328be4
quickfixsigns.vba 0.12 2010-12-28 7.0 Tom Link - 'test' field; additional test if a sign should be updated (e.g. update _cursor only if lnum has changed)
- breakpoints (currently vim only)
- set g:quickfixsigns#vcsdiff#loaded
- g:quickfixsigns_class_cursor: remove test (interferes with put & delete-like commands)
- breakpoints: test for a known filetype
- QuickfixsignsSet(event, ?classes=[])
- Disable the 'cursor' class by default.
- Set b:quickfixsigns_last_line
MD5 checksum: 936abcfd67be7efe52fb0f85481c8665
quickfixsigns.vba 0.11 2010-11-15 7.0 Tom Link - Don't check the buffer number in s:ClearBuffer()
- Improved handling of scopes (vim, buffer)
- Always include the bufnr in the ID
- FIX: upper case marks
- Increase g:quickfixsigns_max = 500
MD5 checksum: 6fa3a5dd60e62af094f7f7fe41d8695f
quickfixsigns.vba 0.10 2010-11-11 7.0 Tom Link - quickfixsigns#vcsdiff#GuessType(): use b:git_dir if set (by fugitive)
- vcsdiff: Support for hg, svn
- run qfl/loc checks more also on CursorHold & QuickfixCommandPost events
- Experimental support for icons (currently assumes that gnome icons 16x16 are ok)
- Support for sign classes that affect all buffers (all_buffers != 0)
- Avoid unnecessary updates
- Simplify handling of ids (construct a global id based on the sign definition)
- Include icons from the open icon library
- marks: Don't use own ID generator
- s:PruneRegister()
- Don't display icons on windows
MD5 checksum: 2ba95f98307ea61db8de28d6e60fb61b
quickfixsigns.vba 0.9 2010-10-02 7.0 Tom Link - Don't require qfl.item.text to be set
- b:noquickfixsigns: If true, disable quickfixsigns for the current buffer (patch by Sergey Khorev; must be set before entering a buffer)
- b:quickfixsigns_ignore_marks: A list of ignored marks (per buffer)
- Support for relative line numbers
- QuickfixsignsSet command
- quickfixsigns#RelNumbersOnce()
- Support for vcs diff (this requires either b:vcs_type or b:VCSCommandVCSType to be set to a supported vcs, e.g. git)
quickfixsigns.vba.gz 0.5 2009-09-26 7.0 Tom Link - Set balloonexpr only if empty (don't try to be smart)
- Disable CursorMoved(I) events, when &lazyredraw isn't set.
quickfixsigns.vba.gz 0.4 2009-03-29 7.0 Tom Link - FIX: Error when g:quickfixsigns_marks = [] (thanks Ingo Karkat)
- s:ClearBuffer: removed old code
- QuickfixsignsMarks(state): Switch the display of marks on/off.
quickfixsigns.vba.gz 0.3 2009-03-29 7.0 Tom Link - Old signs weren't always removed
- Avoid "flicker" etc.
- g:quickfixsigns_max: Don't display signs if the list is longer than n items.

Incompatible changes:
- Removed g:quickfixsigns_show_marks variable
- g:quickfixsigns_marks: Marks that should be used for signs
- g:quickfixsigns_lists: event field is a list
- g:quickfixsigns_lists: timeout field: don't re-display this list more often than n seconds
quickfixsigns.vba.gz 0.2 2009-03-17 7.0 Tom Link GLVS, minor fix
ip used for rating:

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.