-
-
Save dave-kennedy/2188b3dd839ac4f73fe298799bb15f3b to your computer and use it in GitHub Desktop.
" source: https://stackoverflow.com/a/24046914/2571881 | |
let s:comment_map = { | |
\ "c": '\/\/', | |
\ "cpp": '\/\/', | |
\ "go": '\/\/', | |
\ "java": '\/\/', | |
\ "javascript": '\/\/', | |
\ "lua": '--', | |
\ "scala": '\/\/', | |
\ "php": '\/\/', | |
\ "python": '#', | |
\ "ruby": '#', | |
\ "rust": '\/\/', | |
\ "sh": '#', | |
\ "desktop": '#', | |
\ "fstab": '#', | |
\ "conf": '#', | |
\ "profile": '#', | |
\ "bashrc": '#', | |
\ "bash_profile": '#', | |
\ "mail": '>', | |
\ "eml": '>', | |
\ "bat": 'REM', | |
\ "ahk": ';', | |
\ "vim": '"', | |
\ "tex": '%', | |
\ } | |
function! ToggleComment() | |
if has_key(s:comment_map, &filetype) | |
let comment_leader = s:comment_map[&filetype] | |
if getline('.') =~ '^\s*$' | |
" Skip empty line | |
return | |
endif | |
if getline('.') =~ '^\s*' . comment_leader | |
" Uncomment the line | |
execute 'silent s/\v\s*\zs' . comment_leader . '\s*\ze//' | |
else | |
" Comment the line | |
execute 'silent s/\v^(\s*)/\1' . comment_leader . ' /' | |
endif | |
else | |
echo "No comment leader found for filetype" | |
endif | |
endfunction | |
nnoremap <Leader>t :call ToggleComment()<CR> | |
vnoremap <Leader>t :call ToggleComment()<CR> |
you forgot the lisp family langs:
elisp, lisp, clojure...
Default comment is ";;" semicolon twice
Could you add them? Prolog and Cobol as well?
Thx....
Actually @voyeg3r finally merged my changes so I'd redirect your suggestion there :)
I made a suggestion in voyeg3r gist
please check it out
@backermanbd @OrionRandD I just found vim-commentary. I will probably use that going forward instead of maintaining this. It has better community support, isn't much larger than this, and uses Vim's 'commentstring' option instead of a list of hard coded file types so it automatically works with a lot more languages.
@dave-kennedy I tried vim-commentary. But didn't like it though.
I just wanted voyeg3r & your code to put comment out signs at the first of each line
like this cpp code
// #include <iostream>
// using namespace std;
// int main(){
// cout << "hello world";
// }
@dave-kennedy please help me add the feature..
@backermanbd @dave-kennedy
+1, CPP developers need this feature
you forgot the lisp family langs:
elisp, lisp, clojure...
Default comment is ";;" semicolon twice
Could you add them? Prolog and Cobol as well?
Thx....