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

Emacs:如何跳转到.el文件中的函数定义?

关于Emacs中跳转到.el文件中的函数定义,可以使用以下几种方法:

  1. 使用find-function命令:

在Emacs中,可以使用find-function命令来跳转到.el文件中的函数定义。具体操作如下:

  • 按下M-x(即按下Alt键和x键)
  • 输入find-function并按回车键
  • 输入函数名称并按回车键

这样,Emacs会自动跳转到对应函数的定义处。

  1. 使用imenu插件:

imenu是一个Emacs的插件,可以帮助用户快速跳转到.el文件中的函数定义。使用imenu的方法如下:

  • 在Emacs中安装imenu插件(可以使用package.el或者straight.el等插件管理工具)
  • 在Emacs配置文件中添加以下代码:
代码语言:txt
复制
(require 'imenu)
(setq imenu-auto-rescan t)
(setq imenu-use-popup-menu t)
(setq imenu-max-item-length 80)
(setq imenu-sort-function 'imenu--sort-by-name)
(add-hook 'emacs-lisp-mode-hook
          (lambda ()
            (imenu-add-to-menubar "Functions")))
  • 重新加载配置文件

这样,在Emacs中打开.el文件时,就可以使用imenu插件快速跳转到函数定义处了。

  1. 使用xref插件:

xref是一个Emacs的插件,可以帮助用户快速跳转到.el文件中的函数定义。使用xref的方法如下:

  • 在Emacs中安装xref插件(可以使用package.el或者straight.el等插件管理工具)
  • 在Emacs配置文件中添加以下代码:
代码语言:txt
复制
(require 'xref)
(define-key emacs-lisp-mode-map (kbd "M-.") 'xref-find-definitions)
(define-key emacs-lisp-mode-map (kbd "M-,") 'xref-pop-marker-stack)
  • 重新加载配置文件

这样,在Emacs中打开.el文件时,就可以使用xref插件快速跳转到函数定义处了。

总之,Emacs中跳转到.el文件中的函数定义有多种方法,可以根据自己的需求选择合适的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法

脚本文件很简单,就是由一堆命令构成的,里面第一行不是 function 开头,这种文件比如是encrypt.m编写好后直接点F5或者运行键运行就行,不存在出现诸如“未定义函数或变量”的问题; 函数文件就相对复杂一些...目录 问题提出 解决办法 情况一:文件路径与系统当前路径不匹配 情况二:函数名与文件名不一致 情况三:命令窗口中直接写函数名 问题提出 在函数文件中,很可能会出现如下图这样的问题: ?...这张图就是文件名与函数名不一致的情况,这也会导致“未定义函数或变量’encrypt’”这种问题的出现,解决办法就是把文件名改成“encrypt.m”或者将函数名改为hello(n)即可。...这种情况除非已经在函数文件中定义了函数名才会避免。否则没有函数文件直接写这条命令语句肯定是不可行的。 最后,给出排除了所有报错可能,正确得到运行结果: ? OK!...以上就是关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法的总结。希望能帮助到更多小伙伴! 大家有什么想法或者发现新的问题及解决办法别忘了在评论区告诉我哦! 欢迎评论,感谢阅读! END

12.3K41
  • 如何避免 JavaScript 模块化中的函数未定义陷阱

    但是,当将普通 JavaScript 文件转换为模块时,我们可能会发现一些函数突然“消失”了,即浏览器控制台报错提示函数未定义。...假设在一个普通的 JavaScript 文件中,我们编写了如下代码,这段代码定义了一个 pageLoad 函数,用于在页面加载时执行一些初始化操作: // script.js function pageLoad...全局变量的问题:为什么普通脚本中的全局变量或函数在模块化后不再可用 由于模块的作用域是私有的,导致在普通脚本中定义的全局变量或函数,在模块化后无法直接作为全局对象的一部分被访问。...以下是模块和普通脚本的关键区别: 普通脚本的全局作用域:在非模块化文件中,所有定义的变量和函数都会自动成为全局对象(window)的一部分,因此像 pageLoad 这样的函数可以直接被 window.onload...解决方案 当 JavaScript 文件转换为模块后,出现函数未定义的问题有两种主要的解决方案,我们可以根据项目的实际需求进行选择。

    12510

    一名Clojurian的Emacs配置

    )原则,我照着各种插件的说明文档中,把配置项复制粘贴到init.el文件当中,运行起来没有问题就好。...随着自定义的内容变多,init.el文件也急剧膨胀起来。膨胀本来算不上问题,但我是个比较有操守的程序员,臃肿的代码是我极力避免的坏味道(bad smell)。...接下来,只需要使用c-h v和c-h f查看elisp中定义的变量函数就能很快上手自行配置。...模块化 如果把什么东西都揉到init.el文件中,这个文件一定会很快变得臃肿不堪。为了解决这个问题,需要引入模块化的思想——把特定功能的配置放到独立的文件中,然后require进来。...按照惯例,我在~/.emacs.d目录下建立一个lisp目录用于存放所有自定义的模块文件,随后在init.el中加入下面这句代码,意在把lisp目录加到emacs的加载路径列表里。

    2.8K20

    Emacs001学用Emacs之入门:关于配置文件

    本文主要解决如下三个问题 emacs的配置文件在哪儿? 使用的是什么语法? 怎么读配置文件(已经以后怎么自定义配置) emacs配置文件在哪儿 1. 使用单个文件: ~/.emacs 。...这种方法把所有初始化函数放在一个文件里,设置起来简单,但是一旦插件多了这个文件就会变得很长很乱。 2. 使用目录: ~/.emacs.d/ 。...所有配置文件都放在该目录下,并且Emacs启动时会自动执行该目录下名为 init.el 的文件。...虽说只有一个文件会被自动执行,但可以在 init.el 里执行其它的函数,所以 init.el 可以变得很简洁;使用Emacs的 Feature 机制(???)...,可以很方便地把具体的初始化工作按类别分在其余文件中。推荐的方法。

    3K40

    project.el 使用说明

    在之前的文章中就多次提到过 28 版本的 project.el 是如何好用,但一直没去详细介绍,这篇文章就来填上这个坑。一句话总结,project.el 完全可以替换 projectile[1]。...根目录 在日常编程中,Emacs 的很多包都依赖一个功能:查找当前项目的根目录,比如 lsp-mode、citre 等。...在 project.el 中,默认只支持 VC[3] 中的 Git,即 project-try-vc,但可以自定义找根目录的方式,配置如下: (defun my/project-try-local (dir...))))))) (setq project-find-functions '(my/project-try-local project-try-vc)) my/project-try-local 函数定义了常用编程语言的依赖描述文件...作为额外的补充,可以通过创建一个名为 .project 的文件,用作根目录的标识,与 .projectile 类似 该函数返回一个 cons,car 为项目类型,这里定义为 local,cdr 为根目录

    42110

    用了VS Code、IDEA等十几款编辑器后,我总结出优秀编辑器的特质

    接着使用 vim 中的典型动作,例如$(转到行尾)、f(转到在 f 之后键入的下一个字符的第一个匹配项,例如f(将使光标移至下一个 (上)、%(转到匹配的定界符)或w(转到下一个单词的开头)/b(转到上一个单词的开头...它有几种模式,具体取决于你要执行的移动类型: 按行:此模式允许你跳至当前(或所有打开的)缓冲区中的任何行。 按单词:此模式允许你跳转到当前(或所有打开的)缓冲区中的任何“单词”。...按字符:如果单词模式无法跳转到特殊的运算符或字符(因为无法识别为单词),则可以使用此模式跳转到当前缓冲区(或所有打开的缓冲区)中的任何字符。...2 其他模态技巧 对模态编辑而言,以下是我希望编辑器具备的功能列表,当然不止这些: C-i和C-o:这些使我可以跳转到缓冲区中的某个文件 / 某个位置,然后返回到C-o之前我所在的位置,或者输入C-i...它能为你做很多事情,其中一些真的给我留下深刻印象: 允许我在函数内选择代码块的重构机制,要求编辑器“将其移至专用函数中”。

    1.8K10

    如何在 Go 函数中获取调用者的函数名、文件名、行号...

    如果让我们用 Go 设计一个Log Facade,就需要我们自己在门面里获取调用者的函数名、文件位置了,那么在Go里面怎么实现这个功能呢?...) Caller 函数会报告当前 Go 程序调用栈所执行的函数的文件和行号信息。...//获取的是 CallerA函数的调用者的调用栈 pc1, file1, lineNo1, ok1 := runtime.Caller(1) } 函数的返回值为调用栈标识符、带路径的完整文件名...、该调用在文件中的行号。...获取调用者的函数名 runtime.Caller 返回值中第一个返回值是一个调用栈标识,通过它我们能拿到调用栈的函数信息 *runtime.Func,再进一步获取到调用者的函数名字,这里面会用到的函数和方法如下

    6.7K20

    Emacs 28 新特性介绍

    这篇文章就来介绍 Emacs 28 中,笔者个人觉得比较实用的功能,完整列表可参考 NEWS[3] ( M-x view-emacs-news ),最后会介绍如何在 macOS 上编译。...与 flush-lines 命令类似,但是匹配的行会作为整体加到 kill ring 中 • 新配置 kill-transform-function 字符在添加到 kill ring 中的预处理函数 •...• remove-hook 改成 interactive 命令 • 新增命令 shortdoc-display-group 之前节目[7]中多次提到过的功能,按函数类型归类,展示其用法 shortdoc...,nil 表示 tar.gz • 新配置 dired-copy-dereference 拷贝时是否跟随源文件中的符号链接 • Org 升级到 9.5 版本 • NonGNU[8] ELPA 默认开启 •...positional 参数已经被淘汰 编译方式 看了上面那么多新功能,读者可能已经按捺不住内心的喜悦,这里就来介绍如何在 macOS 中编译 28 版本,其他操作系统方式类似。

    97730

    Emacs 启动时间优化实践

    截至发表本文前,优化后的配置运行了三周多,体验和之前无异。 目标 Emacs 中提供了一个函数来记录启动时长,即 emacs-init-time ,后文也用这个时间作为优化目标。...可以方便的自定义 project-root ,对于 monorepo 来说尤为重要,而且 lsp-mode/citre 之类的工具也都依赖这个 3. project 内搜索文件要快 projectile...我也是调教了很久才用的比较舒服,但感觉还是太重,于是想看看能否用 Emacs 自带的 project.el 来替代它,通过一番搜索,发现 28 版本的 project.el 通过一些简单配置即可达到...优化前的配置是放在一个大 org 文件中,即所谓的『文学式编程』。...(org-babel-load-file (expand-file-name "core.org" user-emacs-directory)) 优化后是拆分到多个 el 文件中,使用 load-file

    98620

    死磕python(1)

    写程序也讲究一个感觉,你需要一个字母一个字母地把代码自己敲进去,在敲代码的过程中,初学者经常会敲错代码:拼写不对,大小写不对,混用中英文标点,混用空格和Tab键,所以,你需要仔细地检查、对照,才能以最快的速度掌握如何写程序...Vim 不需要花费太多的学习时间,一旦你需要一个无缝的编程体验,那么就会把 Vim 集成到你的工作流中。...Emacs GNU Emacs 是可扩展,自定义的文本编辑器,甚至是更多的功能。Emacs 的核心是 Emacs Lisp 解析器,但是支持文本编辑。...notepad++(特别推荐) ①、Notepad++中文版内置支持多达 27 种语法高亮度显示(囊括各种常见的源代码、脚本,值得一提的是,完美支持 .nfo 文件查看),也支持自定义语言;...②、可自动检测文件类型,根据关键字显示节点,节点可自由折叠/打开,代码显示得非常有层次感!

    46631

    Emacs Tree-sitter 初体验

    Tree-sitter 简介 Emacs 29 的一大亮点就是原生支持了 tree-sitter[1](后文简称 ts),它的官网是这么定义的: Tree-sitter is a parser generator...在 Emacs 中,之前都是采用正则的方式去解析语言的语法结构,这种方式虽然大多数情况是没有问题的,但主要有以下几个问题: 正则比较消耗 CPU,导致对大文件进行高亮时容易导致 Emacs 卡主,参见:.../configure --with-tree-sitter 不同平台的包管理器都有预编译好的动态文件,在 macOS 上可以用如下命令: brew install tree-sitter 编译完 Emacs.../releases Emacs 默认从 treesit-extra-load-path 指定的路径去加载动态链接库,如果这个值是 nil ,它默认会从 user-emacs-directory 下的 tree-sitter...,需要开启 Emacs 对应的 mode 来使用,比如 c-mode 对应的 c-ts-mode ,Emacs 为不同的语言重新实现了一个以 ts-mode 结尾的新 mode,在 29 版本中,主要有如下

    1.4K10

    Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?

    今天小麦苗给大家分享的是Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?。 Oracle中如何导出存储过程、函数、包和触发器的定义语句?...如何导出表的结构?如何导出索引的创建语句?...---- 总体来说有两种方式来获取,第一,利用系统包DBMS_METADATA包中的GET_DDL函数来获取,第二,利用exp或expdp来获取。...下面来看第一种方式,如何利用系统包DBMS_METADATA包中的GET_DDL函数来获取对象的定义语句。...另外,使用imp工具的indexfile选项也可以把dmp文件中的表和索引的创建语句导出而不导入任何对象,命令如下: imp userid/userid@service_name file=/tmp/exp_ddl_lhr

    5.5K10
    领券