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

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

作者: m2fox | 来源:发表于2019-01-22 13:28 被阅读0次

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

    函数代码如下:

    ;; 首先定义一个函数,用于判断指定的位置是否在双引号内部,使用了`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-",就可以快速选中整个字符串。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/beuljqtx.html