首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果区域未处于活动状态,则切换行上的注释

如果区域未处于活动状态,则切换行上的注释
EN

Stack Overflow用户
提问于 2012-10-27 08:08:08
回答 1查看 370关注 0票数 0

我使用这个作为参考:Emacs comment/uncomment current line

我的问题是,我是否可以使用defadvice执行相同的任务(这对我来说似乎更合适)?一些类似的东西

代码语言:javascript
复制
(defadvice comment-or-uncomment-region (before mark-whole-line (arg beg end) activate)
  (unless (region-active-p)
    (setq beg (line-beginning-position) end (line-end-position))))
(ad-activate 'comment-or-uncomment-region) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-27 22:35:52

这个答案是基于我上面的评论。

defadvice并不比另一种解决方案更合适。它永远不会比另一个解决方案更合适。

当您无法通过其他方式解决问题时,defadvice的最后一招。

期间。

请记住,无论何时使用defadvice,您都是在从根本上修改包开发人员所依赖的Emacs API。

当你巧妙地改变这些行为时,你会给你带来很多问题,最终也会给包开发人员带来很多问题,因为你的Emacs API被defadvice破坏了。

因此,当您想要在本地更改功能时,方法是使用现有功能定义一个新命令并重新映射到该命令。

也就是说(来自您提到的answer ):

代码语言:javascript
复制
(defun comment-or-uncomment-region-or-line ()
    "Comments or uncomments the region or the current line if there's no active region."
    (interactive)
    (let (beg end)
        (if (region-active-p)
            (setq beg (region-beginning) end (region-end))
            (setq beg (line-beginning-position) end (line-end-position)))
        (comment-or-uncomment-region beg end)
        (next-line)))

(global-set-key [remap comment-dwim] 'comment-or-uncomment-region-or-line)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13095971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档