aboutsummaryrefslogtreecommitdiffstats
path: root/autoload/grappele.vim
blob: 74af532896370b229c23021fb980d9fe07bd0e85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function! grappele#Grappele(line, ...)
	let l:current_buffer = 0
	let l:column_position = 0
	let l:column_offset = 0

	let l:mode = get(a:, 1, '')
	let l:visualmode = get(a:, 2, '')

	normal! m'

	if l:mode ==# 'v'
		execute 'normal! ' . l:visualmode
	elseif l:mode ==# 'o'
		normal! V
	endif

	if a:line ==# 0
		" Go to the end of the buffer
		$
	else
		let s:line = a:line

		call setpos('.', [
			\ l:current_buffer,
			\ a:line,
			\ l:column_position,
			\ l:column_offset
		\ ])
	endif
endfunction

function! grappele#Recall(mode)
	if exists('s:line')
		call grappele#Grappele(s:line, a:mode, visualmode())
	endif
endfunction