自定义emacs conf模式

时间:2017-01-18 18:34:56

标签: emacs elisp

我正在编辑Emacs自动检测为Conf[JavaProp]的一些专有配置文件,即使用conf-javaprop-mode中的conf-mode.el。该模式几乎是完美的,除了这些文件没有c或c ++样式的注释,即

//foo 

/* foo */ 

应突出显示为评论。任何人都可以向我提供一些指导,说明我如何制作自己的conf-mode扩展程序并自动加载它们或.emacs中的任何内容吗?

2 个答案:

答案 0 :(得分:0)

您可以使用((100, 200), 270, 0, (200, 200))设置注释语法。例如,conf-mode-initialize这是一个简单的.ctags,其中#只应在以空格开头时开始注释。只需修改要继承的conf模式,并删除属性函数/语法表,除非你想要修改它们。

(require 'conf-mode)

(defun dotctags-propertize (start end)
  (goto-char start)
  (funcall
   (syntax-propertize-rules
    ("^\\s-*#.*" (0 "<")))
   (point) end))

(defvar dotctags-mode-syntax-table
  (let ((st (make-syntax-table conf-windows-mode-syntax-table)))
    (modify-syntax-entry ?\; "." st)
    (modify-syntax-entry ?\n ">" st)
    st))

;;;###autoload
(define-derived-mode dotctags-mode conf-windows-mode "Conf[cTags]"
  "Conf Mode for ctags config."
  :syntax-table dotctags-mode-syntax-table
  (conf-mode-initialize "#")
  (setq-local comment-end "")
  (setq-local syntax-propertize-function #'dotctags-propertize))

;;;###autoload
(add-to-list 'auto-mode-alist '("\\.ctags\\'" . dotctags-mode))

答案 1 :(得分:0)

从conf模式创建自己的派生模式,然后将其作为专有文件的默认模式

(define-derived-mode conf-my-mode conf-unix-mode "Conf[MyMode]"
  "Conf mode of my own"
  (conf-mode-initialize "#" 'conf-my-mode-font-lock-keywords))
(add-to-list 'auto-mode-alist '("\\.your-extension\\'" . conf-my-mode))
相关问题