做异端中的异端 -- Emacs裸奔之路6: 不可能存在的跳转功能

news2025/1/10 21:27:05

当一个问题存在两难时,市面上就不太可能出现稳定的,大众化的解决方案。

这很多是一个哲学问题
两害权衡,
存在很强的个性差异.

这种问题需要自己解决,
这个就是为什么要使用Emacs或者Vim的原因。

今天分享的一个想法,就是调用跳转树的处理方案。
由于这里的操作很大的个性化及手工化,没有很合适分享的代码,只是提出方案,抛砖引玉。

摒弃IDE的一个后果就是无法方便的查看函数的调用栈.

在阅读源代码时,我们经常会经历这个刨根问底的过程:

  • A函数调用了B函数
  • 查看B函数的定义
  • B函数又调用了C函数
  • 查看C函数的定义
  • 如此反复,直到见底为止

而且这个过程要反复多次,因为需要反复琢磨,特别是一些大型项目,或者写得特别烂的代码,
没有几次来自跳转,不可能看明白。

那这个过程,是IDE可以解决的吗?

有个实战经验的人应该知道,IDE只是帮忙你跳到下一步,并不会记录这个过程,
这个过程才是重点,它是你思维流。你想到哪里,又从哪里想起另一个地方。
这个过程只有你自己才能记录,没有什么工具可能完成这样的需要。

因为记录的工作只是第一次要做,后面只是修补,是一种低频工作,所以可以手工完成!

我的方案是手工制作,利用脚本,做到半自动。

前期方案

我在Vim中与Emacs中都分别实现过这样的树,感觉非常精美,而且对付小项目非常实用。

在这里插入图片描述

目前方案

当我遇到QMK时,上面个方案几乎Hold不住了,
因为QMK源码非常庞大,从程序入口到最后的USB驱动,调用深度可以上20层!
这个时候,你要想办法折叠子树,不然这个树太长没有办法看。
另外如果要移动子树,还有大量工作要做。

当我发现Org这个包管理的标题深度不受限制时,我放弃了上面的方案,直接把标题当树节点,Org文档当成树!

Org自带的功能可以维护层次结构的树,包括子树折叠与展开,子树的整体移动,这些功能完美地克服上面的问题。

在这里插入图片描述

你要做的就是再写一些代码,以方便增加Org标题及增加跳转到指定文件某行的功能。

这个树虽然没有上面的精美,但非常实用,没有这个方案之前,我根本读不懂QMK源码。
利用Org的优级子树管理功能,现在我才能比较清楚QMK的来龙去脉,并解决一些个性化需要,像前文提到Ctrl-Alt-Shift-F13组合键。
QMK是一个Game changer,非常重要,直接的后果是Emacs可以开始正常使用,Emacs可就不是一个Game changer了,而是一卡车!

很显然没有这样的工具,单凭IDE或者其它语法分析工具,是无法完成复杂项目的阅读的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2254992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】ubuntu下一键配置vim

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:Linux权限(超详细彻底搞懂Linux的权限) 🔖流水不争,争的是滔滔…

华为的USG6000为什么不能ping通

前言: 防火墙usg6000v的镜像 链接: https://pan.baidu.com/s/1uLRk0-hnHRTLYLx1Pnplow?pwdtymp 提取码: tymp 看了好多毒文章,感觉写作业更有意思,可以了解新的知识 内容: 首先看毒文章是这样说的,华为的防火墙是…

【Linux】实战小项目-----Bash的简易版

目录 一、什么是Bash 二、实现Bash: 1、整体需求分析: 2、初始化: 3、分割字符串: 4、执行普通命令: 5、内建命令与特殊处理: 1、ls的颜色: 2、内建命令cd: 3、export&#…

windows文件下换行, linux上不换行 解决CR换行符替换为LF notepad++

html文件是用回车换行的,在windows电脑上,显示正常。 文件上传到linux服务器后,文件不换行了。只有一行。而且相关js插件也没法正常运行。 用notepad查看,显示尾部换行符,是CR,这就是原因。CR是不被识别的。…

汽车产业数字化转型:协同创新破解挑战,平衡安全与流通

在数字经济时代的浪潮中,数据资源和数据信息已成为驱动各行各业转型升级的“新石油”。汽车产业,作为国民经济的重要支柱,正经历着前所未有的变革。随着数字化创新和转型的深入,数据在汽车全产业链中的作用和价值日益凸显。在这个…

C语言程序设计P5-2【应用函数进行程序设计 | 第二节】——知识要点:函数的参数及返回值和函数的调用及声明

知识要点:函数的参数及返回值和函数的调用及声明 视频: 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 1.求x的n次方的值也就是求n个x的乘积,可把x和n作为函数的形参,定义一个函数power来完成这个功能&am…

