在 emacs 中直观地添加每行信息的最佳方法?

2023-12-21

我正在为 emacs 编写一个次要模式,它至少会计算缓冲区中每一行的数值。我想以视觉方式显示这一点,最好在每行之前整齐地显示。

我知道一些次要模式会吸引到边缘,而且我知道叠加也是一种选择(这些相关吗?),但我在任何地方都找不到我想要的很好的例子。

基本上,我想要类似 linum-mode 中的行号的东西,但每次修改缓冲区时它们都需要更改(实际上,只有当它们所在的行发生更改时)。每行的字符计数器之类的东西就是一个很好的例子。如果可能的话,我希望它不会破坏 linum 模式,但不依赖它等等。


这是一个简单的示例,说明了在之后放置叠加层的一种方法linum-mode数字和文本行之前。 我需要考虑一下字符数的右对齐。

NOTE:此方法考虑到linum-mode生成数字before本示例中的代码。如果post-command-hook or the widow-scroll-functions钩子用于实现这个建议的方法,那么对钩子的那些添加将需要随后及时跟进 to the linum-mode附加到这些相同的钩子的函数。

下面的例子可以用post-command-hookwindow-scroll-functions钩。有关如何确定的示例,请参阅以下链接window-start and window-end之前redisplay发生:https://stackoverflow.com/a/24216247/2112489 https://stackoverflow.com/a/24216247/2112489

EDIT:添加了字符数右对齐 - 考虑最多三位数字(即每行最多 999 个字符)。字符计数覆盖后的文本现在左对齐。

