On Wednesday, October 2, 2013 12:09:24 PM UTC-5, Bartosz Gradzik wrote:
> Hi Ben,
> 
> 
> 
> Thank You for your reply.
> 
> 
> 
> >>> it is NOT used for the :checkpath command.
> 
> Now I see, I misunderstood the documentation.
> 
> 
> 
> >>> ^\s*include\s\+
> 
> With that solution :checkpath skips includes in comment lines but I am not
> 
> able to use gf command also.
> 
> 

I modeled this regex after the default value. I did not expect this 
modification to have *any* effect on the gf command. But now I see the problem.

gf normally uses 'isfname' to find the file under the cursor. In your case, the 
= and everything else in your include statement also are in 'isfname' so your 
gf command will get the whole command.

According to :help 'include' you should be able to add \zs\f* to the end of 
your pattern to match all filename characters AFTER the include syntax, and use 
those for gf.

> 
> >>> ^\%(\%(\*\*\)\@!.\)*include\s\+
> 
> I need some time to understand this :-)

Was my explanation not clear? At a high level, this replaces "any whitespace" 
with "anything not containing **".

> 
> But I think it will be the same issue as with above (not working gf command
> 
> for comment lines).
> 
> 

The solution should be the same: append \zs\f*

> 
> At the end I went with:
> 
> 
> 
> setlocal include=\\c\*include\\s*,\\s*input\\s*=
> 
> setlocal includeexpr=substitute(v:fname,'.*=','','')
> 
> 

I don't see how this avoids comment lines. I actually don't see how it your 
include pattern at all. I interpret this as:

  \c - case-insensitive search
  * - match a literal '*' character
  etc. as normal

> 
> command! -buffer Checkpath     :call <SID>Checkpath(0)
> 
> command! -buffer CheckpathList :call <SID>Checkpath(1)
> 
> function! s:Checkpath(arg)
> 
>   let includeOld = &include
> 
>   let &include = "\\c^\*include\\s*,\\s*input\\s*="

And then this one matches only on lines that start with "*include". So I 
suppose it won't match "**include" comments, but it won't match "include" 
without the * either.

> 
>   if a:arg == 0
> 
>     checkpath
> 
>   elseif a:arg == 1
> 
>     checkpath!
> 
>   endif
> 
>   let &include = includeOld
> 
> endfunction
> 
> 
> 
> Now gf and :checkpath command works for both comment and uncomment lines.
> 
> And with :Checkpath I can test only not comment includes.
> 
> Only thing is that I was not able to use command name Checkpath!, it looks
> 
> like there is some limitation.

You don't define a Checkpath! command, you define a Checkpath command and 
handle the !

> 
> However I did not find clear information about this in VIM documentation.
> 
> 

:help :command-bang
:help <bang>

-- 
-- 
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 because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to