如何从自动模式警报(Emacs)中删除项目

Dan*_*iel 3 emacs list

我以为这样做很简单,但是我被困住了。

当我在〜/ .emacs中添加八度模式时

(add-to-list 'auto-mode-alist ("\\.m$" . octave-mode))
Run Code Online (Sandbox Code Playgroud)

打开一个Octave文件.m,我转而以OBJC主模式结束...这是因为auto-mode-alist包含:

(\.m\' . objc-mode)
Run Code Online (Sandbox Code Playgroud)

在A列表中排名第一。

我试过了:

(setq auto-mode-alist (delete '( \.m\' . objc-mode) auto-mode-alist))
Run Code Online (Sandbox Code Playgroud)

我什至尝试过:

(setq ama '())
(setq objc '(\.m\' . objc-mode))
   (dolist (item auto-mode-alist)
      (if (not (eq (cdr (last objc)) (cdr (last item))))
          (setq ama (list ama item))))
 (setq auto-mode-alist ama)
Run Code Online (Sandbox Code Playgroud)

从列表中删除objc-mode或确保octave-mode取代它的任何建议都很好。

Mic*_*man 7

这里基本上有两个问题。一种是如何从列表中删除元素。另一个是如何以*.m八度模式自动打开文件。您无需删除该元素即可覆盖它。提供的表格

(add-to-list 'auto-mode-alist ("\\.m$" . octave-mode))
Run Code Online (Sandbox Code Playgroud)

导致错误。相反,您应该使用

(add-to-list 'auto-mode-alist '("\\.m$" . octave-mode))
Run Code Online (Sandbox Code Playgroud)

或更好:

(add-to-list 'auto-mode-alist '("\\.m\\'" . octave-mode))
Run Code Online (Sandbox Code Playgroud)

这两种形式会将元素添加到关联列表的开头,这意味着将首先根据该文件名检查文件名,而永远不会将其添加到列表下方的objc-mode元素。

如果您确实要从列表中删除该元素,则有两种方法。

一种仅删除确切的con单元格的方法'("\\.m\\'" . objc-mode)

(setq auto-mode-alist (delete '("\\.m\\'" . objc-mode) auto-mode-alist))
Run Code Online (Sandbox Code Playgroud)

删除关联列表中与"\\.m\\'"以下内容关联的所有内容的另一种方法:

(require 'cl-lib)
(cl-remove "\\.m\\'" auto-mode-alist :test 'equal :key 'car)
Run Code Online (Sandbox Code Playgroud)