Patch 8.2.3050

4 views
Skip to first unread message

Bram Moolenaar

unread,
Jun 26, 2021, 6:04:24 AM6/26/21
to vim...@googlegroups.com

Patch 8.2.3050
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)
Files: runtime/autoload/dist/ft.vim, runtime/filetype.vim,
src/testdir/test_filetype.vim


*** ../vim-8.2.3049/runtime/autoload/dist/ft.vim 2021-01-12 17:42:20.949763884 +0100
--- runtime/autoload/dist/ft.vim 2021-06-26 12:00:31.472878676 +0200
***************
*** 172,177 ****
--- 172,188 ----
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
*** ../vim-8.2.3049/runtime/filetype.vim 2021-06-25 21:54:22.016894907 +0200
--- runtime/filetype.vim 2021-06-26 12:00:31.472878676 +0200
***************
*** 393,399 ****
" Configure scripts
au BufNewFile,BufRead configure.in,configure.ac setf config

! " CUDA Cumpute Unified Device Architecture
au BufNewFile,BufRead *.cu,*.cuh setf cuda

" Dockerfile; Podman uses the same syntax with name Containerfile
--- 393,399 ----
" Configure scripts
au BufNewFile,BufRead configure.in,configure.ac setf config

! " CUDA Compute Unified Device Architecture
au BufNewFile,BufRead *.cu,*.cuh setf cuda

" Dockerfile; Podman uses the same syntax with name Containerfile
***************
*** 408,415 ****
" Eterm
au BufNewFile,BufRead *Eterm/*.cfg setf eterm

" Euphoria 3 or 4
! au BufNewFile,BufRead *.eu,*.ew,*.ex,*.exu,*.exw call dist#ft#EuphoriaCheck()
if has("fname_case")
au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW call dist#ft#EuphoriaCheck()
endif
--- 408,422 ----
" 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,*.exu,*.exw call dist#ft#EuphoriaCheck()
if has("fname_case")
au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW call dist#ft#EuphoriaCheck()
endif
*** ../vim-8.2.3049/src/testdir/test_filetype.vim 2021-06-25 21:54:22.016894907 +0200
--- src/testdir/test_filetype.vim 2021-06-26 12:00:31.472878676 +0200
***************
*** 161,166 ****
--- 161,168 ----
\ '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'],
***************
*** 790,794 ****
--- 792,832 ----
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
*** ../vim-8.2.3049/src/version.c 2021-06-25 21:54:22.016894907 +0200
--- src/version.c 2021-06-26 12:02:22.120636452 +0200
***************
*** 757,758 ****
--- 757,760 ----
{ /* Add new patch number below this line */
+ /**/
+ 3050,
/**/

--
Q. What happens to programmers when they die?
A: MS-Windows programmers are reinstalled. C++ programmers become undefined,
anyone who refers to them will die as well. Java programmers reincarnate
after being garbage collected, unless they are in permgen, in which case
they become zombies. Zimbu programmers leave a stack trace that tells us
exactly where they died and how they got there.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages