Mercurial > vim
view runtime/indent/context.vim @ 34638:857eb73fb6a7
NSIS: Redesigning the appearance of the vimrc settings page (#14292)
Commit: https://github.com/vim/vim/commit/6dcf59b89fd4a65df4a68a333a66357c2480d7b0
Author: Restorer <69863286+RestorerZ@users.noreply.github.com>
Date: Mon Mar 25 15:38:37 2024 +0000
NSIS: Redesigning the appearance of the vimrc settings page (https://github.com/vim/vim/issues/14292)
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 25 Mar 2024 16:45:05 +0100 |
parents | d81556766132 |
children |
line wrap: on
line source
vim9script # Language: ConTeXt typesetting engine # Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com> # Former Maintainers: Nikolai Weibull <now@bitwi.se> # Latest Revision: 2023 Dec 26 if exists("b:did_indent") finish endif # Load MetaPost indentation script (this will also set b:did_indent) runtime! indent/mp.vim setlocal indentexpr=ConTeXtIndent() b:undo_indent = "setl indentexpr<" def PrevNotComment(l: number): number var prevlnum = prevnonblank(l) while prevlnum > 0 && getline(prevlnum) =~# '^\s*%' prevlnum = prevnonblank(prevlnum - 1) endwhile return prevlnum enddef def FindPair(pstart: string, pmid: string, pend: string): number cursor(v:lnum, 1) return indent(searchpair(pstart, pmid, pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"')) enddef def ConTeXtIndent(): number # Use MetaPost rules inside MetaPost graphic environments if len(synstack(v:lnum, 1)) > 0 && synIDattr(synstack(v:lnum, 1)[0], "name") ==# 'contextMPGraphic' return g:MetaPostIndent() endif const prevlnum = PrevNotComment(v:lnum - 1) const prevind = indent(prevlnum) const prevline = getline(prevlnum) const currline = getline(v:lnum) # If the current line starts with ], match indentation. if currline =~# '^\s*\]' return FindPair('\[', '', '\]') endif # If the current line starts with }, match indentation. if currline =~# '^\s*}' return FindPair('{', '', '}') endif # If the previous line ends with [ or { (possibly followed by a comment) then indent. if prevline =~# '[{[]\s*\%(%.*\)\=$' return prevind + shiftwidth() endif return -1 enddef # vim: sw=2 fdm=marker