1
0
forked from aniani/vim

patch 9.1.0401: filetype: zsh module files are not recognized

Problem:  filetype: zsh module files are not recognized
Solution: Detect '*.mdh' and '*.epro' as C filetype, '*.mdd' as zsh
          filetype, determine zsh-modules '*.pro' from from it's content
          (Wu, Zhenyu)

closes: #14737

Signed-off-by: Wu, Zhenyu <wuzhenyu@ustc.edu>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Wu, Zhenyu
2024-05-09 20:35:13 +02:00
committed by Christian Brabandt
parent ce2ad9ffd7
commit 887a38cee7
4 changed files with 18 additions and 5 deletions

View File

@@ -406,14 +406,18 @@ export def FTidl()
setf idl
enddef
# Distinguish between "default", Prolog and Cproto prototype file.
# Distinguish between "default", Prolog, zsh module's C and Cproto prototype file.
export def ProtoCheck(default: string)
# zsh modules use '#include "*.pro"'
# https://github.com/zsh-users/zsh/blob/63f086d167960a27ecdbcb762179e2c2bf8a29f5/Src/Modules/example.c#L31
if getline(1) =~ '/* Generated automatically */'
setf c
# Cproto files have a comment in the first line and a function prototype in
# the second line, it always ends in ";". Indent files may also have
# comments, thus we can't match comments to see the difference.
# IDL files can have a single ';' in the second line, require at least one
# chacter before the ';'.
if getline(2) =~ '.;$'
elseif getline(2) =~ '.;$'
setf cpp
else
# recognize Prolog by specific text in the first non-empty line

View File

@@ -1072,7 +1072,7 @@ au BufNewFile,BufRead */.icewm/menu setf icemenu
au BufNewFile,BufRead .indent.pro setf indent
au BufNewFile,BufRead indent.pro call dist#ft#ProtoCheck('indent')
" IDL (Interactive Data Language)
" IDL (Interactive Data Language), Prolog, Cproto or zsh module C
au BufNewFile,BufRead *.pro call dist#ft#ProtoCheck('idlang')
" Indent RC
@@ -3093,6 +3093,13 @@ au BufNewFile,BufRead */etc/yum.repos.d/* call s:StarSetf('dosini')
au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump* call s:StarSetf('zsh')
au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh')
" Zsh module
" *.mdd will generate *.mdh, *.pro and *.epro.
" module's *.c will #include *.mdh containing module dependency information and
" *.pro containing all static declarations of *.c
" *.epro contains all external declarations of *.c
au BufNewFile,BufRead *.mdh,*.epro setf c
au BufNewFile,BufRead *.mdd setf zsh
" Help files match *.txt but should have a last line that is a modeline.
au BufNewFile,BufRead *.txt