Improve focus-based switching relative/absolute numbers
dblume

dblume commited on 2024-03-18 22:40:45
Showing 3 changed files, with 13 additions and 10 deletions.


See https://jeffkreeftmeijer.com/vim-number/
... ...
@@ -271,10 +271,12 @@ if has("autocmd")
271 271
   autocmd FileType c,cpp nmap <buffer> <leader>s :call SwitchSourceHeader()<cr>
272 272
   autocmd FileType c,cpp set foldmethod=syntax
273 273
 
274
-  " I toggle out of relative number when Vim's focus is lost, because
275
-  " if I'm not editing, then I may be referring to errors with line numbers.
276
-  autocmd FocusLost * if &relativenumber | set number | endif
277
-  autocmd FocusGained * if &number | set relativenumber | endif
274
+" https://jeffkreeftmeijer.com/vim-number/
275
+augroup numbertoggle
276
+  autocmd!
277
+  autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu && mode() != "i" | set rnu   | endif
278
+  autocmd BufLeave,FocusLost,InsertEnter,WinLeave   * if &nu                  | set nornu | endif
279
+augroup END
278 280
 
279 281
   autocmd BufRead *.txt set wrap linebreak   " "soft" wrap of existing lines
280 282
   autocmd BufRead README set wrap linebreak  " "soft" wrap of existing lines
... ...
@@ -54,6 +54,7 @@ bind -r Tab select-pane -t .+1 \; resize-pane -Z
54 54
 # Theme
55 55
 set -g status-keys vi
56 56
 set -g status-fg white
57
+set -g focus-events on
57 58
 set -g status-bg colour235
58 59
 set -g status-left-length 10
59 60
 set -g status-left "#[fg=green]#{?#{!=:#{window_panes},1},pane #P/#{window_panes},}#[default]"
... ...
@@ -298,12 +298,12 @@ if has("autocmd")
298 298
   autocmd FileType c,cpp nmap <buffer> <leader>s :call SwitchSourceHeader()<cr>
299 299
   autocmd FileType c,cpp set foldmethod=syntax
300 300
 
301
-  if v:version >= 703
302
-    " I toggle out of relative number when Vim's focus is lost, because
303
-    " if I'm not editing, then I may be referring to errors with line numbers.
304
-    autocmd FocusLost * if &relativenumber | set number | endif
305
-    autocmd FocusGained * if &number | set relativenumber | endif
306
-  endif
301
+" https://jeffkreeftmeijer.com/vim-number/
302
+augroup numbertoggle
303
+  autocmd!
304
+  autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu && mode() != "i" | set rnu   | endif
305
+  autocmd BufLeave,FocusLost,InsertEnter,WinLeave   * if &nu                  | set nornu | endif
306
+augroup END
307 307
 
308 308
   autocmd BufRead *.txt set wrap linebreak   " "soft" wrap of existing lines
309 309
   autocmd BufRead README set wrap linebreak  " "soft" wrap of existing lines
310 310