Emacs Lisp编程实践——选中双引号之间的文本

今天来实现一个简单的函数,用于选中当前光标所在的一对双引号之间的字符串内容,如果当前光标不在一对双引号之间,则不选中任何内容。

函数代码如下:

;; 首先定义一个函数,用于判断指定的位置是否在双引号内部,使用了`syntax-ppss'函数提供的能力
(defun check-inside-quotations (position)
  "Check whether the indicated position inside a pair of quotations."
  (nth 3 (syntax-ppss position)))

;; 选中当前光标所在的两个双引号之间的字符串内容,如果当前光标不在一对双引号之间,则什么也不做
(defun select-text-between-quotations ()
  "Select text between two nearest quotation marks."
  (interactive)
  (if (check-inside-quotations (point))
      (progn
    ;; here should not use square brackets in regexp
    (let ((start) (skip-char "^\""))
      (skip-chars-backward skip-char)
      (setq start (point))
      (skip-chars-forward skip-char)
      (push-mark start)
      (setq mark-active t)))
    (message "not inside a pair of quotation marks!")))
;; 绑定快捷键到C-"
(global-set-key (kbd "C-\"") 'select-text-between-quotations)

执行上述代码,然后把光标放在一个字符串之间,按快捷键C-",就可以快速选中整个字符串。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容