mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04: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
 | |
| "}}}
 |