parent
162db2b5f5
commit
686cb54f5e
@ -1,4 +0,0 @@
|
||||
setlocal tabstop=4
|
||||
setlocal softtabstop=4
|
||||
setlocal shiftwidth=4
|
||||
setlocal noexpandtab
|
@ -1 +0,0 @@
|
||||
setlocal noexpandtab
|
@ -1,8 +0,0 @@
|
||||
setlocal tabstop=4
|
||||
setlocal softtabstop=4
|
||||
setlocal shiftwidth=4
|
||||
setlocal noexpandtab
|
||||
setlocal commentstring=//\ %s
|
||||
setlocal foldmethod=syntax
|
||||
compiler go
|
||||
let b:dispatch="go test -v"
|
@ -1,4 +0,0 @@
|
||||
setlocal tabstop=4
|
||||
setlocal softtabstop=4
|
||||
setlocal shiftwidth=4
|
||||
setlocal noexpandtab
|
@ -1,5 +0,0 @@
|
||||
setlocal tabstop=2
|
||||
setlocal softtabstop=2
|
||||
setlocal shiftwidth=2
|
||||
setlocal expandtab
|
||||
setlocal commentstring=//\ %s
|
@ -1,4 +0,0 @@
|
||||
setlocal tabstop=4
|
||||
setlocal softtabstop=4
|
||||
setlocal shiftwidth=4
|
||||
" setlocal nosmartindent
|
@ -1,2 +1,2 @@
|
||||
setlocal foldmethod=syntax
|
||||
setlocal foldlevelstart=5
|
||||
highlight rubyDefine ctermbg=235
|
||||
set foldmethod=syntax
|
||||
|
@ -1 +0,0 @@
|
||||
setlocal foldmethod=syntax
|
@ -1 +0,0 @@
|
||||
setlocal noexpandtab
|
@ -1 +0,0 @@
|
||||
nmap <leader><space> <Plug>VimwikiToggleListItem
|
@ -1 +0,0 @@
|
||||
au BufRead,BufNewFile *.applescript setf applescript
|
@ -1 +0,0 @@
|
||||
au BufRead,BufNewFile *.bats setf sh
|
@ -0,0 +1 @@
|
||||
autocmd BufRead,BufNewFile *.md setlocal spell
|
@ -1 +0,0 @@
|
||||
au BufRead,BufNewFile *.scad setf openscad
|
@ -1 +0,0 @@
|
||||
au BufRead,BufNewFile *.rl setf ragel
|
@ -0,0 +1 @@
|
||||
Subproject commit d5655263af8b3611a2bcb907a9963831a88d154b
|
@ -0,0 +1 @@
|
||||
Subproject commit 96510b067e57bbfc9f0da0697f61c7d30ee6477f
|
@ -1 +0,0 @@
|
||||
Subproject commit 362e15ab492853ff9582ea5856878e1a5b64ed18
|
@ -1 +0,0 @@
|
||||
Subproject commit f3fbe427f7b4ec436416a5816d714dc917dc530b
|
@ -1 +0,0 @@
|
||||
camelcasemotion.vba: call delete('/Users/alpha/.vim/bundle/camelcasemotion//autoload/camelcasemotion.vim')|call delete('/Users/alpha/.vim/bundle/camelcasemotion//plugin/camelcasemotion.vim')|call delete('/Users/alpha/.vim/bundle/camelcasemotion//doc/camelcasemotion.txt')
|
@ -1,173 +0,0 @@
|
||||
" camelcasemotion.vim: Motion through CamelCaseWords and underscore_notation.
|
||||
"
|
||||
" DEPENDENCIES:
|
||||
" - Requires Vim 7.0 or higher.
|
||||
"
|
||||
" Copyright: (C) 2007-2009 by Ingo Karkat
|
||||
" The VIM LICENSE applies to this script; see ':help copyright'.
|
||||
"
|
||||
" Maintainer: Ingo Karkat <ingo@karkat.de>
|
||||
" REVISION DATE REMARKS
|
||||
" 1.50.001 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.
|
||||
" file creation
|
||||
|
||||
"- functions ------------------------------------------------------------------"
|
||||
function! s:Move( direction, count, mode )
|
||||
" Note: There is no inversion of the regular expression character class
|
||||
" 'keyword character' (\k). We need an inversion "non-keyword" defined as
|
||||
" "any non-whitespace character that is not a keyword character" (e.g.
|
||||
" [!@#$%^&*()]). This can be specified via a non-whitespace character in
|
||||
" whose place no keyword character matches (\k\@!\S).
|
||||
|
||||
"echo "count is " . a:count
|
||||
let l:i = 0
|
||||
while l:i < a:count
|
||||
if a:direction == 'e'
|
||||
" "Forward to end" motion.
|
||||
"call search( '\>\|\(\a\|\d\)\+\ze_', 'We' )
|
||||
" end of ...
|
||||
" number | ACRONYM followed by CamelCase or number | CamelCase | underscore_notation | non-keyword | word
|
||||
call search( '\d\+\|\u\+\ze\%(\u\l\|\d\)\|\u\l\+\|\%(\a\|\d\)\+\ze_\|\%(\k\@!\S\)\+\|\%(_\@!\k\)\+\>', 'We' )
|
||||
" Note: word must be defined as '\k\>'; '\>' on its own somehow
|
||||
" dominates over the previous branch. Plus, \k must exclude the
|
||||
" underscore, or a trailing one will be incorrectly moved over:
|
||||
" '\%(_\@!\k\)'.
|
||||
if a:mode == 'o'
|
||||
" Note: Special additional treatment for operator-pending mode
|
||||
" "forward to end" motion.
|
||||
" The difference between normal mode, operator-pending and visual
|
||||
" mode is that in the latter two, the motion must go _past_ the
|
||||
" final "word" character, so that all characters of the "word" are
|
||||
" selected. This is done by appending a 'l' motion after the
|
||||
" search for the next "word".
|
||||
"
|
||||
" In operator-pending mode, the 'l' motion only works properly
|
||||
" at the end of the line (i.e. when the moved-over "word" is at
|
||||
" the end of the line) when the 'l' motion is allowed to move
|
||||
" over to the next line. Thus, the 'l' motion is added
|
||||
" temporarily to the global 'whichwrap' setting.
|
||||
" Without this, the motion would leave out the last character in
|
||||
" the line. I've also experimented with temporarily setting
|
||||
" "set virtualedit=onemore" , but that didn't work.
|
||||
let l:save_ww = &whichwrap
|
||||
set whichwrap+=l
|
||||
normal! l
|
||||
let &whichwrap = l:save_ww
|
||||
endif
|
||||
else
|
||||
" Forward (a:direction == '') and backward (a:direction == 'b')
|
||||
" motion.
|
||||
|
||||
let l:direction = (a:direction == 'w' ? '' : a:direction)
|
||||
|
||||
" CamelCase: Jump to beginning of either (start of word, Word, WORD,
|
||||
" 123).
|
||||
" Underscore_notation: Jump to the beginning of an underscore-separated
|
||||
" word or number.
|
||||
"call search( '\<\|\u', 'W' . l:direction )
|
||||
"call search( '\<\|\u\(\l\+\|\u\+\ze\u\)\|\d\+', 'W' . l:direction )
|
||||
"call search( '\<\|\u\(\l\+\|\u\+\ze\u\)\|\d\+\|_\zs\(\a\|\d\)\+', 'W' . l:direction )
|
||||
" beginning of ...
|
||||
" word | empty line | non-keyword after whitespaces | non-whitespace after word | number | ACRONYM followed by CamelCase or number | CamelCase | underscore followed by ACRONYM, Camel, lowercase or number
|
||||
call search( '\<\D\|^$\|\%(^\|\s\)\+\zs\k\@!\S\|\>\S\|\d\+\|\u\+\ze\%(\u\l\|\d\)\|\u\l\+\|_\zs\%(\u\+\|\u\l\+\|\l\+\|\d\+\)', 'W' . l:direction )
|
||||
" Note: word must be defined as '\<\D' to avoid that a word like
|
||||
" 1234Test is moved over as [1][2]34[T]est instead of [1]234[T]est
|
||||
" because \< matches with zero width, and \d\+ will then start
|
||||
" matching '234'. To fix that, we make \d\+ be solely responsible
|
||||
" for numbers by taken this away from \< via \<\D. (An alternative
|
||||
" would be to replace \d\+ with \D\%#\zs\d\+, but that one is more
|
||||
" complex.) All other branches are not affected, because they match
|
||||
" multiple characters and not the same character multiple times.
|
||||
endif
|
||||
let l:i = l:i + 1
|
||||
endwhile
|
||||
endfunction
|
||||
|
||||
function! camelcasemotion#Motion( direction, count, mode )
|
||||
"*******************************************************************************
|
||||
"* PURPOSE:
|
||||
" Perform the motion over CamelCaseWords or underscore_notation.
|
||||
"* ASSUMPTIONS / PRECONDITIONS:
|
||||
" none
|
||||
"* EFFECTS / POSTCONDITIONS:
|
||||
" Move cursor / change selection.
|
||||
"* INPUTS:
|
||||
" a:direction one of 'w', 'b', 'e'
|
||||
" a:count number of "words" to move over
|
||||
" a:mode one of 'n', 'o', 'v', 'iv' (latter one is a special visual mode
|
||||
" when inside the inner "word" text objects.
|
||||
"* RETURN VALUES:
|
||||
" none
|
||||
"*******************************************************************************
|
||||
" Visual mode needs special preparations and postprocessing;
|
||||
" normal and operator-pending mode breeze through to s:Move().
|
||||
|
||||
if a:mode == 'v'
|
||||
" Visual mode was left when calling this function. Reselecting the current
|
||||
" selection returns to visual mode and allows to call search() and issue
|
||||
" normal mode motions while staying in visual mode.
|
||||
normal! gv
|
||||
endif
|
||||
if a:mode == 'v' || a:mode == 'iv'
|
||||
|
||||
" Note_1a:
|
||||
if &selection != 'exclusive' && a:direction == 'w'
|
||||
normal! l
|
||||
endif
|
||||
endif
|
||||
|
||||
call s:Move( a:direction, a:count, a:mode )
|
||||
|
||||
if a:mode == 'v' || a:mode == 'iv'
|
||||
" Note: 'selection' setting.
|
||||
if &selection == 'exclusive' && a:direction == 'e'
|
||||
" When set to 'exclusive', the "forward to end" motion (',e') does not
|
||||
" include the last character of the moved-over "word". To include that, an
|
||||
" additional 'l' motion is appended to the motion; similar to the
|
||||
" special treatment in operator-pending mode.
|
||||
normal! l
|
||||
elseif &selection != 'exclusive' && a:direction != 'e'
|
||||
" Note_1b:
|
||||
" The forward and backward motions move to the beginning of the next "word".
|
||||
" When 'selection' is set to 'inclusive' or 'old', this is one character too far.
|
||||
" The appended 'h' motion undoes this. Because of this backward step,
|
||||
" though, the forward motion finds the current "word" again, and would
|
||||
" be stuck on the current "word". An 'l' motion before the CamelCase
|
||||
" motion (see Note_1a) fixes that.
|
||||
normal! h
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! camelcasemotion#InnerMotion( direction, count )
|
||||
" If the cursor is positioned on the first character of a CamelWord, the
|
||||
" backward motion would move to the previous word, which would result in a
|
||||
" wrong selection. To fix this, first move the cursor to the right, so that
|
||||
" the backward motion definitely will cover the current "word" under the
|
||||
" cursor.
|
||||
normal! l
|
||||
|
||||
" Move "word" backwards, enter visual mode, then move "word" forward. This
|
||||
" selects the inner "word" in visual mode; the operator-pending mode takes
|
||||
" this selection as the area covered by the motion.
|
||||
if a:direction == 'b'
|
||||
" Do not do the selection backwards, because the backwards "word" motion
|
||||
" in visual mode + selection=inclusive has an off-by-one error.
|
||||
call camelcasemotion#Motion( 'b', a:count, 'n' )
|
||||
normal! v
|
||||
" We decree that 'b' is the opposite of 'e', not 'w'. This makes more
|
||||
" sense at the end of a line and for underscore_notation.
|
||||
call camelcasemotion#Motion( 'e', a:count, 'iv' )
|
||||
else
|
||||
call camelcasemotion#Motion( 'b', 1, 'n' )
|
||||
normal! v
|
||||
call camelcasemotion#Motion( a:direction, a:count, 'iv' )
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" vim: set sts=4 sw=4 noexpandtab ff=unix fdm=syntax :
|
@ -1,183 +0,0 @@
|
||||
*camelcasemotion.txt* Motion through CamelCaseWords and underscore_notation.
|
||||
|
||||
CAMEL CASE MOTION by Ingo Karkat
|
||||
*camelcasemotion.vim*
|
||||
description |camelcasemotion-description|
|
||||
usage |camelcasemotion-usage|
|
||||
installation |camelcasemotion-installation|
|
||||
configuration |camelcasemotion-configuration|
|
||||
known problems |camelcasemotion-known-problems|
|
||||
todo |camelcasemotion-todo|
|
||||
history |camelcasemotion-history|
|
||||
|
||||
==============================================================================
|
||||
DESCRIPTION *camelcasemotion-description*
|
||||
|
||||
Vim provides many built-in motions, e.g. to move to the next word, or end of
|
||||
the current word. Most programming languages use either CamelCase
|
||||
("anIdentifier") or underscore_notation ("an_identifier") naming conventions
|
||||
for identifiers. The best way to navigate inside those identifiers using Vim
|
||||
built-in motions is the [count]f{char} motion, i.e. f{uppercase-char} or f_,
|
||||
respectively. But we can make this easier:
|
||||
|
||||
This script defines motions|,w|,|,b| and|,e|(similar to |w|,|b|,|e|), which do
|
||||
not move word-wise (forward/backward), but Camel-wise; i.e. to word boundaries
|
||||
and uppercase letters. The motions also work on underscore notation, where
|
||||
words are delimited by underscore ('_') characters. From here on, both
|
||||
CamelCase and underscore_notation entities are referred to as "words" (in
|
||||
double quotes). Just like with the regular motions, a [count] can be prepended
|
||||
to move over multiple "words" at once. Outside of "words" (e.g. in non-keyword
|
||||
characters like // or ;), the new motions move just like the regular motions.
|
||||
|
||||
Vim provides a built-in|iw|text object called 'inner word', which works in
|
||||
operator-pending and visual mode. Analog to that, this script defines inner
|
||||
"word" motions |i,w|,|i,b| and|i,e|, which select the "word" (or multiple
|
||||
"words" if a [count] is given) where the cursor is located.
|
||||
|
||||
==============================================================================
|
||||
USAGE *camelcasemotion-usage*
|
||||
*,w* *,b* *,e*
|
||||
Use the new motions|,w|,|,b| and|,e| in normal mode, operator-pending mode
|
||||
(cp.|operator|), and visual mode. For example, type 'bc,w' to change 'Camel'
|
||||
in 'CamelCase' to something else.
|
||||
|
||||
|
||||
EXAMPLE: motions
|
||||
Given the following CamelCase identifiers in a source code fragment:
|
||||
set Script31337PathAndNameWithoutExtension11=%~dpn0 ~
|
||||
set Script31337PathANDNameWITHOUTExtension11=%~dpn0 ~
|
||||
and the corresponding identifiers in underscore_notation:
|
||||
set script_31337_path_and_name_without_extension_11=%~dpn0 ~
|
||||
set SCRIPT_31337_PATH_AND_NAME_WITHOUT_EXTENSION_11=%~dpn0 ~
|
||||
|
||||
,w moves to ([x] is cursor position): [s]et, [s]cript, [3]1337, [p]ath,
|
||||
[a]nd, [n]ame, [w]ithout, [e]xtension, [1]1, [d]pn0, dpn[0], [s]et
|
||||
,b moves to: [d]pn0, [1]1, [e]xtension, [w]ithout, ...
|
||||
,e moves to: se[t], scrip[t], 3133[7], pat[h], an[d], nam[e], withou[t],
|
||||
extensio[n], 1[1], dpn[0]
|
||||
|
||||
|
||||
EXAMPLE: inner motions
|
||||
Given the following identifier, with the cursor positioned at [x]:
|
||||
script_31337_path_and_na[m]e_without_extension_11 ~
|
||||
|
||||
v3i,w selects script_31337_path_and_[name_without_extension_]11
|
||||
v3i,b selects script_31337_[path_and_name]_without_extension_11
|
||||
v3i,e selects script_31337_path_and_[name_without_extension]_11
|
||||
Instead of visual mode, you can also use c3i,w to change, d3i,w to delete,
|
||||
gU3i,w to upper-case, and so on.
|
||||
|
||||
==============================================================================
|
||||
INSTALLATION *camelcasemotion-installation*
|
||||
|
||||
This script is packaged as a|vimball|. If you have the "gunzip" decompressor
|
||||
in your PATH, simply edit the *.vba.gz package in Vim; otherwise, decompress
|
||||
the archive first, e.g. using WinZip. Inside Vim, install by sourcing the
|
||||
vimball or via the|:UseVimball|command. >
|
||||
vim camelcasemotion.vba.gz
|
||||
:so %
|
||||
To uninstall, use the|:RmVimball|command.
|
||||
|
||||
DEPENDENCIES *camelcasemotion-dependencies*
|
||||
|
||||
- Requires Vim 7.0 or higher.
|
||||
|
||||
==============================================================================
|
||||
CONFIGURATION *camelcasemotion-configuration*
|
||||
|
||||
If you want to use different mappings, map your keys to the
|
||||
<Plug>CamelCaseMotion_? mapping targets _before_ sourcing this script (e.g. in
|
||||
your|vimrc|).
|
||||
|
||||
EXAMPLE: Replace the default|w|,|b| and|e| mappings instead of defining
|
||||
additional mappings|,w|,|,b| and|,e|: >
|
||||
map <silent> w <Plug>CamelCaseMotion_w
|
||||
map <silent> b <Plug>CamelCaseMotion_b
|
||||
map <silent> e <Plug>CamelCaseMotion_e
|
||||
sunmap w
|
||||
sunmap b
|
||||
sunmap e
|
||||
|
||||
EXAMPLE: Replace default|iw|text-object and define|ib|and |ie|motions: >
|
||||
omap <silent> iw <Plug>CamelCaseMotion_iw
|
||||
xmap <silent> iw <Plug>CamelCaseMotion_iw
|
||||
omap <silent> ib <Plug>CamelCaseMotion_ib
|
||||
xmap <silent> ib <Plug>CamelCaseMotion_ib
|
||||
omap <silent> ie <Plug>CamelCaseMotion_ie
|
||||
xmap <silent> ie <Plug>CamelCaseMotion_ie
|
||||
|
||||
==============================================================================
|
||||
KNOWN PROBLEMS *camelcasemotion-known-problems*
|
||||
|
||||
- A degenerate CamelCaseWord containing '\U\u\d' (e.g. "MaP1Roblem") confuses
|
||||
the operator-pending and visual mode ,e mapping if 'selection' is not set to
|
||||
"exclusive". It'll skip "P" and select "P1" in one step. As a workaround,
|
||||
use ',w' instead of ',e'; those two mappings have the same effect inside
|
||||
CamelCaseWords, anyway.
|
||||
- The operator-pending and visual mode ,e mapping doesn't work properly when
|
||||
it reaches the end of the buffer; the final character of the moved-over
|
||||
"word" remains. As a workaround, use the default 'e' motion instead of ',e'.
|
||||
- When the Vim setting 'selection' is not set to "exclusive", a
|
||||
forward-backward combination in visual mode (e.g. 'v,w,b') selects one
|
||||
additional character to the left, instead of only the character where the
|
||||
motion started. Likewise, extension of the visual selection from the front
|
||||
end is off by one additional character.
|
||||
|
||||
==============================================================================
|
||||
TODO *camelcasemotion-todo*
|
||||
|
||||
==============================================================================
|
||||
HISTORY *camelcasemotion-history*
|
||||
|
||||
1.50 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. Now using :xmap to only target visual mode.
|
||||
- Moved functions from plugin to separate autoload script.
|
||||
- Split off documentation into separate help file.
|
||||
|
||||
1.40 30-Jun-2008
|
||||
BF: Now using :normal! to be independent from any user mappings. Thanks to
|
||||
Neil Walker for the patch.
|
||||
|
||||
1.40 19-May-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 24-Apr-2008
|
||||
ENH: Added inner "word" text objects 'i,w' etc. that work analoguous to the
|
||||
built-in |iw| text object. Thanks to David Kotchan for this suggestion.
|
||||
|
||||
1.30 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.
|
||||
|
||||
1.30 09-Apr-2008
|
||||
- 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.
|
||||
- Now requires VIM 7.0 or higher.
|
||||
|
||||
1.20 29-May-2007
|
||||
ENH: The visual mode motions now also (mostly) work with the (default) setting
|
||||
'set selection=inclusive', instead of selecting one character too much.
|
||||
|
||||
1.10 28-May-2007
|
||||
Incorporated major improvements and simplifications done by Joseph Barker.
|
||||
|
||||
1.00 22-May-2007
|
||||
First published version.
|
||||
|
||||
0.01 11-Oct-2005
|
||||
Started development based on vimtip #1016 by Anthony Van Ham.
|
||||
|
||||
==============================================================================
|
||||
Copyright: (C) 2007-2009 by Ingo Karkat
|
||||
The VIM LICENSE applies to this script; see|copyright|.
|
||||
|
||||
Maintainer: Ingo Karkat <ingo@karkat.de>
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
@ -1,13 +0,0 @@
|
||||
,b camelcasemotion.txt /*,b*
|
||||
,e camelcasemotion.txt /*,e*
|
||||
,w camelcasemotion.txt /*,w*
|
||||
camelcasemotion-configuration camelcasemotion.txt /*camelcasemotion-configuration*
|
||||
camelcasemotion-dependencies camelcasemotion.txt /*camelcasemotion-dependencies*
|
||||
camelcasemotion-description camelcasemotion.txt /*camelcasemotion-description*
|
||||
camelcasemotion-history camelcasemotion.txt /*camelcasemotion-history*
|
||||
camelcasemotion-installation camelcasemotion.txt /*camelcasemotion-installation*
|
||||
camelcasemotion-known-problems camelcasemotion.txt /*camelcasemotion-known-problems*
|
||||
camelcasemotion-todo camelcasemotion.txt /*camelcasemotion-todo*
|
||||
camelcasemotion-usage camelcasemotion.txt /*camelcasemotion-usage*
|
||||
camelcasemotion.txt camelcasemotion.txt /*camelcasemotion.txt*
|
||||
camelcasemotion.vim camelcasemotion.txt /*camelcasemotion.vim*
|
@ -1,204 +0,0 @@
|
||||
" camelcasemotion.vim: Motion through CamelCaseWords and underscore_notation.
|
||||
"
|
||||
" DEPENDENCIES:
|
||||
" - Requires Vim 7.0 or higher.
|
||||
"
|
||||
" Copyright: (C) 2007-2009 by Ingo Karkat
|
||||
" 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
|
||||
|
||||
" Avoid installing twice or when in compatible mode
|
||||
if exists('g:loaded_camelcasemotion') || (v:version < 700)
|
||||
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.
|
||||
" 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>.
|
||||
"
|
||||
" We do not provide the fourth "backward to end" motion (,E), because it is
|
||||
" 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
|
||||
|
||||
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 ' . 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> ,' . 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.
|
||||
"
|
||||
" 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.
|
||||
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
|
||||
|
||||
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 ' . 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,' . l:motion . ' ' . l:targetMapping
|
||||
endif
|
||||
endfor
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
call s:CreateMotionMappings()
|
||||
call s:CreateInnerMotionMappings()
|
||||
|
||||
delfunction s:CreateMotionMappings
|
||||
delfunction s:CreateInnerMotionMappings
|
||||
|
||||
" vim: set sts=4 sw=4 noexpandtab ff=unix fdm=syntax :
|
@ -1 +0,0 @@
|
||||
Subproject commit 7fa89fec125ce60a341f7c37dd769a8a31c49359
|
@ -1 +0,0 @@
|
||||
Subproject commit b47d013d1fdfecc9e19df8034439b8e379813696
|
@ -1 +0,0 @@
|
||||
Subproject commit b4f3624d01ffdfd7bdcd2e19128fffe768fe6262
|
@ -1 +0,0 @@
|
||||
../../src/swift/utils/vim
|
@ -1 +0,0 @@
|
||||
Subproject commit 00e1e7fcdbc6d753e0bc8043e0d2546fa81bf367
|
@ -1 +0,0 @@
|
||||
Subproject commit aace5c23d812a205c93e87ff79df72d9366928df
|
@ -1 +0,0 @@
|
||||
Subproject commit 0ed0e734cd58873f842ff581d5c746463788bd4a
|
@ -1 +0,0 @@
|
||||
Subproject commit 87c1bda4d5573185a1f79c42a919c4b62bc34c42
|
@ -1 +0,0 @@
|
||||
Subproject commit 1d3e4aac0117d57c3e1aaaa7e5a99f1d7553e01b
|
@ -1 +0,0 @@
|
||||
Subproject commit cf4f2f013d493ca1bfe612e200ecd77ce51fbd3d
|
@ -1 +0,0 @@
|
||||
Subproject commit 82ad45543f0d13dfa7d3f59ca4cd54d0e145417f
|
@ -1 +0,0 @@
|
||||
Subproject commit b689ee4276d82feb21b21661a6500755ff6b2fde
|
@ -1 +0,0 @@
|
||||
Subproject commit 4a03334baf5be506c01eb441dc0a166cee61c057
|
@ -1 +0,0 @@
|
||||
Subproject commit 2e89a6ec2b34d55bf3b85a3df863da5156bce2d5
|
@ -1 +0,0 @@
|
||||
Subproject commit 0a78169a33c7ea7718b9fa0fad63c11c04727291
|
@ -1 +0,0 @@
|
||||
Subproject commit cca7dcab524ea90e85dc3cfae985b3bbb01a5e11
|
Loading…
Reference in new issue