]> Creatis software - bbtk.git/blob - kernel/appli/bbi/bbs-mode.el
bc618911adaf2d1964538c013fdecbd68dd504b2
[bbtk.git] / kernel / appli / bbi / bbs-mode.el
1 ;=============================================================================
2 ; bbs-mode.el = Emacs major mode for editing bbi script files (.bbs).
3
4 ; Add bbs listfile names to the mode list.
5 (setq auto-mode-alist
6           (append
7            '(("\\.bbs\\'" . bbs-mode))
8            auto-mode-alist))
9 ; Note, add the above setq auto-mode-alist to your .emacs
10 ; along with the following to have the mode loaded when
11 ; a *.mac file is loaded in emacs.
12 ; (autoload 'bbs-mode "bbs-mode.el" t)
13
14 ; Default indentation increment.
15 (defvar bbs-tab-width 2)
16
17 ; Define keyword highlighting.
18 (defconst bbs-font-lock-defaults
19   (list
20    (regexp-opt '(
21                  "author"
22                  "config"
23                  "connect"
24                  "define"
25                  "delete"
26                  "description"
27                  "endefine"
28                  "endpackage"
29                  "exec"
30                  "graph"
31                  "help"
32                  "include"
33                  "input"
34                  "load"
35                  "message"
36                  "new"
37                  "output"
38                  "package"
39                  "print"
40                  "quit"
41                  "reset"
42                  "set"
43                  "unload"
44                  "index"
45                  "category"
46                  ) t )
47    "Highlighting expressions for bbs mode.")
48   )
49
50 ; Define a variable to hold the syntax table.
51 (defvar bbs-mode-syntax-table nil "Syntax table for bbs-mode.")
52
53 ; If bbs mode file is reloaded, we want the syntax table to be
54 ; regenerated when bbs-mode is called.
55 (setq bbs-mode-syntax-table nil)
56
57 ; Let users hook to bbs mode.
58 (defvar bbs-mode-hook nil)
59
60 ; Mode startup function.
61 (defun bbs-mode ()
62   "Major mode for editing bbtk script files (.bbs)."
63   (interactive)
64   (kill-all-local-variables)
65   (setq major-mode 'bbs-mode)
66   (setq mode-name "bbs")
67                                         ; Create the syntax table
68   (setq bbs-mode-syntax-table (make-syntax-table))
69   (set-syntax-table bbs-mode-syntax-table)
70   (modify-syntax-entry ?_  "w" bbs-mode-syntax-table)
71   (modify-syntax-entry ?\(  "()" bbs-mode-syntax-table)
72   (modify-syntax-entry ?\)  ")(" bbs-mode-syntax-table)
73   (modify-syntax-entry ?# "<" bbs-mode-syntax-table)
74   (modify-syntax-entry ?\n ">" bbs-mode-syntax-table)
75   
76                                         ; Setup font-lock mode.
77   (make-local-variable 'font-lock-defaults)
78   (setq font-lock-defaults '(bbs-font-lock-defaults))
79
80   ; Setup comment syntax.
81   (make-local-variable 'comment-start)
82   (setq comment-start "#")
83
84   (run-hooks 'bbs-mode-hook))
85
86 ; This file provides bbs-mode.
87 (provide 'bbs-mode)
88