在Emacs中创建一个新模式

时间:2013-02-14 23:03:16

标签: emacs elisp

我对Emacs Lisp(或任何Lisp,就此而言)一无所知。我想做一些看起来非常简单的事情,但我对在线指南没有运气。我想创建" packet-mode.el"对于.packet个文件。我想做以下事情:

  • 启用C ++模式
  • 使packet成为关键字,同时保持C ++模式的其余部分不变
(define-derived-mode packet-mode fundamental-mode
  (font-lock-add-keywords 'c++-mode `(("packet" . font-lock-keyword-face)))
  (c++-mode))

  (add-to-list 'auto-mode-alist '("\\.packet\\'" . packet-mode)
  (provide 'packet-mode)

我也尝试在数据包模式下切换语句的顺序,但随后C ++突出显示中断。

我希望packet在{/ p>的意义上表现得像struct

packet foo {
  int bar;
}

的突出显示方式与使用struct代替packet时的方式相同。

1 个答案:

答案 0 :(得分:7)

以下是您需要加入packet-mode.el的内容:

(defvar packet-mode-font-lock-keywords
  '(("\\<packet\\>" . font-lock-keyword-face)))
(define-derived-mode packet-mode c++-mode "Packet"
  "A major mode to edit GNU ld script files."
  (font-lock-add-keywords nil packet-mode-font-lock-keywords))
(add-to-list 'auto-mode-alist '("\\.packet\\'" . packet-mode))
(provide 'packet-mode)

packet-mode.el放入load-path的目录中 (可选)字节编译。

现在,将(require 'packet-mode)添加到您的.emacs.el

相关问题