|
16 | 16 |
|
17 | 17 | ;;;###autoload |
18 | 18 | (add-to-list 'auto-mode-alist '("\\.mlc\\'" . livecode-mode)) |
| 19 | +(add-to-list 'auto-mode-alist '("\\.lcb\\'" . livecode-mode)) |
19 | 20 |
|
20 | 21 | (defvar livecode-mode-syntax-table |
21 | 22 | (let ((st (make-syntax-table))) |
22 | 23 | ;; Comments |
23 | | - (modify-syntax-entry ?/ ". 14b" st) |
| 24 | + (modify-syntax-entry ?/ ". 124" st) |
24 | 25 | (modify-syntax-entry ?* ". 23b" st) |
25 | | - (modify-syntax-entry ?\- "<" st) |
| 26 | + (modify-syntax-entry ?\- ". 12" st) |
26 | 27 | (modify-syntax-entry ?\n ">" st) |
27 | 28 | ;; Angle brackets |
28 | | - (modify-syntax-entry ?< "(" st) |
29 | | - (modify-syntax-entry ?> ")" st) |
| 29 | + (modify-syntax-entry ?< "(>" st) |
| 30 | + (modify-syntax-entry ?> ")<" st) |
30 | 31 | st) |
31 | 32 | "Syntax table for LiveCode mode") |
32 | 33 |
|
|
35 | 36 | "foreign" "handler" "prefix" "postfix" "precedence" "statement" |
36 | 37 | "undefined" "public" "neutral" "binds to" "optional" |
37 | 38 | "any" "private" "if" "else" "then" "repeat" "metadata" "widget" "module" |
38 | | - "version" "author" "title" "true" "false" "return" "as" "use" "type")) |
| 39 | + "version" "author" "title" "true" "false" "return" "use" "type" |
| 40 | + "exit repeat" "next repeat")) |
39 | 41 |
|
40 | 42 | (defvar livecode-builtins |
41 | 43 | '("output" "input" |
42 | 44 | "bool" "boolean" |
43 | 45 | "int" "number" "real" "double" "float" |
44 | | - "string" "data" "list" "map" "pointer" "is" "empty")) |
| 46 | + "string" "data" "list" "map" "pointer" "is" "empty" "as")) |
45 | 47 |
|
46 | 48 | (defvar livecode-font-lock-defaults |
47 | 49 | (let ((symbol-regexp "\\_<\\(\\(?:\\s_\\|\\w\\)*\\)\\_>")) |
|
53 | 55 | ( ,(regexp-opt livecode-keywords 'symbols) . font-lock-keyword-face) |
54 | 56 | ( ,(regexp-opt livecode-builtins 'symbols) . font-lock-builtin-face) |
55 | 57 |
|
56 | | - ;; "as" expressions |
57 | | - ("\\_<as\\s-+\\(\\(?:\\s_\\|\\w\\)*\\)\\_>" 1 font-lock-type-face) |
58 | | - |
59 | 58 | ;; handler definitions including parameter names |
60 | 59 | ( ,(concat "^\\s-*\\(\\_<\\(public\\|foreign\\)\\_>\\s-+\\)?\\_<handler\\_>\\s-+" symbol-regexp) |
61 | 60 | (3 font-lock-function-name-face nil) |
62 | 61 | ( ,(concat "\\(" (regexp-opt '("in" "out" "inout") 'symbols) "\\)" |
63 | 62 | "\\s-+" symbol-regexp) |
64 | 63 | nil nil |
65 | 64 | (3 font-lock-variable-name-face) |
66 | | - (2 font-lock-keyword-face))) |
| 65 | + (2 font-lock-keyword-face)) |
| 66 | + ("\\_<as\\s-+\\(\\(?:\\s_\\|\\w\\)*\\)\\_>" |
| 67 | + nil nil |
| 68 | + (1 font-lock-type-face))) |
67 | 69 |
|
68 | 70 | ;; variable names |
69 | 71 | ( ,(concat "^\\s-*\\_<variable\\_>\\s-*" symbol-regexp) |
70 | | - (1 font-lock-variable-name-face)) |
| 72 | + (1 font-lock-variable-name-face) |
| 73 | + ("\\_<as\\s-+\\(\\(?:\\s_\\|\\w\\)*\\)\\_>" |
| 74 | + nil nil |
| 75 | + (1 font-lock-type-face))) |
71 | 76 |
|
72 | 77 | ;; syntax definitions |
73 | 78 | ( ,(concat "^\\s-*\\_<syntax\\_>\\s-+" symbol-regexp) |
74 | 79 | (1 font-lock-function-name-face) |
75 | 80 | ("\\_<is\\_>" nil nil (0 font-lock-keyword-face t))) |
76 | 81 | )))) |
77 | 82 |
|
78 | | -(define-derived-mode livecode-mode prog-mode "LiveCode builder source" |
| 83 | +(define-derived-mode livecode-mode prog-mode "LiveCode" |
79 | 84 | "Major mode for editing LiveCode builder source files" |
80 | 85 | :syntax-table livecode-mode-syntax-table |
81 | 86 |
|
|
0 commit comments