File extension hook in Emacs

北城余情 提交于 2019-11-27 03:49:05

问题


I'd like to run a hook for specific file extensions (i.e. not modes). I have zero experience with elisp, so I cargo-cult coded this:

(defun set_tab_mode ()
    (when (looking-at-p "\\.cat")
    (insert "OK")
    (orgtbl-mode)))

(add-hook 'find-file-hook 'set_tab_mode)

(Should set orgtbl minor mode for files with suffix .cat and insert text "OK", i.e. it's not only a mode setting question). Unfortunately it does not work.


回答1:


Try this:

(defun my-set-tab-mode ()
  (when (and (stringp buffer-file-name)
             (string-match "\\.cat\\'" buffer-file-name))
    (insert "OK")
    (orgtbl-mode)))

(add-hook 'find-file-hook 'my-set-tab-mode)



回答2:


You can use lambda in auto-mode-alist:

(add-to-list 'auto-mode-alist
             '("\\.cat\\'" . (lambda ()
                               ;; add major mode setting here, if needed, for example:
                               ;; (text-mode)
                               (insert "OK")
                               (turn-on-orgtbl))))


来源:https://stackoverflow.com/questions/6886643/file-extension-hook-in-emacs

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!