aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2022-01-28 16:59:17 +0100
committerChristian Clason <c.clason@uni-graz.at>2022-01-28 17:01:13 +0100
commit5b9980f01eb021b0d84f540a6618f94ad2727153 (patch)
treeef70ee0b3e6eb7d56e56b00d3e893bef804cd405
parent6cb670cb2ce83a50177eaf37656c0b3c07c3ffde (diff)
downloadrneovim-5b9980f01eb021b0d84f540a6618f94ad2727153.tar.gz
rneovim-5b9980f01eb021b0d84f540a6618f94ad2727153.tar.bz2
rneovim-5b9980f01eb021b0d84f540a6618f94ad2727153.zip
vim-patch:8.2.4238: *.tf file could be fileytpe "tf" or "terraform"
Problem: *.tf file could be fileytpe "tf" or "terraform". Solution: Detect the type from the file contents. (closes vim/vim#9642) https://github.com/vim/vim/commit/bd8168c7705e315827642f2976ec59e26b7fe009
-rw-r--r--runtime/autoload/dist/ft.vim15
-rw-r--r--runtime/filetype.vim9
-rw-r--r--runtime/lua/vim/filetype.lua2
-rw-r--r--src/nvim/testdir/test_filetype.vim18
4 files changed, 40 insertions, 4 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index 69712046a5..86c71fa52d 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -862,6 +862,21 @@ func dist#ft#FTfoam()
endwhile
endfunc
+" Determine if a *.tf file is TF mud client or terraform
+func dist#ft#FTtf()
+ let numberOfLines = line('$')
+ for i in range(1, numberOfLines)
+ let currentLine = trim(getline(i))
+ let firstCharacter = currentLine[0]
+ if firstCharacter !=? ";" && firstCharacter !=? "/" && firstCharacter !=? ""
+ setf terraform
+ return
+ endif
+ endfor
+ setf tf
+endfunc
+
+
" Restore 'cpoptions'
let &cpo = s:cpo_save
unlet s:cpo_save
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 2a0a5110f2..6a27998cf4 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1942,10 +1942,13 @@ au BufNewFile,BufRead texmf.cnf setf texmf
au BufNewFile,BufRead .tidyrc,tidyrc,tidy.conf setf tidy
" TF mud client
-au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf
+au BufNewFile,BufRead .tfrc,tfrc setf tf
+
+" TF mud client or terraform
+au BufNewFile,BufRead *.tf call dist#ft#FTtf()
" TLA+
-au BufRead,BufNewFile *.tla setf tla
+au BufNewFile,BufRead *.tla setf tla
" tmux configuration
au BufNewFile,BufRead {.,}tmux*.conf setf tmux
@@ -1954,7 +1957,7 @@ au BufNewFile,BufRead {.,}tmux*.conf setf tmux
au BufNewFile,BufRead *.toml setf toml
" TPP - Text Presentation Program
-au BufNewFile,BufReadPost *.tpp setf tpp
+au BufNewFile,BufRead *.tpp setf tpp
" Treetop
au BufRead,BufNewFile *.treetop setf treetop
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
index bd3b44e95b..7fa2fbe001 100644
--- a/runtime/lua/vim/filetype.lua
+++ b/runtime/lua/vim/filetype.lua
@@ -661,7 +661,6 @@ local extension = {
txi = "texinfo",
texinfo = "texinfo",
text = "text",
- tf = "tf",
tfvars = "terraform",
tla = "tla",
tli = "tli",
@@ -827,6 +826,7 @@ local extension = {
stm = function() vim.fn["dist#ft#FThtml"]() end,
tcsh = function() vim.fn["dist#ft#SetFileTypeShell"]("tcsh") end,
tex = function() vim.fn["dist#ft#FTtex"]() end,
+ tf = function() vim.fn["dist#ft#FTtf"]() end,
w = function() vim.fn["dist#ft#FTprogress_cweb"]() end,
xml = function() vim.fn["dist#ft#FTxml"]() end,
y = function() vim.fn["dist#ft#FTy"]() end,
diff --git a/src/nvim/testdir/test_filetype.vim b/src/nvim/testdir/test_filetype.vim
index eb4824aa32..8d6f9ded1d 100644
--- a/src/nvim/testdir/test_filetype.vim
+++ b/src/nvim/testdir/test_filetype.vim
@@ -746,6 +746,24 @@ func Test_hook_file()
filetype off
endfunc
+func Test_tf_file()
+ filetype on
+
+ call writefile([';;; TF MUD client is super duper cool'], 'Xfile.tf')
+ split Xfile.tf
+ call assert_equal('tf', &filetype)
+ bwipe!
+
+ call writefile(['provider "azurerm" {'], 'Xfile.tf')
+ split Xfile.tf
+ call assert_equal('terraform', &filetype)
+ bwipe!
+
+ call delete('Xfile.tf')
+ filetype off
+endfunc
+
+
func Test_ts_file()
filetype on