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
|
highlight rubyDefine ctermbg=235
|
||||||
setlocal foldlevelstart=5
|
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