mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 10:45:16 -07:00
15aa27bc1f
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>
237 lines
4.5 KiB
VimL
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
|
|
"}}}
|