__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.10: ~ $
" Vim indent file
" Language:           Clojure
" Maintainer:         Alex Vear <alex@vear.uk>
" Former Maintainers: Sung Pae <self@sungpae.com>
"                     Meikel Brandmeyer <mb@kotka.de>
" URL:                https://github.com/clojure-vim/clojure.vim
" License:            Vim (see :h license)
" Last Change:        2022-03-24

if exists("b:did_indent")
	finish
endif
let b:did_indent = 1

let s:save_cpo = &cpo
set cpo&vim

let b:undo_indent = 'setlocal autoindent< smartindent< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<'

setlocal noautoindent nosmartindent
setlocal softtabstop=2 shiftwidth=2 expandtab
setlocal indentkeys=!,o,O

if exists("*searchpairpos")

	if !exists('g:clojure_maxlines')
		let g:clojure_maxlines = 300
	endif

	if !exists('g:clojure_fuzzy_indent')
		let g:clojure_fuzzy_indent = 1
	endif

	if !exists('g:clojure_fuzzy_indent_patterns')
		let g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let']
	endif

	if !exists('g:clojure_fuzzy_indent_blacklist')
		let g:clojure_fuzzy_indent_blacklist = ['-fn$', '\v^with-%(meta|out-str|loading-context)$']
	endif

	if !exists('g:clojure_special_indent_words')
		let g:clojure_special_indent_words = 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn'
	endif

	if !exists('g:clojure_align_multiline_strings')
		let g:clojure_align_multiline_strings = 0
	endif

	if !exists('g:clojure_align_subforms')
		let g:clojure_align_subforms = 0
	endif

	function! s:syn_id_name()
		return synIDattr(synID(line("."), col("."), 0), "name")
	endfunction

	function! s:ignored_region()
		return s:syn_id_name() =~? '\vstring|regex|comment|character'
	endfunction

	function! s:current_char()
		return getline('.')[col('.')-1]
	endfunction

	function! s:current_word()
		return getline('.')[col('.')-1 : searchpos('\v>', 'n', line('.'))[1]-2]
	endfunction

	function! s:is_paren()
		return s:current_char() =~# '\v[\(\)\[\]\{\}]' && !s:ignored_region()
	endfunction

	" Returns 1 if string matches a pattern in 'patterns', which should be
	" a list of patterns.
	function! s:match_one(patterns, string)
		for pat in a:patterns
			if a:string =~# pat | return 1 | endif
		endfor
	endfunction

	function! s:match_pairs(open, close, stopat)
		" Stop only on vector and map [ resp. {. Ignore the ones in strings and
		" comments.
		if a:stopat == 0 && g:clojure_maxlines > 0
			let stopat = max([line(".") - g:clojure_maxlines, 0])
		else
			let stopat = a:stopat
		endif

		let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:is_paren()", stopat)
		return [pos[0], col(pos)]
	endfunction

	function! s:clojure_check_for_string_worker()
		" Check whether there is the last character of the previous line is
		" highlighted as a string. If so, we check whether it's a ". In this
		" case we have to check also the previous character. The " might be the
		" closing one. In case the we are still in the string, we search for the
		" opening ". If this is not found we take the indent of the line.
		let nb = prevnonblank(v:lnum - 1)

		if nb == 0
			return -1
		endif

		call cursor(nb, 0)
		call cursor(0, col("$") - 1)
		if s:syn_id_name() !~? "string"
			return -1
		endif

		" This will not work for a " in the first column...
		if s:current_char() == '"'
			call cursor(0, col("$") - 2)
			if s:syn_id_name() !~? "string"
				return -1
			endif
			if s:current_char() != '\'
				return -1
			endif
			call cursor(0, col("$") - 1)
		endif

		let p = searchpos('\(^\|[^\\]\)\zs"', 'bW')

		if p != [0, 0]
			return p[1] - 1
		endif

		return indent(".")
	endfunction

	function! s:check_for_string()
		let pos = getpos('.')
		try
			let val = s:clojure_check_for_string_worker()
		finally
			call setpos('.', pos)
		endtry
		return val
	endfunction

	function! s:strip_namespace_and_macro_chars(word)
		return substitute(a:word, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
	endfunction

	function! s:clojure_is_method_special_case_worker(position)
		" Find the next enclosing form.
		call search('\S', 'Wb')

		" Special case: we are at a '(('.
		if s:current_char() == '('
			return 0
		endif
		call cursor(a:position)

		let next_paren = s:match_pairs('(', ')', 0)

		" Special case: we are now at toplevel.
		if next_paren == [0, 0]
			return 0
		endif
		call cursor(next_paren)

		call search('\S', 'W')
		let w = s:strip_namespace_and_macro_chars(s:current_word())

		if g:clojure_special_indent_words =~# '\V\<' . w . '\>'

			" `letfn` is a special-special-case.
			if w ==# 'letfn'
				" Earlier code left the cursor at:
				"     (letfn [...] ...)
				"      ^

				" Search and get coordinates of first `[`
				"     (letfn [...] ...)
				"            ^
				call search('\[', 'W')
				let pos = getcurpos()
				let letfn_bracket = [pos[1], pos[2]]

				" Move cursor to start of the form this function was
				" initially called on.  Grab the coordinates of the
				" closest outer `[`.
				call cursor(a:position)
				let outer_bracket = s:match_pairs('\[', '\]', 0)

				" If the located square brackets are not the same,
				" don't use special-case formatting.
				if outer_bracket != letfn_bracket
					return 0
				endif
			endif

			return 1
		endif

		return 0
	endfunction

	function! s:is_method_special_case(position)
		let pos = getpos('.')
		try
			let val = s:clojure_is_method_special_case_worker(a:position)
		finally
			call setpos('.', pos)
		endtry
		return val
	endfunction

	" Check if form is a reader conditional, that is, it is prefixed by #?
	" or #?@
	function! s:is_reader_conditional_special_case(position)
		return getline(a:position[0])[a:position[1] - 3 : a:position[1] - 2] == "#?"
			\|| getline(a:position[0])[a:position[1] - 4 : a:position[1] - 2] == "#?@"
	endfunction

	" Returns 1 for opening brackets, -1 for _anything else_.
	function! s:bracket_type(char)
		return stridx('([{', a:char) > -1 ? 1 : -1
	endfunction

	" Returns: [opening-bracket-lnum, indent]
	function! s:clojure_indent_pos()
		" Get rid of special case.
		if line(".") == 1
			return [0, 0]
		endif

		" We have to apply some heuristics here to figure out, whether to use
		" normal lisp indenting or not.
		let i = s:check_for_string()
		if i > -1
			return [0, i + !!g:clojure_align_multiline_strings]
		endif

		call cursor(0, 1)

		" Find the next enclosing [ or {. We can limit the second search
		" to the line, where the [ was found. If no [ was there this is
		" zero and we search for an enclosing {.
		let paren = s:match_pairs('(', ')', 0)
		let bracket = s:match_pairs('\[', '\]', paren[0])
		let curly = s:match_pairs('{', '}', bracket[0])

		" In case the curly brace is on a line later then the [ or - in
		" case they are on the same line - in a higher column, we take the
		" curly indent.
		if curly[0] > bracket[0] || curly[1] > bracket[1]
			if curly[0] > paren[0] || curly[1] > paren[1]
				return curly
			endif
		endif

		" If the curly was not chosen, we take the bracket indent - if
		" there was one.
		if bracket[0] > paren[0] || bracket[1] > paren[1]
			return bracket
		endif

		" There are neither { nor [ nor (, ie. we are at the toplevel.
		if paren == [0, 0]
			return paren
		endif

		" Now we have to reimplement lispindent. This is surprisingly easy, as
		" soon as one has access to syntax items.
		"
		" - Check whether we are in a special position after a word in
		"   g:clojure_special_indent_words. These are special cases.
		" - Get the next keyword after the (.
		" - If its first character is also a (, we have another sexp and align
		"   one column to the right of the unmatched (.
		" - In case it is in lispwords, we indent the next line to the column of
		"   the ( + sw.
		" - If not, we check whether it is last word in the line. In that case
		"   we again use ( + sw for indent.
		" - In any other case we use the column of the end of the word + 2.
		call cursor(paren)

		if s:is_method_special_case(paren)
			return [paren[0], paren[1] + &shiftwidth - 1]
		endif

		if s:is_reader_conditional_special_case(paren)
			return paren
		endif

		" In case we are at the last character, we use the paren position.
		if col("$") - 1 == paren[1]
			return paren
		endif

		" In case after the paren is a whitespace, we search for the next word.
		call cursor(0, col('.') + 1)
		if s:current_char() == ' '
			call search('\v\S', 'W')
		endif

		" If we moved to another line, there is no word after the (. We
		" use the ( position for indent.
		if line(".") > paren[0]
			return paren
		endif

		" We still have to check, whether the keyword starts with a (, [ or {.
		" In that case we use the ( position for indent.
		let w = s:current_word()
		if s:bracket_type(w[0]) == 1
			return paren
		endif

		" If the keyword begins with #, check if it is an anonymous
		" function or set, in which case we indent by the shiftwidth
		" (minus one if g:clojure_align_subforms = 1), or if it is
		" ignored, in which case we use the ( position for indent.
		if w[0] == "#"
			" TODO: Handle #=() and other rare reader invocations?
			if w[1] == '(' || w[1] == '{'
				return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
			elseif w[1] == '_'
				return paren
			endif
		endif

		" Test words without namespace qualifiers and leading reader macro
		" metacharacters.
		"
		" e.g. clojure.core/defn and #'defn should both indent like defn.
		let ww = s:strip_namespace_and_macro_chars(w)

		if &lispwords =~# '\V\<' . ww . '\>'
			return [paren[0], paren[1] + &shiftwidth - 1]
		endif

		if g:clojure_fuzzy_indent
			\ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww)
			\ && s:match_one(g:clojure_fuzzy_indent_patterns, ww)
			return [paren[0], paren[1] + &shiftwidth - 1]
		endif

		call search('\v\_s', 'cW')
		call search('\v\S', 'W')
		if paren[0] < line(".")
			return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
		endif

		call search('\v\S', 'bW')
		return [line('.'), col('.') + 1]
	endfunction

	function! GetClojureIndent()
		let lnum = line('.')
		let orig_lnum = lnum
		let orig_col = col('.')
		let [opening_lnum, indent] = s:clojure_indent_pos()

		" Account for multibyte characters
		if opening_lnum > 0
			let indent -= indent - virtcol([opening_lnum, indent])
		endif

		" Return if there are no previous lines to inherit from
		if opening_lnum < 1 || opening_lnum >= lnum - 1
			call cursor(orig_lnum, orig_col)
			return indent
		endif

		let bracket_count = 0

		" Take the indent of the first previous non-white line that is
		" at the same sexp level. cf. src/misc1.c:get_lisp_indent()
		while 1
			let lnum = prevnonblank(lnum - 1)
			let col = 1

			if lnum <= opening_lnum
				break
			endif

			call cursor(lnum, col)

			" Handle bracket counting edge case
			if s:is_paren()
				let bracket_count += s:bracket_type(s:current_char())
			endif

			while 1
				if search('\v[(\[{}\])]', '', lnum) < 1
					break
				elseif !s:ignored_region()
					let bracket_count += s:bracket_type(s:current_char())
				endif
			endwhile

			if bracket_count == 0
				" Check if this is part of a multiline string
				call cursor(lnum, 1)
				if s:syn_id_name() !~? '\vstring|regex'
					call cursor(orig_lnum, orig_col)
					return indent(lnum)
				endif
			endif
		endwhile

		call cursor(orig_lnum, orig_col)
		return indent
	endfunction

	setlocal indentexpr=GetClojureIndent()

