On 23/02/14 09:15, Nick Dev wrote:
I have a function that strips trailing whitespace on save. In my .vimrc I have 
the line

    autocmd BufWritePre * if &ft =~ 'sh\|perl\|python\....' | :call 
<SID>StripTrailingWhitespaces() | endif

What I would like is to negate that into matching everything but "condition".

This works OK for known filetypes:

     autocmd BufWritePre * if &ft !=# 'text' | :call 
<SID>StripTrailingWhitespaces() | endif

but I also want to match when filetype is not set. I have tried various with no 
luck.

When 'filetype' is not set it is set to the empty string, so !=# 'text' should match "everything other than 'text', even the empty string" and also

        if &ft == "" || &ft =~# 'sh$\|^perl\|^python'

where =~# means "match pattern and don't ignore case", remember, so this would match anything ending in "sh", anything beginning in "perl" or "python", or the empty string (which is special-cased before the || ). You could alternatively represent the empty string inside the pattern by ^$ (i.e. start immediately followed by end) as follows:

        if &ft =~# '^$\|sh$\|^perl\|^python'

Of course, it is important to use single quotes here, not double quotes, to avoid making the backslashes "special" when evaluating the quoted string — they are part of the pattern on the RHS of the =~# operator.


I was also advised to use:

    autocmd FileType * if <amatch> !=# 'text' | ...


but can't see how that is correct, nor can I get it to work.

see above


Best regards,
Tony.
--
There was a young man of Ostend
Who let a girl play with his end.
        She took hold of Rover,
        And felt it all over,
And it did what she didn't intend.

--
--
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