On 17/07/10 15:57, Aaron Lewis wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 07/17/2010 09:20 PM, Tony Mechelynck wrote:
On 17/07/10 14:15, Aaron Lewis wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 07/17/2010 07:51 PM, Frank Blendinger wrote:
Hi.

Aaron Lewis<[email protected]>   (2010-07-17 19:24 +0800):
     I'm trying to implement a custom script used for commenting and
uncommenting , we have two types , like c-style `//' and shell-style
`#'
, how can i detect the first characters ?

Not really answering your question, but if you aren't writing the script
just for fun or education I would recommend the existing NERD commenter
plugin, which does its job pretty well for all kinds of comments:

OK , i've just got some ideas from that plugin , as i'm doing a custom
plugin , what's wrong with this func , anybody give a try ?

func! CommentingOut()
     if filetype == ""
         s/^/#/<CR>
     else
         s/^/\/\//<CR>
     endif
endfunc

Thanks

Hm, the logic looks a little too simple. There are a lot of filetypes,

Doesn't matter for me right now ;-) You've got it , should be regex here.

detected by Vim, for which C++-like comments won't be acceptable. In
addition, since script lines are ex-commands, you don't need additional
<CR>  characters at the end. And finally, you may want to separate your
comment leader from the text by a space.

Right

  Ah, and, "filetype" without the
quotes is a user-defined variable name. To get the option you need a&
prefix, see ":help expr-option".


Yep.

I haven't tried the following (based on the above function), but what do
you think of it?

function CommentOut() range
     if&filetype =~? '^c$\|^cpp$\|^css$\|^javascript$'
         exe a:firstline . ',' . a:lastline . 's/^/\/\/ /'
     else
         exe a:firstline . ',' . a:lastline . 's/^/# /'
     endif
endfunc


Great , works fine.

At first  glance , i'm just trying to remove comments by determining the
first character , maybe by file type is more reliable. I'm just thinking
about macros in c language.


- --
Best Regards,
Aaron Lewis - PGP: 0x4A6D32A0
FingerPrint EA63 26B2 6C52 72EA A4A5 EB6B BDFE 35B0 4A6D 32A0
irc: A4r0n on freenode
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkxBts8ACgkQvf41sEptMqDpLgCgw9GwImV5yC03I1vgBY5U80Cr
0RQAnjw7JMT4sDQkPHUj8kDx0Eruc8ev
=4hYk
-----END PGP SIGNATURE-----


Well, this will _add_ comments. _Removing_ comments is easier:

        :[range]s/^# \|^\/\/ //

would do it, except that in C-like files you wouldn't want to strip the initial # in indented preprocessor directives like

        #ifdef A
        # if defined(B) || defined(C)
        #  ifndef D
        #   define D foobar
        #  endif
        # else

etc., so you would probably have to do either the one or the other; but I suppose it is simple enough that you can still do either

        :[range]s/# //
or
        :[range]s/\/\/ //

manually.


Best regards,
Tony.
--
The man who said "A bird in the hand's worth two in the bush" has been
putting his bird in the *WRONG* bushes.

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

Reply via email to