Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

indent guides overwrite Todo #66

Open
shawn-sterling opened this issue Aug 27, 2013 · 8 comments
Open

indent guides overwrite Todo #66

shawn-sterling opened this issue Aug 27, 2013 · 8 comments

Comments

@shawn-sterling
Copy link

Hello, I have

match Todo /\s\+$/

in my vimrc, so that whitespace stands out like crazy (because whitespace is evil). When indent guides are turned on, or if

let g:indent_guides_enable_on_vim_startup = 1

I no longer see the whitespace (Todo) match.

If I turn on indent guides then do a

:match Todo /\s\+$/

then I have working indent guides as well as the Todo match. I thought this might be an order of operations issue, so I put the match statement as the last line of my .vimrc, but that doesn't work.

Do you have any suggestions?

Thanks.

-Shawn

@graywh
Copy link
Contributor

graywh commented Aug 28, 2013

Moving the :match to the end of the vimrc doesn't change anything because plugins are loaded after the vimrc.

The reference doesn't say, but I'm wondering if the priority of :match is the same as the default priority of matchadd(). Try changing the calls to matchadd() in autoload/indent_guides.vim to include a priority argument of -1 (e.g., https://github.com/nathanaelkane/vim-indent-guides/blob/master/autoload/indent_guides.vim#L55 call add(w:indent_guides_matches, matchadd(l:group, l:soft_pattern, -1)))

The priority of 'hlsearch' is 0, so I recommend changing the plugin to use negative priority values to avoid overruling :match or 'hlsearch'.

@shawn-sterling
Copy link
Author

That worked! Thank you very much!

Not sure if I should close the issue or if that might be a good change for the plugin?

@nathanaelkane
Copy link
Collaborator

I wasn't able to replicate the problem on my end, but I don't see the harm in adding the lower priority to matchadd calls. Will test it for a few days and see how it goes.

@shawn-sterling
Copy link
Author

Okay, I figured out how to replicate the issue, and found another one (I can open another issue if preferred).

I changed my .vimrc to be the absolute minimum, and put it here: https://gist.github.com/shawn-sterling/6382925

Using .vimrc-1 , and editing 'install.pp' (also in that gist) it looks like this (not correct): http://imgur.com/OSU5VXh,nSpk6Qk,xir1g5b,u6yFdgC#0

NOTE: The indent column colors may be hard to see depending on your monitor settings

If I change to .vimrc-2 (which is just commenting out the autocommand) OR make the change graywh suggested it will correctly look like this: http://imgur.com/OSU5VXh,nSpk6Qk,xir1g5b,u6yFdgC#1

The problem also goes away if I do not set the IndentGuides in the .vimrc.

The next problem is with vim tabs.
If I do a

vim -p install.pp install.pp

The first tab will look correct (with graywh's change), but the second tab won't have any of the Match highlights as you can see here: http://imgur.com/OSU5VXh,nSpk6Qk,xir1g5b,u6yFdgC#2

Have a good day.

-Shawn

@graywh
Copy link
Contributor

graywh commented Aug 29, 2013

:matches are added to the window, in this case just the first one (not related to indent guides at all).

@shawn-sterling
Copy link
Author

Thank you again graywh! I did not know that was how vim worked for the matching.

I have read a lot more about matching, and have now worked around the second problem with the following modification to my .vimrc

hi ExtraWhitespace ctermbg=yellow
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

However, the first problem is still there, but all works as it should with graywh's suggested change.

@ntpeters
Copy link

ntpeters commented Feb 4, 2014

I'm having the same issue with my extraneous whitespace matching. The following commands are what I'm using:

autocmd InsertEnter * syn clear EOLWS | syn match EOLWS excludenl /\s\+\%#\@!$/
autocmd InsertLeave,BufReadPost * syn clear EOLWS | syn match EOLWS excludenl /\s\+$/

I've attempted the modifications that graywh suggested, but to no avail.
Is there any other way to have this whitespace checking overwrite the indent guides on lines that are empty except for whitespace?

@ntpeters
Copy link

ntpeters commented Feb 9, 2014

I managed to solve the issue by reducing the match priority as suggested by graywh, and ended up writing my own plugin that makes highlighting and cleaning extra whitespace a bit nicer: https://github.com/ntpeters/vim-better-whitespace

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants