简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:理解Elisp方言buffer-substring-no-properties函数用法。
<1>.buffer-substring-no-properties函数作用
在elisp语法中,函数buffer-substring-no-properties用于从当前缓冲区中提取指定范围的文本内容,而不包括任何文本属性。
具体来说,buffer-substring-no-properties函数接受两个参数,即起始位置和结束位置。它将返回从起始位置到结束位置之间的文本内容,但不包括任何文本属性,如字体样式、颜色等。
这个函数在处理文本时非常有用,特别是当你只关心文本内容而不关心属性时。你可以使用它来提取缓冲区中的一部分文本,并对其进行进一步处理或分析。
2.应用实例
v1.0 获取当前缓冲区1-10之间的字符
;; 获取当前缓冲区中第1个字符到第10个字符之间的文本内容
(setq text (buffer-substring-no-properties 1 10));; 输出提取的文本内容
(message "提取的文本内容为:%s" text)
v2.0获取函数所有内容
(defun print-current-all-func ()(interactive)(save-excursion(let ((start-pos (progn (beginning-of-defun) (point)))(end-pos (progn (end-of-defun) (point))))(message "Print: %s " (buffer-substring-no-properties start-pos end-pos)))))
v3.0 获取当前函数有多少行
(defun count-lines-in-current-function ();;获取当前函数有多少行(interactive)(save-excursion(let ((start (progn (beginning-of-defun) (point)))(end (progn (end-of-defun) (point))))(message "Current function has %d lines." (count-lines start end)))))
v4.0 拷贝整个函数到剪切板,并打印当前函数名和总的行数.
(defun copy-current-all-func ()"拷贝整个函数到剪切板,并打印当前函数名和总的行数."(interactive)(save-excursion(setq func-name (which-function))(let ((start (progn (beginning-of-defun) (point)))(end (progn (end-of-defun) (point))))(kill-new (buffer-substring start end))(message "Copied func to clipboard: %s (Total lines: %d)" func-name (count-lines start end)))))
v5.0 elisp函数添加注释:在(interactive)之前.
(defun test ()"这是一个函数注释。"(interactive)
)