Sorry for the late reply Gary and thank you very much that it works!!! But there are others that can't work, so I want to know why this helps. I tried to read some help file about iskeyword and isfname, but it hardly did help. So I ask you do me a favor to describe the keyword and how it works?(maybe this won't waste too much of your time) Thank you again:)
On Thu, Jul 1, 2010 at 4:42 AM, Gary Johnson <garyj...@spocom.com> wrote: > On 2010-06-30, X Heruacles wrote: > > > On Wed, Jun 30, 2010 at 3:42 PM, Gary Johnson <garyj...@spocom.com> > wrote: > > > > On 2010-06-30, X Heruacles wrote: > > > I'm just learning lua and I use vim to navigate some lua projects. > I use > > ctags > > > to generate tags using a map: > > > > > > map <F12> <Esc>:!ctags -R .<CR> > > > > > > but it rarely helps. When I want to jump to some function > definition, it > > always > > > errs. Then I checked the generated tag and it seems fine. So my > question > > is > > > just is there a better way to navigate lua project?(esp. jumping to > > function > > > definition?) > > > > I don't know what else might be available for navigating Lua, but > > the ctags web page at SourceForge says that it understands Lua, and > > you write that the tags appear fine, so I would suggest that you > > find out why your Lua tags aren't working as you expect and fix that > > problem. If you post a short file containing Lua code and explain > > what you do and what happens when you try to jump to a tag in that > > code, we might be able to spot the problem and give you a solution. > > > > Regards, > > Gary > > > thanks Gary. Then I show the code here: > > the generated tag has a line looks like this: > > > > TaskHandler.prizeTask .\init\taskHandler.lua /^function > > TaskHandler.prizeTask(plr, task)$/;" f > > > > and I have a function: > > > > function Task:succeed() > > > > debug_log("Task:succeed") > > > > self.isSucceed = true > > > > TaskHandler.prizeTask(self.owner, self) > > > > self:eventOnSuccess() > > > > if self.spanTimerId > 0 then self:clearSpanTimer() end > > > > self.owner:addFinishedTask(self) > > > > if self.entry.type == taskType.TASK_TYPE_MAIN then > > > > self.owner:setSaveRecord("MainTask", self:getId(), 0) > > > > else > > > > end > > > > if self.entry.nexttask ~= nil and self.entry.nexttask ~= 0 then > > > > debug_log("self.owner:addTask") > > > > self.owner:addTask(self.entry.nexttask) > > > > end > > > > end > > > > > > > > in the file task.lua in the subdirectory of where the tags file lies. > While my > > cursor on "prizeTask", I press Ctrl-], only to find it shows me an error > that > > can't find the tag: prizeTask. So it is. > > Thanks for the code. I tried to replicate the problem but ctags is > not generating the same tags for me as it did for you. > > I created a new directory for testing this and within that directory > created a subdirectory, subdir. I put your code into a file named > task.lua in subdir. In the top-level directory I executed > > ctags -R . > > Here is the resulting tags file. > > !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not > append ;" to lines/ > !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ > !_TAG_PROGRAM_AUTHOR Darren Hiebert / > dhieb...@users.sourceforge.net/ > !_TAG_PROGRAM_NAME Exuberant Ctags // > !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ > !_TAG_PROGRAM_VERSION 5.7 // > Task:succeed subdir/task.lua /^ function Task:succeed()$/;" > f > > As you can see, it contains only one tag. > > I opened a file in the top-level directory and added the line > > Task:succeed > > Typing ^] over "Task" resulted in > > E426: tag not found: Task > > and typing ^] over "succeed" resulted in > > E426: tag not found: succeed > > I then executed > > :set iskeyword+=: > > Typing ^] anywhere over "Task:succeed" then resulted in Vim jumping > to the top of that function. > > [Time passes while I do other work and think some more.] > > I just appended those lines from your tags file to mine and added > tabs between the fields. Typing ^] over "TaskHandler" or > "prizeTask" resulted in E426. Then I executed > > :set iskeyword+=. > > and tried again. This time I got this error: > > E429: File ".\init\taskHandler.lua" does not exist > > So I think that's the problem: you need to have . in your > 'iskeyword' option for Lua files. > > HTH, > Gary > > -- > You received this message from the "vim_use" maillist. > Do not top-post! Type your reply below the text you are replying to. > For more information, visit http://www.vim.org/maillist.php > -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php