Skip to content

Commit

Permalink
patch 8.2.3050: cannot recognize elixir files
Browse files Browse the repository at this point in the history
Problem:    Cannot recognize elixir files.
Solution:   Recognize Elixir-specific files.  Check if an .ex file is Euphoria
            or Elixir. (Austin Gatlin, closes #8401, closes #8446)
  • Loading branch information
aegatlin authored and brammool committed Jun 26, 2021
1 parent 6582e23 commit f3caeb6
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 2 deletions.
11 changes: 11 additions & 0 deletions runtime/autoload/dist/ft.vim
Expand Up @@ -172,6 +172,17 @@ func dist#ft#FTent()
setf dtd
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()
if exists('g:filetype_euphoria')
exe 'setf ' . g:filetype_euphoria
Expand Down
11 changes: 9 additions & 2 deletions runtime/filetype.vim
Expand Up @@ -393,7 +393,7 @@ au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf
" Configure scripts
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

" Dockerfile; Podman uses the same syntax with name Containerfile
Expand All @@ -408,8 +408,15 @@ au BufNewFile,BufRead *enlightenment/*.cfg setf c
" 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
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")
au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW call dist#ft#EuphoriaCheck()
endif
Expand Down
38 changes: 38 additions & 0 deletions src/testdir/test_filetype.vim
Expand Up @@ -161,6 +161,8 @@ let s:filename_checks = {
\ 'ecd': ['file.ecd'],
\ 'edif': ['file.edf', 'file.edif', 'file.edo'],
\ 'elinks': ['elinks.conf'],
\ 'elixir': ['file.ex', 'file.exs', 'mix.lock'],
\ 'eelixir': ['file.eex', 'file.leex'],
\ 'elm': ['file.elm'],
\ 'elmfilt': ['filter-rules'],
\ 'epuppet': ['file.epp'],
Expand Down Expand Up @@ -790,5 +792,41 @@ func Test_pp_file()
filetype off
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
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -755,6 +755,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3050,
/**/
3049,
/**/
Expand Down

0 comments on commit f3caeb6

Please sign in to comment.