Skip to content

Commit 8c47367

Browse files
authored
Merge pull request #46 from Hi-Angel/fix-foreign-import-highlight
Strengthen "foreign import" highlight
2 parents a3d6ca4 + 98648c3 commit 8c47367

File tree

2 files changed

+56
-13
lines changed

2 files changed

+56
-13
lines changed

purescript-font-lock.el

+4-13
Original file line numberDiff line numberDiff line change
@@ -223,22 +223,13 @@ Returns keywords suitable for `font-lock-keywords'."
223223
(4 (symbol-value 'purescript-keyword-face) nil lax))
224224

225225
(,reservedsym 1 (symbol-value 'purescript-operator-face))
226-
;; Special case for `foreign import'
227-
;; keywords in foreign import statements but are not otherwise reserved.
228-
("\\<\\(foreign\\)[ \t]+\\(import\\)[ \t]+\\(?:\\(ccall\\|stdcall\\|cplusplus\\|jvm\\|dotnet\\)[ \t]+\\)?\\(?:\\(safe\\|unsafe\\|interruptible\\)[ \t]+\\)?"
226+
;; Case for `foreign import'
227+
(,(rx line-start (0+ whitespace)
228+
(group "foreign") (1+ whitespace) (group "import") word-end)
229229
(1 (symbol-value 'purescript-keyword-face) nil lax)
230-
(2 (symbol-value 'purescript-keyword-face) nil lax)
231-
(3 (symbol-value 'purescript-keyword-face) nil lax)
232-
(4 (symbol-value 'purescript-keyword-face) nil lax))
230+
(2 (symbol-value 'purescript-keyword-face) nil lax))
233231

234232
(,reservedsym 1 (symbol-value 'purescript-operator-face))
235-
;; Special case for `foreign export'
236-
;; keywords in foreign export statements but are not otherwise reserved.
237-
("\\<\\(foreign\\)[ \t]+\\(export\\)[ \t]+\\(?:\\(ccall\\|stdcall\\|cplusplus\\|jvm\\|dotnet\\)[ \t]+\\)?"
238-
(1 (symbol-value 'purescript-keyword-face) nil lax)
239-
(2 (symbol-value 'purescript-keyword-face) nil lax)
240-
(3 (symbol-value 'purescript-keyword-face) nil lax))
241-
242233
;; Toplevel Declarations.
243234
;; Place them *before* generic id-and-op highlighting.
244235
(,topdecl-var (1 (symbol-value 'purescript-definition-face)))

tests/purescript-font-lock-tests.el

+52
Original file line numberDiff line numberDiff line change
@@ -303,3 +303,55 @@ derive newtype instance foldableNonEmptyList :: Foldable NonEmptyList
303303
(449 450 font-lock-variable-name-face) (451 451 nil)
304304
(452 459 font-lock-type-face) (460 460 nil)
305305
(461 472 font-lock-type-face) (473 473 nil))))
306+
307+
(ert-deftest foreign-imports ()
308+
(purescript-test-ranges
309+
"foreign import func2 :: Effect Int
310+
foreign import func3
311+
:: Effect Int
312+
foreign import
313+
func4 :: Effect Int
314+
foreign import func5 -- invalid indentation, but allowed in other context
315+
invalid_dont_highlight foreign import func6
316+
foreign importinvalid
317+
"
318+
'((1 7 font-lock-keyword-face)
319+
(8 8 nil)
320+
(9 14 font-lock-keyword-face)
321+
(15 21 nil)
322+
(22 23 font-lock-variable-name-face)
323+
(24 24 nil)
324+
(25 30 font-lock-type-face)
325+
(31 31 nil)
326+
(32 34 font-lock-type-face)
327+
(35 35 nil)
328+
(36 42 font-lock-keyword-face)
329+
(43 43 nil)
330+
(44 49 font-lock-keyword-face)
331+
(50 58 nil)
332+
(59 60 font-lock-variable-name-face)
333+
(61 61 nil)
334+
(62 67 font-lock-type-face)
335+
(68 68 nil)
336+
(69 71 font-lock-type-face)
337+
(72 72 nil)
338+
(73 79 font-lock-keyword-face)
339+
(80 80 nil)
340+
(81 86 font-lock-keyword-face)
341+
(87 95 nil)
342+
(96 97 font-lock-variable-name-face)
343+
(98 98 nil)
344+
(99 104 font-lock-type-face)
345+
(105 105 nil)
346+
(106 108 font-lock-type-face)
347+
(109 111 nil)
348+
(112 118 font-lock-keyword-face)
349+
(119 119 nil)
350+
(120 125 font-lock-keyword-face)
351+
(126 132 nil)
352+
(133 135 font-lock-comment-delimiter-face)
353+
(136 185 font-lock-comment-face)
354+
(186 207 font-lock-function-name-face)
355+
(208 229 nil)
356+
(230 236 font-lock-function-name-face)
357+
(237 251 nil))))

0 commit comments

Comments
 (0)