Commit: runtime(filetype): fix incorrect pattern and break early

2 views
Skip to first unread message

Christian Brabandt

unread,
Jul 9, 2025, 12:30:18 PM7/9/25
to vim...@googlegroups.com
runtime(filetype): fix incorrect pattern and break early

Commit: https://github.com/vim/vim/commit/41ee98c3c5342867cb99dfcddbe8d53caeda22db
Author: zeertzjq <zeer...@outlook.com>
Date: Wed Jul 9 18:23:14 2025 +0200

runtime(filetype): fix incorrect pattern and break early

- Using `
` is incorrect, as result of getline() does not contain line
breaks and only uses `
` for NUL bytes.
- Return when b:asmsyntax is set, like many other filetypes.

closes: #17706

Signed-off-by: zeertzjq <zeer...@outlook.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index ff1dc037d..380b97bf4 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -3,7 +3,7 @@ vim9script
# Vim functions for file type detection
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
-# Last Change: 2025 Jul 08
+# Last Change: 2025 Jul 09
# Former Maintainer: Bram Moolenaar <Br...@vim.org>

# These functions are moved here from runtime/filetype.vim to make startup
@@ -61,27 +61,30 @@ export def FTasmsyntax()
var match = matchstr(head, '\sasmsyntax=\zs[a-zA-Z0-9]\+\ze\s')
if match != ''
b:asmsyntax = match
- else
- # Use heuristics
- var is_slash_star_encountered = false
- var i = 1
- const n = min([50, line("$")])
- while i <= n
- const line = getline(i)
- if line =~ '\%(^\|
\)/\*'
- is_slash_star_encountered = true
- endif
- if line =~# '^; Listing generated by Microsoft' || line =~? '\%(^\|
\)\%(\%(CONST\|_BSS\|_DATA\|_TEXT\)\s\+SEGMENT\>\)\|\s*\.[2-6]86P\?\>\|\s*\.XMM\>'
- b:asmsyntax = "masm"
- elseif line =~ 'Texas Instruments Incorporated' || (line =~ '\%(^\|
\)\*' && !is_slash_star_encountered)
- # tiasm uses `* commment`, but detection is unreliable if '/*' is seen
- b:asmsyntax = "tiasm"
- elseif ((line =~? '\.title\>\|\.ident\>\|\.macro\>\|\.subtitle\>\|\.library\>'))
- b:asmsyntax = "vmasm"
- endif
- i += 1
- endwhile
+ return
endif
+ # Use heuristics
+ var is_slash_star_encountered = false
+ var i = 1
+ const n = min([50, line("$")])
+ while i <= n
+ const line = getline(i)
+ if line =~ '^/\*'
+ is_slash_star_encountered = true
+ endif
+ if line =~# '^; Listing generated by Microsoft' || line =~? '^\%(\%(CONST\|_BSS\|_DATA\|_TEXT\)\s\+SEGMENT\>\)\|\s*\.[2-6]86P\?\>\|\s*\.XMM\>'
+ b:asmsyntax = "masm"
+ return
+ elseif line =~ 'Texas Instruments Incorporated' || (line =~ '^\*' && !is_slash_star_encountered)
+ # tiasm uses `* commment`, but detection is unreliable if '/*' is seen
+ b:asmsyntax = "tiasm"
+ return
+ elseif ((line =~? '\.title\>\|\.ident\>\|\.macro\>\|\.subtitle\>\|\.library\>'))
+ b:asmsyntax = "vmasm"
+ return
+ endif
+ i += 1
+ endwhile
enddef

var ft_visual_basic_content = '
Reply all
Reply to author
Forward
0 new messages