neovim/runtime/syntax/lf.vim
Christian Clason 15aa27bc1f vim-patch:9.1.0778: filetype: lf config files are not recognized
Problem:  filetype: lf config files are not recognized
Solution: detect lfrc files as lf filetype, include a syntax
          script for lf files (Andis Spriņķis).

References:
- https://github.com/gokcehan/lf

closes: vim/vim#15859

0f146b7925

Co-authored-by: Andis Spriņķis <spr.andis@protonmail.com>
2024-10-14 08:27:37 +02:00

237 lines
4.5 KiB
VimL

" Vim syntax file
" Language: lf file manager configuration file (lfrc)
" Maintainer: Andis Sprinkis <andis@sprinkis.com>
" Former Maintainer: Cameron Wright
" Former URL: https://github.com/andis-sprinkis/lf-vim
" Last Change: 13 October 2024
"
" The shell syntax highlighting is configurable. See $VIMRUNTIME/doc/syntax.txt
" lf version: 32
if exists("b:current_syntax")
finish
endif
let b:current_syntax = "lf"
"{{{ Comment Matching
syn match lfComment '#.*$'
"}}}
"{{{ String Matching
syn match lfString "'.*'"
syn match lfString '".*"' contains=lfVar,lfSpecial
"}}}
"{{{ Match lf Variables
syn match lfVar '\$f\|\$fx\|\$fs\|\$id'
"}}}
"{{{ Keywords
syn keyword lfKeyword set setlocal cmd map cmap skipwhite
"}}}
"{{{ Options Keywords
syn keyword lfOptions
\ quit
\ up
\ half-up
\ page-up
\ scroll-up
\ down
\ half-down
\ page-down
\ scroll-down
\ updir
\ open
\ jump-next
\ jump-prev
\ top
\ bottom
\ high
\ middle
\ low
\ toggle
\ invert
\ invert-below
\ unselect
\ glob-select
\ glob-unselect
\ calcdirsize
\ clearmaps
\ copy
\ cut
\ paste
\ clear
\ sync
\ draw
\ redraw
\ load
\ reload
\ echo
\ echomsg
\ echoerr
\ cd
\ select
\ delete
\ rename
\ source
\ push
\ read
\ shell
\ shell-pipe
\ shell-wait
\ shell-async
\ find
\ find-back
\ find-next
\ find-prev
\ search
\ search-back
\ search-next
\ search-prev
\ filter
\ setfilter
\ mark-save
\ mark-load
\ mark-remove
\ tag
\ tag-toggle
\ cmd-escape
\ cmd-complete
\ cmd-menu-complete
\ cmd-menu-complete-back
\ cmd-menu-accept
\ cmd-enter
\ cmd-interrupt
\ cmd-history-next
\ cmd-history-prev
\ cmd-left
\ cmd-right
\ cmd-home
\ cmd-end
\ cmd-delete
\ cmd-delete-back
\ cmd-delete-home
\ cmd-delete-end
\ cmd-delete-unix-word
\ cmd-yank
\ cmd-transpose
\ cmd-transpose-word
\ cmd-word
\ cmd-word-back
\ cmd-delete-word
\ cmd-delete-word-back
\ cmd-capitalize-word
\ cmd-uppercase-word
\ cmd-lowercase-word
\ anchorfind
\ autoquit
\ borderfmt
\ cleaner
\ copyfmt
\ cursoractivefmt
\ cursorparentfmt
\ cursorpreviewfmt
\ cutfmt
\ dircache
\ dircounts
\ dirfirst
\ dironly
\ dirpreviews
\ drawbox
\ dupfilefmt
\ errorfmt
\ filesep
\ findlen
\ globfilter
\ globsearch
\ hidden
\ hiddenfiles
\ hidecursorinactive
\ history
\ icons
\ ifs
\ ignorecase
\ ignoredia
\ incfilter
\ incsearch
\ info
\ infotimefmtnew
\ infotimefmtold
\ mouse
\ number
\ numberfmt
\ period
\ preserve
\ preview
\ previewer
\ promptfmt
\ ratios
\ relativenumber
\ reverse
\ roundbox
\ ruler
\ rulerfmt
\ scrolloff
\ selectfmt
\ selmode
\ shell
\ shellflag
\ shellopts
\ sixel
\ smartcase
\ smartdia
\ sortby
\ statfmt
\ tabstop
\ tagfmt
\ tempmarks
\ timefmt
\ truncatechar
\ truncatepct
\ waitmsg
\ wrapscan
\ wrapscroll
\ pre-cd
\ on-cd
\ on-select
\ on-redraw
\ on-quit
"}}}
"{{{ Special Matching
syn match lfSpecial '<.*>\|\\.'
"}}}
"{{{ Shell Script Matching for cmd
let s:shell_syntax = get(g:, 'lf_shell_syntax', "syntax/sh.vim")
let s:shell_syntax = get(b:, 'lf_shell_syntax', s:shell_syntax)
unlet b:current_syntax
exe 'syn include @Shell '.s:shell_syntax
let b:current_syntax = "lf"
syn region lfIgnore start=".{{\n" end="^}}"
\ keepend contains=lfExternalShell,lfExternalPatch
syn match lfShell '\$[a-zA-Z].*$
\\|:[a-zA-Z].*$
\\|%[a-zA-Z].*$
\\|![a-zA-Z].*$
\\|&[a-zA-Z].*$'
\ transparent contains=@Shell,lfExternalPatch
syn match lfExternalShell "^.*$" transparent contained contains=@Shell
syn match lfExternalPatch "^\s*cmd\ .*\ .{{$\|^}}$" contained
"}}}
"{{{ Link Highlighting
hi def link lfComment Comment
hi def link lfVar Type
hi def link lfSpecial Special
hi def link lfString String
hi def link lfKeyword Statement
hi def link lfOptions Constant
hi def link lfConstant Constant
hi def link lfExternalShell Normal
hi def link lfExternalPatch Special
hi def link lfIgnore Special
"}}}