40分钟学 Go 语言高并发:GRPC框架使用

gRPC框架使用 一、gRPC基础知识 知识点说明重要程度应用场景RPC原理远程过程调用的基本原理⭐⭐⭐⭐⭐分布式系统通信协议设计Protocol Buffers的使用⭐⭐⭐⭐⭐接口定义、数据序列化服务定义gRPC服务和方法定义⭐⭐⭐⭐服务接口设计性能优化连接池、压缩、流式处理⭐⭐⭐⭐高…

HTML Input 文件上传功能全解析:从基础到优化

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【ETCD】【源码阅读】ETCD启动流程源码解读

启动流程的图如下: 1、主函数入口 ETCD 启动的入口在 etcd/server/main.go 文件中。 package mainimport ("os""go.etcd.io/etcd/server/v3/etcdmain" )func main() {etcdmain.Main(os.Args) }这里调用了 etcdmain.Main(),这是 …

【RBF SBN READ】hadoop社区基于RBF的SBN READ请求流转

读写分离功能的背景及架构 当前联邦生产集群的各个子集群只有Active NameNode在工作,当读写任务变得繁忙的时候,只有一个Active负责处理的话,此时集群的响应和处理能力业务侧感知会明显下降,为此,我们将引入Observer架构,实现读写功能的分离,使得Active只负责写请求,而…

计算机运行时提示错误弹窗“由于找不到 quazip.dll,无法继续执行代码。”是什么原因?“quazip.dll文件缺失”要怎么解决?

计算机运行时错误解析:解决“quazip.dll缺失”问题指南 在软件开发和日常计算机使用中,我们经常会遇到各种运行时错误。今天,我们将深入探讨一个常见的错误提示:“由于找不到quazip.dll,无法继续执行代码。”这一弹窗…

NuHertz/HFSS: 使用矩形、径向和阻抗短截线的平面 LPF 切比雪夫-II 实现

我们今天的主题是使用 NuHertz 和 HFSS 设计 Microstrip Lowpass Chebyshev-Type2 滤波器。切比雪夫 2 型在通带中具有平坦的响应,在阻带中具有波纹。我们将比较 NuHertz 中的不同选项。 低通滤波器由集总 L 和 C 组件制成。这种方法很难用于高频应用程序。高频滤波…

SpringBoot整合knife4j,以及会遇到的一些bug

这篇文章主要讲解了“Spring Boot集成接口管理工具Knife4j怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot集成接口管理工具Knife4j怎么用”吧! 一…

高效的 Java 对象映射库“Orika”

什么是 Orika Orika 是一个高效的 Java 对象映射库,专门用于简化 Java 应用程序中对象之间的转换。它以自动化和优化的方式将一个对象的属性映射到另一个对象,从而减少了手动编写重复代码的需要。Orika 特别适合处理复杂的对象结构以及数据传输对象 &am…

汽车总线协议分析-CAN-FD总线

随着汽车功能的增多,各ECU之间的信息交互也越来越频繁,导致总线负载持续走高,CAN2.0报文只有约40%-50%带宽实际用于数据传输,响应机制易受车内布线的物理特性限制,如广播延迟、导线延迟等,CAN的局限性也逐渐…

【JavaEE】多线程(6)

一、用户态与内核态 【概念】 用户态是指用户程序运行时的状态,在这种状态下,CPU只能执行用户态下的指令,并且只能访问受限的内存空间 内核态是操作系统内核运行时的状态,内核是计算机系统的核心部分,CPU可以执行所有…

故障处理--kuboard无法访问,etcd磁盘空间不足

问题现象: kuboard页面报错 排查过程: 1、查看kuboard是否正常。 2、查看kuboard容器的日志: docker logs -f --tail10 kuboard 大概内容如下: levelerror msg"failed to rotate keys: etcdserver: mvcc: database sp…

unity3d—demo(实现给出图集名字和图片名字生成对应的图片)

目录 实现给出图集名字和图片名字生成对应的图片: 代码示例: dic: 键 是图集名称 值是一个字典 该字典键是图片名称 值是图片,结构如图: 测试代码: 结果: SpriteRenderer 讲解: Resour…

工业异常检测-CVPR2024-新的3D异常数据合成办法和自监督网络IMRNet

论文:https://arxiv.org/pdf/2311.14897v3.pdf 项目:https://github.com/chopper-233/anomaly-shapenet 这篇论文主要关注的是3D异常检测和定位,这是一个在工业质量检查中至关重要的任务。作者们提出了一种新的方法来合成3D异常数据&#x…

WPF编写工业相机镜头选型程序

该程序满足面阵和线阵的要求。 前端代码 <Window x:Class"相机镜头选型.MainWindow" Loaded"Window_Loaded"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml…