Mercurial > vim
view runtime/indent/haml.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 | 5c40013d45ee |
children | dce918af0c00 |
line wrap: on
line source
" Vim indent file " Language: Haml " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Last Change: 2019 Dec 05 if exists("b:did_indent") finish endif runtime! indent/ruby.vim unlet! b:did_indent let b:did_indent = 1 setlocal autoindent setlocal indentexpr=GetHamlIndent() setlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when " Only define the function once. if exists("*GetHamlIndent") finish endif let s:attributes = '\%({.\{-\}}\|\[.\{-\}\]\)' let s:tag = '\%([%.#][[:alnum:]_-]\+\|'.s:attributes.'\)*[<>]*' if !exists('g:haml_self_closing_tags') let g:haml_self_closing_tags = 'base|link|meta|br|hr|img|input' endif function! GetHamlIndent() let lnum = prevnonblank(v:lnum-1) if lnum == 0 return 0 endif let line = substitute(getline(lnum),'\s\+$','','') let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','') let lastcol = strlen(line) let line = substitute(line,'^\s\+','','') let indent = indent(lnum) let cindent = indent(v:lnum) let sw = shiftwidth() if cline =~# '\v^-\s*%(elsif|else|when)>' let indent = cindent < indent ? cindent : indent - sw endif let increase = indent + sw if indent == indent(lnum) let indent = cindent <= indent ? -1 : increase endif let group = synIDattr(synID(lnum,lastcol,1),'name') if line =~ '^!!!' return indent elseif line =~ '^/\%(\[[^]]*\]\)\=$' return increase elseif group == 'hamlFilter' return increase elseif line =~ '^'.s:tag.'[&!]\=[=~-]\s*\%(\%(if\|else\|elsif\|unless\|case\|when\|while\|until\|for\|begin\|module\|class\|def\)\>\%(.*\<end\>\)\@!\|.*do\%(\s*|[^|]*|\)\=\s*$\)' return increase elseif line =~ '^'.s:tag.'[&!]\=[=~-].*,\s*$' return increase elseif line == '-#' return increase elseif group =~? '\v^(hamlSelfCloser)$' || line =~? '^%\v%('.g:haml_self_closing_tags.')>' return indent elseif group =~? '\v^%(hamlTag|hamlAttributesDelimiter|hamlObjectDelimiter|hamlClass|hamlId|htmlTagName|htmlSpecialTagName)$' return increase elseif synIDattr(synID(v:lnum,1,1),'name') ==? 'hamlRubyFilter' return GetRubyIndent() else return indent endif endfunction " vim:set sw=2: