To: vim_dev@googlegroups.com Subject: Patch 8.2.3050 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 -- Bram@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 ///