(save-excursion
  (let* (
      (window-start (window-start))
      (window-end (window-end)))
    (goto-char window-end)
    (while (re-search-backward "\n" window-start t)
      (let* (
          (pbol (point-at-bol))
          (peol (point-at-eol))
          (raw-char-count (abs (- peol pbol)))
          (starting-column
            (propertize (char-to-string ?\uE001)
              'display
              `((space :align-to 1)
                (space :width 0))))
          (colored-char-count
            (propertize (number-to-string raw-char-count)
              'face '(:background "gray50" :foreground "black")
              'cursor t))
          (one-spacer
            (propertize (char-to-string ?\uE001)
              'display
              `((space :width 1))))
          (two-spacers
            (propertize (char-to-string ?\uE001)
              'display
              `((space :width 2))))
          (final-char-count
            (cond
              ((and
                  (< raw-char-count 100)
                  (> raw-char-count 9))
                (concat one-spacer colored-char-count))
              ((< raw-char-count 10)
                (concat two-spacers colored-char-count))
              (t colored-char-count))) )
        (overlay-put (make-overlay pbol pbol)
          'before-string
          (concat starting-column final-char-count two-spacers) )))))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 emacs 中直观地添加每行信息的最佳方法? 的相关文章

  • Emacs Lisp 可以将 lambda 形式分配给像Scheme 这样的变量吗?

    在研究 Emacs Lisp 的符号单元时 我发现像这样的示例函数 defun a rest x x 我可以打电话 symbol function a 返回 lambda rest x x 如果我愿意的话我可以使用它 gt lambda r
  • Emacs C++,打开相应的头文件

    我是 emacs 新手 我想知道 是否有在头文件 源文件和相应的源文件 头文件之间切换的快捷方式 是否有像通用 emacs 参考卡那样的参考卡 Thanks There s ff find other file 您可以使用以下方法将其绑定到
  • C# 开发人员有什么理由应该学习 Emacs/Vim 吗?

    我在一家纯粹的 Microsoft 商店担任 C 开发人员 最近 我开始在工作之余的空闲时间使用 Gas 和 Linux 自学汇编 我喜欢摆弄 Linux 尽管我对它还很陌生 我一直听说我应该学习 VIM 或 Emacs 但事实是 我绝对不
  • emacs 去掉 shell 中的所有 ansi 颜色代码

    我在 OS X 上使用 emacs 24 但遇到了一个奇怪的问题 我看不到任何颜色代码 Emacs 似乎只是忽略它们 我的动机是查看 C 项目的 cmake llvm 和 googletest 框架的彩色输出 我想在编译模式下查看颜色 但是
  • 在多个 emacs 缓冲区上执行特定命令

    有没有办法在多个缓冲区上执行 emacs 命令 而不必单独选择它们并在每个单独的缓冲区上执行它 我通常打开与特定正则表达式匹配的多个文件 例如 py并希望启用特定模式 例如hs minor mode or glasses mode在每个上
  • 在 Emacs 中,如何更改迷你缓冲区完成列表窗口?

    我想为迷你缓冲区完成列表设置一个特定的窗口 目前 我有 3 个窗口采用此配置 在这种情况下 我想使用左下窗口作为迷你缓冲区完成列表 目前 它似乎是随机的一个窗口 大多数时候它喜欢使用最右边的窗口 它太薄了 无法在我不必水平滚动的情况下显示完
  • ido-mode 绑定被全局设置键屏蔽

    堆栈溢出 在过去的几天里 我试图稍微定制一下我的 emacs 但我遇到了我不知道如何解决的问题 我想做的是定义一个全局键绑定和一个 ido 模式键绑定 它们将使用相同的键来做不同的事情 Ido 模式键绑定定义如下 defun ido my
  • Emacs 启动时出现 24 错误

    我已经使用 emacs snapshot 一段时间了 但最近它崩溃了很多 所以我切换到 Emacs 24 但是一旦我安装并启动它 它就开始显示错误并且不会在我的 init el 中加载任何内容 当我在调试模式下运行它时 我得到了这个 Deb
  • 防止 paredit 在插入括号时插入空格 - 以及其他问题

    我爱帕雷迪 但有一些事情我讨厌 而且还没有解决 打开括号会插入一个空格before括号 我知道这可能是整个互联网的首选风格 但它不是我的 如何避免这种情况呢 当位于引用区域内时 我无法回删除 另外 输入双引号 将插入一个反斜杠 显然是为了转
  • 永久启用所有禁用的命令

    我想启用 Emacs 中所有禁用的命令 例如downcase region 也就是说 当调用时 它们不会要求用户确认 不幸的是 Emacs 手册的 48 3 11 禁用命令 部分没有提及启用all禁用命令永久 Emacs版本 24 0 95
  • Emacs 打字骨架对插入也许

    在 Eclipse 中 编辑 Java 代码时 如果我输入一个左括号 我会得到一对括号 如果我然后 输入 第二个括号 它不会插入额外的括号 我如何在 emacs 中得到它 Eclipse 编辑器足够聪明 当我输入闭括号时 它知道我刚刚完成了
  • Emacs:导航目录和打开文件的好策略是什么?

    上周 由于必须应对 R 和 Perl 的不同 IDE 我再次感到愤怒 我不喜欢这两种 IDE 也没有使用它们来真正适应 所以我决定尝试 Emacs 我做出这个决定并非没有一定的恐惧 我的主要用途是使用 cperl 来使用 Perl 以及使用
  • 如何让Emacs显示与实际存储的不同的字符?

    我想使用Elisp为Emacs实现动态文本替换 仅替换显示 不替换实际存储的文件 例如 在 LaTeX 文档中 我想输入 alpha 然后让 Emacs 将其显示为 因此更容易阅读 但在结果中 tex文件 我还想要 alpha 代替 被拯救
  • 使用 emacs24 通过 smtp 使用 gnutls 和额外参数发送电子邮件

    我在使用 posteo 电子邮件帐户从 emacs24 发送电子邮件时遇到了一个相当奇怪的问题 但使用 gmail 和 gmx 似乎一切正常 这是我当前 emacs 配置的相关部分 感觉就像我将其排列了一百万次 结果始终相同 require
  • 如何使用 Emacs Lisp 检查文件是否存在?

    我希望 emacs 将打开时生成的文件标记为只读 我所缺少的难题部分是如何检查文件是否 存在 我目前有以下内容 get file extension defun get ext file name car cdr split string
  • 为什么 clojure-mode 用一些卷曲的 f 字符替换 fn ?

    我刚刚开始使用 emacs 入门套件和 clojure 模式 现在 当我输入或粘贴 fn 在 Clojure 模式下进入缓冲区 fn 字符在窗口中被替换为稍微卷曲的小写字母 f 缓冲区已正确保存 但这非常烦人 尤其是当我以艰难的方式发现该功
  • 如何为 C# 模式配置 Emacs speedbar?

    我正在使用 EmacsC Mode http mfgames com linux csharp mode当我打开速度栏时 默认情况下不会显示任何文件 我可以在速度栏模式下选择 显示所有文件 但每个 cs 文件都会在名称旁边显示 如何正确配置
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • Emacs 和 Anaconda。链接问题

    我有一个问题 为了运行Anaconda https store continuum io cshop anaconda 我需要unset LD LIBRARY PATH 为了运行 Emacs 以及其他程序 我需要set LD LIBRARY
  • Emacs 键绑定为“\C-'”

    如何将函数设置为 C 当我尝试这样做时 global set key C myfunct 它给了我 字符串中的修饰符无效 What is C 您希望在输入反斜杠 c 引号时发生一些事情吗 或者你的意思是C 控制 引号 如果是后者 我猜是 那

随机推荐

  • 安装 Phonegap 时出现“shasum 检查失败”错误

    我在使用以下命令在 Mac OS 计算机上安装 PhoneGap 时遇到问题 sudo npm install g phonegap 错误信息 npm ERR Error shasum check failed for Users MYUS
  • CSS 中 > 是什么意思?

    在 IUI css 文件中 他们使用以下选择器 body gt not toolbar body gt selected true gt not 和 是什么意思 Thanks gt means 是一个子元素 http www w3 org
  • 使用 Emmet 在 Visual Studio Code 中包装 HTML 元素 [重复]

    这个问题在这里已经有答案了 我正在使用 VSC 来开发 html 页面 在 VSC 中使用 emmet 是一次很棒的体验 但我经常发现这样的情况 我必须用 div 包装一组元素 但必须在单行上使用 emmet 然后在末尾剪切粘贴结束标记 我
  • GridView 的 UpdateMethod 未触发

    我有一个 GridView 我以编程方式绑定到 ObjectDataSource 例如 ObjectDataSource risks new ObjectDataSource Risks RetrieveProjectRisk risks
  • 使用 Sass 根据背景颜色更改颜色[重复]

    这个问题在这里已经有答案了 我想设置一些 sass 颜色规则 自动为我选择字体颜色变量 我希望文本颜色取决于父 div 的背景颜色 If div background color 000 Then div p color fff 用sass
  • Linux内核:schedule()在什么进程中运行?

    当您调用系统调用时 例如fork在进程 X 中 内核被认为是在进程上下文中执行 所以 fork可以说是运行在进程X中吧 But if schedule 在同一进程中被调用 并且它不是系统调用 你会说它是作为 X 的一部分运行吗 或者它在交换
  • QT4中有QPath::Combine吗?

    我需要一种类似于 NET 的方法来安全地组合路径部分 而不必担心路径分隔符的平台细节 QT4中有这样的类和方法吗 就像是 QPath Combine 没有任何函数可以直接替代Path Combine 所以你必须自己写 您可能会以困难的方式做
  • 如何在UML中表示类实例?

    我的应用程序有一个类图 其中包含多个组合和聚合 现在我想要基于显示类实例的类图的图表 如果你愿意的话 可以拍一张快照 我需要这个 因为它有助于讨论一些功能需求 类图 1 Parent Child 实例 图 Parent Child 1
  • 查找异常的确切原因 - System.Net.Sockets.SocketException

    我尝试使用下面给出的代码将邮件发送到 SMTP 邮件服务器 但是 我收到一个错误 Error System Reflection TargetInvocationException Exception has been thrown by
  • 查找具有特定参数的函数

    如何找到具有特定参数的所有函数的名称和位置 有没有办法在全局环境 附加包和已安装包中找到它们 我猜你问这个问题只是为了不输本很好的回答 https stackoverflow com questions 14426033 range on
  • Azure Web 角色中的实体框架 DbContext

    我正在将现有 Web 应用程序 使用实体框架 5 迁移到 Azure Web 角色 数据库连接字符串正在从web config to the ServiceConfiguration cscfg files 问题是在自动生成 Model C
  • iPhone内存管理:应用程序退出时无需清理和释放保留的对象?

    以下内容是否属实 当应用程序即将退出时 不需要清理内存 通过调用释放你所有的 保留对象 因为 iPhone 操作系统会回收它的内存 当您分配给您的应用程序时 启动了它 这样更快更安全 而不是依赖应用程序来正确地 自己清理干净 你可以 通过调
  • Android:无法执行此操作,因为连接池已关闭

    我正在阅读 StackOverflow 关于这个问题的内容 但仍然没有找到解决方案 我注意到有时我的应用程序会抛出此错误 java lang IllegalStateException Cannot perform this operati
  • 光标周围的框 pygame

    在我用 pygame 制作的小游戏中 光标周围总是有一个框 其中所有颜色都会反转 例如 如果我将光标放在黑色和红色背景上 光标周围的方块将是白色和青色 这最初不是问题 因为最初的几个项目只需要键盘输入 但现在我想做一个游戏 你必须点击很多
  • bs4:“soup.title.string”在 IDLE 上不起作用,但在终端上不起作用

    Mac OS X 10 9 Python 2 7 空闲 BeautifulSoup 4安装 成功 我跟着BS4 文档 http www crummy com software BeautifulSoup bs4 doc 并正在练习一些功能o
  • 如何处理列名中的空格?

    我知道变量名称中不含空格是首选 我遇到的情况是 我需要出版质量的图表 因此轴和图例需要具有正确格式的标签 即带有空格 因此 例如 在开发过程中 我可能有名为 Pct On OAC 和 Age Group 的变量 但在我的最终图中 我需要出现
  • 使用“文件”chef-solo 资源更新文件

    我正在尝试使用安装javachef solo 问题是设置JAVA HOME and PATH变量在 etc profile文件 我尝试使用 file 厨师提供的资源 这是我的一些代码 java home export JAVA HOME u
  • 具有可变列和特定可编辑单元格的 PrimeFaces 数据表

    我需要创建一个表 其中的标题列表来自模型 表内容也存储在模型中 p dataTable 在数据上循环以根据列名称显示内容 问题是我需要使一些特定的单元格可编辑 对于输出数据 没有问题 因为我使用模型方法 该方法同时采用实体和列名称 并根据列
  • 如何更改变量名称颜色?

    class Foo def init self byte string newline n also newline x0a 在 PyCharm 中 如何更改上例中 byte string 等变量的颜色 我在颜色设置的 Python 部分中
  • 在 emacs 中直观地添加每行信息的最佳方法?

    我正在为 emacs 编写一个次要模式 它至少会计算缓冲区中每一行的数值 我想以视觉方式显示这一点 最好在每行之前整齐地显示 我知道一些次要模式会吸引到边缘 而且我知道叠加也是一种选择 这些相关吗 但我在任何地方都找不到我想要的很好的例子