假设我有一个缓冲区,其中的代码(在本例中为Python)的组织方式如下:
<code>.. cell 1 .. ## .. cell 2 .. # this is a comment ### this is also a comment .. still cell 2 .. ## .. cell 3 (code that is indented) </code>
字符##的序列旨在界定缓冲区中的单元(代码区域/块).角色#在Python中开始注释,因此##被该语言视为注释.可以在例如Elisp与;;或其他编程语言.
我想定义一个Emacs命令,该命令在被调用时会将当前单元格(即当前位于其上的point /光标所在的单元格)定义为Emacs region(即突出显示该单元格).
我如何在Emacs中做到这一点?
以供参考:
>类似于MATLAB中的单元格或code sections的概念
>这是在Vim中实现此功能的thread.
解决方法:
这是一个解决方案:
<code>(defun python-inside-comment-p ()
(save-excursion
(beginning-of-line 1)
(looking-at "^#")))
(defun python-select-cell ()
(interactive)
(goto-char
(if (re-search-backward "^\s-*##[^#]" nil t)
(match-end 0)
(point-min)))
(while (and (python-inside-comment-p)
(eq 0 (forward-line 1)))
nil)
(set-mark (point))
(goto-char
(if (re-search-forward "^\s-*\(##[^#]\)" nil t)
(- (match-beginning 1) 2)
(point-max))))
</code>
经过测试:
<code>print "Beautiful is better than ugly." ## print "Explicit is better than implicit." print "Simple is better than complex." print "Complex is better than complicated." # this is a comment print "Flat is better than nested." ### this is also a comment print "Sparse is better than dense." ## print "Readability counts." print "Special cases aren't special enough to break the rules." print "Although practicality beats purity." print "Errors should never pass silently." print "Unless explicitly silenced." </code>
工作正常.
是否有理由不使用缩进级别而不是注释作为锚点?
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!