Skip to content

Commit

Permalink
Merge branch 'release/1.0.5'
Browse files Browse the repository at this point in the history
* release/1.0.5:
  Bump version
  Restore visual selection when cancelling F/T motions
  Create function for setting default highlighting
  Fix variable name issue
  Create function for initializing options
  Use s: instead of <SID>
  • Loading branch information
Lokaltog committed Mar 29, 2011
2 parents 6b8de70 + 7d80932 commit 2f4a591
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 110 deletions.
2 changes: 1 addition & 1 deletion doc/easymotion.txt
@@ -1,4 +1,4 @@
*easymotion.txt* Version 1.0.4.1. Last change: 2011 Mar 28
*easymotion.txt* Version 1.0.5. Last change: 2011 Mar 28


______ __ ___ __ _
Expand Down
197 changes: 88 additions & 109 deletions plugin/EasyMotion.vim
Expand Up @@ -11,47 +11,30 @@
let g:EasyMotion_loaded = 1
" }}}
" Default configuration {{{
if ! exists('g:EasyMotion_keys') " {{{
let g:EasyMotion_keys = ''
let g:EasyMotion_keys .= 'abcdefghijklmnopqrstuvwxyz'
let g:EasyMotion_keys .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
endif " }}}
if ! exists('g:EasyMotion_target_hl') " {{{
let g:EasyMotion_target_hl = 'EasyMotionTarget'
endif " }}}
if ! exists('g:EasyMotion_shade_hl') " {{{
let g:EasyMotion_shade_hl = 'EasyMotionShade'
endif " }}}
if ! exists('g:EasyMotion_do_shade') " {{{
let g:EasyMotion_shade = 1
endif " }}}
if ! exists('g:EasyMotion_do_mapping') " {{{
let g:EasyMotion_do_mapping = 1
endif " }}}
" Create default highlighting {{{
if ! hlexists(g:EasyMotion_target_hl) " {{{
let hl = 'guibg=none guifg=#ff0000 gui=bold '

if &t_Co == 256
let hl .= 'ctermbg=none ctermfg=196 cterm=bold '
else
let hl .= 'ctermbg=none ctermfg=red cterm=bold '
endif

execute 'hi ' . g:EasyMotion_target_hl . ' ' . hl
endif " }}}
if ! hlexists(g:EasyMotion_shade_hl) " {{{
let hl = 'guibg=none guifg=#585858 gui=none '
function! s:InitOption(option, default) " {{{
if ! exists('g:EasyMotion_' . a:option)
exec 'let g:EasyMotion_' . a:option . ' = ' . string(a:default)
endif
endfunction " }}}
function! s:InitHL(group, gui, cterm256, cterm) " {{{
if ! hlexists(a:group)
let guihl = printf('guibg=%s guifg=#%s gui=%s', a:gui[0], a:gui[1], a:gui[2])
let ctermhl = &t_Co == 256
\ ? printf('ctermbg=%s ctermfg=%s cterm=%s', a:cterm256[0], a:cterm256[1], a:cterm256[2])
\ : printf('ctermbg=%s ctermfg=%s cterm=%s', a:cterm[0], a:cterm[1], a:cterm[2])

execute printf('hi %s %s %s', a:group, guihl, ctermhl)
endif
endfunction " }}}

