Skip to content

Commit

Permalink
patch 8.2.0003: Build file dependencies are incomplete
Browse files Browse the repository at this point in the history
Problem:    Build file dependencies are incomplete.
Solution:   Fix the dependencies. (Ken Takata, closes #5356)
  • Loading branch information
brammool committed Apr 9, 2022
1 parent a0f659c commit 0bbf09c
Show file tree
Hide file tree
Showing 5 changed files with 274 additions and 27 deletions.
73 changes: 71 additions & 2 deletions runtime/autoload/dist/ft.vim
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,25 @@ export def BindzoneCheck(default = '')
endif
enddef

# Returns true if file content looks like RAPID
def IsRapid(sChkExt: string = ""): bool
if sChkExt == "cfg"
return getline(1) =~? '\v^%(EIO|MMC|MOC|PROC|SIO|SYS):CFG'
endif
# called from FTmod, FTprg or FTsys
return getline(nextnonblank(1)) =~? '\v^\s*%(\%{3}|module\s+\k+\s*%(\(|$))'
enddef

export def FTcfg()
if exists("g:filetype_cfg")
exe "setf " .. g:filetype_cfg
elseif IsRapid("cfg")
setf rapid
else
setf cfg
endif
enddef

export def FTlpc()
if exists("g:lpc_syntax_for_c")
var lnum = 1
Expand Down Expand Up @@ -168,7 +187,7 @@ enddef

export def FTent()
# This function checks for valid cl syntax in the first five lines.
# Look for either an opening comment, '#', or a block start, '{".
# Look for either an opening comment, '#', or a block start, '{'.
# If not found, assume SGML.
var lnum = 1
while lnum < 6
Expand Down Expand Up @@ -410,6 +429,36 @@ export def FTmm()
setf nroff
enddef

# Returns true if file content looks like LambdaProlog
def IsLProlog(): bool
# skip apparent comments and blank lines, what looks like
# LambdaProlog comment may be RAPID header
var l: number = nextnonblank(1)
while l > 0 && l < line('$') && getline(l) =~ '^\s*%' # LambdaProlog comment
l = nextnonblank(l + 1)
endwhile
# this pattern must not catch a go.mod file
return getline(l) =~ '\<module\s\+\w\+\s*\.\s*\(%\|$\)'
enddef

# Determine if *.mod is ABB RAPID, LambdaProlog, Modula-2, Modsim III or go.mod
export def FTmod()
if exists("g:filetype_mod")
exe "setf " .. g:filetype_mod
elseif IsLProlog()
setf lprolog
elseif getline(nextnonblank(1)) =~ '\%(\<MODULE\s\+\w\+\s*;\|^\s*(\*\)'
setf modula2
elseif IsRapid()
setf rapid
elseif expand("<afile>") =~ '\<go.mod$'
setf gomod
else
# Nothing recognized, assume modsim3
setf modsim3
endif
enddef

export def FTpl()
if exists("g:filetype_pl")
exe "setf " .. g:filetype_pl
Expand Down Expand Up @@ -526,6 +575,18 @@ export def FTpp()
endif
enddef

# Determine if *.prg is ABB RAPID. Can also be Clipper, FoxPro or eviews
export def FTprg()
if exists("g:filetype_prg")
exe "setf " .. g:filetype_prg
elseif IsRapid()
setf rapid
else
# Nothing recognized, assume Clipper
setf clipper
endif
enddef

export def FTr()
var max = line("$") > 50 ? 50 : line("$")

Expand Down Expand Up @@ -572,7 +633,7 @@ export def McSetf()
return
endif
endfor
setf m4 " Default: Sendmail .mc file
setf m4 # Default: Sendmail .mc file
enddef

# Called from filetype.vim and scripts.vim.
Expand Down Expand Up @@ -735,6 +796,14 @@ export def FTperl(): number
return 0
enddef

export def FTsys()
if IsRapid()
setf rapid
else
setf bat
endif
enddef

# Choose context, plaintex, or tex (LaTeX) based on these rules:
# 1. Check the first line of the file for "%&<format>".
# 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords.
Expand Down
1 change: 1 addition & 0 deletions runtime/doc/filetype.txt
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ variables can be used to overrule the filetype used for certain extensions:
*.i g:filetype_i |ft-progress-syntax|
*.inc g:filetype_inc
*.m g:filetype_m |ft-mathematica-syntax|
*.mod g:filetype_mod
*.p g:filetype_p |ft-pascal-syntax|
*.pl g:filetype_pl
*.pp g:filetype_pp |ft-pascal-syntax|
Expand Down
34 changes: 12 additions & 22 deletions runtime/filetype.vim
Original file line number Diff line number Diff line change
Expand Up @@ -205,11 +205,13 @@ au BufNewFile,BufRead *.iba,*.ibi setf ibasic
" FreeBasic file (similar to QBasic)
au BufNewFile,BufRead *.fb setf freebasic

" Batch file for MSDOS.
au BufNewFile,BufRead *.bat,*.sys setf dosbatch
" Batch file for MSDOS. See dist#ft#FTsys for *.sys
au BufNewFile,BufRead *.bat setf dosbatch
" *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd.
au BufNewFile,BufRead *.cmd
\ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif
" ABB RAPID or Batch file for MSDOS.
au BufNewFile,BufRead *.sys\c call dist#ft#FTsys()

" Batch file for 4DOS
au BufNewFile,BufRead *.btm call dist#ft#FTbtm()
Expand Down Expand Up @@ -360,13 +362,8 @@ au BufNewFile,BufRead *.eni setf cl
" Clever or dtd
au BufNewFile,BufRead *.ent call dist#ft#FTent()

" Clipper (or FoxPro; could also be eviews)
au BufNewFile,BufRead *.prg
\ if exists("g:filetype_prg") |
\ exe "setf " . g:filetype_prg |
\ else |
\ setf clipper |
\ endif
" Clipper, FoxPro, ABB RAPID or eviews
au BufNewFile,BufRead *.prg\c call dist#ft#FTprg()

" Clojure
au BufNewFile,BufRead *.clj,*.cljs,*.cljx,*.cljc setf clojure
Expand Down Expand Up @@ -444,7 +441,7 @@ au BufNewFile,BufRead *quake[1-3]/*.cfg setf quake
au BufNewFile,BufRead *.qc setf c

" Configure files
au BufNewFile,BufRead *.cfg setf cfg
au BufNewFile,BufRead *.cfg\c call dist#ft#FTcfg()

" Cucumber
au BufNewFile,BufRead *.feature setf cucumber
Expand Down Expand Up @@ -980,7 +977,7 @@ au BufNewFile,BufRead *.latte,*.lte setf latte
" Limits
au BufNewFile,BufRead */etc/limits,*/etc/*limits.conf,*/etc/*limits.d/*.conf setf limits

" LambdaProlog (*.mod too, see Modsim)
" LambdaProlog (see dist#ft#FTmod for *.mod)
au BufNewFile,BufRead *.sig setf lprolog

" LDAP LDIF
Expand Down Expand Up @@ -1143,18 +1140,11 @@ au BufNewFile,BufRead *.mms call dist#ft#FTmms()
" Symbian meta-makefile definition (MMP)
au BufNewFile,BufRead *.mmp setf mmp

" Modsim III (or LambdaProlog)
au BufNewFile,BufRead *.mod
\ if expand("<afile>") =~ '\<go.mod$' |
\ setf gomod |
\ elseif getline(1) =~ '\<module\>' |
\ setf lprolog |
\ else |
\ setf modsim3 |
\ endif
" ABB Rapid, Modula-2, Modsim III or LambdaProlog
au BufNewFile,BufRead *.mod\c call dist#ft#FTmod()

" Modula-2 (.md removed in favor of Markdown)
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi setf modula2
" Modula-2 (.md removed in favor of Markdown, see dist#ft#FTmod for *.MOD)
au BufNewFile,BufRead *.m2,*.DEF,*.mi setf modula2

" Modula-3 (.m3, .i3, .mg, .ig)
au BufNewFile,BufRead *.[mi][3g] setf modula3
Expand Down

0 comments on commit 0bbf09c

Please sign in to comment.