假设我有一个缓冲区,其中的代码(在本例中为Python)的组织方式如下:
.. cell 1 ..
##
.. cell 2 ..
# this is a comment
### this is also a comment
.. still cell 2 ..
##
.. cell 3 (code that is indented)
字符序列用于在缓冲区中##
定界cells
(代码区域/块)。该角色#
在Python中开始注释,因此##
被该语言视为注释。可以用例如Elisp;;
或其他编程语言来构建类似的构造。
我想限定Emacs的命令在调用时,它定义了当前cell
(即,cell
其上点/光标当前坐。)是Emacs的region
(即它突出的小区)。
我如何在Emacs中做到这一点?
以供参考:
这是一个解决方案:
(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))))
经过测试:
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."
工作正常。是否有理由不使用缩进级别而不是注释作为锚点?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句