《elisp 每日一练》——跨 Buffer 文本提取
在之前的文章中我们通过with-current-buffer和buffer-substring实现了一个从指定buffer中拷贝文本到本buffer的功能。这个算是我们入门了跨buffer操作。实际上Emacs为这种需求提供了专门的函数背景知识Emacs中的跨buffer文本操作的基础函数是(insert-buffer-substring BUFFER optional START END)。它用于将参数中BUFFER指定的缓冲区中从START到END这个范围内的文本插入到当前缓冲区的光标所在位置。我们可以用下面的代码感受一下(defunmy/copy-messages-buffer-to-this()(interactive)(let((message-buffer(get-buffer*Messages*)))(whenmessage-buffer(let((start)(end))(with-current-buffermessage-buffer(save-restriction(widen)(setqstart(point-min))(setqend(point-max))))(insert-buffer-substringmessage-buffer start end)))))因为START和END参数实际上是对应的是BUFFER中的范围。所以我们需要切入到对应的buffer中去获取这个坐标的最大和最小值。基于这个函数我们可以实现很多好用的跨buffer的文本操作例如将当前buffer中的内容拷贝到目标buffer中或者将目标buffer中的内容替换为我们想要的内容等等。因为各种跨buffer的文本操作实在是太频繁了所以Emacs提供很多有用的函数下面我列举一些常用的函数append-to-buffer: 从当前buffer中提取START和END范围内的文本并追加到参数BUFFER所指定的缓冲区的光标位置copy-to-buffer: 从当前 buffer 中提取START和END范围内的文本并对参数中BUFFER所指定的缓冲区进行替换上述这些函数提取的内容都带有文本属性如果我们只想提取文本本身可以使用buffer-substring-no-properties。查阅相关文档我们发现buffer-substring-no-properties实际上对标的是buffer-substring都是提取当前buffer的文本而不涉及到改变buffer。在跨buffer的函数中只有insert-buffer-substring是使用底层C函数编写的代码而其他两个都是依靠这个函数在lisp层面实现的。所以说关于跨buffer的文本操作我们只需要掌握基本的insert-buffer-substring其他的函数我们可以自己实现。这有点像数学上学的时候老师告诉我初中的几何只有三条基本公理其他的定理和自己利用这三条推导出来。Emacs也是这样只提供基本的功能其余高级的功能可以自己利用基本函数实现出来。但是也提供了这些高级函数的官方实现。练习今天我们来实现一个日志收集的功能。我们将当前用户选中的行记录到一个名为Log-Collection的buffer中该buffer平时不允许写入只能通过调用特定的函数进行收集。如果用户选择并激活了一个区间则提取区间的内容进行激活否则提取当前所在行的文本。(defunmy/collection-log()(interactive)(let((log-buffer(get-buffer-create*Log-Collection*))(cur-buf(current-buffer))(start)(end))(if(use-region-p);; 激活了选区则按照选取来决定范围(progn(setqstart(region-beginning))(setqend(region-end)));; 未激活选取则按照光标所在行来决定范围(progn(setqstart(line-beginning-position))(setqend(line-end-position))))(with-current-bufferlog-buffer(let((inhibit-read-onlyt))(goto-char(point-max))(insert-buffer-substringcur-buf start end)))))总结本节介绍的重点函数只有一个insert-buffer-substring因为功能导致它的参数比较割裂BUFFER是目标buffer、而START和END对应着源buffer的位置。这也就意味着想要成功调用该函数无论如何都得使用with-current-buffer进行buffer的切换无法一步到位其余的函数我们可以自己实现所以就不在这里列举了。

相关新闻

LangChain vs LlamaIndex vs Dify:RAG 框架选型终极对比

LangChain vs LlamaIndex vs Dify:RAG 框架选型终极对比

一、为什么 RAG 框架选型是个难题 2024 年以来,RAG 已经成为大模型应用的标准范式。但当你真正动手搭建一个生产级 RAG 系统时,面临的第一个决策就是:用什么框架? RAG 系统的核心链路: ​这条链路上的每一个环节&…

2026/8/16 14:43:05 阅读更多 →
VTube Studio API 开发完整指南:三步走通虚拟形象操控全链路

VTube Studio API 开发完整指南:三步走通虚拟形象操控全链路

VTube Studio API 开发完整指南:三步走通虚拟形象操控全链路 【免费下载链接】VTubeStudio VTube Studio API Development Page 项目地址: https://gitcode.com/gh_mirrors/vt/VTubeStudio 凌晨两点的直播间,你的虚拟形象终于会跟着点头微笑了——…

