如果我在基本模式下的缓冲区中有一个Python(或任何其他语言)文件,是否有一个命令,我可以使缓冲区自动检测它应该在什么语言,并切换因此?在Emacs中自动检测语言
2
A
回答
6
简单的答案是:Alt键 + X正常模式进入
normal-mode is an interactive compiled Lisp function in `files.el'.
(normal-mode &optional find-file)
Choose the major mode for this buffer automatically.
Also sets up any specified local variables of the file.
Uses the visited file name, the -*- line, and the local variables spec.
This function is called automatically from `find-file'. In that case,
we may set up the file-specified mode and local variables,
depending on the value of `enable-local-variables'.
In addition, if `local-enable-local-variables' is nil, we do
not set local variables (though we do notice a mode specified with -*-.)
`enable-local-variables' is ignored if you run `normal-mode' interactively,
or from Lisp without specifying the optional argument find-file;
in that case, this function acts as if `enable-local-variables' were t.
只会工作,不过,如果在缓冲区一些提示(例如#!/bin/python
在文件顶部)或缓冲区支持的文件名(如果有的话)有一个python扩展名(还有其他方法;请参阅上面的定义以及关于set-auto-mode
的更多信息)。
如果您知道您想要的模式,您还可以专门设置模式。我有这个在我的.emacs:
;;;; ------------------------------------------------------------------------
;;;; --- F3 - multi-purpose prefix keymap
;;;; ------------------------------------------------------------------------
(setq my-F3-keymap (make-sparse-keymap))
(global-set-key [(f3)] my-F3-keymap)
;; --- m -- generic (major) modes ---
(require 'generic)
(require 'generic-x)
;; stolen shamelessly from generic-x Samba mode
(define-generic-mode 'generic-rc-mode
(list ?#)
nil
'(
("^\\s-*\\(.+\\)=\\([^\r\n]*\\)"
(1 'font-lock-variable-name-face)
(2 'font-lock-type-face))
)
(list "\\(/\\.[^/]+rc$\\|\\.rc$\\)" "weblogic[^/\\]*\\.conf\\'" "oc4j[^/\\]*\\.conf\\'" "tomcat[^/\\]*\\.conf\\'")
nil
"Generic RC mode.")
(setq my-F3:m-keymap (make-sparse-keymap))
(define-key my-F3-keymap [(m)] my-F3:m-keymap)
(define-key my-F3:m-keymap [(a)] 'apache-conf-generic-mode)
(define-key my-F3:m-keymap [(b)] 'bat-generic-mode)
(define-key my-F3:m-keymap [(f)] 'fundamental-mode)
(define-key my-F3:m-keymap [(i)] 'ini-generic-mode)
(define-key my-F3:m-keymap [(j)] 'javascript-generic-mode)
(define-key my-F3:m-keymap [(J)] 'java-properties-generic-mode)
(define-key my-F3:m-keymap [(l)] 'emacs-lisp-mode)
(define-key my-F3:m-keymap [(L)] 'lisp-interaction-mode)
(define-key my-F3:m-keymap [(n)] 'nxml-mode)
(define-key my-F3:m-keymap [(p)] 'cperl-mode)
(define-key my-F3:m-keymap [(r)] 'generic-rc-mode)
(define-key my-F3:m-keymap [(s)] 'sgml-mode)
(define-key my-F3:m-keymap [(S)] 'shell-script-mode)
(define-key my-F3:m-keymap [(t)] 'text-mode)
;; --- M -- generic (minor) modes ---
(setq my-F3:M-keymap (make-sparse-keymap))
(define-key my-F3-keymap [(M)] my-F3:M-keymap)
(define-key my-F3:M-keymap [(l)] 'longlines-mode)
(define-key my-F3:M-keymap [(v)] 'view-mode)
(define-key my-F3:M-keymap [(V)] 'visible-whitespace-mode)
有了它,我可以做我的设置主要模式CPerl与视图模式的次要模式:F3 米pF3中号v
1
嗯,那不是上面这么简单的答案。
更简单的答案是:Emacs只学习了如何识别22.1版本(2007年6月)中的Python文件。如果您使用的是较旧的emacs,那可以解释它。使用较新的版本,至少如果文件名以“.py”结尾,它应该正常工作。
相关问题
- 1. Zend翻译自动检测语言吗?
- 2. highlight.js不会自动检测语言
- 3. 浏览器自动检测语言
- 4. 语言检测
- 5. 语言检测
- 6. 检测iOS语言
- 7. CLI语言检测
- 8. 语言检测器
- 9. Solr语言检测
- 10. Nutch Solr自动语言检测 - 特定于语言的字段不出现
- 11. Emacs。拼写检查“飞”2种语言
- 12. 在java中检测浏览器语言
- 13. Xamarin Forms本地化:语言被自动检测到?
- 14. 检测用户的首选语言和谷歌翻译自动
- 15. 的Python KeyError异常:“”自动语言检测
- 16. 自动检测语言并用javascript显示正确的一个
- 17. 检测自动定位的浏览器语言
- 18. 语言检测API/Library
- 19. 检测NSString的语言
- 20. 浏览器语言检测
- 21. 检测输入语言?
- 22. 较短的语言检测
- 23. 检测Android语言支持
- 24. python网站语言检测
- 25. 检测编程语言
- 26. 检测文本的语言
- 27. NLTK和语言检测
- 28. 如何检测JavaScript中的语言?
- 29. Joomla中的语言检测php
- 30. Python中的RGB颜色检测语言
您可以使用'auto-mode-alist'通过文件扩展名设置模式,至少返回到版本18.x,IIRC(18.58或18.85是我记得使用的第一个版本)。 – 2010-03-07 05:04:49