Mercurial > vim
view runtime/indent/rmd.vim @ 27970:212c5894b8b1 v8.2.4510
patch 8.2.4510: Vim9: shortening commands leads to confusing script
Commit: https://github.com/vim/vim/commit/204852ae2adfdde10c656ca7f14e5b4207a69172
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Mar 5 12:56:44 2022 +0000
patch 8.2.4510: Vim9: shortening commands leads to confusing script
Problem: Vim9: shortening commands leads to confusing script.
Solution: In Vim9 script require at least ":cont" for ":continue", "const"
instead of "cons", "break" instead of "brea", "catch" instead of
"cat", "else" instead of "el" "elseif" instead of "elsei" "endfor"
instead of "endfo" "endif" instead of "en" "endtry" instead of
"endt", "finally" instead of "fina", "throw" instead of "th",
"while" instead of "wh".
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 05 Mar 2022 14:00:03 +0100 |
parents | 5bda4653aced |
children | b2412874362f |
line wrap: on
line source
" Vim indent file " Language: Rmd " Author: Jakson Alves de Aquino <jalvesaq@gmail.com> " Homepage: https://github.com/jalvesaq/R-Vim-runtime " Last Change: Sun Mar 28, 2021 08:05PM " Only load this indent file when no other was loaded. if exists("b:did_indent") finish endif runtime indent/r.vim let s:RIndent = function(substitute(&indentexpr, "()", "", "")) let b:did_indent = 1 setlocal indentkeys=0{,0},<:>,!^F,o,O,e setlocal indentexpr=GetRmdIndent() if exists("*GetRmdIndent") finish endif let s:cpo_save = &cpo set cpo&vim " Simple Python indentation algorithm function s:GetPyIndent() let plnum = prevnonblank(v:lnum - 1) let pline = getline(plnum) let cline = getline(v:lnum) if pline =~ '^s```\s*{\s*python ' return 0 elseif pline =~ ':$' return indent(plnum) + &shiftwidth elseif cline =~ 'else:$' return indent(plnum) - &shiftwidth endif return indent(plnum) endfunction function s:GetMdIndent() let pline = getline(v:lnum - 1) let cline = getline(v:lnum) if prevnonblank(v:lnum - 1) < v:lnum - 1 || cline =~ '^\s*[-\+\*]\s' || cline =~ '^\s*\d\+\.\s\+' return indent(v:lnum) elseif pline =~ '^\s*[-\+\*]\s' return indent(v:lnum - 1) + 2 elseif pline =~ '^\s*\d\+\.\s\+' return indent(v:lnum - 1) + 3 endif return indent(prevnonblank(v:lnum - 1)) endfunction function s:GetYamlIndent() let plnum = prevnonblank(v:lnum - 1) let pline = getline(plnum) if pline =~ ':\s*$' return indent(plnum) + shiftwidth() elseif pline =~ '^\s*- ' return indent(v:lnum) + 2 endif return indent(plnum) endfunction function GetRmdIndent() if getline(".") =~ '^[ \t]*```{r .*}$' || getline(".") =~ '^[ \t]*```$' return 0 endif if search('^[ \t]*```{r', "bncW") > search('^[ \t]*```$', "bncW") return s:RIndent() elseif v:lnum > 1 && (search('^---$', "bnW") == 1 && \ (search('^---$', "nW") > v:lnum || search('^\.\.\.$', "nW") > v:lnum)) return s:GetYamlIndent() elseif search('^[ \t]*```{python', "bncW") > search('^[ \t]*```$', "bncW") return s:GetPyIndent() else return s:GetMdIndent() endif endfunction let &cpo = s:cpo_save unlet s:cpo_save " vim: sw=2