Mercurial > vim
view runtime/indent/context.vim @ 31718:bcedaa2fcb7b v9.0.1191
patch 9.0.1191: some Bazel files are not recognized
Commit: https://github.com/vim/vim/commit/3213952966896ffb1d8fa186bcf8c43359fca0f0
Author: Keith Smiley <keithbsmiley@gmail.com>
Date: Fri Jan 13 15:35:17 2023 +0000
patch 9.0.1191: some Bazel files are not recognized
Problem: Some Bazel files are not recognized.
Solution: Add an extra Bazel pattern. (Keith Smily, closes https://github.com/vim/vim/issues/11807)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 13 Jan 2023 16:45:02 +0100 |
parents | f00c56ee8118 |
children | d81556766132 |
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: 2022 Aug 12 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