emacs-elpa-diffs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]