mirror of
				https://github.com/vim/vim.git
				synced 2025-11-03 09:44:48 -05:00 
			
		
		
		
	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: #15859
Signed-off-by: Andis Spriņķis <spr.andis@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
		
	
		
			
				
	
	
		
			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
 | 
						|
"}}}
 |