Comments (6)
This works amazingly well and is a lot cleaner than what I did. Can I use it as starting point for a new branch?
from vim-cool.
Please take a look at branch "purplep": https://github.com/romainl/vim-cool/tree/purplep.
from vim-cool.
@romainl Yes, of course you can. I've leared about OptionSet
event from you code. Cool.
from vim-cool.
I merged the "purplep" branch into "master". Thanks a lot!
from vim-cool.
Thanks to guys from neovim I've found a way to automatically turn off search highlight when it's no longer needed (for me).
Notice how I check if the cursor is on something that have been searched previously. In your plugin you're using
if expand("<cword>") =~ @/
which wouldn't work if someone searched for more than one word.So in case someone is wondering this would turn off highlight if you've moved cursor with anything except next/previous match motion or if you've entered insert mode (in operator pending mode also, yey!)
noremap <expr> <Plug>(StopHL) execute('nohlsearch')[-1] noremap! <expr> <Plug>(StopHL) execute('nohlsearch')[-1] fu! HlSearch() let s:pos = match(getline('.'), @/, col('.') - 1) + 1 if s:pos != col('.') call StopHL() endif endfu fu! StopHL() if !v:hlsearch || mode() isnot 'n' return else sil call feedkeys("\<Plug>(StopHL)", 'm') endif endfu augroup SearchHighlight au! au CursorMoved * call HlSearch() au InsertEnter * call StopHL() augroup end
nice.. thanks a lot @purpleP
from vim-cool.
Thanks to guys from neovim I've found a way to automatically turn off search highlight when it's no longer needed (for me).
Notice how I check if the cursor is on something that have been searched previously. In your plugin you're usingif expand("<cword>") =~ @/
which wouldn't work if someone searched for more than one word.
So in case someone is wondering this would turn off highlight if you've moved cursor with anything except next/previous match motion or if you've entered insert mode (in operator pending mode also, yey!)noremap <expr> <Plug>(StopHL) execute('nohlsearch')[-1] noremap! <expr> <Plug>(StopHL) execute('nohlsearch')[-1] fu! HlSearch() let s:pos = match(getline('.'), @/, col('.') - 1) + 1 if s:pos != col('.') call StopHL() endif endfu fu! StopHL() if !v:hlsearch || mode() isnot 'n' return else sil call feedkeys("\<Plug>(StopHL)", 'm') endif endfu augroup SearchHighlight au! au CursorMoved * call HlSearch() au InsertEnter * call StopHL() augroup endnice.. thanks a lot @purpleP
🙏
from vim-cool.
Related Issues (20)
- workaround to keep highlighting on after cgn, dgn HOT 15
- Works fine with neovim as well HOT 1
- Problem starting vim-cool HOT 15
- Bug: highlighting disappears with */#/gd and smartcase HOT 7
- Searching a magic * followed by some text incorrectly clears highlighting HOT 3
- Error for custom Esc from search commandline HOT 1
- Extra input when going from normal/hlsearch to insert mode HOT 2
- With 'nnoremap * *N', Vim won't highlight the word under cursor when the next match is inside a closed fold
- wrapping de-highlights all matches when the very first word of the buffer is a match HOT 1
- Conflict with vim-doge HOT 5
- Toggling on/off HOT 6
- Mismatch with vnoremap snippet HOT 2
- Allow blink cursor on current match? HOT 4
- Odd interaction with fzf HOT 5
- after :TOhtml, generate <Plug>(StopHL) HOT 1
- Highlighting toggles on when sourcing vimrc containing `set hlsearch` HOT 7
- Conflict with vim-floaterm HOT 2
- Check if highlight is enabled? HOT 3
- screenshots
- vim-cool doesn't seem to work in my setup HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vim-cool.