|
52 | 52 | ;; highlighted as constructors or not. Should the `->' in |
53 | 53 | ;; `id :: a -> a' be considered a constructor or a keyword? If so, |
54 | 54 | ;; how do we distinguish this from `\x -> x'? What about the `\'? |
55 | | -;; |
56 | | -;; . XEmacs can support both `--' comments and `{- -}' comments |
57 | | -;; simultaneously. If XEmacs is detected, this should be used. |
58 | | -;; |
59 | | -;; . Support for GreenCard? |
60 | | -;; |
61 | | -;; |
62 | | -;; All functions/variables start with |
63 | | -;; `(turn-(on/off)-)purescript-font-lock' or `purescript-fl-'. |
64 | | - |
65 | | -;;; Change Log: |
66 | | - |
67 | | -;; Version 1.3: |
68 | | -;; From Dave Love: |
69 | | -;; Support for proper behaviour (including with Unicode identifiers) |
70 | | -;; in Emacs 21 only hacked in messily to avoid disturbing the old |
71 | | -;; stuff. Needs integrating more cleanly. Allow literate comment |
72 | | -;; face to be customized. Some support for fontifying definitions. |
73 | | -;; (I'm not convinced the faces should be customizable -- fontlock |
74 | | -;; faces are normally expected to be consistent.) |
75 | | -;; |
76 | | -;; Version 1.2: |
77 | | -;; Added support for LaTeX-style literate scripts. Allow whitespace |
78 | | -;; after backslash to end a line for string continuations. |
79 | | -;; |
80 | | -;; Version 1.1: |
81 | | -;; Use own syntax table. Use backquote (neater). Stop ''' being |
82 | | -;; highlighted as quoted character. Fixed `\"' fontification bug |
83 | | -;; in comments. |
84 | | -;; |
85 | | -;; Version 1.0: |
86 | | -;; Brought over from PureScript mode v1.1. |
87 | 55 |
|
88 | 56 | ;;; Code: |
89 | 57 |
|
|
107 | 75 | ("&&" . ,(decode-char 'ucs #X2227)) |
108 | 76 | ("||" . ,(decode-char 'ucs #X2228)) |
109 | 77 | ("sqrt" . ,(decode-char 'ucs #X221A)) |
110 | | - ("undefined" . ,(decode-char 'ucs #X22A5)) ;; Not really needed for Purescript |
| 78 | + ("undefined" . ,(decode-char 'ucs #X22A5)) |
111 | 79 | ("pi" . ,(decode-char 'ucs #X3C0)) |
112 | 80 | ("~>" . ,(decode-char 'ucs 8669)) ;; Omega language |
113 | 81 | ("-<" . ,(decode-char 'ucs 8610)) ;; Paterson's arrow syntax |
@@ -244,55 +212,6 @@ Returns keywords suitable for `font-lock-keywords'." |
244 | 212 | purescript-constructor-face |
245 | 213 | purescript-operator-face))))) |
246 | 214 |
|
247 | | -;; The next three aren't used in Emacs 21. |
248 | | - |
249 | | -(defvar purescript-fl-latex-cache-pos nil |
250 | | - "Position of cache point used by `purescript-fl-latex-cache-in-comment'. |
251 | | -Should be at the start of a line.") |
252 | | - |
253 | | -(defvar purescript-fl-latex-cache-in-comment nil |
254 | | - "If `purescript-fl-latex-cache-pos' is outside a |
255 | | -\\begin{code}..\\end{code} block (and therefore inside a comment), |
256 | | -this variable is set to t, otherwise nil.") |
257 | | - |
258 | | -(defun purescript-fl-latex-comments (end) |
259 | | - "Sets `match-data' according to the region of the buffer before end |
260 | | -that should be commented under LaTeX-style literate scripts." |
261 | | - (let ((start (point))) |
262 | | - (if (= start end) |
263 | | - ;; We're at the end. No more to fontify. |
264 | | - nil |
265 | | - (if (not (eq start purescript-fl-latex-cache-pos)) |
266 | | - ;; If the start position is not cached, calculate the state |
267 | | - ;; of the start. |
268 | | - (progn |
269 | | - (setq purescript-fl-latex-cache-pos start) |
270 | | - ;; If the previous \begin{code} or \end{code} is a |
271 | | - ;; \begin{code}, then start is not in a comment, otherwise |
272 | | - ;; it is in a comment. |
273 | | - (setq purescript-fl-latex-cache-in-comment |
274 | | - (if (and |
275 | | - (re-search-backward |
276 | | - "^\\(\\(\\\\begin{code}\\)\\|\\(\\\\end{code}\\)\\)$" |
277 | | - (point-min) t) |
278 | | - (match-end 2)) |
279 | | - nil t)) |
280 | | - ;; Restore position. |
281 | | - (goto-char start))) |
282 | | - (if purescript-fl-latex-cache-in-comment |
283 | | - (progn |
284 | | - ;; If start is inside a comment, search for next \begin{code}. |
285 | | - (re-search-forward "^\\\\begin{code}$" end 'move) |
286 | | - ;; Mark start to end of \begin{code} (if present, till end |
287 | | - ;; otherwise), as a comment. |
288 | | - (set-match-data (list start (point))) |
289 | | - ;; Return point, as a normal regexp would. |
290 | | - (point)) |
291 | | - ;; If start is inside a code block, search for next \end{code}. |
292 | | - (if (re-search-forward "^\\\\end{code}$" end t) |
293 | | - ;; If one found, mark it as a comment, otherwise finish. |
294 | | - (point)))))) |
295 | | - |
296 | 215 | (defconst purescript-basic-syntactic-keywords |
297 | 216 | '(;; Character constants (since apostrophe can't have string syntax). |
298 | 217 | ;; Beware: do not match something like 's-}' or '\n"+' since the first ' |
|
0 commit comments