Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64
Apache/2.4.52 (Ubuntu)
Server IP : 192.168.1.1 & Your IP : 3.135.224.139
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
vim /
vim82 /
indent /
Delete
Unzip
Name
Size
Permission
Date
Action
aap.vim
265
B
-rw-r--r--
2025-04-02 12:39
ada.vim
10.97
KB
-rw-r--r--
2025-04-02 12:39
ant.vim
290
B
-rw-r--r--
2025-04-02 12:39
automake.vim
243
B
-rw-r--r--
2025-04-02 12:39
awk.vim
7.59
KB
-rw-r--r--
2025-04-02 12:39
bash.vim
350
B
-rw-r--r--
2025-04-02 12:39
bib.vim
346
B
-rw-r--r--
2025-04-02 12:39
bst.vim
1.89
KB
-rw-r--r--
2025-04-02 12:39
bzl.vim
2.86
KB
-rw-r--r--
2025-04-02 12:39
c.vim
325
B
-rw-r--r--
2025-04-02 12:39
cdl.vim
4.24
KB
-rw-r--r--
2025-04-02 12:39
ch.vim
470
B
-rw-r--r--
2025-04-02 12:39
chaiscript.vim
1.11
KB
-rw-r--r--
2025-04-02 12:39
changelog.vim
264
B
-rw-r--r--
2025-04-02 12:39
clojure.vim
11.29
KB
-rw-r--r--
2025-04-02 12:39
cmake.vim
2.62
KB
-rw-r--r--
2025-04-02 12:39
cobol.vim
8.63
KB
-rw-r--r--
2025-04-02 12:39
config.vim
2.17
KB
-rw-r--r--
2025-04-02 12:39
context.vim
752
B
-rw-r--r--
2025-04-02 12:39
cpp.vim
329
B
-rw-r--r--
2025-04-02 12:39
cs.vim
1.71
KB
-rw-r--r--
2025-04-02 12:39
css.vim
1.77
KB
-rw-r--r--
2025-04-02 12:39
cucumber.vim
2.62
KB
-rw-r--r--
2025-04-02 12:39
cuda.vim
305
B
-rw-r--r--
2025-04-02 12:39
d.vim
572
B
-rw-r--r--
2025-04-02 12:39
dictconf.vim
337
B
-rw-r--r--
2025-04-02 12:39
dictdconf.vim
338
B
-rw-r--r--
2025-04-02 12:39
docbk.vim
336
B
-rw-r--r--
2025-04-02 12:39
dosbatch.vim
1.35
KB
-rw-r--r--
2025-04-02 12:39
dtd.vim
11.67
KB
-rw-r--r--
2025-04-02 12:39
dtrace.vim
451
B
-rw-r--r--
2025-04-02 12:39
dune.vim
332
B
-rw-r--r--
2025-04-02 12:39
dylan.vim
2.71
KB
-rw-r--r--
2025-04-02 12:39
eiffel.vim
3.24
KB
-rw-r--r--
2025-04-02 12:39
elm.vim
3.2
KB
-rw-r--r--
2025-04-02 12:39
erlang.vim
48.89
KB
-rw-r--r--
2025-04-02 12:39
eruby.vim
2.95
KB
-rw-r--r--
2025-04-02 12:39
eterm.vim
743
B
-rw-r--r--
2025-04-02 12:39
falcon.vim
13.75
KB
-rw-r--r--
2025-04-02 12:39
fortran.vim
7.48
KB
-rw-r--r--
2025-04-02 12:39
framescript.vim
891
B
-rw-r--r--
2025-04-02 12:39
gitconfig.vim
841
B
-rw-r--r--
2025-04-02 12:39
gitolite.vim
1.25
KB
-rw-r--r--
2025-04-02 12:39
go.vim
1.63
KB
-rw-r--r--
2025-04-02 12:39
haml.vim
2.15
KB
-rw-r--r--
2025-04-02 12:39
hamster.vim
1.65
KB
-rw-r--r--
2025-04-02 12:39
hog.vim
1.85
KB
-rw-r--r--
2025-04-02 12:39
html.vim
32.86
KB
-rw-r--r--
2025-04-02 12:39
htmldjango.vim
273
B
-rw-r--r--
2025-04-02 12:39
idlang.vim
1.64
KB
-rw-r--r--
2025-04-02 12:39
ishd.vim
1.83
KB
-rw-r--r--
2025-04-02 12:39
j.vim
1.77
KB
-rw-r--r--
2025-04-02 12:39
java.vim
4.19
KB
-rw-r--r--
2025-04-02 12:39
javascript.vim
15
KB
-rw-r--r--
2025-04-02 12:39
javascriptreact.vim
109
B
-rw-r--r--
2025-04-02 12:39
json.vim
4.42
KB
-rw-r--r--
2025-04-02 12:39
jsonc.vim
4.62
KB
-rw-r--r--
2025-04-02 12:39
jsp.vim
462
B
-rw-r--r--
2025-04-02 12:39
julia.vim
15.09
KB
-rw-r--r--
2025-04-02 12:39
ld.vim
1.82
KB
-rw-r--r--
2025-04-02 12:39
less.vim
243
B
-rw-r--r--
2025-04-02 12:39
lifelines.vim
638
B
-rw-r--r--
2025-04-02 12:39
liquid.vim
1.85
KB
-rw-r--r--
2025-04-02 12:39
lisp.vim
353
B
-rw-r--r--
2025-04-02 12:39
logtalk.vim
1.82
KB
-rw-r--r--
2025-04-02 12:39
lua.vim
1.88
KB
-rw-r--r--
2025-04-02 12:39
mail.vim
355
B
-rw-r--r--
2025-04-02 12:39
make.vim
3.48
KB
-rw-r--r--
2025-04-02 12:39
matlab.vim
4.81
KB
-rw-r--r--
2025-04-02 12:39
meson.vim
5.19
KB
-rw-r--r--
2025-04-02 12:39
mf.vim
156
B
-rw-r--r--
2025-04-02 12:39
mma.vim
2.22
KB
-rw-r--r--
2025-04-02 12:39
mp.vim
11.06
KB
-rw-r--r--
2025-04-02 12:39
nginx.vim
362
B
-rw-r--r--
2025-04-02 12:39
nsis.vim
3.23
KB
-rw-r--r--
2025-04-02 12:39
objc.vim
1.61
KB
-rw-r--r--
2025-04-02 12:39
ocaml.vim
8.98
KB
-rw-r--r--
2025-04-02 12:39
occam.vim
4.59
KB
-rw-r--r--
2025-04-02 12:39
pascal.vim
5.66
KB
-rw-r--r--
2025-04-02 12:39
perl.vim
5.77
KB
-rw-r--r--
2025-04-02 12:39
php.vim
25.29
KB
-rw-r--r--
2025-04-02 12:39
postscr.vim
1.67
KB
-rw-r--r--
2025-04-02 12:39
pov.vim
2.6
KB
-rw-r--r--
2025-04-02 12:39
prolog.vim
1.82
KB
-rw-r--r--
2025-04-02 12:39
ps1.vim
410
B
-rw-r--r--
2025-04-02 12:39
pyrex.vim
326
B
-rw-r--r--
2025-04-02 12:39
python.vim
6.82
KB
-rw-r--r--
2025-04-02 12:39
r.vim
13.71
KB
-rw-r--r--
2025-04-02 12:39
raku.vim
3.34
KB
-rw-r--r--
2025-04-02 12:39
raml.vim
285
B
-rw-r--r--
2025-04-02 12:39
readline.vim
786
B
-rw-r--r--
2025-04-02 12:39
rhelp.vim
2.77
KB
-rw-r--r--
2025-04-02 12:39
rmd.vim
2.14
KB
-rw-r--r--
2025-04-02 12:39
rnoweb.vim
1.06
KB
-rw-r--r--
2025-04-02 12:39
rpl.vim
1.82
KB
-rw-r--r--
2025-04-02 12:39
rrst.vim
1.17
KB
-rw-r--r--
2025-04-02 12:39
rst.vim
1.78
KB
-rw-r--r--
2025-04-02 12:39
ruby.vim
29.44
KB
-rw-r--r--
2025-04-02 12:39
rust.vim
6.35
KB
-rw-r--r--
2025-04-02 12:39
sas.vim
5.15
KB
-rw-r--r--
2025-04-02 12:39
sass.vim
950
B
-rw-r--r--
2025-04-02 12:39
scala.vim
19.2
KB
-rw-r--r--
2025-04-02 12:39
scheme.vim
372
B
-rw-r--r--
2025-04-02 12:39
scss.vim
191
B
-rw-r--r--
2025-04-02 12:39
sdl.vim
2.76
KB
-rw-r--r--
2025-04-02 12:39
sh.vim
9.04
KB
-rw-r--r--
2025-04-02 12:39
sml.vim
6.33
KB
-rw-r--r--
2025-04-02 12:39
sql.vim
1.18
KB
-rw-r--r--
2025-04-02 12:39
sqlanywhere.vim
12.96
KB
-rw-r--r--
2025-04-02 12:39
sshconfig.vim
796
B
-rw-r--r--
2025-04-02 12:39
systemd.vim
205
B
-rw-r--r--
2025-04-02 12:39
systemverilog.vim
8.43
KB
-rw-r--r--
2025-04-02 12:39
tcl.vim
2.48
KB
-rw-r--r--
2025-04-02 12:39
tcsh.vim
1.35
KB
-rw-r--r--
2025-04-02 12:39
teraterm.vim
1.38
KB
-rw-r--r--
2025-04-02 12:39
tex.vim
13.37
KB
-rw-r--r--
2025-04-02 12:39
tf.vim
1.51
KB
-rw-r--r--
2025-04-02 12:39
tilde.vim
1013
B
-rw-r--r--
2025-04-02 12:39
treetop.vim
708
B
-rw-r--r--
2025-04-02 12:39
typescript.vim
14.14
KB
-rw-r--r--
2025-04-02 12:39
vb.vim
2.04
KB
-rw-r--r--
2025-04-02 12:39
verilog.vim
7.98
KB
-rw-r--r--
2025-04-02 12:39
vhdl.vim
14.32
KB
-rw-r--r--
2025-04-02 12:39
vim.vim
5.63
KB
-rw-r--r--
2025-04-02 12:39
vroom.vim
379
B
-rw-r--r--
2025-04-02 12:39
wast.vim
458
B
-rw-r--r--
2025-04-02 12:39
xf86conf.vim
709
B
-rw-r--r--
2025-04-02 12:39
xhtml.vim
269
B
-rw-r--r--
2025-04-02 12:39
xinetd.vim
1.2
KB
-rw-r--r--
2025-04-02 12:39
xml.vim
7.6
KB
-rw-r--r--
2025-04-02 12:39
xsd.vim
253
B
-rw-r--r--
2025-04-02 12:39
xslt.vim
297
B
-rw-r--r--
2025-04-02 12:39
yacc.vim
781
B
-rw-r--r--
2025-04-02 12:39
yaml.vim
5.34
KB
-rw-r--r--
2025-04-02 12:39
zimbu.vim
3.85
KB
-rw-r--r--
2025-04-02 12:39
zsh.vim
411
B
-rw-r--r--
2025-04-02 12:39
Save
Rename
" MetaPost indent file " Language: MetaPost " Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com> " Former Maintainers: Eugene Minkovskii <emin@mccme.ru> " Last Change: 2016 Oct 2, 4:13pm " Version: 0.2 if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetMetaPostIndent() setlocal indentkeys+==end,=else,=fi,=fill,0),0] let b:undo_indent = "setl indentkeys< indentexpr<" " Only define the function once. if exists("*GetMetaPostIndent") finish endif let s:keepcpo= &cpo set cpo&vim function GetMetaPostIndent() let ignorecase_save = &ignorecase try let &ignorecase = 0 return GetMetaPostIndentIntern() finally let &ignorecase = ignorecase_save endtry endfunc " Regexps {{{ " Note: the next three variables are made global so that a user may add " further keywords. " " Example: " " Put these in ~/.vim/after/indent/mp.vim " " let g:mp_open_tag .= '\|\<begintest\>' " let g:mp_close_tag .= '\|\<endtest\>' " Expressions starting indented blocks let g:mp_open_tag = '' \ . '\<if\>' \ . '\|\<else\%[if]\>' \ . '\|\<for\%(\|ever\|suffixes\)\>' \ . '\|\<begingroup\>' \ . '\|\<\%(\|var\|primary\|secondary\|tertiary\)def\>' \ . '\|^\s*\<begin\%(fig\|graph\|glyph\|char\|logochar\)\>' \ . '\|[([{]' " Expressions ending indented blocks let g:mp_close_tag = '' \ . '\<fi\>' \ . '\|\<else\%[if]\>' \ . '\|\<end\%(\|for\|group\|def\|fig\|char\|glyph\|graph\)\>' \ . '\|[)\]}]' " Statements that may span multiple lines and are ended by a semicolon. To " keep this list short, statements that are unlikely to be very long or are " not very common (e.g., keywords like `interim` or `showtoken`) are not " included. " " The regex for assignments and equations (the last branch) is tricky, because " it must not match things like `for i :=`, `if a=b`, `def...=`, etc... It is " not perfect, but it works reasonably well. let g:mp_statement = '' \ . '\<\%(\|un\|cut\)draw\>' \ . '\|\<\%(\|un\)fill\%[draw]\>' \ . '\|\<draw\%(dbl\)\=arrow\>' \ . '\|\<clip\>' \ . '\|\<addto\>' \ . '\|\<save\>' \ . '\|\<setbounds\>' \ . '\|\<message\>' \ . '\|\<errmessage\>' \ . '\|\<errhelp\>' \ . '\|\<fontmapline\>' \ . '\|\<pickup\>' \ . '\|\<show\>' \ . '\|\<special\>' \ . '\|\<write\>' \ . '\|\%(^\|;\)\%([^;=]*\%('.g:mp_open_tag.'\)\)\@!.\{-}:\==' " A line ends with zero or more spaces, possibly followed by a comment. let s:eol = '\s*\%($\|%\)' " }}} " Auxiliary functions {{{ " Returns 1 if (0-based) position immediately preceding `pos` in `line` is " inside a string or a comment; returns 0 otherwise. " This is the function that is called more often when indenting, so it is " critical that it is efficient. The method we use is significantly faster " than using syntax attributes, and more general (it does not require " syntax_items). It is also faster than using a single regex matching an even " number of quotes. It helps that MetaPost strings cannot span more than one " line and cannot contain escaped quotes. function! s:CommentOrString(line, pos) let in_string = 0 let q = stridx(a:line, '"') let c = stridx(a:line, '%') while q >= 0 && q < a:pos if c >= 0 && c < q if in_string " Find next percent symbol let c = stridx(a:line, '%', q + 1) else " Inside comment return 1 endif endif let in_string = 1 - in_string let q = stridx(a:line, '"', q + 1) " Find next quote endwhile return in_string || (c >= 0 && c <= a:pos) endfunction " Find the first non-comment non-blank line before the current line. function! s:PrevNonBlankNonComment(lnum) let l:lnum = prevnonblank(a:lnum - 1) while getline(l:lnum) =~# '^\s*%' let l:lnum = prevnonblank(l:lnum - 1) endwhile return l:lnum endfunction " Returns true if the last tag appearing in the line is an open tag; returns " false otherwise. function! s:LastTagIsOpen(line) let o = s:LastValidMatchEnd(a:line, g:mp_open_tag, 0) if o == - 1 | return v:false | endif return s:LastValidMatchEnd(a:line, g:mp_close_tag, o) < 0 endfunction " A simple, efficient and quite effective heuristics is used to test whether " a line should cause the next line to be indented: count the "opening tags" " (if, for, def, ...) in the line, count the "closing tags" (endif, endfor, " ...) in the line, and compute the difference. We call the result the " "weight" of the line. If the weight is positive, then the next line should " most likely be indented. Note that `else` and `elseif` are both opening and " closing tags, so they "cancel out" in almost all cases, the only exception " being a leading `else[if]`, which is counted as an opening tag, but not as " a closing tag (so that, for instance, a line containing a single `else:` " will have weight equal to one, not zero). We do not treat a trailing " `else[if]` in any special way, because lines ending with an open tag are " dealt with separately before this function is called (see " GetMetaPostIndentIntern()). " " Example: " " forsuffixes $=a,b: if x.$ = y.$ : draw else: fill fi " % This line will be indented because |{forsuffixes,if,else}| > |{else,fi}| (3 > 2) " endfor function! s:Weight(line) let [o, i] = [0, s:ValidMatchEnd(a:line, g:mp_open_tag, 0)] while i > 0 let o += 1 let i = s:ValidMatchEnd(a:line, g:mp_open_tag, i) endwhile let [c, i] = [0, matchend(a:line, '^\s*\<else\%[if]\>')] " Skip a leading else[if] let i = s:ValidMatchEnd(a:line, g:mp_close_tag, i) while i > 0 let c += 1 let i = s:ValidMatchEnd(a:line, g:mp_close_tag, i) endwhile return o - c endfunction " Similar to matchend(), but skips strings and comments. " line: a String function! s:ValidMatchEnd(line, pat, start) let i = matchend(a:line, a:pat, a:start) while i > 0 && s:CommentOrString(a:line, i) let i = matchend(a:line, a:pat, i) endwhile return i endfunction " Like s:ValidMatchEnd(), but returns the end position of the last (i.e., " rightmost) match. function! s:LastValidMatchEnd(line, pat, start) let last_found = -1 let i = matchend(a:line, a:pat, a:start) while i > 0 if !s:CommentOrString(a:line, i) let last_found = i endif let i = matchend(a:line, a:pat, i) endwhile return last_found endfunction function! s:DecreaseIndentOnClosingTag(curr_indent) let cur_text = getline(v:lnum) if cur_text =~# '^\s*\%('.g:mp_close_tag.'\)' return max([a:curr_indent - shiftwidth(), 0]) endif return a:curr_indent endfunction " }}} " Main function {{{ " " Note: Every rule of indentation in MetaPost is very subjective. We might get " creative, but things get murky very soon (there are too many corner cases). " So, we provide a means for the user to decide what to do when this script " doesn't get it. We use a simple idea: use '%>', '%<' and '%=' to explicitly " control indentation. The '<' and '>' symbols may be repeated many times " (e.g., '%>>' will cause the next line to be indented twice). " " By using '%>...', '%<...' and '%=', the indentation the user wants is " preserved by commands like gg=G, even if it does not follow the rules of " this script. " " Example: " " def foo = " makepen( " subpath(T-n,t) of r %> " shifted .5down %> " --subpath(t,T) of r shifted .5up -- cycle %<<< " ) " withcolor black " enddef " " The default indentation of the previous example would be: " " def foo = " makepen( " subpath(T-n,t) of r " shifted .5down " --subpath(t,T) of r shifted .5up -- cycle " ) " withcolor black " enddef " " Personally, I prefer the latter, but anyway... function! GetMetaPostIndentIntern() " Do not touch indentation inside verbatimtex/btex.. etex blocks. if synIDattr(synID(v:lnum, 1, 1), "name") =~# '^mpTeXinsert$\|^tex\|^Delimiter' return -1 endif " This is the reference line relative to which the current line is indented " (but see below). let lnum = s:PrevNonBlankNonComment(v:lnum) " At the start of the file use zero indent. if lnum == 0 return 0 endif let prev_text = getline(lnum) " User-defined overrides take precedence over anything else. " See above for an example. let j = match(prev_text, '%[<>=]') if j > 0 let i = strlen(matchstr(prev_text, '%>\+', j)) - 1 if i > 0 return indent(lnum) + i * shiftwidth() endif let i = strlen(matchstr(prev_text, '%<\+', j)) - 1 if i > 0 return max([indent(lnum) - i * shiftwidth(), 0]) endif if match(prev_text, '%=', j) return indent(lnum) endif endif " If the reference line ends with an open tag, indent. " " Example: " " if c: " 0 " else: " 1 " fi if c2: % Note that this line has weight equal to zero. " ... % This line will be indented if s:LastTagIsOpen(prev_text) return s:DecreaseIndentOnClosingTag(indent(lnum) + shiftwidth()) endif " Lines with a positive weight are unbalanced and should likely be indented. " " Example: " " def f = enddef for i = 1 upto 5: if x[i] > 0: 1 else: 2 fi " ... % This line will be indented (because of the unterminated `for`) if s:Weight(prev_text) > 0 return s:DecreaseIndentOnClosingTag(indent(lnum) + shiftwidth()) endif " Unterminated statements cause indentation to kick in. " " Example: " " draw unitsquare " withcolor black; % This line is indented because of `draw`. " x := a + b + c " + d + e; % This line is indented because of `:=`. " let i = s:LastValidMatchEnd(prev_text, g:mp_statement, 0) if i >= 0 " Does the line contain a statement? if s:ValidMatchEnd(prev_text, ';', i) < 0 " Is the statement unterminated? return indent(lnum) + shiftwidth() else return s:DecreaseIndentOnClosingTag(indent(lnum)) endif endif " Deal with the special case of a statement spanning multiple lines. If the " current reference line L ends with a semicolon, search backwards for " another semicolon or a statement keyword. If the latter is found first, " its line is used as the reference line for indenting the current line " instead of L. " " Example: " " if cond: " draw if a: z0 else: z1 fi " shifted S " scaled T; % L " " for i = 1 upto 3: % <-- Current line: this gets the same indent as `draw ...` " " NOTE: we get here only if L does not contain a statement (among those " listed in g:mp_statement). if s:ValidMatchEnd(prev_text, ';'.s:eol, 0) >= 0 " L ends with a semicolon let stm_lnum = s:PrevNonBlankNonComment(lnum) while stm_lnum > 0 let prev_text = getline(stm_lnum) let sc_pos = s:LastValidMatchEnd(prev_text, ';', 0) let stm_pos = s:ValidMatchEnd(prev_text, g:mp_statement, sc_pos) if stm_pos > sc_pos let lnum = stm_lnum break elseif sc_pos > stm_pos break endif let stm_lnum = s:PrevNonBlankNonComment(stm_lnum) endwhile endif return s:DecreaseIndentOnClosingTag(indent(lnum)) endfunction " }}} let &cpo = s:keepcpo unlet s:keepcpo " vim:sw=2:fdm=marker