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