File: nu.vim

package info (click to toggle)
vim 2%3A9.1.2103-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 93,456 kB
  • sloc: ansic: 433,730; cpp: 6,399; makefile: 4,597; sh: 2,397; java: 2,312; xml: 2,099; python: 1,595; perl: 1,419; awk: 730; lisp: 501; cs: 458; objc: 369; sed: 8; csh: 6; haskell: 1
file content (54 lines) | stat: -rw-r--r-- 1,311 bytes parent folder | download
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
" Vim indent file
" Language:	Nushell
" Maintainer:	El Kasztano
" URL:		https://github.com/elkasztano/nushell-syntax-vim
" License:	MIT <https://opensource.org/license/mit>
" Last Change:	2025 Sep 05

" Only load if no other indent file is loaded
if exists("b:did_indent")
  finish
endif
let b:did_indent = 1

setlocal cindent
setlocal cinoptions=L0,(s,Ws,J1,j1,+0,f5,m1,i0
setlocal cinkeys=0{,0},!^F,o,O,0[,0],0),0#

setlocal autoindent
setlocal indentkeys=0{,0},!^F,o,O,0[,0],0),0#

setlocal shiftwidth=2
setlocal softtabstop=2
setlocal expandtab

setlocal indentexpr=GetNuIndent(v:lnum)

let b:undo_indent = "setl ai< cin< cink< cino< et< inde< indk< sts< sw<"

" only define once
if exists("*GetNuIndent")
  finish
endif

let s:save_cpo = &cpo
set cpo&vim

function GetNuIndent(lnum)
	let prevlnum = prevnonblank(v:lnum - 1) "get number of last non blank line
	let line = getline(a:lnum)
	let synname = synIDattr(synID(a:lnum, 1, 1), "name")
	if (synname == "nuString") || (synname == "nuComment")
		return -1
	endif
	if getline(prevlnum) =~ '\%(^.*[$\|^.*[\s*#.*$\)'
		return (prevlnum > 0) * indent(prevlnum) + shiftwidth()
	endif
	if getline(v:lnum) =~ "^\s*]\>"
		return (prevlnum > 0) * indent(prevlnum) - shiftwidth()
	endif
	return cindent(a:lnum)
endfunction

let &cpo = s:save_cpo
unlet s:save_cpo