-
Notifications
You must be signed in to change notification settings - Fork 47
/
numbers.vim
123 lines (104 loc) · 2.69 KB
/
numbers.vim
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" File: numbers.vim
" Maintainer: Mahdi Yusuf yusuf.mahdi@gmail.com
" Version: 0.4.0
" Description: vim global plugin for better line numbers.
" Last Change: 26 June, 2012
" License: MIT License
" Location: plugin/numbers.vim
" Website: https://github.com/myusuf3/numbers.vim
"
" See numbers.txt for help. This can be accessed by doing:
"
" :helptags ~/.vim/doc
" :help numbers
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let s:numbers_version = '0.4.0'
if exists("g:loaded_numbers") && g:loaded_numbers
finish
endif
let g:loaded_numbers = 1
if (!exists('g:enable_numbers'))
let g:enable_numbers = 1
endif
if v:version < 703 || &cp
echomsg "numbers.vim: you need at least Vim 7.3 and 'nocp' set"
echomsg "Failed loading numbers.vim"
finish
endif
"Allow use of line continuation
let s:save_cpo = &cpo
set cpo&vim
let s:mode=0
let s:center=1
function! SetNumbers()
let s:mode = 1
call ResetNumbers()
endfunc
function! SetRelative()
let s:mode = 0
call ResetNumbers()
endfunc
function! NumbersToggle()
if (s:mode == 1)
let s:mode = 0
set relativenumber
else
let s:mode = 1
set number
endif
endfunc
function! ResetNumbers()
if(s:center == 0)
set number
elseif(s:mode == 0)
set relativenumber
else
set number
end
endfunc
function! Center()
let s:center = 1
call ResetNumbers()
endfunc
function! Uncenter()
let s:center = 0
call ResetNumbers()
endfunc
function! NumbersEnable()
let g:enable_numbers = 1
augroup NumbersAug
au!
autocmd InsertEnter * :call SetNumbers()
autocmd InsertLeave * :call SetRelative()
autocmd BufNewFile * :call ResetNumbers()
autocmd BufReadPost * :call ResetNumbers()
autocmd FocusLost * :call Uncenter()
autocmd FocusGained * :call Center()
autocmd WinEnter * :call SetRelative()
autocmd WinLeave * :call SetNumbers()
augroup END
endfunc
function! NumbersDisable()
let g:enable_numbers = 0
augroup NumbersAug
au!
augroup END
endfunc
function! NumbersOnOff()
if (g:enable_numbers == 1)
call NumbersDisable()
else
call NumbersEnable()
endif
endfunc
" Commands
command! -nargs=0 NumbersToggle call NumbersToggle()
command! -nargs=0 NumbersEnable call NumbersEnable()
command! -nargs=0 NumbersDisable call NumbersDisable()
command! -nargs=0 NumbersOnOff call NumbersOnOff()
" reset &cpo back to users setting
let &cpo = s:save_cpo
if (g:enable_numbers)
call NumbersEnable()
endif