首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何确定当前是否使用Elisp中的Emacs启用了特定模式?

在 Emacs 编辑器中,可以通过以下几种方式确定是否启用了特定模式:

1. 查看当前缓冲区的模式行(Mode Line)

Emacs 的窗口底部有一行称为模式行(Mode Line),它显示了当前缓冲区的状态信息,包括当前启用的模式。你可以在模式行中查找特定模式的指示符。

例如,如果你想检查是否启用了 python-mode,可以在 Python 文件中打开 Emacs,然后查看模式行。通常,python-mode 会在模式行中显示 Python 字样。

2. 使用 major-mode 函数

你可以在 Emacs Lisp 中使用 major-mode 函数来确定当前缓冲区的主要模式。例如:

代码语言:txt
复制
(defun check-if-python-mode ()
  (interactive)
  (if (eq major-mode 'python-mode)
      (message "Python mode is enabled.")
    (message "Python mode is not enabled.")))

将上述代码添加到你的 Emacs 配置文件中,然后在 Emacs 中调用 check-if-python-mode 函数,它会告诉你当前是否启用了 python-mode

3. 使用 describe-mode 函数

Emacs 提供了 describe-mode 函数,可以用来获取当前模式的详细信息。你可以在 Emacs 中调用这个函数,它会打开一个帮助窗口,显示当前模式的描述和相关信息。

代码语言:txt
复制
(describe-mode)

4. 查看 buffer-local-variables

每个缓冲区都可以有自己的一组局部变量,包括当前启用的模式。你可以使用 buffer-local-variables 函数来查看当前缓冲区的局部变量。

代码语言:txt
复制
(buffer-local-variables)

这个函数会返回一个包含当前缓冲区所有局部变量的列表,你可以从中查找模式相关的变量。

应用场景

确定特定模式是否启用在多种场景下都很重要,例如:

  • 自动化脚本:在编写自动化脚本时,你可能需要根据当前启用的模式执行不同的操作。
  • 插件开发:在开发 Emacs 插件时,你可能需要检查特定模式是否启用,以便执行相应的逻辑。
  • 调试:在调试 Emacs 配置或插件时,确定当前启用的模式可以帮助你快速定位问题。

常见问题及解决方法

问题:为什么 major-mode 返回的不是预期的模式?

原因

  • 可能是因为当前缓冲区被手动切换到了另一种模式。
  • 可能是因为某个插件或配置错误地修改了当前模式。

解决方法

  • 检查当前缓冲区的模式行,确认实际启用的模式。
  • 检查你的 Emacs 配置文件和插件,确保没有错误地修改模式。
  • 使用 describe-mode 函数获取更多关于当前模式的信息。

问题:如何在不切换缓冲区的情况下检查其他缓冲区的模式?

解决方法

  • 使用 with-current-buffer 函数切换到目标缓冲区,然后检查其模式。
代码语言:txt
复制
(defun check-mode-in-another-buffer (buffer-name)
  (with-current-buffer buffer-name
    (message "Mode in %s: %s" buffer-name major-mode)))

将上述代码添加到你的 Emacs 配置文件中,然后在 Emacs 中调用 check-mode-in-another-buffer 函数,传入目标缓冲区的名称,它会告诉你该缓冲区的当前模式。

参考链接

通过以上方法,你可以确定 Emacs 中是否启用了特定模式,并解决相关问题。

相关搜索:如何检查变量是否设置为elisp/emacs中的内容?如何使用elisp获取emacs中缓冲区的登录主目录?如何确定maven应用程序中是否使用了依赖关系中的任何类?如何确定网站或web应用程序中是否使用了vue.js?如何使用archunit验证方法批注是否使用了具有特定值的属性如何检查一个函数是否使用了特定的装饰器?如何检查在php工程和linux环境中是否使用了特定文件?如何使用express确定节点js中的特定successRedirect?如何使用c#中的html Agilty Pack确定Html中的特定类是否存在如何使用LINQ来确定是否存在特定的属性值?如何测试是否在使用RSpec从DB in Rails中拉出的特定对象上调用了方法?如何确定对象数组中是否存在具有特定数据属性的对象?在javascript中,我可以问浏览器是否为特定的(非当前的)网站启用了flash吗?如何使用emacs键盘映射将当前行滚动到PyCharm 1.5.4中的屏幕中心如何检查字典中是否存在具有特定模式的值?是否可以使用TypeScript来确定字符串字面量联合中的所有类型是否至少使用了一次?如何在Xtend中找出是否使用了Xtext语法中的可选特性?是否可以使用命令行确定YARN中当前活动的调度器插件?不确定是否正确使用了匹配函数,或者r中的此函数中存在其他错误如何查看当前用户在WooCommerce中是否有特定产品的待处理订单?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

30岁文转码:我用了三年时间从哲学家变成知名软件项目核心开发

此外,Emacs 还是自文档化的,意味着它能理解变量的值何时发生变化、并在对应的帮助缓冲区中通知用户。同理,Emacs 也能反映出各类函数的新值与当前状况的关联。...Dired 可以逐个标记条目,也可以使用正则表达式和其他高级命令。 记录一组以 Dired 为起点的操作(「键盘宏」),跳转至特定文件,执行某些变更、返回文件管理器,再在下一个文件中重复这个过程。...所以我用的其实是 Emacs 当中的极简化“专注模式”,这种模式在演示、阅读、写作和编程等场景中都有很好的表现。 而且我在 Emacs 中的所有操作都只需要实现一次。...前者体现在代码库遵循的许可上,后者则体现在代码库自身的内容——即整个使用感受,以及代码库如何与特定环境中的其他程序或工作流程相匹配。我觉得软件自由这个议题特别有意思,值得深入发掘。...Emacs 则可以实时评估代码,而且开放完整的源代码及相关说明文档。正是有了这样的开放性,我才能了解如何定义函数,再通过反复试验编写出人生中第一条自定义 Elisp。

38130

如何使用Columbo识别受攻击数据库中的特定模式

关于Columbo Columbo是一款计算机信息取证与安全分析工具,可以帮助广大研究人员识别受攻击数据库中的特定模式。...该工具可以将数据拆分成很小的数据区块,并使用模式识别和机器学习模型来识别攻击者的入侵行为以及在受感染Windows平台中的感染位置,然后给出建议表格。...需要注意的是,当前版本的Columbo仅支持在Windows操作系统平台上执行任务。...我们使用了不同的测试用例来训练该模型,并以最大限度提升了输出数据的准确性,以及减少误报的出现。但是,工具输出的假阳性依然会存在,因此我们目前仍在定期更新模型。...、确定进程是否负责执行其他进程、收集整理每个进程的上述信息并提供给用户。

3.5K60
  • Emacs Lisp2

    Emacs: (在windows中可以双击emacs图标,在Linux中可以输入% emacs & ),;; 然后在键盘上键入q 跳过系统欢迎的信息,;; 先观察在Emacs屏幕的底部,会给出一堆关于当前的工作情况的信息...;;;; ;; 如何切换Emacs的工作模式 ;; Emacs有各种各样功能各异的模式,工作模式的含义其实就是Emacs对当前的文本编辑工作;; 更加的敏感,比如高亮和缩进,并且支持一些特殊的命令。...;; 为了实验本教程中的lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下,;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...并且键入Ctrl-j (之后将简写成C-j);; C-j是一个快捷命令,在后台,该快捷键将调用求值命令,并且把计算的结果;; 插入到当前的缓冲区中;; 如果不希望Emacs在缓冲区中插入计算结果,我们还可以在表达式的末尾使用...中安装了这个hello函数,这个函数就成为了Emacs的一部分,知道你退出Emacs或者改变hello的定义;; 从下面开始,我们将不再提醒读者使用C-x C-e来定义函数和执行ELisp指令;; 在Elisp

    98740

    Emacs Lisp

    ;; ;; ;; 如何切换Emacs的工作模式 ;; Emacs有各种各样功能各异的模式,工作模式的含义其实就是Emacs对当前的文本编辑工作 ;; 更加的敏感,比如高亮和缩进,并且支持一些特殊的命令...;; 为了实验本教程中的lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...;; Elisp中表达式可以通过括号来嵌套 (+ 2 (+ 1 1)) ;; 在lisp-interaction-mode模式中,我们可以直接计算一个表达式,计算的方法是 (+ 3 (+ 1 2))...中安装了这个hello函数,这个函数就成为了Emacs的一部分,知道你退出Emacs或者改变hello的定义 ;; 从下面开始,我们将不再提醒读者使用C-x C-e来定义函数和执行ELisp指令 ;...name))) ;; 执行这个函数结果是"Hello you",并且光标换到下一行 (hello "you") ;; 下面我们再设计一个greeting函数,该函数接受一个参数name, ;; 在函数体的内部又使用了

    2.2K30

    Emacs 28 新特性介绍

    对于 Emacs 拥趸来说,新功能要等上一两年才能使用是无法接受的。...这篇文章就来介绍 Emacs 28 中,笔者个人觉得比较实用的功能,完整列表可参考 NEWS[3] ( M-x view-emacs-news ),最后会介绍如何在 macOS 上编译。...,nil 表示 tar.gz • 新配置 dired-copy-dereference 拷贝时是否跟随源文件中的符号链接 • Org 升级到 9.5 版本 • NonGNU[8] ELPA 默认开启 •...• project 更新了一堆实用的命令,后面会单独写一篇文章介绍 28 中的 project 使用方式。...中的 positional 参数已经被淘汰 编译方式 看了上面那么多新功能,读者可能已经按捺不住内心的喜悦,这里就来介绍如何在 macOS 中编译 28 版本,其他操作系统方式类似。

    97830

    Emacs Lisp

    ;; ;; ;; 如何切换Emacs的工作模式 ;; Emacs有各种各样功能各异的模式,工作模式的含义其实就是Emacs对当前的文本编辑工作 ;; 更加的敏感,比如高亮和缩进,并且支持一些特殊的命令...;; 为了实验本教程中的lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...;; Elisp中表达式可以通过括号来嵌套 (+ 2 (+ 1 1)) ;; 在lisp-interaction-mode模式中,我们可以直接计算一个表达式,计算的方法是 (+ 3 (+ 1 2))...中安装了这个hello函数,这个函数就成为了Emacs的一部分,知道你退出Emacs或者改变hello的定义 ;; 从下面开始,我们将不再提醒读者使用C-x C-e来定义函数和执行ELisp指令 ;...name))) ;; 执行这个函数结果是"Hello you",并且光标换到下一行 (hello "you") ;; 下面我们再设计一个greeting函数,该函数接受一个参数name, ;; 在函数体的内部又使用了

    2.3K40

    使用 RustC 开发 Emacs 插件

    Emacs 在 25 版本后,支持了动态模块(dynamic modules),这为 Emacs 插件的开发打开了新的一扇大门,任何能够编译生成符合 Emacs ABI 要求的语言都可以使用。...本文就来介绍,如何使用 C/Rust 两种语言来进行 Emacs 动态模块的开发。本文所有代码可在 emacs-dynamic-module 这里找到。...Values 这里着重介绍下如何将 C 里面的函数导出到 ELisp 中: emacs_value c_add(emacs_env *env, ptrdiff_t nargs, emacs_value...(env, "defalias"), 2, args); } 在 emacs_module_init 中调用 define_elisp_function 即可将 c-add 导出到 ELisp 中,使用示例...,上面的宏使用了 Statement Expression,不是 C 语言的标准,是 GNU99 的扩展,但由于十分有用,大多数编译器都支持了这种语法(可通过 -std=gnu99 指定),所以可以放心使用

    86820

    编辑器专家的 Emacs 世界

    本期节目请来了一位使用 Emacs 15 年之久的编辑器专家领蜂,在高中竞赛时获奖后,父母送给他一台个人电脑,这打开了他的 Emacs 之旅。...由于其工作领域正好与编辑器相关,领蜂走上了一条专家型的 Emacs 学习路线,接触 Emacs 三天即开始上手 ELisp,他是怎么做的到?...30:05 浏览器内核发展之路与浏览器之战 • 00:38:30 在 Emacs 社区的活动 • 00:44:44 ELisp 解释器为什么选用动态作用域 • 00:52:28 学习 ELisp 的经历...• 01:00:12 Emacs 两种学习方式:专家模式与务实模式 • 01:08:57 极简风格的配置 • 01:16:36 推荐 Show Notes •嘉宾自我介绍 • 姓名:领蜂 • 网络 ID...Editor[10] • UE 为什么会逐渐消失 •10 Questions with Vim’s creator, Bram Moolenaar[11] 第八个问题 • 提问:如何确保 Vim 在可遇见的将来继续成功

    55110

    如何快速使用 ELisp 进行插件编写

    故事写到这里就差不多了,最终我 在李杀的网站上找到了答案,直接调用 (point) 即可获得当前位置的 position。...而且程序员都很懒、很忙,去仔细看 manual 不现实,而且 Emacs 的 manual 我感觉有些“重”了,文字太多了,看的累,我需要的仅仅是个很 copy 的示例,然后再根据我的需求改改就好了,就行...clojuredocs 那样,比如 reduce[2] 页面: 幸好在 Emacs China TG 组交流“心得”后,发现了 elisp-demos[3] 插件,可以在 helpful 页面中展示函数的用法...: 最后,再推荐一个教程,供有其他 Lisp 经验的程序员快速使用 ELisp。...• https://github.com/chrisdone/elisp-guide 引用链接 [1] feature: https://github.com/clojure-emacs/cider/pull

    80020

    与 Emacs 高手陈斌闲聊 Emacs

    本期节目请来了一位使用 Emacs 近十年的资深用户陈斌[1],他是著名文章《一年成为 Emacs 高手》[2]的作者,同时也是一位拥有近二十年软件开发经验的前辈。...抵触 Emacs 近十年后,陈斌用一年时间就成为了 Emacs 高手,他是怎么做到的?是什么样的契机让他打开了 Emacs 这个潘多拉魔盒? 作为一个拥有众多插件的开源软件维护者,如何处理用户的不满?...如何调节生活与维护的压力?陈斌给出了自己的答案。此外,节目里还聊到了 Emacs 与 VSCode/Vim 等开发理念上的区别,学习这些软知识,非常有助于加深对 Emacs 的理解。...嘉宾列举的一些 Emacs 技巧 • 00:21:30 Emacs 的开放性,与其他编辑器的区别,“乱” VS “自由” • 00:26:31 嘉宾学习 ELisp 的经历 • 00:30:02 嘉宾对维护开源项目的态度...可同时掌握 Emacs 与 Vim,而且还能彻底解决小指痛的问题 • abo-abo 大神的 ivy + swiper + counsel 全家桶 • vc-msg[17] 显示当前行的 git 信息

    1K10

    与 tumashu 聊 Emacs 中文输入法

    概要 本期节目请来了一位非科班的 Emacs 资深用户冯书(aka tumashu),Emacs 中文输入法 pyim[1] 的作者。作为一位卫健委信息中心的办事人员,他是如何接触到 Emacs 的?...pyim 的工作原理是怎么样的,与 emacs-rime[2] 有什么区别? 接触 Emacs 十余年后,嘉宾总结出一套五个阶段 Emacs 学习境界[3],每个境界需要的技能是什么?如何去突破?...:15:13 pyim 接手、维护经历 • 00:43:19 使用前缀树来做输入法的词库搜索 • 00:46:24 pyim 与 emacs-rime 实现方式的区别 • 01:03:42 是否会向周边人推销...emacs • 01:07:46 是否考虑过转成全职程序员 • 01:09:47 Emacs 学习的五种境界 • 01:17:02 八卦 • 01:18:19 分享 Show Notes •嘉宾自我介绍...把搜索的目标中的汉字转为拼音,然后再用输入的正则去匹配 • Child Frames[7]•弹出框三种方式1. posframe[8]2. popup[9]3.

    76320

    与 stardiviner 聊 Emacs 与他与众不同的人生经历

    本期节目又请来了一资深 Emacs 用户 stardiviner[1],同时也是一名淘宝店主,用来售卖自己的 IT 技能。 从 org-mode 的使用者到贡献者,他是如何做到的?...在一次次的选择中,他逐渐远离“常人”走过的路,这其中或许有一时的鲁莽,但更多的是他勇于突破传统的束缚,逐渐形成了其独特的做事风格。近一个半小时的内容,“湿货”十足,不容错过!...本期人物 • 主播:西瓜[2] • 嘉宾:stardiviner[3] 时间轴 • 00:02:09 嘉宾学习 Emacs 经历 • 00:10:35 org mode 介绍 • 00:15:15 Elisp...• kiwix[5] 在 Emacs 中离线搜索 Wikipedia •开淘宝店售卖咨询 • 19 年开始 • 顾客五花八门,高中生、大学生、清华、北大、以及海外的学生 • 为服务付费 •如何给服务定价...The Smart Way[7] • org-link-beautify[8] org 美化插件,方便区分不同格式的链接(PDF/图片/视频等) • Clojure[9] •主播的分享 • 使用 Emacs

    38820

    对 Mastering Emacs作者 Mickey Petersen 的采访

    它有这种时髦的绿色配色方案;很确定这是当时 Red Hat X Resources 的东西。但我可能是错的。尽管如此,我对 Emacs 的迷恋并没有持续多久。...当时它只是我试验过的一系列编辑器中的另一个工具。我可能选择了 Red Hat 附带的图形化界面,因为它默认启用了区域选择和语法突出显示等功能。...我可以查找命令和键;安装和编辑代码;甚至写一些 elisp! 我已经开始尝试使用 Org 模式,所以我创建了一个名为blogideas.org(当时博客风靡一时!)...这很乏味,因为我必须测试它们是否有效;他们会影响哪些电子邮件(以免我搞砸并洗劫我的电子邮件);然后针对特定的电子邮件,以确保过滤器对该特定电子邮件正常工作。...M-o而不是C-x o; C-x C-k杀死当前缓冲区;F1 打开Mx外壳;和其他一些小事。 对于与生产力相关的东西,我经常使用 Helm 来完成特定任务。

    79610

    一名Clojurian的Emacs配置

    "http://melpa.org/packages/")中的点号(dot)表示法也比较奇怪,其实这是lisp中的Dotted pair表示法,用法和普通的列表类似,但因为是pair的缘故,你可以使用(...对emacs lisp不熟悉不要紧,先找个教程练习一下它的用法,比如learnxinyminutes就非常不错。完成这个教程,大体不会对elisp犯怵了。...接下来,只需要使用c-h v和c-h f查看elisp中定义的变量函数就能很快上手自行配置。...模块化 如果把什么东西都揉到init.el文件中,这个文件一定会很快变得臃肿不堪。为了解决这个问题,需要引入模块化的思想——把特定功能的配置放到独立的文件中,然后require进来。...这种时候,我们就要求助于elisp的文档了。在emacs中按下c-h i获取主话题(topic)的菜单,然后点击Elisp进入它的操作指南。

    2.8K20

    10 个让你进入 Emacs 世界的技巧

    你与一个应用程序的交互会影响你的工作方式,所以如果 Emacs 中所需要的按键模式与特定任务不一致,那么就不要强迫自己使用 Emacs 来完成该任务。...探索新功能 Emacs 所做的大部分工作都是一个 elisp 函数,它可以从菜单选择和键盘快捷键调用,或者在某些情况下从特定事件中调用。...一个整天用 Emacs 写代码的人可能知道运行调试器或启动特定语言模式的所有键盘快捷键,但对 Org 模式或 Artist 模式一无所知。这很自然,也很好。...它的包管理器包含了帮助你编辑特定类型文本的模式(例如,如果你经常编辑 JSON 文件,你可以尝试使用 ejson 模式)、嵌入的应用程序、主题、拼写检查选项、linter 等。...如果你想让 Emacs 在你的计算生活中扮演重要角色,最终的关键是拥抱未知,开始使用 Emacs。磕磕绊绊地,直到你发现如何让它为你工作,然后安下心来,享受 40 年的舒适生活。

    82220

    Emacs 29快到了!我们能期待什么

    我必须承认我并不真正了解 Eglot,我个人使用 LSP 模式,但是随着 Emacs 核心的添加,我可能会尝试切换。...C# 的新主要模式 csharp-mode现在是 Emacs 的原生主要模式,并且基于cc-mode. 次要特征 在脚本中使用 Emacs 更容易!...那么现在,当创建这样一个文件时,它会在其名称中包含其当前状态的指纹,尽管它仍然会优先考虑一个emacs.pdmp文件(如果存在)。...更好的鼠标和触摸板支持 Emacs 现在使用 XInput 2,它使 Emacs 能够支持更多的输入事件,例如触摸板事件。例如,默认情况下,触摸板上的捏合手势会增大或减小当前缓冲区的文本大小。...Emacs 在 Windows 10(版本 1809)及更高版本中也遵循 Windows 的暗模式。 Emacs 现在还使用 Windows 的本机 API 来呈现图像。

    2.6K20

    与子龙山人聊 Emacs 与程序员修炼之道

    • 新手推荐 doom-emacs,spacemacs 历史包袱有些重 • 从 prelude[4] 那里学了不少 ELisp 知识 •是否需要把 Emacs 当作“操作系统” • 已经参加工作的人尤其要注意...,“自由”软件的意义就在于用最合适的工具解决问题 •嘉宾对新人学 Emacs 的建议 • 学生的话,在学习算法、操作系统时,使用 org mode 来记录学习过程,org-babel 来执行代码片段,这被称为..., make it better, make it faster • 在做项目时,不要迷失在细枝末节中,找到对你职业生涯最重要的部分,熟练掌握它 • 在漫长的职业生涯中跳槽时,要有一个长远的计划,朝一个方向不断前进...•如何在繁忙的工作中进行提升?...首推使用泛用性播客客户端订阅 RSS[13] 或在微信公众号 EmacsTalk[14] 中收听 2.

    57620
    领券