Comments (22)
That sounds strange indeed. 8.8kb shouldn't be sluggish, I've tested it on the neovim source code that generates a 3.5mb neotags file, and it works but it's abit sluggish when all the syntax matchers are in.
Never tested it on windows though.
I will do some testing to see if I can replicate the problem.
from neotags.nvim.
I am sorry I meant to say ~8.8mb. Thanks for the quick reply
from neotags.nvim.
Can you try with the latest commit, I did some tweaks using itertools.
from neotags.nvim.
Now I cannot get it to create the tags file. It creates the file per say but is always of size 0.
I got neotags to use an existing ctags file of size 7.99 MB (8,378,846 bytes)
by adding the file to 'tags'
. And is still very sluggish. Can maybe threads come into play here? Thanks for the support
from neotags.nvim.
Very strange, I will add some debug functions.
I've tried to add thread support but I cant get it to work, it seems that whenever I spawn a thread the neovim api crashes.
I will do some more testing during the weekend.
from neotags.nvim.
from neotags.nvim.
I did manage to get some speed improvements. Now it reads the neovim-source tagfile in about 0.20s, i also added a new variable g:neotags_verbose to see what part of the plugin that runs slow. And i updated some of the error handling.
I also noticed that on linux if i set shell=False to the Popen (pythons function to open an new process) the ctags file is empty. It might be that we need some special tricks on windows.
from neotags.nvim.
Waoo this almost super awesome:
done reading b'tags' (0.29s)
done reading b'tags' (0.32s)
applied syntax for cpp#c (0.00s)
applied syntax for cpp#g (0.01s)
applied syntax for cpp#s (0.01s)
applied syntax for cpp#t (0.01s)
applied syntax for cpp#u (0.00s)
applied syntax for cpp#e (0.01s)
applied syntax for cpp#d (0.00s)
applied syntax for cpp#f (0.01s)
applied syntax for cpp#p (0.00s)
applied syntax for cpp#m (0.01s)
And that tag file is of size: 10.6 MB (11,154,497 bytes)
. The only thing is that I see no difference in the highlight. This is the command used to create the file:
--sort=yes --c++-kinds=+pl --fields=+iaS --extra=+q --language-force=C++
Any idea why no highlight?
Thanks again for the support
from neotags.nvim.
Awesome :D
You probably need to add some highlights for the tag syntax. I should probably add this to the documentation :P
For example, this is what i use for C/C++.
" colors {{{1
let s:bg = { 'gui': '#0c0c0c', 'cterm': 'none' }
let s:fg = { 'gui': '#424242', 'cterm': 'none' }
let s:black = { 'gui': '#212121', 'cterm': '0' }
let s:grey = { 'gui': '#424242', 'cterm': '8' }
let s:darkred = { 'gui': '#d32f2f', 'cterm': '1' }
let s:red = { 'gui': '#f44336', 'cterm': '9' }
let s:darkgreen = { 'gui': '#689f38', 'cterm': '2' }
let s:green = { 'gui': '#8bc34a', 'cterm': '10' }
let s:brown = { 'gui': '#ffa000', 'cterm': '3' }
let s:yellow = { 'gui': '#ffc107', 'cterm': '11' }
let s:darkblue = { 'gui': '#0288d1', 'cterm': '4' }
let s:blue = { 'gui': '#03a9f4', 'cterm': '12' }
let s:purple = { 'gui': '#c2185b', 'cterm': '5' }
let s:pink = { 'gui': '#e91e63', 'cterm': '13' }
let s:darkcyan = { 'gui': '#0097a7', 'cterm': '6' }
let s:cyan = { 'gui': '#00bcd4', 'cterm': '14' }
let s:lightgrey = { 'gui': '#757575', 'cterm': '7' }
let s:white = { 'gui': '#e0e0e0', 'cterm': '15' }
let s:darkergrey = { 'gui': '#121212', 'cterm': '233' }
let s:darkgrey = { 'gui': '#1c1c1c', 'cterm': '234' }
" 1}}}
" util {{{1
function! s:h(group, style)
if(has_key(a:style, 'link'))
exec 'highlight! link ' a:group a:style.link
else
exec 'highlight' a:group
\ 'guifg=' (has_key(a:style, 'fg') ? a:style.fg.gui : 'NONE')
\ 'guibg=' (has_key(a:style, 'bg') ? a:style.bg.gui : 'NONE')
\ 'guisp=' (has_key(a:style, 'sp') ? a:style.sp.gui : 'NONE')
\ 'gui=' (has_key(a:style, 'deco') ? a:style.deco : 'NONE')
\ 'ctermfg=' (has_key(a:style, 'fg') ? a:style.fg.cterm : 'NONE')
\ 'ctermbg=' (has_key(a:style, 'bg') ? a:style.bg.cterm : 'NONE')
\ 'cterm=' (has_key(a:style, 'deco') ? a:style.deco : 'NONE')
endif
endfunction
" 1}}}
" c/cpp {{{3
call s:h('cTypeTag', { 'fg': s:brown })
call s:h('cPreProcTag', { 'fg': s:purple })
call s:h('cFunctionTag', { 'fg': s:darkred })
call s:h('cMemberTag', { 'link': 'cMember' })
call s:h('cEnumTag', { 'link': 'cEnum' })
call s:h('cppTypeTag', { 'fg': s:brown })
call s:h('cppPreProcTag', { 'fg': s:purple })
call s:h('cppFunctionTag', { 'fg': s:darkred })
call s:h('cppMemberTag', { 'link': 'cppMember' })
call s:h('cppEnumTag', { 'link': 'cppEnum' })
" 3}}}
from neotags.nvim.
I will help you with that as soon as I understand what the heck is going on 😄
Where that script goes? after/syntax/cpp
(I tried this just copied it and nothing happend :( ), autocmd
???
Lost :P.....
from neotags.nvim.
Oh, I just copy/pasted from my syntax file :P
But you can just place some highlights in your vimrc, for example
highlight cppFunctionTag ctermfg=2 guifg=#00ff00
You can see what highlights that gets created by looking in neovim.vim.
Hopefully this helps :)
from neotags.nvim.
OMG man so dumb :( I can't get it to work :(
I placed this in my after/syntax/cpp.vim
highlight cppEnum ctermfg=2 guifg=#00ff00
highlight cppFunction ctermfg=2 guifg=#00ff00
highlight cppMember ctermfg=2 guifg=#00ff00
and got nothing
from neotags.nvim.
after/syntax/cpp.vim should work but you have to add Tag :)
like this.
highlight cppEnumTag ctermfg=2 guifg=#00ff00
highlight cppFunctionTag ctermfg=2 guifg=#00ff00
highlight cppMemberTag ctermfg=2 guifg=#00ff00
from neotags.nvim.
😭 It still doesnt work 😭 I dunno. Maybe its neovim-qt. I should probably try it under unix. I use gruvbox
as my colorscheme. Does that even matter. 😭 hahaha. I appreciate the help. I really want this to work. How would I go about debugging highlight? Any other super awesome tips?
from neotags.nvim.
Very strange, I just tested on neovim-qt on linux with the same highlight in after/syntax/cpp.vim and it works. I think I will have to setup a Windows VM to be able to test further :/
As for debugging, you could check :syntax
to see if you have for example cppTypeTag xxx match /\C\<\%(test\)\>/
. Also :hi cppFunctionTag
to see if the cpp.vim file is loaded correctly.
from neotags.nvim.
The :hi cppTypeTag
are there. I need to investigate more on the syntax
command. I have this powershell script to download and update neovim
on windows. Also with chocolatey
you could install python
relativity easy on windows. Will keep investigating 👍
from neotags.nvim.
Ah nice, I will setup a VM this weekend and do some testing :)
from neotags.nvim.
I made some discoveries:
- On unix is slugish as well. But its a weird issue. Because the plugin its not doing anything per say. The times are fast still so.... maybe
neovim
its highlighting?? not sure. I think it could be related the fact that the plugin adds theg:neotags_file
to the'tags'
options and this file doesnt exist in my system....maybe not sure. I tested it withneovim
source code and tags loaded at startup. My setup has changed though. Im not lettingneotags
handle the tags file creation:
let g:neotags_enabled = 1
let g:neotags_file = g:cache_path . 'ctags/neotags'
let g:neotags_verbose = 1
let g:neotags_run_ctags = 0
Therefore, like I mention before even though the file neotags
doesnt exist the plugin adds it to the 'tags'
option. I dont know wild guess 😛
2. I discovered that universal-ctags
the "new" ctags
doesnt support legacy option --extra
you must specify --extras
. I thought I got it, this is why Im not getting any highlight.....wrong...still not getting highlights... 💯 😭
P.S: Hmm.....it just occurred to me that maybe the new universal-ctags
are not the same as the legacy highliting ctags????? Im pretty sure I have universal ctags
on Windows as well.
On arch
they can be installed: pacaur -S universal-ctags-git
from neotags.nvim.
I use universal ctags aswell on gentoo. but if i check the --help it says
--extra=[+|-]flags
Include extra tag entries for selected information (flags: "Ffq.") [F].
Also this is the version I'm using.
Universal Ctags 0.0.0, Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Mar 4 2017, 22:13:31
URL: https://ctags.io/
Optional compiled features: +wildcards, +regex, +option-directory, +coproc
So that shouldn't be a problem. Yeah if it's running slow with big tag files it's probably highlighting but missing "highlighters". I dont think that it would matter if you add a none existing file to &tags, neovim and neotags should just skip it.
Just to test things, if you check with easytags do you get highlighting from the same tag files?
This is a very strang issue indeed.
from neotags.nvim.
I got the highlighting!! 💯 😃
Silly me I forgot neovim is C code 😛
However, it still not smooth. I'm not sure what it is. I made a screencast
from neotags.nvim.
Ah nice!
Humm yeah it looks abit slow but unfortunately that slowness is not because of neotags, it's because of neovims highlight. You might be able to optimize it by disabling some of the highlight rules with g:neotags#cpp#order
and only add those that you need.
from neotags.nvim.
Got super improvements on speed with these:
set regexpengine=1
let g:neotags#cpp#order = 'ced'
let g:neotags#c#order = 'ced'
I remembered regexpengine
from easytags
With these two settings on big projects there is some lag still. But its so little that is usable.
Closing the issue but I think that the plugin doesnt work with the legacy ctags
because I did realize that that is what I had on windows. Maybe some testing should be done on this. And mentioned in the documentation. If it turns out to be an issue.
Thanks for all the support 😛
P.S: I had forgotten about the syntax file. I think its awesome. It should definitely be included in the documentation.
from neotags.nvim.
Related Issues (20)
- Error when python venv in same directory HOT 8
- Very poor performance when neotags is enabled and the tags file is large HOT 2
- No highlighting and error in ctags-default flags HOT 5
- Error on startup HOT 4
- No highlight with python script HOT 1
- Does ctags have option named --extras? HOT 1
- No such file or directory when starting neovim HOT 3
- JavaScript - TypeError: sequence item 6: expected str instance, list found HOT 4
- tagfiles() return an empty array HOT 10
- `async=True` SyntaxError HOT 1
- C syntax highlighting not working as before HOT 4
- Traceback at startup HOT 1
- No module name 'neovim.api.nvim' HOT 1
- Install fails with dein HOT 4
- Invalid buffer id HOT 18
- always error msg: regexp missing final separator HOT 3
- "E117: Unknown Function: NeotagsInit" on installing with vim-plug HOT 2
- Allow adding extra directories to "projects" HOT 1
- Tags sometimes don't get highlighted until I force them to? HOT 4
- No highlight of C tags HOT 3
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 neotags.nvim.