if &t_Co == 256
let hl .= 'ctermbg=none ctermfg=240 cterm=none '
else
let hl .= 'ctermbg=none ctermfg=darkgrey cterm=none '
endif
call s:InitOption('keys', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
call s:InitOption('target_hl', 'EasyMotionTarget')
call s:InitOption('shade_hl', 'EasyMotionShade')
call s:InitOption('do_shade', 1)
call s:InitOption('do_mapping', 1)

execute 'hi ' . g:EasyMotion_shade_hl . ' ' . hl
endif " }}}
" }}}
call s:InitHL(g:EasyMotion_target_hl, ['none', 'ff0000', 'bold'], ['none', '196', 'bold'], ['none', 'red', 'bold'])
call s:InitHL(g:EasyMotion_shade_hl, ['none', '585858', 'none'], ['none', '240', 'none'], ['none', 'darkgrey', 'none'])
" }}}
" Default key mapping {{{
if g:EasyMotion_do_mapping
Expand Down Expand Up @@ -90,62 +73,41 @@
let s:var_reset = {}
" }}}
" Motion functions {{{
" F key motions {{{
" Go to {char} to the right or the left
function! EasyMotionF(visualmode, direction)
call <SID>Prompt('Search for character')
function! EasyMotionF(visualmode, direction) " {{{
let char = s:GetSearchChar(a:visualmode)

let char = <SID>GetChar()

" Check that we have an input char
if empty(char)
return
endif

let re = '\C' . escape(char, '.$^~')
if empty(char)
return
endif

call <SID>EasyMotion(re, a:direction, a:visualmode ? visualmode() : '')
endfunction
" }}}
" T key motions {{{
" Go to {char} to the right (before) or the left (after)
function! EasyMotionT(visualmode, direction)
call <SID>Prompt('Search for character')
let re = '\C' . escape(char, '.$^~')

let char = <SID>GetChar()
call s:EasyMotion(re, a:direction, a:visualmode ? visualmode() : '')
endfunction " }}}
function! EasyMotionT(visualmode, direction) " {{{
let char = s:GetSearchChar(a:visualmode)

" Check that we have an input char
if empty(char)
return
endif
if empty(char)
return
endif

if a:direction == 1
let re = '\C' . escape(char, '.$^~') . '\zs.'
else
let re = '\C.' . escape(char, '.$^~')
endif
if a:direction == 1
let re = '\C' . escape(char, '.$^~') . '\zs.'
else
let re = '\C.' . escape(char, '.$^~')
endif

call <SID>EasyMotion(re, a:direction, a:visualmode ? visualmode() : '')
endfunction
" }}}
" W key motions {{{
" Beginning of word forward
function! EasyMotionW(visualmode)
call <SID>EasyMotion('\<.', 0, a:visualmode ? visualmode() : '')
endfunction
" }}}
" E key motions {{{
" End of word forward
function! EasyMotionE(visualmode)
call <SID>EasyMotion('.\>', 0, a:visualmode ? visualmode() : '')
endfunction
" }}}
" B key motions {{{
" Beginning of word backward
function! EasyMotionB(visualmode)
call <SID>EasyMotion('\<.', 1, a:visualmode ? visualmode() : '')
endfunction
" }}}
call s:EasyMotion(re, a:direction, a:visualmode ? visualmode() : '')
endfunction " }}}
function! EasyMotionW(visualmode) " {{{
call s:EasyMotion('\<.', 0, a:visualmode ? visualmode() : '')
endfunction " }}}
function! EasyMotionE(visualmode) " {{{
call s:EasyMotion('.\>', 0, a:visualmode ? visualmode() : '')
endfunction " }}}
function! EasyMotionB(visualmode) " {{{
call s:EasyMotion('\<.', 1, a:visualmode ? visualmode() : '')
endfunction " }}}
" }}}
" Helper functions {{{
function! s:Message(message) " {{{
Expand Down Expand Up @@ -188,13 +150,30 @@
" Escape key pressed
redraw

call <SID>Message('Cancelled')
call s:Message('Cancelled')

return ''
endif

return nr2char(char)
endfunction " }}}
function! s:GetSearchChar(visualmode)
call s:Prompt('Search for character')

let char = s:GetChar()

" Check that we have an input char
if empty(char)
" Restore selection
if ! empty(a:visualmode)
silent exec 'normal! gv'
endif

return ''
endif

return char
endfunction
" }}}
" Core functions {{{
function! s:PromptUser(groups) "{{{
Expand Down Expand Up @@ -243,23 +222,23 @@
let target_hl_id = matchadd(g:EasyMotion_target_hl, join(hl_coords, '\|'), 1)

" Set lines with markers
call <SID>SetLines(lines_items, 'marker')
call s:SetLines(lines_items, 'marker')

redraw

" Get target/group character
if single_group
call <SID>Prompt('Target character')
call s:Prompt('Target character')
else
call <SID>Prompt('Group character')
call s:Prompt('Group character')
endif

let input_char = <SID>GetChar()
let input_char = s:GetChar()

redraw

" Restore original lines
call <SID>SetLines(lines_items, 'orig')
call s:SetLines(lines_items, 'orig')

" Un-highlight code
call matchdelete(target_hl_id)
Expand Down Expand Up @@ -290,10 +269,10 @@

try
" Reset properties
call <SID>VarReset('&scrolloff', 0)
call <SID>VarReset('&modified', 0)
call <SID>VarReset('&modifiable', 1)
call <SID>VarReset('&readonly', 0)
call s:VarReset('&scrolloff', 0)
call s:VarReset('&modified', 0)
call s:VarReset('&modifiable', 1)
call s:VarReset('&readonly', 0)

" Find motion targets
while 1
Expand Down Expand Up @@ -337,14 +316,14 @@
" }}}
" Too many groups; only display the first ones {{{
if len(groups) > groups_len
call <SID>Message('Only displaying the first matches')
call s:Message('Only displaying the first matches')

let groups = groups[0 : groups_len - 1]
endif
" }}}

" Shade inactive source
if g:EasyMotion_shade
if g:EasyMotion_do_shade
let shade_hl_pos = '\%' . orig_pos[0] . 'l\%'. orig_pos[1] .'c'

if a:direction == 1
Expand All @@ -359,7 +338,7 @@
endif

" Prompt user for target group/character
let coords = <SID>PromptUser(groups)
let coords = s:PromptUser(groups)

if ! empty(a:visualmode)
" Store original marks
Expand All @@ -381,12 +360,12 @@
call setpos('.', [0, coords[0], coords[1]])
endif

call <SID>Message('Jumping to [' . coords[0] . ', ' . coords[1] . ']')
call s:Message('Jumping to [' . coords[0] . ', ' . coords[1] . ']')
catch /.*/
redraw

" Show exception message
call <SID>Message(v:exception)
call s:Message(v:exception)

" Restore cursor position/selection
if ! empty(a:visualmode)
Expand All @@ -398,15 +377,15 @@
redraw

" Remove shading
if g:EasyMotion_shade && exists('shade_hl_id')
if g:EasyMotion_do_shade && exists('shade_hl_id')
call matchdelete(shade_hl_id)
endif

" Restore properties
call <SID>VarReset('&scrolloff')
call <SID>VarReset('&modified')
call <SID>VarReset('&modifiable')
call <SID>VarReset('&readonly')
call s:VarReset('&scrolloff')
call s:VarReset('&modified')
call s:VarReset('&modifiable')
call s:VarReset('&readonly')
endtry
endfunction " }}}
" }}}

0 comments on commit 2f4a591

Please sign in to comment.