Commit: runtime(haskell): allow spaces in backticked operators in syntax script

1 view
Skip to first unread message

Christian Brabandt

unread,
Nov 20, 2025, 4:00:31 PM (2 days ago) Nov 20
to vim...@googlegroups.com
runtime(haskell): allow spaces in backticked operators in syntax script

Commit: https://github.com/vim/vim/commit/ddb88ab796bfb31267767c206684b3dd7ef0d040
Author: Mirek Kratochvil <exa...@gmail.com>
Date: Thu Nov 20 20:47:01 2025 +0000

runtime(haskell): allow spaces in backticked operators in syntax script

This formatting (although rare) is actually accepted by GHC, but vim
does not highlight it. This patch adds the simplest possible regex to
support the behavior.

Inconveniently, this might trigger weird formatting on lines that
contain errors, e.g. if the first backtick is removed from:

a `b` c `d` e

then `c` is going to be marked as an operator, which seems weird but is
valid.

closes: #18776

Signed-off-by: Mirek Kratochvil <exa...@gmail.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/syntax/haskell.vim b/runtime/syntax/haskell.vim
index 509aa2512..e71e1c807 100644
--- a/runtime/syntax/haskell.vim
+++ b/runtime/syntax/haskell.vim
@@ -2,6 +2,7 @@
" Language: Haskell
" Maintainer: Haskell Cafe mailinglist <haskel...@haskell.org>
" Last Change: 2024 Mar 28 by Enrico Maria De Angelis <enricomari...@gmail.com>
+" 2025 Nov 20 by Vim Project: Allow spaces in backticks #18776
" Original Author: John Williams <j...@pobox.com>
"
" Thanks to Ryan Crumley for suggestions and John Meacham for
@@ -46,8 +47,8 @@ syn match VarId "\(\<[A-Z][a-zA-Z0-9_']*\.\)*\<[a-z][a-zA-Z0-9_']*\>" contains=@
" others are variables (e.g. functions).
syn match hsVarSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[-!#$%&\*\+/<=>\?@\^|~.][-!#$%&\*\+/<=>\?@\^|~:.]*"
syn match hsConSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./<=>\?@\^|~:]*"
-syn match hsVarSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[a-z][a-zA-Z0-9_']*`"
-syn match hsConSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[A-Z][a-zA-Z0-9_']*`"
+syn match hsVarSym "` *\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[a-z][a-zA-Z0-9_']* *`"
+syn match hsConSym "` *\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[A-Z][a-zA-Z0-9_']* *`"

" (Non-qualified) identifiers which start with # are labels
syn match hsLabel "#[a-z][a-zA-Z0-9_']*\>"
Reply all
Reply to author
Forward
0 new messages