aboutsummaryrefslogtreecommitdiff
path: root/plugin/camelcasemotion.vim
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/camelcasemotion.vim')
-rw-r--r--plugin/camelcasemotion.vim326
1 files changed, 164 insertions, 162 deletions
diff --git a/plugin/camelcasemotion.vim b/plugin/camelcasemotion.vim
index 5a53ad8..9cae4bd 100644
--- a/plugin/camelcasemotion.vim
+++ b/plugin/camelcasemotion.vim
@@ -1,198 +1,200 @@
-" camelcasemotion.vim: Motion through CamelCaseWords and underscore_notation.
+" camelcasemotion.vim: Motion through CamelCaseWords and underscore_notation.
"
" DEPENDENCIES:
-" - Requires Vim 7.0 or higher.
+" - Requires Vim 7.0 or higher.
"
" Copyright: (C) 2007-2009 by Ingo Karkat
-" The VIM LICENSE applies to this script; see ':help copyright'.
+" The VIM LICENSE applies to this script; see ':help copyright'.
"
-" Source: Based on vimtip #1016 by Anthony Van Ham.
-" Maintainer: Ingo Karkat <ingo@karkat.de>
-" REVISION DATE REMARKS
-" 1.50.019 05-May-2009 Do not create mappings for select mode;
-" according to|Select-mode|, printable character
-" commands should delete the selection and insert
-" the typed characters.
-" Moved functions from plugin to separate autoload
-" script.
-" Split off documentation into separate help file.
-" Now cleaning up Create...Mappings functions.
-" 1.40.018 30-Jun-2008 Minor: Removed unnecessary <script> from
-" mappings.
-" 1.40.017 19-May-2008 BF: Now using :normal! to be independent from
-" any user mappings. Thanks to Neil Walker for the
-" patch.
-" 1.40.016 28-Apr-2008 BF: Wrong forward motion stop at the second
-" digit if a word starts with multiple numbers
-" (e.g. 1234.56789). Thanks to Wasim Ahmed for
-" reporting this.
-" 1.40.015 24-Apr-2008 ENH: Added inner "word" text objects 'i,w' etc.
-" that work analogous to the built-in 'iw' text
-" object. Thanks to David Kotchan for this
-" suggestion.
-" 1.30.014 20-Apr-2008 The motions now also stop at non-keyword
-" boundaries, just like the regular motions. This
-" has no effect inside a CamelCaseWord or inside
-" underscore_notation, but it makes the motions
-" behave like the regular motions (which is
-" important if you replace the default motions).
-" Thanks to Mun Johl for reporting this.
-" Now using non-capturing parentheses \%() in the
-" patterns.
-" 1.30.013 09-Apr-2008 Refactored away s:VisualCamelCaseMotion().
-" Allowing users to use mappings different than
-" ,w ,b ,e by defining <Plug>CamelCaseMotion_?
-" target mappings. This can even be used to
-" replace the default 'w', 'b' and 'e' mappings,
-" as suggested by Mun Johl.
-" Mappings are now created in a generic function.
-" Now requires Vim 7.0 or higher.
-" 1.20.012 02-Jun-2007 BF: Corrected motions through mixed
-" CamelCase_and_UnderScore words by re-ordering
-" and narrowing the search patterns.
-" 1.20.011 02-Jun-2007 Thanks again to Joseph Barker for discussing the
-" complicated visual mode mapping on the vim-dev
-" mailing list and coming up with a great
-" simplification:
-" Removed s:CheckForChangesToTheSelectionSetting().
-" Introduced s:VisualCamelCaseMotion(), which
-" handles the differences depending on the
-" 'selection' setting.
-" Visual mode mappings now directly map to the
-" s:VisualCamelCaseMotion() function; no mark is
-" clobbered, the complex mapping with the inline
-" expression has been retired.
-" 1.20.010 29-May-2007 BF: The operator-pending and visual mode ,e
-" mapping doesn't work properly when it reaches
-" the end of line; the final character of the
-" moved-over "word" remains. Fixed this problem
-" unless the "word" is at the very end of the
-" buffer.
-" ENH: The visual mode motions now also (mostly)
-" work with the (default) setting
-" 'set selection=inclusive', instead of selecting
-" one character too much.
-" ENH: All mappings will check for changes to the
-" 'selection' setting and remap the visual mode
-" mappings via function
-" s:SetupVisualModeMappings(). We cannot rely on
-" the setting while sourcing camelcasemotion.vim
-" because the mswin.vim script may be sourced
-" afterwards, and its 'behave mswin' changes
-" 'selection'.
-" Refactored the arguments of function
-" s:CamelCaseMotion(...).
-" 1.10.009 28-May-2007 BF: Degenerate CamelCaseWords that consist of
-" only a single uppercase letter (e.g. "P" in
-" "MapPRoblem") are skipped by all motions. Thanks
-" to Joseph Barker for reporting this.
-" BF: In CamelCaseWords that consist of uppercase
-" letters followed by decimals (e.g.
-" "MyUPPER123Problem", the uppercase "word" is
-" skipped by all motions.
-" 1.10.008 28-May-2007 Incorporated major improvements and
-" simplifications done by Joseph Barker:
-" Operator-pending and visual mode motions now
-" accept [count] of more than 9.
-" Visual selections can now be extended from
-" either end.
-" Instead of misusing the :[range], the special
-" variable v:count1 is used. Custom commands are
-" not needed anymore.
-" Operator-pending and visual mode mappings are
-" now generic: There's only a single mapping for
-" ,w that can be repeated, rather than having a
-" separate mapping for 1,w 2,w 3,w ...
-" 1.00.007 22-May-2007 Added documentation for publication.
-" 006 20-May-2007 BF: visual mode [1,2,3],e on pure CamelCase
-" mistakenly marks [2,4,6] words. If the cursor is
-" on a uppercase letter, the search pattern
-" '\u\l\+' doesn't match at the cursor position,
-" so another match won. Changed search pattern
-" from '\l\+',
-" 005 16-May-2007 Added support for underscore notation.
-" Added support for "forward to end of word"
-" (',e') motion.
-" 004 16-May-2007 Improved search pattern so that
-" UppercaseWORDSInBetween and digits are handled,
-" too.
-" 003 15-May-2007 Changed mappings from <Leader>w to ,w;
-" other \w mappings interfere here, because it's
-" irritating when the cursor jump doesn't happen
-" immediately, because Vim waits whether the
-" mapping is complete. ,w is faster to type that
-" \w (and, because of the left-right touch,
-" preferred over gw).
-" Added visual mode mappings.
-" 0.02 15-Feb-2006 BF: missing <SID> for omaps.
-" 0.01 11-Oct-2005 file creation
+" Source: Based on vimtip #1016 by Anthony Van Ham.
+" Maintainer: Ingo Karkat <ingo@karkat.de>
+" REVISION DATE REMARKS
+" 1.50.019 05-May-2009 Do not create mappings for select mode;
+" according to|Select-mode|, printable character
+" commands should delete the selection and insert
+" the typed characters.
+" Moved functions from plugin to separate autoload
+" script.
+" Split off documentation into separate help file.
+" Now cleaning up Create...Mappings functions.
+" 1.40.018 30-Jun-2008 Minor: Removed unnecessary <script> from
+" mappings.
+" 1.40.017 19-May-2008 BF: Now using :normal! to be independent from
+" any user mappings. Thanks to Neil Walker for the
+" patch.
+" 1.40.016 28-Apr-2008 BF: Wrong forward motion stop at the second
+" digit if a word starts with multiple numbers
+" (e.g. 1234.56789). Thanks to Wasim Ahmed for
+" reporting this.
+" 1.40.015 24-Apr-2008 ENH: Added inner "word" text objects 'i,w' etc.
+" that work analogous to the built-in 'iw' text
+" object. Thanks to David Kotchan for this
+" suggestion.
+" 1.30.014 20-Apr-2008 The motions now also stop at non-keyword
+" boundaries, just like the regular motions. This
+" has no effect inside a CamelCaseWord or inside
+" underscore_notation, but it makes the motions
+" behave like the regular motions (which is
+" important if you replace the default motions).
+" Thanks to Mun Johl for reporting this.
+" Now using non-capturing parentheses \%() in the
+" patterns.
+" 1.30.013 09-Apr-2008 Refactored away s:VisualCamelCaseMotion().
+" Allowing users to use mappings different than
+" ,w ,b ,e by defining <Plug>CamelCaseMotion_?
+" target mappings. This can even be used to
+" replace the default 'w', 'b' and 'e' mappings,
+" as suggested by Mun Johl.
+" Mappings are now created in a generic function.
+" Now requires Vim 7.0 or higher.
+" 1.20.012 02-Jun-2007 BF: Corrected motions through mixed
+" CamelCase_and_UnderScore words by re-ordering
+" and narrowing the search patterns.
+" 1.20.011 02-Jun-2007 Thanks again to Joseph Barker for discussing the
+" complicated visual mode mapping on the vim-dev
+" mailing list and coming up with a great
+" simplification:
+" Removed s:CheckForChangesToTheSelectionSetting().
+" Introduced s:VisualCamelCaseMotion(), which
+" handles the differences depending on the
+" 'selection' setting.
+" Visual mode mappings now directly map to the
+" s:VisualCamelCaseMotion() function; no mark is
+" clobbered, the complex mapping with the inline
+" expression has been retired.
+" 1.20.010 29-May-2007 BF: The operator-pending and visual mode ,e
+" mapping doesn't work properly when it reaches
+" the end of line; the final character of the
+" moved-over "word" remains. Fixed this problem
+" unless the "word" is at the very end of the
+" buffer.
+" ENH: The visual mode motions now also (mostly)
+" work with the (default) setting
+" 'set selection=inclusive', instead of selecting
+" one character too much.
+" ENH: All mappings will check for changes to the
+" 'selection' setting and remap the visual mode
+" mappings via function
+" s:SetupVisualModeMappings(). We cannot rely on
+" the setting while sourcing camelcasemotion.vim
+" because the mswin.vim script may be sourced
+" afterwards, and its 'behave mswin' changes
+" 'selection'.
+" Refactored the arguments of function
+" s:CamelCaseMotion(...).
+" 1.10.009 28-May-2007 BF: Degenerate CamelCaseWords that consist of
+" only a single uppercase letter (e.g. "P" in
+" "MapPRoblem") are skipped by all motions. Thanks
+" to Joseph Barker for reporting this.
+" BF: In CamelCaseWords that consist of uppercase
+" letters followed by decimals (e.g.
+" "MyUPPER123Problem", the uppercase "word" is
+" skipped by all motions.
+" 1.10.008 28-May-2007 Incorporated major improvements and
+" simplifications done by Joseph Barker:
+" Operator-pending and visual mode motions now
+" accept [count] of more than 9.
+" Visual selections can now be extended from
+" either end.
+" Instead of misusing the :[range], the special
+" variable v:count1 is used. Custom commands are
+" not needed anymore.
+" Operator-pending and visual mode mappings are
+" now generic: There's only a single mapping for
+" ,w that can be repeated, rather than having a
+" separate mapping for 1,w 2,w 3,w ...
+" 1.00.007 22-May-2007 Added documentation for publication.
+" 006 20-May-2007 BF: visual mode [1,2,3],e on pure CamelCase
+" mistakenly marks [2,4,6] words. If the cursor is
+" on a uppercase letter, the search pattern
+" '\u\l\+' doesn't match at the cursor position,
+" so another match won. Changed search pattern
+" from '\l\+',
+" 005 16-May-2007 Added support for underscore notation.
+" Added support for "forward to end of word"
+" (',e') motion.
+" 004 16-May-2007 Improved search pattern so that
+" UppercaseWORDSInBetween and digits are handled,
+" too.
+" 003 15-May-2007 Changed mappings from <Leader>w to ,w;
+" other \w mappings interfere here, because it's
+" irritating when the cursor jump doesn't happen
+" immediately, because Vim waits whether the
+" mapping is complete. ,w is faster to type that
+" \w (and, because of the left-right touch,
+" preferred over gw).
+" Added visual mode mappings.
+" 0.02 15-Feb-2006 BF: missing <SID> for omaps.
+" 0.01 11-Oct-2005 file creation
" Avoid installing twice or when in compatible mode
if exists('g:loaded_camelcasemotion') || (v:version < 700)
- finish
+ finish
endif
+
let g:loaded_camelcasemotion = 1
"- mappings -------------------------------------------------------------------
" The count is passed into the function through the special variable 'v:count1',
-" which is easier than misusing the :[range] that :call supports.
-" <C-U> is used to delete the unused range.
+" which is easier than misusing the :[range] that :call supports.
+" <C-U> is used to delete the unused range.
" Another option would be to use a custom 'command! -count=1', but that doesn't
" work with the normal mode mapping: When a count is typed before the mapping,
" the ':' will convert a count of 3 into ':.,+2MyCommand', but ':3MyCommand'
-" would be required to use -count and <count>.
+" would be required to use -count and <count>.
"
" We do not provide the fourth "backward to end" motion (,E), because it is
-" seldomly used.
+" seldomly used.
function! s:CreateMotionMappings()
- " Create mappings according to this template:
- " (* stands for the mode [nov], ? for the underlying motion [wbe].)
- "
- " *noremap <Plug>CamelCaseMotion_? :<C-U>call camelcasemotion#Motion('?',v:count1,'*')<CR>
- " if ! hasmapto('<Plug>CamelCaseMotion_?', '*')
- " *map <silent> ,? <Plug>CamelCaseMotion_?
- " endif
+ " Create mappings according to this template:
+ " (* stands for the mode [nov], ? for the underlying motion [wbe].)
+ "
+ " *noremap <Plug>CamelCaseMotion_? :<C-U>call camelcasemotion#Motion('?',v:count1,'*')<CR>
+ " if ! hasmapto('<Plug>CamelCaseMotion_?', '*')
+ " *map <silent> ,? <Plug>CamelCaseMotion_?
+ " endif
+
+ for l:mode in ['n', 'o', 'v']
+ for l:motion in ['w', 'b', 'e', 'ge']
+ let l:targetMapping = '<Plug>CamelCaseMotion_' . l:motion
+ execute l:mode . 'noremap <silent> ' . l:targetMapping . ' :<C-U>call camelcasemotion#Motion(''' . l:motion . ''',v:count1,''' . l:mode . ''')<CR>'
- for l:mode in ['n', 'o', 'v']
- for l:motion in ['w', 'b', 'e']
- let l:targetMapping = '<Plug>CamelCaseMotion_' . l:motion
- execute l:mode . 'noremap <silent> ' . l:targetMapping . ' :<C-U>call camelcasemotion#Motion(''' . l:motion . ''',v:count1,''' . l:mode . ''')<CR>'
- if ! hasmapto(l:targetMapping, l:mode)
- execute (l:mode ==# 'v' ? 'x' : l:mode) . 'map <silent> <leader>' . l:motion . ' ' . l:targetMapping
- endif
- endfor
+ if ! hasmapto(l:targetMapping, l:mode)
+ execute (l:mode ==# 'v' ? 'x' : l:mode) . 'map <silent> <leader>' . l:motion . ' ' . l:targetMapping
+ endif
endfor
+ endfor
endfunction
" To create a text motion, a mapping for operator-pending mode needs to be
" defined. This mapping should move the cursor according to the implemented
" motion, or mark the covered text via a visual selection. As inner text motions
" need to mark both to the left and right of the cursor position, the visual
-" selection needs to be used.
+" selection needs to be used.
"
" Vim's built-in inner text objects also work in visual mode; they have
" different behavior depending on whether visual mode has just been entered or
-" whether text has already been selected.
-" We deviate from that and always override the existing selection.
+" whether text has already been selected.
+" We deviate from that and always override the existing selection.
function! s:CreateInnerMotionMappings()
- " Create mappings according to this template:
- " (* stands for the mode [ov], ? for the underlying motion [wbe].)
- "
- " *noremap <Plug>CamelCaseMotion_i? :<C-U>call camelcasemotion#InnerMotion('?',v:count1)<CR>
- " if ! hasmapto('<Plug>CamelCaseInnerMotion_i?', '*')
- " *map <silent> i,? <Plug>CamelCaseInnerMotion_i?
- " endif
+ " Create mappings according to this template:
+ " (* stands for the mode [ov], ? for the underlying motion [wbe].)
+ "
+ " *noremap <Plug>CamelCaseMotion_i? :<C-U>call camelcasemotion#InnerMotion('?',v:count1)<CR>
+ " if ! hasmapto('<Plug>CamelCaseInnerMotion_i?', '*')
+ " *map <silent> i,? <Plug>CamelCaseInnerMotion_i?
+ " endif
- for l:mode in ['o', 'v']
- for l:motion in ['w', 'b', 'e']
- let l:targetMapping = '<Plug>CamelCaseMotion_i' . l:motion
- execute l:mode . 'noremap <silent> ' . l:targetMapping . ' :<C-U>call camelcasemotion#InnerMotion(''' . l:motion . ''',v:count1)<CR>'
- if ! hasmapto(l:targetMapping, l:mode)
- execute (l:mode ==# 'v' ? 'x' : l:mode) . 'map <silent> i<leader>' . l:motion . ' ' . l:targetMapping
- endif
- endfor
+ for l:mode in ['o', 'v']
+ for l:motion in ['w', 'b', 'e', 'ge']
+ let l:targetMapping = '<Plug>CamelCaseMotion_i' . l:motion
+ execute l:mode . 'noremap <silent> ' . l:targetMapping . ' :<C-U>call camelcasemotion#InnerMotion(''' . l:motion . ''',v:count1)<CR>'
+ if ! hasmapto(l:targetMapping, l:mode)
+ execute (l:mode ==# 'v' ? 'x' : l:mode) . 'map <silent> i<leader>' . l:motion . ' ' . l:targetMapping
+ endif
endfor
+ endfor
endfunction
call s:CreateMotionMappings()
@@ -201,4 +203,4 @@ call s:CreateInnerMotionMappings()
delfunction s:CreateMotionMappings
delfunction s:CreateInnerMotionMappings
-" vim: set sts=4 sw=4 noexpandtab ff=unix fdm=syntax :
+" vim: set sts=2 sw=2 expandtab ff=unix fdm=syntax :