xolox / vim-easytags

Automated tag file generation and syntax highlighting of tags in Vim
http://peterodding.com/code/vim/easytags/
1.01k stars 109 forks source link

Cursor lag when navigating html files #10

Open tdavis opened 13 years ago

tdavis commented 13 years ago

I had to disable "on cursorhold" functionality due to the fact that it was causing every cursor movement to lag when navigating/editing HTML files. I used why_so_slow.py and my largest tags file was only 80kb; the files I were editing were very small. Do you have any idea what might be causing this?

xolox commented 13 years ago

I don't understand what could cause this issue. Exuberant Ctags supports HTML (it recognizes named anchors and JavaScript functions inside <script> elements) but the easytags plug-in doesn't highlight these types of tags so the syntax highlighting in HTML files isn't changed at all by the easytags plug-in.

Just to be sure I tried editing a +/- 200 KB HTML file with lots of anchors and it works fine for me, although of course my tags file just ballooned in file size :-).

Are you working on private code or an open source project? Having an example HTML file that triggers the problem for you may help me reproduce the problem.

Just so we're on the same page, how did you 'fix' the problem? By adding let g:easytags_on_cursorhold = 0 to your vimrc script? And once you do this and restart Vim the lag disappears?

One more thing, what's the value of Vim's updatetime option on your machine?

diefans commented 9 years ago

I have likely the same problem with moving the cursor around in python files.

my config is:

"------------------------------- tags
set tags=./.tags;,~/.vimtags
Plugin 'xolox/vim-misc'
Plugin 'xolox/vim-easytags'
let g:easytags_file='./.tags'
let g:easytags_async = 1
let g:easytags_dynamic_files = 2
let g:easytags_autorecurse = 0
let g:easytags_events = ['BufWritePost']
let g:easytags_syntax_keyword = "always"
let g:easytags_on_cursorhold = 0
let g:easytags_python_enabled = 1
let g:easytags_languages = {
            \   'javascript': {
            \       'cmd': 'jsctags',
            \       'args': [],
            \       'fileoutput_opt': '-f',
            \       'stdout_opt': '-f-',
            \       'recurse_flag': '-R'
            \   }
            \} 

I use gvim and an strace brings me tons of

mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a004b1000
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f79f7191000
munmap(0x7f7a004b1000, 15134720)        = 0
munmap(0x7f79f7191000, 15134720)        = 0
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a004b1000
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f79f7191000
munmap(0x7f7a004b1000, 15134720)        = 0
munmap(0x7f79f7191000, 15134720)        = 0
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a004b1000
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f79f7191000
munmap(0x7f7a004b1000, 15134720)        = 0
munmap(0x7f79f7191000, 15134720)        = 0
munmap(0x7f7a0218f000, 15134720)        = 0
munmap(0x7f7a01320000, 15134720)        = 0
mmap(NULL, 4349952, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a10115000
mmap(NULL, 4349952, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a02bd8000
munmap(0x7f7a10115000, 4349952)         = 0
munmap(0x7f7a02bd8000, 4349952)         = 0
brk(0x1c24000)                          = 0x1c24000
brk(0x1be4000)                          = 0x1be4000
mmap(NULL, 4685824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a100c3000
mmap(NULL, 4685824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a02b86000
munmap(0x7f7a100c3000, 4685824)         = 0
munmap(0x7f7a02b86000, 4685824)         = 0
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a0218f000
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a01320000
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a004b1000
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f79f7191000
munmap(0x7f7a004b1000, 15134720)        = 0
munmap(0x7f79f7191000, 15134720)        = 0
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a004b1000
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f79f7191000
munmap(0x7f7a004b1000, 15134720)        = 0
munmap(0x7f79f7191000, 15134720)        = 0
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a004b1000
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f79f7191000
munmap(0x7f7a004b1000, 15134720)        = 0
munmap(0x7f79f7191000, 15134720)        = 0
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a004b1000
mmap(NULL, 15134720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f79f7191000
munmap(0x7f7a004b1000, 15134720)        = 0
munmap(0x7f79f7191000, 15134720)        = 0

when just moving the cursor around.

So in my case I have to disable easytags, since it is really annoying...