2026/8/16 14:43:05 阅读更多 →
碾压普通AI❗OKBIYE七大顶配功能解锁[特殊字符]毕业写论文全程开挂

碾压普通AI❗OKBIYE七大顶配功能解锁[特殊字符]毕业写论文全程开挂

绝大多数毕业生都低估了OKBIYE的实力!很多人只拿它简单写初稿、基础降重,白白浪费了它吊打全网普通AI的顶配高阶功能。市面上泛滥的免费AI论文工具,本质只能做浅层文字拼接、简单改词降重,功能单一、漏洞百出、高危频发&#xff0…

2026/8/16 14:42:05 阅读更多 →

最新新闻

Python基础6 - 字符串:(2)字符串常用操作

Python基础6 - 字符串:(2)字符串常用操作

目录 一. 拼接 二. 计算字符串长度 三. 截取字符串 (一)普通截取 (二)反向输出字符串 四. 分割、合并字符串 (一)分割字符串 (二)合并字符串 五. 检索字符串 (一…

2026/8/17 17:08:41 阅读更多 →
抖音视频批量下载上手三步:把喜欢的作者整页作品一次搬回硬盘

抖音视频批量下载上手三步:把喜欢的作者整页作品一次搬回硬盘

抖音视频批量下载上手三步:把喜欢的作者整页作品一次搬回硬盘 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…

2026/8/17 17:08:41 阅读更多 →
Habitat-Sim实战全攻略:5步搭好3D仿真环境,让具身AI智能体跑起来

Habitat-Sim实战全攻略:5步搭好3D仿真环境,让具身AI智能体跑起来

Habitat-Sim实战全攻略:5步搭好3D仿真环境,让具身AI智能体跑起来 【免费下载链接】habitat-sim A flexible, high-performance 3D simulator for Embodied AI research. 项目地址: https://gitcode.com/GitHub_Trending/ha/habitat-sim Habitat-S…

2026/8/17 17:08:41 阅读更多 →
ViGEmBus 手柄驱动上手全指南:内核级模拟让 PC 游戏通吃 Xbox 360 与 PS4 手柄

ViGEmBus 手柄驱动上手全指南:内核级模拟让 PC 游戏通吃 Xbox 360 与 PS4 手柄

ViGEmBus 手柄驱动上手全指南:内核级模拟让 PC 游戏通吃 Xbox 360 与 PS4 手柄 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 深夜 11 点&#…

2026/8/17 17:08:41 阅读更多 →
lift-oQ4开源许可解读:OpenRAIL-M修改版能否商用?500万美元以下初创必读

lift-oQ4开源许可解读:OpenRAIL-M修改版能否商用?500万美元以下初创必读

lift-oQ4开源许可解读:OpenRAIL-M修改版能否商用?500万美元以下初创必读 【免费下载链接】lift-oQ4 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/lift-oQ4 lift-oQ4 是一个专为 PDF/图片结构化抽取(转 JSON&#xff…

2026/8/17 17:08:41 阅读更多 →
自定义 JSON Schema 进阶:用 lift-oQ3 提取任意复杂文档结构

自定义 JSON Schema 进阶:用 lift-oQ3 提取任意复杂文档结构

自定义 JSON Schema 进阶:用 lift-oQ3 提取任意复杂文档结构 【免费下载链接】lift-oQ3 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/lift-oQ3 把 PDF、发票、合同等复杂文档一键变成干净、可用的 JSON 数据,是当下很多团队的核…

2026/8/17 17:07:41 阅读更多 →

日新闻

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必修课? 如果你用LabVIEW做过稍微复杂点的项目,尤其是涉及界面响应、多任务并行或者硬件IO等待的场景,大概率遇到过这样的窘境:前面板点个按钮,整个程序就“卡死…

2026/8/17 0:00:08 阅读更多 →
LabVIEW异步调用实战:解决界面卡顿与并行处理难题

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必经之路如果你在LabVIEW里写过稍微复杂点的程序,尤其是涉及到界面响应、多任务并行或者硬件IO等待,大概率会遇到一个头疼的问题:程序“卡”住了。前面板点不动,进度条不更新…

2026/8/17 0:00:08 阅读更多 →
飞书局域网文件传输实战:3种方案实现高速点对点传输

飞书局域网文件传输实战:3种方案实现高速点对点传输

1. 项目概述:为什么要在局域网内用飞书传文件? 飞书作为一款主流的协同办公套件,其核心功能是围绕云端协作设计的。无论是文档、表格还是文件,通常的分享逻辑都是“上传到云端 -> 生成链接 -> 分享给同事”。这个流程在互联…

2026/8/17 0:00:08 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/17 2:58:27 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/17 2:58:30 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/17 2:58:32 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →