summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-06-25 21:34:26 +0200
committerBram Moolenaar <Bram@vim.org>2019-06-25 21:34:26 +0200
commit6a7af8e2dbcb768a768831d9e6355c855c215ebc (patch)
treebb043e1eac67343184488a7b2900137581b6bfec
parent5c381eb9e72990e4153045f4911c59b9b2194edd (diff)
downloadvim-git-6a7af8e2dbcb768a768831d9e6355c855c215ebc.tar.gz
patch 8.1.1593: filetype not detected for C++ header files without extensionv8.1.1593
Problem: Filetype not detected for C++ header files without extension. Solution: Recognize the file by the Emacs file mode. (Dmitry Ilyin, closes #4593)
-rw-r--r--runtime/scripts.vim13
-rw-r--r--src/testdir/test_filetype.vim2
-rw-r--r--src/version.c2
3 files changed, 13 insertions, 4 deletions
diff --git a/runtime/scripts.vim b/runtime/scripts.vim
index ab66c0c0a..8d460cd31 100644
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -195,7 +195,7 @@ else
if s:line1 =~# '^:$'
call dist#ft#SetFileTypeSH(s:line1) " defined in filetype.vim
- " Z shell scripts
+ " Z shell scripts
elseif s:line1 =~# '^#compdef\>' || s:line1 =~# '^#autoload\>' ||
\ "\n".s:line1."\n".s:line2."\n".s:line3."\n".s:line4."\n".s:line5 =~# '\n\s*emulate\s\+\%(-[LR]\s\+\)\=[ckz]\=sh\>'
set ft=zsh
@@ -204,15 +204,20 @@ else
elseif s:line1 =~# '^From \([a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\=\|-\) .* \(19\|20\)\d\d$'
set ft=mail
- " Mason
+ " Mason
elseif s:line1 =~# '^<[%&].*>'
set ft=mason
- " Vim scripts (must have '" vim' as the first line to trigger this)
+ " Vim scripts (must have '" vim' as the first line to trigger this)
elseif s:line1 =~# '^" *[vV]im$'
set ft=vim
- " MOO
+ " libcxx and libstdc++ standard library headers like "iostream" do not have
+ " an extension, recognize the Emacs file mode.
+ elseif s:line1 =~? '-\*-.*C++.*-\*-'
+ set ft=cpp
+
+ " MOO
elseif s:line1 =~# '^\*\* LambdaMOO Database, Format Version \%([1-3]\>\)\@!\d\+ \*\*$'
set ft=moo
diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
index 95fb62e71..37d8ceda9 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -586,6 +586,8 @@ let s:script_checks = {
\ 'cfengine': [['#!/path/cfengine']],
\ 'erlang': [['#!/path/escript']],
\ 'haskell': [['#!/path/haskell']],
+ \ 'cpp': [['// Standard iostream objects -*- C++ -*-'],
+ \ ['// -*- C++ -*-']],
\ }
func Test_script_detection()
diff --git a/src/version.c b/src/version.c
index 5514b4b9c..c25c1ff10 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1593,
+/**/
1592,
/**/
1591,