else

	" In case we have searchpairpos not available we fall back to
	" normal lisp indenting.
	setlocal indentexpr=
	setlocal lisp
	let b:undo_indent .= '| setlocal lisp<'

endif

let &cpo = s:save_cpo
unlet! s:save_cpo

" vim:sts=8:sw=8:ts=8:noet

Filemanager

Name Type Size Permission Actions
aap.vim File 331 B 0644
ada.vim File 11.06 KB 0644
ant.vim File 290 B 0644
automake.vim File 243 B 0644
awk.vim File 7.68 KB 0644
bash.vim File 390 B 0644
basic.vim File 250 B 0644
bib.vim File 346 B 0644
bitbake.vim File 583 B 0644
bst.vim File 1.86 KB 0644
bzl.vim File 2.86 KB 0644
c.vim File 391 B 0644
cdl.vim File 4.26 KB 0644
ch.vim File 556 B 0644
chaiscript.vim File 1.18 KB 0644
changelog.vim File 264 B 0644
chatito.vim File 731 B 0644
clojure.vim File 11.29 KB 0644
cmake.vim File 2.98 KB 0644
cobol.vim File 8.63 KB 0644
config.vim File 2.17 KB 0644
context.vim File 1.67 KB 0644
cpp.vim File 395 B 0644
cs.vim File 1.88 KB 0644
css.vim File 1.77 KB 0644
cucumber.vim File 2.74 KB 0644
cuda.vim File 371 B 0644
d.vim File 605 B 0644
dictconf.vim File 411 B 0644
dictdconf.vim File 414 B 0644
docbk.vim File 336 B 0644
dosbatch.vim File 1.35 KB 0644
dtd.vim File 11.79 KB 0644
dtrace.vim File 451 B 0644
dts.vim File 1.69 KB 0644
dune.vim File 430 B 0644
dylan.vim File 2.75 KB 0644
eiffel.vim File 3.24 KB 0644
elm.vim File 3.2 KB 0644
erlang.vim File 50.74 KB 0644
eruby.vim File 2.95 KB 0644
eterm.vim File 743 B 0644
expect.vim File 207 B 0644
falcon.vim File 13.84 KB 0644
fennel.vim File 273 B 0644
fish.vim File 2.66 KB 0644
fortran.vim File 7.72 KB 0644
framescript.vim File 891 B 0644
freebasic.vim File 237 B 0644
gdscript.vim File 4.26 KB 0644
gitconfig.vim File 841 B 0644
gitolite.vim File 1.29 KB 0644
go.vim File 1.73 KB 0644
gyp.vim File 169 B 0644
haml.vim File 2.19 KB 0644
hamster.vim File 1.65 KB 0644
hare.vim File 4.38 KB 0644
hog.vim File 1.85 KB 0644
html.vim File 33.12 KB 0644
htmldjango.vim File 273 B 0644
idlang.vim File 1.68 KB 0644
ishd.vim File 1.83 KB 0644
j.vim File 1.77 KB 0644
java.vim File 4.19 KB 0644
javascript.vim File 15.13 KB 0644
javascriptreact.vim File 109 B 0644
json.vim File 4.54 KB 0644
jsonc.vim File 4.74 KB 0644
jsp.vim File 462 B 0644
julia.vim File 15.29 KB 0644
kotlin.vim File 1.53 KB 0644
krl.vim File 4.25 KB 0644
ld.vim File 1.82 KB 0644
less.vim File 243 B 0644
lifelines.vim File 638 B 0644
liquid.vim File 2.03 KB 0644
lisp.vim File 349 B 0644
livebook.vim File 206 B 0644
logtalk.vim File 1.91 KB 0644
lua.vim File 2.22 KB 0644
luau.vim File 252 B 0644
mail.vim File 385 B 0644
make.vim File 3.48 KB 0644
matlab.vim File 4.81 KB 0644
meson.vim File 5.19 KB 0644
mf.vim File 164 B 0644
mma.vim File 2.31 KB 0644
mp.vim File 9.72 KB 0644
nginx.vim File 1.7 KB 0644
nsis.vim File 3.23 KB 0644
objc.vim File 1.65 KB 0644
obse.vim File 1.4 KB 0644
ocaml.vim File 9.09 KB 0644
occam.vim File 4.63 KB 0644
pascal.vim File 5.66 KB 0644
perl.vim File 5.91 KB 0644
php.vim File 25.76 KB 0644
postscr.vim File 1.64 KB 0644
pov.vim File 2.71 KB 0644
prolog.vim File 1.91 KB 0644
ps1.vim File 410 B 0644
pyrex.vim File 326 B 0644
python.vim File 886 B 0644
qb64.vim File 232 B 0644
qml.vim File 1.27 KB 0644
quarto.vim File 23 B 0644
r.vim File 13.96 KB 0644
racket.vim File 2.87 KB 0644
raku.vim File 3.45 KB 0644
raml.vim File 285 B 0644
rapid.vim File 7.97 KB 0644
readline.vim File 786 B 0644
rhelp.vim File 2.83 KB 0644
rmd.vim File 2.25 KB 0644
rnoweb.vim File 1.1 KB 0644
rpl.vim File 1.82 KB 0644
rrst.vim File 1.19 KB 0644
rst.vim File 1.9 KB 0644
ruby.vim File 30.33 KB 0644
rust.vim File 10.26 KB 0644
sas.vim File 5.18 KB 0644
sass.vim File 926 B 0644
scala.vim File 19.3 KB 0644
scheme.vim File 372 B 0644
scss.vim File 191 B 0644
sdl.vim File 2.76 KB 0644
sh.vim File 9.04 KB 0644
sml.vim File 6.42 KB 0644
solidity.vim File 12.61 KB 0644
sql.vim File 1.18 KB 0644
sqlanywhere.vim File 12.96 KB 0644
sshconfig.vim File 796 B 0644
systemverilog.vim File 10.55 KB 0644
tcl.vim File 2.48 KB 0644
tcsh.vim File 1.35 KB 0644
teraterm.vim File 1.38 KB 0644
tex.vim File 13.52 KB 0644
tf.vim File 1.57 KB 0644
tilde.vim File 1.11 KB 0644
treetop.vim File 785 B 0644
typescript.vim File 14.28 KB 0644
typescriptreact.vim File 109 B 0644
vb.vim File 4.69 KB 0644
verilog.vim File 8.08 KB 0644
vhdl.vim File 14.43 KB 0644
vim.vim File 675 B 0644
vroom.vim File 379 B 0644
vue.vim File 385 B 0644
wat.vim File 458 B 0644
xf86conf.vim File 786 B 0644
xhtml.vim File 325 B 0644
xinetd.vim File 1.28 KB 0644
xml.vim File 7.6 KB 0644
xsd.vim File 253 B 0644
xslt.vim File 297 B 0644
yacc.vim File 858 B 0644
yaml.vim File 5.45 KB 0644
zig.vim File 2.09 KB 0644
zimbu.vim File 3.92 KB 0644
zsh.vim File 411 B 0644
Filemanager