summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorigna_martinoli <ignamartinoli@protonmail.com>2024-07-18 21:34:36 +0200
committerChristian Brabandt <cb@256bit.org>2024-07-18 21:34:36 +0200
commit37853b7de31ef34153fe76aa2b740d517ed0e5d4 (patch)
treeca10dd1865596e17e8cf0678666248fe421819cd
parenteb6d733bef312a0634770e023e8a41f0347f1503 (diff)
patch 9.1.0602: filetype: Prolog detection can be improvedv9.1.0602
Problem: filetype: Prolog detection can be improved Solution: update the prolog detection regex (igna_martinoli) related: #10835 related: #15206 closes: #15253 Co-authored-by: clason <c.clason@uni-graz.at> Co-authored-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: igna_martinoli <ignamartinoli@protonmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r--runtime/autoload/dist/ft.vim6
-rw-r--r--runtime/filetype.vim2
-rw-r--r--src/testdir/test_filetype.vim38
-rw-r--r--src/version.c2
4 files changed, 45 insertions, 3 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index fc844383ed..be299ef50d 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -9,6 +9,8 @@ vim9script
# These functions are moved here from runtime/filetype.vim to make startup
# faster.
+var prolog_pattern = '^\s*\(:-\|%\+\(\s\|$\)\|\/\*\)\|\.\s*$'
+
export def Check_inp()
if getline(1) =~ '%%'
setf tex
@@ -465,7 +467,7 @@ export def ProtoCheck(default: string)
# recognize Prolog by specific text in the first non-empty line
# require a blank after the '%' because Perl uses "%list" and "%translate"
var lnum = getline(nextnonblank(1))
- if lnum =~ '\<prolog\>' || lnum =~ '^\(:-\|%\|\/\*\)\|\.$'
+ if lnum =~ '\<prolog\>' || lnum =~ prolog_pattern
setf prolog
else
exe 'setf ' .. default
@@ -644,7 +646,7 @@ export def FTpl()
# recognize Prolog by specific text in the first non-empty line
# require a blank after the '%' because Perl uses "%list" and "%translate"
var line = getline(nextnonblank(1))
- if line =~ '\<prolog\>' || line =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || line =~ ':-'
+ if line =~ '\<prolog\>' || line =~ prolog_pattern
setf prolog
else
setf perl
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 6275e0aa5a..f5c7111621 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1719,7 +1719,7 @@ au BufNewFile,BufRead *.pcmk setf pcmk
" PEM (Privacy-Enhanced Mail)
au BufNewFile,BufRead *.pem,*.cer,*.crt,*.csr setf pem
-" Perl
+" Perl or Prolog
if has("fname_case")
au BufNewFile,BufRead *.pl,*.PL call dist#ft#FTpl()
else
diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
index 24948a20c9..cb49112536 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -2603,6 +2603,44 @@ func Test_pro_file()
call assert_equal('prolog', &filetype)
bwipe!
+ " IDL
+ call writefile(['x = findgen(100)/10'], 'Xfile.pro', 'D')
+ split Xfile.pro
+ call assert_equal('idlang', &filetype)
+
+ filetype off
+endfunc
+
+
+func Test_pl_file()
+ filetype on
+
+ "Prolog
+ call writefile([':-module(test/1,'], 'Xfile.pl', 'D')
+ split Xfile.pl
+ call assert_equal('prolog', &filetype)
+ bwipe!
+
+ call writefile(['% comment'], 'Xfile.pl', 'D')
+ split Xfile.pl
+ call assert_equal('prolog', &filetype)
+ bwipe!
+
+ call writefile(['/* multiline comment'], 'Xfile.pl', 'D')
+ split Xfile.pl
+ call assert_equal('prolog', &filetype)
+ bwipe!
+
+ call writefile(['rule(test, 1.7).'], 'Xfile.pl', 'D')
+ split Xfile.pl
+ call assert_equal('prolog', &filetype)
+ bwipe!
+
+ " Perl
+ call writefile(['%data = (1, 2, 3);'], 'Xfile.pl', 'D')
+ split Xfile.pl
+ call assert_equal('perl', &filetype)
+
filetype off
endfunc
diff --git a/src/version.c b/src/version.c
index 5473fe0c43..539364943c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 602,
+/**/
601,
/**/
600,