Thread: [Ctags] [PATCH] vim.c --> added variables and scoping for functions
Brought to you by:
dhiebert
From: Jay G. <di...@no...> - 2001-04-09 11:53:00
|
Good morning all. Being a Vim lover, it's natural that I'm a ctags lover as well. Unfortunately, I find ctags a little lacking when it comes to recognizing tags in vim scripts, primarily the recognition of variables. Then, when I upgraded to vim 6.0 and started scoping my functions, ctags could do even less for me. For those of you who are not familure with the latest vim changes, there is new scoping rules where the scope of a function is stated as a character colon. For example, if I want my function MyFunction to be visible only within my script, I would declare it as follows: function s:MyFunction So, instead of complaining, I've decided to try my hand at the rusty parts of my brain: C programming. (It's been a while.) I have taken the old vim.c file and modified it's parsing function to recognize that the name of a tag might hold a colon, and that the true name is actually the portion after the colon. This applies to both functions and variables. I have also added the concept of a variable. This is anything that starts with "let" and is outside of a function. The above additions were relatively easy (Thanks Darren for the extension architecture and documentation. It made my changes very easy.) The hard part I haven't been able to do. I haven't been able to actually create scoped tags. In other words, if someone runs ctags with my changes on a vim script with scoped functions (not visible outside of the script), and uses the command option "--file-scope=no", they will still see the tags that have file scope only. Hopefully someone else can achieve this for me. There is still one other minor bug in vim.c that I haven't addressed yet: the search algorithms for "function" and "let" only recognize what they're looking for if the keywords are in the first column. I have attached two files: vim.c and vim.c.old. The latter is the baseline that I made my changes on, and the former is the end result. <<vim.c.old>> <<vim.c>> Darren, hopefully you will find this useful and add it to the next release. Jay -- Jay Dickon Glanville P068 - SiteManager Development, Nortel Networks 613-765-1144 (ESN 395-1144) MS: 045/55/A05 E-Mail: di...@no... |
From: Darren H. <da...@hi...> - 2001-04-11 05:23:56
|
On Mon, 9 Apr 2001, Jay Glanville wrote: > Good morning all. Being a Vim lover, it's natural that I'm a ctags lover as > well. Unfortunately, I find ctags a little lacking when it comes to > recognizing tags in vim scripts, primarily the recognition of variables. > So, instead of complaining, I've decided to try my hand at the rusty parts > of my brain: C programming. (It's been a while.) Thanks! I haven't looked at your changes, yet, but have you considered changing the Vim parser into a regex parser? You might consider it, as it might be easier to do what you want. See the file EXTENDING.html in the distribution. -- Darren Hiebert <da...@hi...> http://darren.hiebert.com |