[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/haskell-tng-mode 3f54673 155/385: don't fontify toplevel
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/haskell-tng-mode 3f54673 155/385: don't fontify toplevel |
Date: |
Tue, 5 Oct 2021 23:59:21 -0400 (EDT) |
branch: elpa/haskell-tng-mode
commit 3f5467393bda731b93bc55ff913bd9ac8939cd56
Author: Tseen She <ts33n.sh3@gmail.com>
Commit: Tseen She <ts33n.sh3@gmail.com>
don't fontify toplevel
---
haskell-tng-font-lock.el | 17 +++--------------
haskell-tng-rx.el | 11 -----------
haskell-tng-smie.el | 2 +-
test/src/layout.hs.faceup | 16 ++++++++--------
test/src/medley.hs.faceup | 26 +++++++++++++-------------
5 files changed, 25 insertions(+), 47 deletions(-)
diff --git a/haskell-tng-font-lock.el b/haskell-tng-font-lock.el
index 2dc6504..4f571be 100644
--- a/haskell-tng-font-lock.el
+++ b/haskell-tng-font-lock.el
@@ -62,11 +62,6 @@
"Haskell constructors."
:group 'haskell-tng:faces)
-(defface haskell-tng:toplevel
- '((t :inherit font-lock-function-name-face))
- "Haskell top level declarations."
- :group 'haskell-tng:faces)
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Here is the `font-lock-keywords' table of matchers and highlighters.
(defconst
@@ -77,7 +72,6 @@
(let ((conid haskell-tng:rx:conid)
;;(qual haskell-tng:rx:qual)
(consym haskell-tng:rx:consym)
- (toplevel haskell-tng:rx:toplevel)
(qual haskell-tng:rx:qual)
(bigspace `(| space ,haskell-tng:rx:newline)))
`(;; reservedid / reservedop
@@ -164,10 +158,6 @@
;; TODO numeric / char primitives?
;; TODO haddock, different face vs line comments, and some markup.
- ;; top-level
- (,(rx-to-string toplevel)
- . 'haskell-tng:toplevel)
-
;; uses of F.Q.N.s
;; TODO should perhaps be in a different font than module/import use,
e.g.
;; lighter not bolder.
@@ -232,7 +222,9 @@ Some complexity to avoid matching on operators."
"Used in `font-lock-extend-region-functions'.
Automatically populated by `haskell-tng:font:multiline'")
-;; TODO (perf) don't extend if the TRIGGER has a multiline prop already
+;; TODO (perf) don't extend if the TRIGGER has a multiline prop already or
+;; consider only using multiline instead of trying to add custom
+;; font-lock-extend-region-functions entries.
(defmacro haskell-tng:font:multiline (name trigger find &rest limiters)
"Defines `font-lock-keywords' / `font-lock-extend-region-functions' entries.
@@ -284,9 +276,6 @@ succeeds and may further restrict the FIND search limit."
,(finder 'limit)))
(add-to-list 'haskell-tng:extend-region-functions ',extend t)))))
-;; TODO if the beginning of a multiline pattern goes off the screen, e.g. for a
-;; large type definition, we can lose the fontification. This seems to be a bug
-;; in Emacs.
(haskell-tng:font:multiline explicit-type
(rx symbol-start "::" symbol-end)
(rx symbol-start "::" symbol-end (group (+
anything)))
diff --git a/haskell-tng-rx.el b/haskell-tng-rx.el
index bf090bd..1943ac1 100644
--- a/haskell-tng-rx.el
+++ b/haskell-tng-rx.el
@@ -54,15 +54,6 @@ give false positives." `(|
(| "[]" "()") ;; empty list / void
(: symbol-start (char ?\\)))) ;; TODO only for lambdas, don't include ops
like \\
-(defconst haskell-tng:rx:toplevel
- ;; TODO multi-definitions, e.g. Servant's :<|>
- ;;
- ;; Lexically and grammatically there is nothing special about top-level
- ;; definitions, since they are just WLDOs for the module's `where'. But they
- ;; are so common in practice that it's useful to special case them.
- `(: line-start (group (| ,haskell-tng:rx:varid
- (: "(" (+? (syntax symbol)) ")")))
- symbol-end))
(defconst haskell-tng:rx:newline
'(| ?\n
(: symbol-start "--" (+ (not (any ?\n))) ?\n))
@@ -93,8 +84,6 @@ give false positives." `(|
)))
(defconst haskell-tng:regexp:symid
(rx-to-string haskell-tng:rx:symid))
-(defconst haskell-tng:regexp:toplevel
- (rx-to-string haskell-tng:rx:toplevel))
(provide 'haskell-tng-rx)
;;; haskell-tng-rx.el ends here
diff --git a/haskell-tng-smie.el b/haskell-tng-smie.el
index 711aeb4..0d7ba97 100644
--- a/haskell-tng-smie.el
+++ b/haskell-tng-smie.el
@@ -274,7 +274,7 @@ current line."
indents)
(save-excursion
(end-of-line 0)
- (re-search-backward haskell-tng:regexp:toplevel nil t)
+ (re-search-backward (rx bol (not space)) nil t)
(when-let (new (haskell-tng-smie:relevant-alts pos t))
(setq indents (append new indents))))
diff --git a/test/src/layout.hs.faceup b/test/src/layout.hs.faceup
index d383603..8e1d9e8 100644
--- a/test/src/layout.hs.faceup
+++ b/test/src/layout.hs.faceup
@@ -3,18 +3,18 @@
«:haskell-tng:keyword:data»«:haskell-tng:type: Stack a
»«:haskell-tng:keyword:=» «:haskell-tng:constructor:Empty»
«:haskell-tng:keyword:|» «:haskell-tng:constructor:MkStack» a
«:haskell-tng:keyword:(»«:haskell-tng:constructor:Stack»
a«:haskell-tng:keyword:)»
-«:haskell-tng:toplevel:push» «:haskell-tng:keyword:::»«:haskell-tng:type: a
»«:haskell-tng:keyword:->»«:haskell-tng:type: Stack a
»«:haskell-tng:keyword:->»«:haskell-tng:type: Stack a
-»«:haskell-tng:toplevel:push» x s «:haskell-tng:keyword:=»
«:haskell-tng:constructor:MkStack» x s
+push «:haskell-tng:keyword:::»«:haskell-tng:type: a
»«:haskell-tng:keyword:->»«:haskell-tng:type: Stack a
»«:haskell-tng:keyword:->»«:haskell-tng:type: Stack a
+»push x s «:haskell-tng:keyword:=» «:haskell-tng:constructor:MkStack» x s
-«:haskell-tng:toplevel:size» «:haskell-tng:keyword:::»«:haskell-tng:type:
Stack a »«:haskell-tng:keyword:->»«:haskell-tng:type: Int
-»«:haskell-tng:toplevel:size» s «:haskell-tng:keyword:=» length
«:haskell-tng:keyword:(»stkToLst s«:haskell-tng:keyword:)»
«:haskell-tng:keyword:where»
+size «:haskell-tng:keyword:::»«:haskell-tng:type: Stack a
»«:haskell-tng:keyword:->»«:haskell-tng:type: Int
+»size s «:haskell-tng:keyword:=» length «:haskell-tng:keyword:(»stkToLst
s«:haskell-tng:keyword:)» «:haskell-tng:keyword:where»
stkToLst «:haskell-tng:constructor:Empty»
«:haskell-tng:keyword:=» «:haskell-tng:keyword:[]»
stkToLst «:haskell-tng:keyword:(»«:haskell-tng:constructor:MkStack»
x s«:haskell-tng:keyword:)» «:haskell-tng:keyword:=»
x«:haskell-tng:keyword::»xs «:haskell-tng:keyword:where» xs
«:haskell-tng:keyword:=» stkToLst s
-«:haskell-tng:toplevel:pop» «:haskell-tng:keyword:::»«:haskell-tng:type: Stack
a »«:haskell-tng:keyword:->»«:haskell-tng:type:
»«:haskell-tng:keyword:(»«:haskell-tng:type:a»«:haskell-tng:keyword:,»«:haskell-tng:type:
Stack a»«:haskell-tng:keyword:)»«:haskell-tng:type:
-»«:haskell-tng:toplevel:pop»
«:haskell-tng:keyword:(»«:haskell-tng:constructor:MkStack» x
s«:haskell-tng:keyword:)»
+pop «:haskell-tng:keyword:::»«:haskell-tng:type: Stack a
»«:haskell-tng:keyword:->»«:haskell-tng:type:
»«:haskell-tng:keyword:(»«:haskell-tng:type:a»«:haskell-tng:keyword:,»«:haskell-tng:type:
Stack a»«:haskell-tng:keyword:)»«:haskell-tng:type:
+»pop «:haskell-tng:keyword:(»«:haskell-tng:constructor:MkStack» x
s«:haskell-tng:keyword:)»
«:haskell-tng:keyword:=» «:haskell-tng:keyword:(»x«:haskell-tng:keyword:,»
«:haskell-tng:keyword:case» s «:haskell-tng:keyword:of» r
«:haskell-tng:keyword:->» i r «:haskell-tng:keyword:where» i x
«:haskell-tng:keyword:=» x«:haskell-tng:keyword:)» «m:-- »«x:(pop Empty) is an
error
»
-«:haskell-tng:toplevel:top» «:haskell-tng:keyword:::»«:haskell-tng:type: Stack
a »«:haskell-tng:keyword:->»«:haskell-tng:type: a
-»«:haskell-tng:toplevel:top»
«:haskell-tng:keyword:(»«:haskell-tng:constructor:MkStack» x
s«:haskell-tng:keyword:)» «:haskell-tng:keyword:=» x «m:--
»«x:(top Empty) is an error
+top «:haskell-tng:keyword:::»«:haskell-tng:type: Stack a
»«:haskell-tng:keyword:->»«:haskell-tng:type: a
+»top «:haskell-tng:keyword:(»«:haskell-tng:constructor:MkStack» x
s«:haskell-tng:keyword:)» «:haskell-tng:keyword:=» x «m:--
»«x:(top Empty) is an error
»
\ No newline at end of file
diff --git a/test/src/medley.hs.faceup b/test/src/medley.hs.faceup
index 9eb0f6c..7c26e33 100644
--- a/test/src/medley.hs.faceup
+++ b/test/src/medley.hs.faceup
@@ -34,19 +34,19 @@
createProcess«:haskell-tng:keyword:,»
proc«:haskell-tng:keyword:,» waitForProcess«:haskell-tng:keyword:)»
«m:-- »«x:some chars that should be propertized
-»«:haskell-tng:toplevel:chars» «:haskell-tng:keyword:=»
«:haskell-tng:keyword:[»«s:'c'»«:haskell-tng:keyword:,»
«s:'\n'»«:haskell-tng:keyword:,» «s:'\''»«:haskell-tng:keyword:]»
+»chars «:haskell-tng:keyword:=»
«:haskell-tng:keyword:[»«s:'c'»«:haskell-tng:keyword:,»
«s:'\n'»«:haskell-tng:keyword:,» «s:'\''»«:haskell-tng:keyword:]»
-«:haskell-tng:toplevel:strings» «:haskell-tng:keyword:=»
«:haskell-tng:keyword:[»«s:""»«:haskell-tng:keyword:,»
«s:"\"\""»«:haskell-tng:keyword:,» «s:"\n\\ "»«:haskell-tng:keyword:,»
«s:"\\"»«:haskell-tng:keyword:]»
+strings «:haskell-tng:keyword:=»
«:haskell-tng:keyword:[»«s:""»«:haskell-tng:keyword:,»
«s:"\"\""»«:haskell-tng:keyword:,» «s:"\n\\ "»«:haskell-tng:keyword:,»
«s:"\\"»«:haskell-tng:keyword:]»
«m:-- »«x:knownWrongEscape = "foo"\\"bar"
»
-«:haskell-tng:toplevel:multiline1» «:haskell-tng:keyword:=» «s:"\
+multiline1 «:haskell-tng:keyword:=» «s:"\
\ "»
-«:haskell-tng:toplevel:multiline2» «:haskell-tng:keyword:=» «s:"\
+multiline2 «:haskell-tng:keyword:=» «s:"\
\"»
-«:haskell-tng:toplevel:difficult» «:haskell-tng:keyword:=» foo' «s:'a'» 2
+difficult «:haskell-tng:keyword:=» foo' «s:'a'» 2
-«:haskell-tng:toplevel:foo» «:haskell-tng:keyword:=» «s:"wobble (wibble)"»
+foo «:haskell-tng:keyword:=» «s:"wobble (wibble)"»
«:haskell-tng:keyword:class»«:haskell-tng:type: Get a s
»«:haskell-tng:keyword:where»
get «:haskell-tng:keyword:::»«:haskell-tng:type: Set s
»«:haskell-tng:keyword:->»«:haskell-tng:type: a
@@ -91,7 +91,7 @@
«:haskell-tng:keyword:newtype»«:haskell-tng:type: Flobby
»«:haskell-tng:keyword:=» «:haskell-tng:constructor:Flobby»
-«:haskell-tng:toplevel:foo» «:haskell-tng:keyword:::»«:haskell-tng:type:
+foo «:haskell-tng:keyword:::»«:haskell-tng:type:
Wibble »«m:-- »«x:wibble
»«:haskell-tng:type: »«:haskell-tng:keyword:->»«:haskell-tng:type: Wobble
»«m:-- »«x:wobble
»«:haskell-tng:type: »«:haskell-tng:keyword:->»«:haskell-tng:type: Wobble
»«m:-- »«x:wobble
@@ -109,8 +109,8 @@
a
»«:haskell-tng:keyword:=» «:haskell-tng:constructor:TestApp» a
-«:haskell-tng:toplevel:optionsParser»
«:haskell-tng:keyword:::»«:haskell-tng:type: Opts.Parser Options
-»«:haskell-tng:toplevel:optionsParser» «:haskell-tng:keyword:=»
«:haskell-tng:constructor:Options»
+optionsParser «:haskell-tng:keyword:::»«:haskell-tng:type: Opts.Parser Options
+»optionsParser «:haskell-tng:keyword:=» «:haskell-tng:constructor:Options»
<$> «:haskell-tng:keyword:(»«:haskell-tng:module:Opts.»flag'
«:haskell-tng:constructor:Alloc»
«:haskell-tng:keyword:(»«:haskell-tng:module:Opts.»long «s:"alloc"» <>
«:haskell-tng:module:Opts.»help «s:"wibble"»«:haskell-tng:keyword:)»
<|> «:haskell-tng:module:Opts.»flag' «:haskell-tng:constructor:Entries»
«:haskell-tng:keyword:(»«:haskell-tng:module:Opts.»long «s:"entry"» <>
«:haskell-tng:module:Opts.»help «s:"wobble"»«:haskell-tng:keyword:)»
<|> «:haskell-tng:module:Opts.»flag' «:haskell-tng:constructor:Bytes»
«:haskell-tng:keyword:(»«:haskell-tng:module:Opts.»long «s:"bytes"» <>
«:haskell-tng:module:Opts.»help «s:"i'm a fish"»«:haskell-tng:keyword:))»
@@ -136,18 +136,18 @@
«:haskell-tng:keyword:deriving» anyclass «:haskell-tng:keyword:instance»
«:haskell-tng:constructor:FromJSON» «:haskell-tng:constructor:Base»
«:haskell-tng:keyword:deriving» «:haskell-tng:keyword:newtype»
«:haskell-tng:keyword:instance» «:haskell-tng:constructor:FromJSON»
«:haskell-tng:constructor:Treble»
-«:haskell-tng:toplevel:foo» «:haskell-tng:keyword:=» «:haskell-tng:keyword:do»
+foo «:haskell-tng:keyword:=» «:haskell-tng:keyword:do»
bar «:haskell-tng:keyword:::»«:haskell-tng:type: Wibble
»«:haskell-tng:keyword:<-» baz
«:haskell-tng:keyword:where» baz «:haskell-tng:keyword:=»
«:haskell-tng:keyword:_»
«m:-- »«x:checking that comments are ignored in layout
» «m:-- »«x:and that a starting syntax entry is ok
» «:haskell-tng:keyword:(»+«:haskell-tng:keyword:)»
«:haskell-tng:keyword:=» «:haskell-tng:keyword:_»
-«:haskell-tng:toplevel:test» «:haskell-tng:keyword:=» 1 `shouldBe` 1
+test «:haskell-tng:keyword:=» 1 `shouldBe` 1
-«:haskell-tng:toplevel:cases» «:haskell-tng:keyword:=»
«:haskell-tng:keyword:\case»
+cases «:haskell-tng:keyword:=» «:haskell-tng:keyword:\case»
«:haskell-tng:constructor:Nothing» «:haskell-tng:keyword:->» «s:"no"» &
toUpper
«:haskell-tng:constructor:Just» «:haskell-tng:keyword:_»
«:haskell-tng:keyword:->» toUpper $ «s:"yes"»
-«:haskell-tng:toplevel:bar» «:haskell-tng:keyword:=» «:haskell-tng:keyword:do»
«m:-- »«x:an incomplete do block
+bar «:haskell-tng:keyword:=» «:haskell-tng:keyword:do» «m:-- »«x:an incomplete
do block
»
\ No newline at end of file
- [nongnu] elpa/haskell-tng-mode 88b17d4 137/385: started indentation rules, (continued)
- [nongnu] elpa/haskell-tng-mode 88b17d4 137/385: started indentation rules, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode cf22f3a 138/385: simplify indentation testing, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode a0f777e 166/385: Revert "duplicate ; tokens to be used as terminators", ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 2320b89 167/385: alternative to smie-rules-* in :elem and :list-intro, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 60d8c20 149/385: indent "case of", ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 7f9afd2 159/385: list indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 6e70344 165/385: duplicate ; tokens to be used as terminators, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode ab5252b 169/385: rearrange alts, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode e1aba33 168/385: fix a layout bug in lists and records, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 2c6c772 150/385: better WLDO indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 3f54673 155/385: don't fontify toplevel,
ELPA Syncer <=
- [nongnu] elpa/haskell-tng-mode 32175c0 158/385: thots, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 8c2e3f7 157/385: better symid indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode bc5c827 160/385: tuple indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode e0acc42 156/385: better tasty error detection, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode c211672 174/385: indentation for hanging type definition, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode ef7f335 171/385: note stack compatibility, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 86bcd98 175/385: constraint indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode e1c0f0a 179/385: allow indentation option to be tested, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 1cceb64 182/385: cleaner tests, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode b1122e4 188/385: allow users to use unsupported build tools, ELPA Syncer, 2021/10/06