Skip to content

Commit 1e49c81

Browse files
committed
Merge pull request livecode#2547 from peter-b/misc-emacsmode
contrib: Misc. improvements to LCB Emacs mode.
2 parents bbad63c + 7d2e74e commit 1e49c81

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

contrib/emacs/livecode-mode.el

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,18 @@
1616

1717
;;;###autoload
1818
(add-to-list 'auto-mode-alist '("\\.mlc\\'" . livecode-mode))
19+
(add-to-list 'auto-mode-alist '("\\.lcb\\'" . livecode-mode))
1920

2021
(defvar livecode-mode-syntax-table
2122
(let ((st (make-syntax-table)))
2223
;; Comments
23-
(modify-syntax-entry ?/ ". 14b" st)
24+
(modify-syntax-entry ?/ ". 124" st)
2425
(modify-syntax-entry ?* ". 23b" st)
25-
(modify-syntax-entry ?\- "<" st)
26+
(modify-syntax-entry ?\- ". 12" st)
2627
(modify-syntax-entry ?\n ">" st)
2728
;; Angle brackets
28-
(modify-syntax-entry ?< "(" st)
29-
(modify-syntax-entry ?> ")" st)
29+
(modify-syntax-entry ?< "(>" st)
30+
(modify-syntax-entry ?> ")<" st)
3031
st)
3132
"Syntax table for LiveCode mode")
3233

@@ -35,13 +36,14 @@
3536
"foreign" "handler" "prefix" "postfix" "precedence" "statement"
3637
"undefined" "public" "neutral" "binds to" "optional"
3738
"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"))
3941

4042
(defvar livecode-builtins
4143
'("output" "input"
4244
"bool" "boolean"
4345
"int" "number" "real" "double" "float"
44-
"string" "data" "list" "map" "pointer" "is" "empty"))
46+
"string" "data" "list" "map" "pointer" "is" "empty" "as"))
4547

4648
(defvar livecode-font-lock-defaults
4749
(let ((symbol-regexp "\\_<\\(\\(?:\\s_\\|\\w\\)*\\)\\_>"))
@@ -53,29 +55,32 @@
5355
( ,(regexp-opt livecode-keywords 'symbols) . font-lock-keyword-face)
5456
( ,(regexp-opt livecode-builtins 'symbols) . font-lock-builtin-face)
5557

56-
;; "as" expressions
57-
("\\_<as\\s-+\\(\\(?:\\s_\\|\\w\\)*\\)\\_>" 1 font-lock-type-face)
58-
5958
;; handler definitions including parameter names
6059
( ,(concat "^\\s-*\\(\\_<\\(public\\|foreign\\)\\_>\\s-+\\)?\\_<handler\\_>\\s-+" symbol-regexp)
6160
(3 font-lock-function-name-face nil)
6261
( ,(concat "\\(" (regexp-opt '("in" "out" "inout") 'symbols) "\\)"
6362
"\\s-+" symbol-regexp)
6463
nil nil
6564
(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)))
6769

6870
;; variable names
6971
( ,(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)))
7176

7277
;; syntax definitions
7378
( ,(concat "^\\s-*\\_<syntax\\_>\\s-+" symbol-regexp)
7479
(1 font-lock-function-name-face)
7580
("\\_<is\\_>" nil nil (0 font-lock-keyword-face t)))
7681
))))
7782

78-
(define-derived-mode livecode-mode prog-mode "LiveCode builder source"
83+
(define-derived-mode livecode-mode prog-mode "LiveCode"
7984
"Major mode for editing LiveCode builder source files"
8085
:syntax-table livecode-mode-syntax-table
8186

0 commit comments

Comments
 (0)