1 Commits

Author SHA1 Message Date
Caleb Maclennan
b099e55d3e Format help based on assumption conceal is turned on by default 2021-07-29 15:57:35 +03:00
4 changed files with 100 additions and 117 deletions

View File

@@ -1,15 +1,5 @@
# Changelog # Changelog
### 2.6.0
* Refactor code to run as autoload plugin
* Add lots of community contributed file types
* Fix several languages with idiosyncrasies
* Improve interoperability with other vim settings
* Improve handling of ranges
* Improve help documentation
* Cleanup and fix vimscript issues
### 2.5.2 ### 2.5.2
* Minor update to include new file types contributed by the community over the last few months. * Minor update to include new file types contributed by the community over the last few months.

View File

@@ -114,7 +114,6 @@ let s:delimiterMap = {
\ 'exports': { 'left': '#' }, \ 'exports': { 'left': '#' },
\ 'factor': { 'left': '! ', 'leftAlt': '!# ' }, \ 'factor': { 'left': '! ', 'leftAlt': '!# ' },
\ 'fancy': { 'left': '#' }, \ 'fancy': { 'left': '#' },
\ 'fasm': { 'left': ';' },
\ 'faust': { 'left': '//' }, \ 'faust': { 'left': '//' },
\ 'fgl': { 'left': '#' }, \ 'fgl': { 'left': '#' },
\ 'fluent': { 'left': '#', 'leftAlt': '##' }, \ 'fluent': { 'left': '#', 'leftAlt': '##' },
@@ -188,7 +187,6 @@ let s:delimiterMap = {
\ 'jgraph': { 'left': '(*', 'right': '*)' }, \ 'jgraph': { 'left': '(*', 'right': '*)' },
\ 'jinja': { 'left': '{#', 'right': '#}', 'leftAlt': '<!--', 'rightAlt': '-->' }, \ 'jinja': { 'left': '{#', 'right': '#}', 'leftAlt': '<!--', 'rightAlt': '-->' },
\ 'jproperties': { 'left': '#' }, \ 'jproperties': { 'left': '#' },
\ 'json5': { 'left': '//', 'leftAlt': '/*', 'rightAlt': '*/' },
\ 'jsonc': { 'left': '//', 'leftAlt': '/*', 'rightAlt': '*/' }, \ 'jsonc': { 'left': '//', 'leftAlt': '/*', 'rightAlt': '*/' },
\ 'jsonnet': { 'left': '//', 'leftAlt': '/*', 'rightAlt': '*/' }, \ 'jsonnet': { 'left': '//', 'leftAlt': '/*', 'rightAlt': '*/' },
\ 'jsp': { 'left': '<%--', 'right': '--%>' }, \ 'jsp': { 'left': '<%--', 'right': '--%>' },
@@ -508,8 +506,8 @@ function! s:CreateDelimMapFromCms() abort
return delims return delims
endif endif
return { return {
\ 'left': matchstr(&commentstring, '^\S*\ze\s*%s'), \ 'left': substitute(&commentstring, '\([^ \t]*\)\s*%s.*', '\1', ''),
\ 'right': matchstr(&commentstring, '%s\s*\zs.*$'), \ 'right': substitute(&commentstring, '.*%s\s*\(.*\)', '\1', 'g'),
\ 'nested': 0, \ 'nested': 0,
\ 'leftAlt': '', \ 'leftAlt': '',
\ 'rightAlt': '', \ 'rightAlt': '',
@@ -653,7 +651,7 @@ function! s:CommentBlock(top, bottom, lSide, rSide, forceNested) abort
"alternative delimiters (if THEY are) as the comment will be better and more "alternative delimiters (if THEY are) as the comment will be better and more
"accurate with multipart delimiters "accurate with multipart delimiters
let switchedDelims = 0 let switchedDelims = 0
if !s:Multipart() && g:NERDAllowAnyVisualDelims && s:AltMultipart() if !s:Multipart() && !g:NERDAllowAnyVisualDelims && s:AltMultipart()
let switchedDelims = 1 let switchedDelims = 1
call nerdcommenter#SwitchToAlternativeDelimiters(0) call nerdcommenter#SwitchToAlternativeDelimiters(0)
endif endif
@@ -1070,7 +1068,7 @@ function! s:CommentRegion(topLine, topCol, bottomLine, bottomCol, forceNested) a
"switch delimiters (if we can) if the current set isn't multipart "switch delimiters (if we can) if the current set isn't multipart
let switchedDelims = 0 let switchedDelims = 0
if !s:Multipart() && s:AltMultipart() && g:NERDAllowAnyVisualDelims if !s:Multipart() && s:AltMultipart() && !g:NERDAllowAnyVisualDelims
let switchedDelims = 1 let switchedDelims = 1
call nerdcommenter#SwitchToAlternativeDelimiters(0) call nerdcommenter#SwitchToAlternativeDelimiters(0)
endif endif
@@ -1093,7 +1091,7 @@ function! s:CommentRegion(topLine, topCol, bottomLine, bottomCol, forceNested) a
"comment the bottom line "comment the bottom line
let bottom = getline(a:bottomLine) let bottom = getline(a:bottomLine)
let numLeadingSpacesTabs = strlen(matchstr(bottom, '^\s*')) let numLeadingSpacesTabs = strlen(substitute(bottom, '^\([ \t]*\).*$', '\1', ''))
call s:CommentBlock(a:bottomLine, a:bottomLine, numLeadingSpacesTabs+1, a:bottomCol, a:forceNested) call s:CommentBlock(a:bottomLine, a:bottomLine, numLeadingSpacesTabs+1, a:bottomCol, a:forceNested)
endif endif
@@ -1238,7 +1236,7 @@ function! nerdcommenter#Comment(mode, type) range abort
for i in range(firstLine, lastLine) for i in range(firstLine, lastLine)
let theLine = getline(i) let theLine = getline(i)
" if have one line no comment(not include blank/whitespace-only lines), then comment all lines " if have one line no comment(not include blank/whitespace-only lines), then comment all lines
if theLine =~# '\S\+' && !s:IsInSexyComment(firstLine) && !s:IsCommentedFromStartOfLine(s:Left(), theLine) && !s:IsCommentedFromStartOfLine(s:Left({'alt': 1}), theLine) if theLine =~# '[^ \t]\+' && !s:IsInSexyComment(firstLine) && !s:IsCommentedFromStartOfLine(s:Left(), theLine) && !s:IsCommentedFromStartOfLine(s:Left({'alt': 1}), theLine)
let l:commentAllLines = 1 let l:commentAllLines = 1
break break
else else
@@ -1261,9 +1259,9 @@ function! nerdcommenter#Comment(mode, type) range abort
endtry endtry
elseif a:type ==? 'ToEOL' elseif a:type ==? 'ToEOL'
let view = winsaveview() call s:SaveScreenState()
call s:CommentBlock(firstLine, firstLine, col('.'), col('$')-1, 1) call s:CommentBlock(firstLine, firstLine, col('.'), col('$')-1, 1)
call winrestview(view) call s:RestoreScreenState()
elseif a:type ==? 'Append' elseif a:type ==? 'Append'
call s:AppendCommentToLine() call s:AppendCommentToLine()
@@ -1300,7 +1298,7 @@ function! nerdcommenter#Comment(mode, type) range abort
endfunction endfunction
" Function: nerdcommenter#IsCharCommented(line, col) abort " Function: NERDCommentIsCharCommented(line, col) abort
" Check if the character at [line, col] is inside a comment " Check if the character at [line, col] is inside a comment
" Note the Comment delimeter it self is considered as part of the comment " Note the Comment delimeter it self is considered as part of the comment
" "
@@ -1308,7 +1306,7 @@ endfunction
" -line the line number of the character " -line the line number of the character
" -col the column number of the character " -col the column number of the character
" Return: Number, 1 if the character is inside a comment, 0 if is not " Return: Number, 1 if the character is inside a comment, 0 if is not
function! nerdcommenter#IsCharCommented(line, col) abort function! NERDCommentIsCharCommented(line, col) abort
" Function: s:searchfor(str, line, col, direction, [maxline]) " Function: s:searchfor(str, line, col, direction, [maxline])
" search str in the buffer, including the character at [line, col] " search str in the buffer, including the character at [line, col]
" Args: " Args:
@@ -1673,7 +1671,7 @@ function! s:UncommentLinesSexy(topline, bottomline) abort
let theLine = getline(a:topline) let theLine = getline(a:topline)
" if the first line contains only the left delimiter then just delete it " if the first line contains only the left delimiter then just delete it
if theLine =~# '^\s*' . left . '\s*$' && !g:NERDCompactSexyComs if theLine =~# '^[ \t]*' . left . '[ \t]*$' && !g:NERDCompactSexyComs
call cursor(a:topline, 1) call cursor(a:topline, 1)
normal! dd normal! dd
let bottomline = bottomline - 1 let bottomline = bottomline - 1
@@ -1697,7 +1695,7 @@ function! s:UncommentLinesSexy(topline, bottomline) abort
let theLine = getline(bottomline) let theLine = getline(bottomline)
" if the bottomline contains only the right delimiter then just delete it " if the bottomline contains only the right delimiter then just delete it
if theLine =~# '^\s*' . right . '\s*$' if theLine =~# '^[ \t]*' . right . '[ \t]*$'
call cursor(bottomline, 1) call cursor(bottomline, 1)
normal! dd normal! dd
@@ -1714,7 +1712,7 @@ function! s:UncommentLinesSexy(topline, bottomline) abort
" if the last line also starts with a sexy comment marker then we " if the last line also starts with a sexy comment marker then we
" remove this as well " remove this as well
if theLine =~# '^\s*' . sexyComMarker if theLine =~# '^[ \t]*' . sexyComMarker
" remove the sexyComMarker. If there is a space after it then " remove the sexyComMarker. If there is a space after it then
" remove that too " remove that too
@@ -1838,7 +1836,7 @@ endfunction
" Function: s:AddLeftDelim(delim, theLine) " Function: s:AddLeftDelim(delim, theLine)
" Args: " Args:
function! s:AddLeftDelim(delim, theLine) abort function! s:AddLeftDelim(delim, theLine) abort
return substitute(a:theLine, '^\(\s*\)', '\1' . a:delim, '') return substitute(a:theLine, '^\([ \t]*\)', '\1' . a:delim, '')
endfunction endfunction
" Function: s:AddLeftDelimAligned(delim, theLine) " Function: s:AddLeftDelimAligned(delim, theLine)
@@ -1908,7 +1906,7 @@ function! s:CanCommentLine(forceNested, lineNum) abort
" make sure we don't comment lines that are just spaces or tabs or empty, " make sure we don't comment lines that are just spaces or tabs or empty,
" unless configured otherwise " unless configured otherwise
if g:NERDCommentEmptyLines ==# 0 && theLine =~# '^\s*$' if g:NERDCommentEmptyLines ==# 0 && theLine =~# "^[ \t]*$"
return 0 return 0
endif endif
@@ -1975,7 +1973,7 @@ function! s:CanToggleCommentLine(forceNested, lineNum) abort
" make sure we don't comment lines that are just spaces or tabs or empty, " make sure we don't comment lines that are just spaces or tabs or empty,
" unless configured otherwise " unless configured otherwise
if g:NERDCommentEmptyLines ==# 0 && theLine =~# '^\s*$' if g:NERDCommentEmptyLines ==# 0 && theLine =~# "^[ \t]*$"
return 0 return 0
endif endif
@@ -2196,16 +2194,16 @@ function! s:FindBoundingLinesOfSexyCom(lineNum) abort
let theLine = getline(currentLine) let theLine = getline(currentLine)
"check if the current line is the top of the sexy comment "check if the current line is the top of the sexy comment
if currentLine <= a:lineNum && theLine =~# '^\s*' . left && theLine !~# '.*' . right && currentLine < s:NumLinesInBuf() if currentLine <= a:lineNum && theLine =~# '^[ \t]*' . left && theLine !~# '.*' . right && currentLine < s:NumLinesInBuf()
let top = currentLine let top = currentLine
let currentLine = a:lineNum let currentLine = a:lineNum
"check if the current line is the bottom of the sexy comment "check if the current line is the bottom of the sexy comment
elseif theLine =~# '^\s*' . right && theLine !~# '.*' . left && currentLine > 1 elseif theLine =~# '^[ \t]*' . right && theLine !~# '.*' . left && currentLine > 1
let bottom = currentLine let bottom = currentLine
"the right delimiter is on the same line as the last sexyComMarker "the right delimiter is on the same line as the last sexyComMarker
elseif theLine =~# '^\s*' . sexyComMarker . '.*' . right elseif theLine =~# '^[ \t]*' . sexyComMarker . '.*' . right
let bottom = currentLine let bottom = currentLine
"we have not found the top or bottom line so we assume currentLine is an "we have not found the top or bottom line so we assume currentLine is an
@@ -2214,7 +2212,7 @@ function! s:FindBoundingLinesOfSexyCom(lineNum) abort
"if the line doesn't start with a sexyComMarker then it is not a sexy "if the line doesn't start with a sexyComMarker then it is not a sexy
"comment "comment
if theLine !~# '^\s*' . sexyComMarker if theLine !~# '^[ \t]*' . sexyComMarker
return [] return []
endif endif
@@ -2452,7 +2450,7 @@ endfunction
" -left: the left delimiter to check for " -left: the left delimiter to check for
function! s:IsCommentedFromStartOfLine(left, line) abort function! s:IsCommentedFromStartOfLine(left, line) abort
let theLine = s:ConvertLeadingTabsToSpaces(a:line) let theLine = s:ConvertLeadingTabsToSpaces(a:line)
let numSpaces = strlen(matchstr(theLine, '^ *')) let numSpaces = strlen(substitute(theLine, '^\( *\).*$', '\1', ''))
let delimIndx = s:FindDelimiterIndex(a:left, theLine) let delimIndx = s:FindDelimiterIndex(a:left, theLine)
return delimIndx ==# numSpaces return delimIndx ==# numSpaces
endfunction endfunction
@@ -2554,7 +2552,7 @@ function! s:IsDelimValid(delimiter, delIndx, line) abort
"if the delimiter is on the very first char of the line or is the "if the delimiter is on the very first char of the line or is the
"first non-tab/space char on the line then it is a valid comment delimiter "first non-tab/space char on the line then it is a valid comment delimiter
if a:delIndx ==# 0 || a:line =~# "^\s\\{" . a:delIndx . "\\}\".*$" if a:delIndx ==# 0 || a:line =~# "^[ \t]\\{" . a:delIndx . "\\}\".*$"
return 1 return 1
endif endif
@@ -2655,7 +2653,7 @@ function! s:IsSexyComment(topline, bottomline) abort
endif endif
"if the top line doesn't begin with a left delimiter then the comment isn't sexy "if the top line doesn't begin with a left delimiter then the comment isn't sexy
if getline(a:topline) !~# '^\s*' . left if getline(a:topline) !~# '^[ \t]*' . left
return 0 return 0
endif endif
@@ -2683,7 +2681,7 @@ function! s:IsSexyComment(topline, bottomline) abort
while currentLine < a:bottomline while currentLine < a:bottomline
let theLine = getline(currentLine) let theLine = getline(currentLine)
if theLine !~# '^\s*' . sexyComMarker if theLine !~# '^[ \t]*' . sexyComMarker
return 0 return 0
endif endif
@@ -2782,12 +2780,12 @@ function! s:LeftMostIndx(countCommentedLines, countEmptyLines, topline, bottomli
" get the next line and if it is allowed to be commented, or is not " get the next line and if it is allowed to be commented, or is not
" commented, check it " commented, check it
let theLine = getline(currentLine) let theLine = getline(currentLine)
if a:countEmptyLines || theLine !~# '^\s*$' if a:countEmptyLines || theLine !~# '^[ \t]*$'
if a:countCommentedLines || (!s:IsCommented(s:Left(), s:Right(), theLine) && !s:IsCommented(s:Left({'alt': 1}), s:Right({'alt': 1}), theLine)) if a:countCommentedLines || (!s:IsCommented(s:Left(), s:Right(), theLine) && !s:IsCommented(s:Left({'alt': 1}), s:Right({'alt': 1}), theLine))
" convert spaces to tabs and get the number of leading spaces for " convert spaces to tabs and get the number of leading spaces for
" this line and update leftMostIndx if need be " this line and update leftMostIndx if need be
let theLine = s:ConvertLeadingTabsToSpaces(theLine) let theLine = s:ConvertLeadingTabsToSpaces(theLine)
let leadSpaceOfLine = strlen(matchstr(theLine, '^\s*')) let leadSpaceOfLine = strlen( substitute(theLine, '\(^[ \t]*\).*$','\1','') )
if leadSpaceOfLine < leftMostIndx if leadSpaceOfLine < leftMostIndx
let leftMostIndx = leadSpaceOfLine let leftMostIndx = leadSpaceOfLine
endif endif
@@ -2835,7 +2833,7 @@ endfunction
" Function: s:NumberOfLeadingTabs(s) " Function: s:NumberOfLeadingTabs(s)
" returns the number of leading tabs in the given string " returns the number of leading tabs in the given string
function! s:NumberOfLeadingTabs(s) abort function! s:NumberOfLeadingTabs(s) abort
return strlen(matchstr(a:s, '^\t*')) return strlen(substitute(a:s, '^\(\t*\).*$', '\1', ''))
endfunction endfunction
" Function: s:NumLinesInBuf() " Function: s:NumLinesInBuf()
@@ -2909,6 +2907,21 @@ function! s:ReplaceRightMostDelim(toReplace, replacor, str) abort
return line return line
endfunction endfunction
"FUNCTION: s:RestoreScreenState()
"
"Sets the screen state back to what it was when s:SaveScreenState was last
"called.
"
function! s:RestoreScreenState() abort
if !exists('t:NERDComOldTopLine') || !exists('t:NERDComOldPos')
throw 'NERDCommenter exception: cannot restore screen'
endif
call cursor(t:NERDComOldTopLine, 0)
normal! zt
call setpos('.', t:NERDComOldPos)
endfunction
" Function: s:Right(...) " Function: s:Right(...)
" returns right delimiter data " returns right delimiter data
function! s:Right(...) abort function! s:Right(...) abort
@@ -2950,7 +2963,7 @@ function! s:RightMostIndx(countCommentedLines, countEmptyLines, topline, bottoml
" get the next line and see if it is commentable, otherwise it doesn't " get the next line and see if it is commentable, otherwise it doesn't
" count " count
let theLine = getline(currentLine) let theLine = getline(currentLine)
if a:countEmptyLines || theLine !~# '^\s*$' if a:countEmptyLines || theLine !~# '^[ \t]*$'
if a:countCommentedLines || (!s:IsCommented(s:Left(), s:Right(), theLine) && !s:IsCommented(s:Left({'alt': 1}), s:Right({'alt': 1}), theLine)) if a:countCommentedLines || (!s:IsCommented(s:Left(), s:Right(), theLine) && !s:IsCommented(s:Left({'alt': 1}), s:Right({'alt': 1}), theLine))
@@ -2970,6 +2983,14 @@ function! s:RightMostIndx(countCommentedLines, countEmptyLines, topline, bottoml
return rightMostIndx return rightMostIndx
endfunction endfunction
"FUNCTION: s:SaveScreenState()
"Saves the current cursor position in the current buffer and the window
"scroll position
function! s:SaveScreenState() abort
let t:NERDComOldPos = getpos('.')
let t:NERDComOldTopLine = line('w0')
endfunction
" Function: s:SwapOuterMultiPartDelimsForPlaceHolders(line) " Function: s:SwapOuterMultiPartDelimsForPlaceHolders(line)
" This function takes a line and swaps the outer most multi-part delimiters for " This function takes a line and swaps the outer most multi-part delimiters for
" place holders " place holders

View File

@@ -1,7 +1,7 @@
*nerdcommenter.txt* Plugin for commenting code *nerdcommenter.txt* Plugin for commenting code
NERD COMMENTER REFERENCE MANUAL~ NERD COMMENTER REFERENCE MANUAL
@@ -48,7 +48,7 @@ CONTENTS *NERDCommenterContents*
11.License................................|NERDCommenterLicense| 11.License................................|NERDCommenterLicense|
============================================================================== ==============================================================================
1. Intro *NERDCommenter* 1. Intro *NERDCommenter*
The NERD commenter provides many different commenting operations and styles The NERD commenter provides many different commenting operations and styles
which are invoked via key mappings and a menu. These operations are available which are invoked via key mappings and a menu. These operations are available
@@ -58,7 +58,7 @@ There are also options that allow to tweak the commenting engine to your
taste. taste.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
1.1 Leader key *NERDCommenterLeader* 1.1 Leader key *NERDCommenterLeader*
Most NERD commenter commands are executed using the |<Leader>| key. In Vim Most NERD commenter commands are executed using the |<Leader>| key. In Vim
this is a key dedicated for user-specific customizations. It effectively this is a key dedicated for user-specific customizations. It effectively
@@ -72,7 +72,7 @@ If it reports an undefined variable it means the leader key is set to the
default of '\'. default of '\'.
============================================================================== ==============================================================================
2. Installation *NERDCommenterInstallation* 2. Installation *NERDCommenterInstallation*
The NERD Commenter requires Vim 7 or higher. The NERD Commenter requires Vim 7 or higher.
@@ -93,10 +93,10 @@ See |filetype-plugin-on| for details, but basically, stick this in your vimrc >
< <
============================================================================== ==============================================================================
3. Functionality provided *NERDCommenterFunctionality* 3. Functionality provided *NERDCommenterFunctionality*
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.1 Functionality summary *NERDCommenterFunctionalitySummary* 3.1 Functionality summary *NERDCommenterFunctionalitySummary*
The following key mappings are provided by default (there is also a menu The following key mappings are provided by default (there is also a menu
with items corresponding to all the mappings below): with items corresponding to all the mappings below):
@@ -162,10 +162,10 @@ With the optional repeat.vim plugin (vimscript #2136), the mappings can also
be repeated via |.| be repeated via |.|
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2 Functionality details *NERDCommenterFunctionalityDetails* 3.2 Functionality details *NERDCommenterFunctionalityDetails*
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.1 Comment map *NERDCommenterComment* 3.2.1 Comment map *NERDCommenterComment*
Default mapping: [count]|<Leader>|cc Default mapping: [count]|<Leader>|cc
Mapped to: <plug>NERDCommenterComment Mapped to: <plug>NERDCommenterComment
@@ -181,7 +181,7 @@ If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode. lines were selected in visual-line mode.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.2 Nested comment map *NERDCommenterNested* 3.2.2 Nested comment map *NERDCommenterNested*
Default mapping: [count]|<Leader>|cn Default mapping: [count]|<Leader>|cn
Mapped to: <plug>NERDCommenterNested Mapped to: <plug>NERDCommenterNested
@@ -202,7 +202,7 @@ Related options:
|'NERDDefaultNesting'| |'NERDDefaultNesting'|
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.3 Toggle comment map *NERDCommenterToggle* 3.2.3 Toggle comment map *NERDCommenterToggle*
Default mapping: [count]|<Leader>|c<space> Default mapping: [count]|<Leader>|c<space>
Mapped to: <plug>NERDCommenterToggle Mapped to: <plug>NERDCommenterToggle
@@ -219,7 +219,7 @@ If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode. lines were selected in visual-line mode.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.4 Minimal comment map *NERDCommenterMinimal* 3.2.4 Minimal comment map *NERDCommenterMinimal*
Default mapping: [count]|<Leader>|cm Default mapping: [count]|<Leader>|cm
Mapped to: <plug>NERDCommenterMinimal Mapped to: <plug>NERDCommenterMinimal
@@ -241,7 +241,7 @@ If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode. lines were selected in visual-line mode.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.5 Invert comment map *NERDCommenterInvert* 3.2.5 Invert comment map *NERDCommenterInvert*
Default mapping: |<Leader>|ci Default mapping: |<Leader>|ci
Mapped to: <plug>NERDCommenterInvert Mapped to: <plug>NERDCommenterInvert
@@ -258,7 +258,7 @@ If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode. lines were selected in visual-line mode.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.6 Sexy comment map *NERDCommenterSexy* 3.2.6 Sexy comment map *NERDCommenterSexy*
Default mapping: [count]|<Leader>|cs Default mapping: [count]|<Leader>|cs
Mapped to: <plug>NERDCommenterSexy Mapped to: <plug>NERDCommenterSexy
@@ -278,7 +278,7 @@ Related options:
|'NERDCompactSexyComs'| |'NERDCompactSexyComs'|
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.7 Yank comment map *NERDCommenterYank* 3.2.7 Yank comment map *NERDCommenterYank*
Default mapping: [count]|<Leader>|cy Default mapping: [count]|<Leader>|cy
Mapped to: <plug>NERDCommenterYank Mapped to: <plug>NERDCommenterYank
@@ -287,7 +287,7 @@ Applicable modes: normal visual visual-line visual-block.
Same as |<Leader>|cc except that it yanks the line(s) that are commented first. Same as |<Leader>|cc except that it yanks the line(s) that are commented first.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.8 Comment to EOL map *NERDCommenterToEOL* 3.2.8 Comment to EOL map *NERDCommenterToEOL*
Default mapping: |<Leader>|c$ Default mapping: |<Leader>|c$
Mapped to: <plug>NERDCommenterToEOL Mapped to: <plug>NERDCommenterToEOL
@@ -297,7 +297,7 @@ Comments the current line from the current cursor position up to the end of
the line. the line.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.9 Append com to line map *NERDCommenterAppend* 3.2.9 Append com to line map *NERDCommenterAppend*
Default mapping: |<Leader>|cA Default mapping: |<Leader>|cA
Mapped to: <plug>NERDCommenterAppend Mapped to: <plug>NERDCommenterAppend
@@ -307,7 +307,7 @@ Appends comment delimiters to the end of the current line and goes
to insert mode between the new delimiters. to insert mode between the new delimiters.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.10 Insert comment map *NERDCommenterInsert* 3.2.10 Insert comment map *NERDCommenterInsert*
Default mapping: disabled by default. Default mapping: disabled by default.
Map it to: <plug>NERDCommenterInsert Map it to: <plug>NERDCommenterInsert
@@ -323,7 +323,7 @@ mapping add >
to your vimrc. to your vimrc.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.11 Use alternate delims map *NERDCommenterAltDelims* 3.2.11 Use alternate delims map *NERDCommenterAltDelims*
Default mapping: |<Leader>|ca Default mapping: |<Leader>|ca
Mapped to: <plug>NERDCommenterAltDelims Mapped to: <plug>NERDCommenterAltDelims
@@ -336,8 +336,8 @@ then they will be switched over to /**/ comments.
See also |NERDCommenterDefaultDelims| See also |NERDCommenterDefaultDelims|
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.12 Comment aligned maps *NERDCommenterAlignLeft* 3.2.12 Comment aligned maps *NERDCommenterAlignLeft*
*NERDCommenterAlignBoth* *NERDCommenterAlignBoth*
Default mappings: [count]|<Leader>|cl [count]|<Leader>|cb Default mappings: [count]|<Leader>|cl [count]|<Leader>|cb
Mapped to: <plug>NERDCommenterAlignLeft Mapped to: <plug>NERDCommenterAlignLeft
@@ -352,7 +352,7 @@ If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode. lines were selected in visual-line mode.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.2.13 Uncomment line map *NERDCommenterUncomment* 3.2.13 Uncomment line map *NERDCommenterUncomment*
Default mapping: [count]|<Leader>|cu Default mapping: [count]|<Leader>|cu
Mapped to: <plug>NERDCommenterUncomment Mapped to: <plug>NERDCommenterUncomment
@@ -375,7 +375,7 @@ Related options:
|'NERDRemoveExtraSpaces'| |'NERDRemoveExtraSpaces'|
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.3 Sexy Comments *NERDCommenterSexyComments* 3.3 Sexy Comments *NERDCommenterSexyComments*
These are comments that use one set of multipart comment delimiters as well as These are comments that use one set of multipart comment delimiters as well as
one other marker symbol. For example: > one other marker symbol. For example: >
/* /*
@@ -390,7 +390,7 @@ one other marker symbol. For example: >
Here the multipart delimiters are /* and */ and the marker is *. Here the multipart delimiters are /* and */ and the marker is *.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.4 The NERDComment function *NERDCommenterNERDComment* 3.4 The NERDComment function *NERDCommenterNERDComment*
All of the NERD commenter mappings and menu items invoke a single function All of the NERD commenter mappings and menu items invoke a single function
which delegates the commenting work to other functions. This function is which delegates the commenting work to other functions. This function is
@@ -411,7 +411,7 @@ For example, if you typed >
then the script would do a sexy comment on the last visual selection. then the script would do a sexy comment on the last visual selection.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.5 The hooks *NERDCommenterHooks* 3.5 The hooks *NERDCommenterHooks*
|fu! NERDCommenter_before()| Before NERDComment/SwitchToAlternativeDelimiters |fu! NERDCommenter_before()| Before NERDComment/SwitchToAlternativeDelimiters
|fu! NERDCommenter_after()| After NERDComment/SwitchToAlternativeDelimiters |fu! NERDCommenter_after()| After NERDComment/SwitchToAlternativeDelimiters
@@ -441,10 +441,10 @@ change the filetype back: >
< <
============================================================================== ==============================================================================
4. Options *NERDCommenterOptions* 4. Options *NERDCommenterOptions*
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
4.1 Options summary *NERDCommenterOptionsSummary* 4.1 Options summary *NERDCommenterOptionsSummary*
|'loaded_nerd_comments'| Turns off the script. |'loaded_nerd_comments'| Turns off the script.
@@ -510,12 +510,12 @@ change the filetype back: >
all selected lines is commented or not. all selected lines is commented or not.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
4.3 Options details *NERDCommenterOptionsDetails* 4.3 Options details *NERDCommenterOptionsDetails*
To enable any of the below options you should put the given line in your To enable any of the below options you should put the given line in your
~/.vimrc ~/.vimrc
*'loaded_nerd_comments'* *'loaded_nerd_comments'*
If this script is driving you insane you can turn it off by setting this If this script is driving you insane you can turn it off by setting this
option > option >
let loaded_nerd_comments=1 let loaded_nerd_comments=1
@@ -587,7 +587,7 @@ Otherwise, the code block would become: >
/*} */ /*} */
< <
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*'NERDCommentEmptyLines'* *'NERDCommentEmptyLines'*
Values: 0 or 1. Values: 0 or 1.
Default: 0. Default: 0.
@@ -638,7 +638,7 @@ Note that this option does not affect the behaviour of commenting in
|visual-block| mode. |visual-block| mode.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*'NERDCreateDefaultMappings'* *'NERDCreateDefaultMappings'*
Values: 0 or 1. Values: 0 or 1.
Default: 1. Default: 1.
@@ -647,7 +647,7 @@ If set to 0, none of the default mappings will be created.
See also |NERDCommenterMappings|. See also |NERDCommenterMappings|.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*'NERDCustomDelimiters'* *'NERDCustomDelimiters'*
Values: A map (format specified below). Values: A map (format specified below).
Default: {} Default: {}
@@ -783,7 +783,7 @@ alignment padding. With this option enabled any trailing whitespace will be
deleted when uncommenting a line. deleted when uncommenting a line.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*'NERDDefaultAlign'* *'NERDDefaultAlign'*
Values: 'none', 'left', 'start', 'both' Values: 'none', 'left', 'start', 'both'
Default 'none'. Default 'none'.
@@ -822,15 +822,15 @@ you hit |<Leader>|cc on a line that is already commented it will be commented
again. again.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*'NERDToggleCheckAllLines'* .. *'NERDToggleCheckAllLines'*
Values: 0 or 1. Values: 0 or 1.
Default 0. Default 0.
When this option is set to 1, NERDCommenterToggle will check all selected line, When this option is set to 1, NERDCommenterToggle will check all selected line,
if there have oneline not be commented, then comment all lines. if there have oneline not be commented, then comment all lines.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*'NERDDisableTabsInBlockComm'* .. *'NERDDisableTabsInBlockComm'*
Values: 0 or 1. Values: 0 or 1.
Default 0. Default 0.
@@ -855,7 +855,7 @@ file by the following line >
< <
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.3 Default delimiter customisation *NERDCommenterDefaultDelims* 3.3 Default delimiter customisation *NERDCommenterDefaultDelims*
If you want the NERD commenter to use the alternative delimiters for a If you want the NERD commenter to use the alternative delimiters for a
specific filetype by default then put a line of this form into your vimrc: > specific filetype by default then put a line of this form into your vimrc: >
@@ -869,7 +869,7 @@ Example: java uses // style comments by default, but you want it to default to
See |NERDCommenterAltDelims| for switching commenting styles at runtime. See |NERDCommenterAltDelims| for switching commenting styles at runtime.
============================================================================== ==============================================================================
5. Key mapping customisation *NERDCommenterMappings* 5. Key mapping customisation *NERDCommenterMappings*
To change a mapping just map another key combo to the internal <plug> mapping. To change a mapping just map another key combo to the internal <plug> mapping.
For example, to remap the |NERDCommenterComment| mapping to ",omg" you would put For example, to remap the |NERDCommenterComment| mapping to ",omg" you would put
@@ -884,9 +884,9 @@ map to.
See also |'NERDCreateDefaultMappings'|. See also |'NERDCreateDefaultMappings'|.
============================================================================== ==============================================================================
6. Interfaces *NERDCommenterInterfaces* 6. Interfaces *NERDCommenterInterfaces*
NERDCommentIsLineCommented({lineNo}) *NERDCommentIsLineCommented()* NERDCommentIsLineCommented({lineNo}) *NERDCommentIsLineCommented()*
Check if the line is a comment Check if the line is a comment
Note this function checks if the line is **completely** a comment Note this function checks if the line is **completely** a comment
Args: Args:
@@ -894,7 +894,7 @@ NERDCommentIsLineCommented({lineNo}) *NERDCommentIsLineCommented()*
Return: Number, 1 if the line is a comment, 0 else Return: Number, 1 if the line is a comment, 0 else
NERDComment({mode}, {type}) *NERDComment()* NERDComment({mode}, {type}) *NERDComment()*
This function is a Wrapper for the main commenting functions This function is a Wrapper for the main commenting functions
Args: Args:
@@ -907,7 +907,7 @@ NERDComment({mode}, {type}) *NERDComment()*
'Insert', 'Uncomment', 'Yank' 'Insert', 'Uncomment', 'Yank'
NERDCommentIsCharCommented({line}, {col}) *NERDCommentIsCharCommented()* NERDCommentIsCharCommented({line}, {col}) *NERDCommentIsCharCommented()*
Check if the character at [{line}, {col}] is inside a comment Check if the character at [{line}, {col}] is inside a comment
Note the Comment delimeter it self is considered as part of the Note the Comment delimeter it self is considered as part of the
comment comment
@@ -919,11 +919,11 @@ NERDCommentIsCharCommented({line}, {col}) *NERDCommentIsCharCommented()*
============================================================================== ==============================================================================
7. Issues with the script *NERDCommenterIssues* 7. Issues with the script *NERDCommenterIssues*
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
7.1 Delimiter detection heuristics *NERDCommenterHeuristics* 7.1 Delimiter detection heuristics *NERDCommenterHeuristics*
Heuristics are used to distinguish the real comment delimiters Heuristics are used to distinguish the real comment delimiters
@@ -943,7 +943,7 @@ string. These heuristics, while usually pretty accurate, will not work for all
cases. cases.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
7.2 Nesting issues *NERDCommenterNesting* 7.2 Nesting issues *NERDCommenterNesting*
If we have some line of code like this: > If we have some line of code like this: >
/*int foo */ = /*5 + 9;*/ /*int foo */ = /*5 + 9;*/
@@ -963,7 +963,7 @@ will become: >
for simplicity) for simplicity)
============================================================================== ==============================================================================
8. About *NERDCommenterAbout* 8. About *NERDCommenterAbout*
This plugin was originally written in 2007 by Martin Grenfell, aka @scrooloose This plugin was originally written in 2007 by Martin Grenfell, aka @scrooloose
on Github: https://github.com/scrooloose on Github: https://github.com/scrooloose
@@ -980,7 +980,7 @@ yourself please also feel free to open issues to report problems or request
features: https://github.com/preservim/nerdcommenter features: https://github.com/preservim/nerdcommenter
============================================================================== ==============================================================================
9. Changelog *NERDCommenterChangelog* 9. Changelog *NERDCommenterChangelog*
See the included CHANGELOG.md file or the Github Releases page for the latest See the included CHANGELOG.md file or the Github Releases page for the latest
info on tagged releases. https://github.com/preservim/nerdcommenter/releases info on tagged releases. https://github.com/preservim/nerdcommenter/releases
@@ -989,7 +989,7 @@ The `master` branch is considered stable and will have the latest filetype
support and bugfixes. support and bugfixes.
============================================================================== ==============================================================================
10. Credits *NERDCommenterCredits* 10. Credits *NERDCommenterCredits*
Well over 100 people have contributed towards this plugin, it's functions, and Well over 100 people have contributed towards this plugin, it's functions, and
specific filetype support. Please check out the up do date list of all specific filetype support. Please check out the up do date list of all
@@ -998,7 +998,7 @@ contributors on Github:
https://github.com/preservim/nerdcommenter/graphs/contributors https://github.com/preservim/nerdcommenter/graphs/contributors
============================================================================== ==============================================================================
11. License *NERDCommenterLicense* 11. License *NERDCommenterLicense*
NERD Commenter is released under the Creative-Commons CCO 1.0 Universal NERD Commenter is released under the Creative-Commons CCO 1.0 Universal
license. See the included LICENE file for details. license. See the included LICENSE file for details.

View File

@@ -42,7 +42,6 @@ call s:InitVariable('g:NERDDefaultAlign', 'none')
call s:InitVariable('g:NERDTrimTrailingWhitespace', 0) call s:InitVariable('g:NERDTrimTrailingWhitespace', 0)
call s:InitVariable('g:NERDToggleCheckAllLines', 0) call s:InitVariable('g:NERDToggleCheckAllLines', 0)
call s:InitVariable('g:NERDDisableTabsInBlockComm', 0) call s:InitVariable('g:NERDDisableTabsInBlockComm', 0)
call s:InitVariable('g:NERDSuppressWarnings', 0)
" Section: Comment mapping and menu item setup " Section: Comment mapping and menu item setup
" =========================================================================== " ===========================================================================
@@ -79,7 +78,6 @@ function! s:CreateMaps(modes, target, desc, combo)
endif endif
endfor endfor
endfunction endfunction
call s:CreateMaps('nx', 'Comment', 'Comment', 'cc') call s:CreateMaps('nx', 'Comment', 'Comment', 'cc')
call s:CreateMaps('nx', 'Toggle', 'Toggle', 'c<Space>') call s:CreateMaps('nx', 'Toggle', 'Toggle', 'c<Space>')
call s:CreateMaps('nx', 'Minimal', 'Minimal', 'cm') call s:CreateMaps('nx', 'Minimal', 'Minimal', 'cm')
@@ -99,32 +97,6 @@ call s:CreateMaps('i', 'Insert', 'Insert Comment Here', '')
call s:CreateMaps('', ':', '-Sep3-', '') call s:CreateMaps('', ':', '-Sep3-', '')
call s:CreateMaps('', ':help NERDCommenterContents<CR>', 'Help', '') call s:CreateMaps('', ':help NERDCommenterContents<CR>', 'Help', '')
" Shim functions so old code gets passed through to the autoload functions
function! NERDComment(mode, type) range
if !g:NERDSuppressWarnings
echom 'Function NERDComment() has been deprecated, please use nerdcommenter#Comment() instead'
endif
if a:firstline != a:lastline
echoerr "Sorry! We can't pass a range through this deprecation shim, please update your code."
return v:false
endif
return nerdcommenter#Comment(a:mode, a:type)
endfunction
function! NERDCommentIsLineCommented(lineNo)
if !g:NERDSuppressWarnings
echom 'Function NERDCommentIsLineCommented() has been deprecated, please use nerdcommenter#IsLineCommented() instead'
endif
return nerdcommenter#IsLineCommented(a:lineNo)
endfunction
function! NERDCommentIsCharCommented(line, col)
if !g:NERDSuppressWarnings
echom 'Function NERDCommentIsCharCommented() has been deprecated, please use nerdcommenter#IsCharCommented() instead'
endif
return nerdcommenter#IsCharCommented(a:line, a:col)
endfunction
inoremap <silent> <Plug>NERDCommenterInsert <Space><BS><Esc>:call nerdcommenter#Comment('i', "insert")<CR> inoremap <silent> <Plug>NERDCommenterInsert <Space><BS><Esc>:call nerdcommenter#Comment('i', "insert")<CR>
" switch to/from alternative delimiters (does not use wrapper function) " switch to/from alternative delimiters (does not use wrapper function)