【问题标题】:Emacs: hooking a custom extension to a cc-modeEmacs:将自定义扩展挂接到 cc 模式
【发布时间】:2014-04-17 17:32:03
【问题描述】:

对于我的 c (c++) 文件,我将此对 cc 模式的引用添加到我的 .emacs 文件中:

(setq c-default-style "stroustrup"
c-basic-offset 4)

我想将其用于自定义扩展名“.dec”。我试图天真地调整这个SO question

(defun my-decaf-mode ()   
    (when (and (stringp buffer-file-name)   
           (string-match "\\.dec\\'" buffer-file-name))   

           (setq c-default-style "stroustrup")    
           (c-basic-offset 4)) )    

(add-hook 'find-file-hook 'my-decaf-mode)   

这不起作用(我用 C 语言写了几行;不存在为文件提供 .c 扩展名的支持)。我还尝试了实际的自定义类型,如

           (setq c-default-style "stroustrup"    
           c-basic-offset 4)) )    

我怎样才能做到这一点?

【问题讨论】:

  • 像这样的东西怎么样:(add-to-list 'auto-mode-alist '("\\.dec\\'" . c-mode)),然后使用类似c-mode-hook的东西——例如,(add-hook 'c-mode-hook 'my-decaf-mode)
  • @lawlist:感谢您的建议。你能把这个打出来吗?我不太确定用什么替换什么? :)(我的 emacs 定制技能还很初级)
  • 您真的想创建自己的主模式,还是只想在c-mode*.dec 扩展时添加一些额外的东西?
  • @lawlist:我想要的是,只要 emacs 看到 .dec 扩展名,它就应该使用“stroustrup”类型的 cc-mode(另外一个规范是缩进大小为 4) )。 (如果任何其他模式更容易获得,“stroustrup”风格是可选的;比如说,“K&R”也不错)
  • @lawlist:酷!这似乎可以解决问题(也许它说将 .dec 文件视为 .c 文件,并且由于 .c 已经在我的 .emacs 文件中进行了修改,因此 .dec 被重定向到相同的修改)。我可以建议将您的第一条评论复制到答案中,以便我投票和接受吗?

标签: emacs elisp customization


【解决方案1】:

此答案假定函数 my-decaf-mode 完全符合原始发布者的要求,并且唯一需要的是将 *.dec 扩展文件与 c-mode 关联,然后在主要时调用函数 my-decaf-mode模式c-mode 在缓冲区中被激活:

(add-to-list 'auto-mode-alist '("\\.dec\\'" . c-mode))

(add-hook 'c-mode-hook 'my-decaf-mode)

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 2015-01-14
    相关资源
    最近更新 更多