Skip to content

Commit a173b0e

Browse files
committed
Clean up code
1 parent 2cc0a6b commit a173b0e

File tree

2 files changed

+46
-76
lines changed

2 files changed

+46
-76
lines changed

autoload/textobj/underscore.vim

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
function! s:search_underscore(object_type)
2+
let current_pos = getpos('.')
3+
let start_pos = copy(current_pos)
4+
let start_pos[1:2] = searchpos('_', 'bcn', current_pos[1])
5+
if start_pos[1:2] == [0, 0]
6+
return 0
7+
else
8+
let end_pos = copy(current_pos)
9+
let end_pos[1:2] = searchpos('_', 'n', current_pos[1])
10+
if end_pos[1:2] == [0, 0]
11+
if current_pos == start_pos
12+
let end_pos = copy(start_pos)
13+
let start_pos[1:2] = searchpos('_', 'bn', current_pos[1])
14+
if start_pos == [0, 0]
15+
return 0
16+
endif
17+
else
18+
return 0
19+
endif
20+
endif
21+
endif
22+
23+
if a:object_type ==# 'A'
24+
let start_pos[2] = start_pos[2] + 1
25+
elseif a:object_type ==# 'i'
26+
let start_pos[2] = start_pos[2] + 1
27+
let end_pos[2] = end_pos[2] - 1
28+
endif
29+
30+
return [ 'v', start_pos, end_pos ]
31+
endfunction
32+
33+
function! textobj#underscore#select_a()
34+
return s:search_underscore('a')
35+
endfunction
36+
37+
function! textobj#underscore#select_A()
38+
return s:search_underscore('A')
39+
endfunction
40+
41+
function! textobj#underscore#select_i()
42+
return s:search_underscore('i')
43+
endfunction

plugin/textobj/underscore.vim

Lines changed: 3 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -3,82 +3,9 @@ if exists('g:loaded_textobj_underscore')
33
endif
44

55
call textobj#user#plugin('underscore', {
6-
\ 'a': { 'sfile': expand('<sfile>'), 'select': 'a_', 'select-function': 's:select_a' },
7-
\ 'A': { 'sfile': expand('<sfile>'), 'select': 'a-', 'select-function': 's:select_A' },
8-
\ 'i': { 'sfile': expand('<sfile>'), 'select': 'i_', 'select-function': 's:select_i' },
6+
\ 'a': { 'select': 'a_', 'select-function': 'textobj#underscore#select_a' },
7+
\ 'A': { 'select': 'a-', 'select-function': 'textobj#underscore#select_A' },
8+
\ 'i': { 'select': 'i_', 'select-function': 'textobj#underscore#select_i' },
99
\ })
1010

11-
function! s:search_underscore()
12-
let current_pos = getpos('.')
13-
let start_pos = searchpos('_', 'bcn', current_pos[1])
14-
if start_pos == [0, 0]
15-
throw 'not_found'
16-
else
17-
let end_pos = searchpos('_', 'n', current_pos[1])
18-
if end_pos == [0, 0]
19-
if current_pos[1:2] == start_pos
20-
let end_pos = start_pos
21-
let start_pos = searchpos('_', 'bn', current_pos[1])
22-
if start_pos == [0, 0]
23-
throw 'not_found'
24-
endif
25-
else
26-
throw 'not_found'
27-
endif
28-
endif
29-
endif
30-
31-
return [ start_pos[1], end_pos[1] ]
32-
endfunction
33-
34-
function! s:select_a()
35-
try
36-
let [ start_col, end_col ] = s:search_underscore()
37-
catch
38-
return 0
39-
endtry
40-
41-
let start_pos = getpos('.')
42-
let start_pos[2] = start_col
43-
44-
let end_pos = getpos('.')
45-
let end_pos[2] = end_col
46-
47-
return [ 'v', start_pos, end_pos ]
48-
endfunction
49-
50-
function! s:select_A()
51-
try
52-
let [ start_col, end_col ] = s:search_underscore()
53-
catch
54-
return 0
55-
endtry
56-
57-
let start_pos = getpos('.')
58-
let start_pos[2] = start_col + 1
59-
60-
let end_pos = getpos('.')
61-
let end_pos[2] = end_col
62-
63-
return [ 'v', start_pos, end_pos ]
64-
endfunction
65-
66-
" ciao_come_stai
67-
68-
function! s:select_i()
69-
try
70-
let [ start_col, end_col ] = s:search_underscore()
71-
catch
72-
return 0
73-
endtry
74-
75-
let start_pos = getpos('.')
76-
let start_pos[2] = start_col + 1
77-
78-
let end_pos = getpos('.')
79-
let end_pos[2] = end_col - 1
80-
81-
return ['v', start_pos, end_pos]
82-
endfunction
83-
8411
let g:loaded_textobj_underscore = 1

0 commit comments

Comments
 (0)