vim-patch:8.2.3050: cannot recognize elixir files

Problem:    Cannot recognize elixir files.
Solution:   Recognize Elixir-specific files.  Check if an .ex file is Euphoria
            or Elixir. (Austin Gatlin, closes vim/vim#8401, closes vim/vim#8446)
f3caeb63d6
This commit is contained in:
Jan Edmund Lazo 2021-06-26 10:50:17 -04:00
parent 5c0b01fd88
commit 750ad18845
No known key found for this signature in database
GPG Key ID: 64915E6E9F735B15
3 changed files with 58 additions and 2 deletions

View File

@ -172,6 +172,17 @@ func dist#ft#FTent()
setf dtd setf dtd
endfunc endfunc
func dist#ft#ExCheck()
let lines = getline(1, min([line("$"), 100]))
if exists('g:filetype_euphoria')
exe 'setf ' . g:filetype_euphoria
elseif match(lines, '^--\|^ifdef\>\|^include\>') > -1
setf euphoria3
else
setf elixir
endif
endfunc
func dist#ft#EuphoriaCheck() func dist#ft#EuphoriaCheck()
if exists('g:filetype_euphoria') if exists('g:filetype_euphoria')
exe 'setf ' . g:filetype_euphoria exe 'setf ' . g:filetype_euphoria

View File

@ -389,7 +389,7 @@ au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf
" Configure scripts " Configure scripts
au BufNewFile,BufRead configure.in,configure.ac setf config au BufNewFile,BufRead configure.in,configure.ac setf config
" CUDA Cumpute Unified Device Architecture " CUDA Compute Unified Device Architecture
au BufNewFile,BufRead *.cu,*.cuh setf cuda au BufNewFile,BufRead *.cu,*.cuh setf cuda
" Dockerfilb; Podman uses the same syntax with name Containerfile " Dockerfilb; Podman uses the same syntax with name Containerfile
@ -404,8 +404,15 @@ au BufNewFile,BufRead *enlightenment/*.cfg setf c
" Eterm " Eterm
au BufNewFile,BufRead *Eterm/*.cfg setf eterm au BufNewFile,BufRead *Eterm/*.cfg setf eterm
" Elixir or Euphoria
au BufNewFile,BufRead *.ex call dist#ft#ExCheck()
" Elixir
au BufRead,BufNewFile mix.lock,*.exs setf elixir
au BufRead,BufNewFile *.eex,*.leex setf eelixir
" Euphoria 3 or 4 " Euphoria 3 or 4
au BufNewFile,BufRead *.eu,*.ew,*.ex,*.exu,*.exw call dist#ft#EuphoriaCheck() au BufNewFile,BufRead *.eu,*.ew,*.exu,*.exw call dist#ft#EuphoriaCheck()
if has("fname_case") if has("fname_case")
au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW call dist#ft#EuphoriaCheck() au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW call dist#ft#EuphoriaCheck()
endif endif

View File

@ -161,6 +161,8 @@ let s:filename_checks = {
\ 'ecd': ['file.ecd'], \ 'ecd': ['file.ecd'],
\ 'edif': ['file.edf', 'file.edif', 'file.edo'], \ 'edif': ['file.edf', 'file.edif', 'file.edo'],
\ 'elinks': ['elinks.conf'], \ 'elinks': ['elinks.conf'],
\ 'elixir': ['file.ex', 'file.exs', 'mix.lock'],
\ 'eelixir': ['file.eex', 'file.leex'],
\ 'elm': ['file.elm'], \ 'elm': ['file.elm'],
\ 'elmfilt': ['filter-rules'], \ 'elmfilt': ['filter-rules'],
\ 'epuppet': ['file.epp'], \ 'epuppet': ['file.epp'],
@ -765,5 +767,41 @@ func Test_pp_file()
filetype off filetype off
endfunc endfunc
func Test_ex_file()
filetype on
call writefile(['arbitrary content'], 'Xfile.ex')
split Xfile.ex
call assert_equal('elixir', &filetype)
bwipe!
let g:filetype_euphoria = 'euphoria4'
split Xfile.ex
call assert_equal('euphoria4', &filetype)
bwipe!
unlet g:filetype_euphoria
call writefile(['-- filetype euphoria comment'], 'Xfile.ex')
split Xfile.ex
call assert_equal('euphoria3', &filetype)
bwipe!
call writefile(['--filetype euphoria comment'], 'Xfile.ex')
split Xfile.ex
call assert_equal('euphoria3', &filetype)
bwipe!
call writefile(['ifdef '], 'Xfile.ex')
split Xfile.ex
call assert_equal('euphoria3', &filetype)
bwipe!
call writefile(['include '], 'Xfile.ex')
split Xfile.ex
call assert_equal('euphoria3', &filetype)
bwipe!
call delete('Xfile.ex')
filetype off
endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab