当前位置:  开发笔记 > 编程语言 > 正文

为什么我不应该使用推牌

如何解决《为什么我不应该使用推牌》经验,为你挑选了1个好方法。

我实现了一个小函数,它解析SQL INSERT语句并在光标位于列名上时突出显示列值,反之亦然.

然后我想添加一种在列名和列值之间快速跳转的可能性.我在实现中使用了push-mark,因此我可以使用Cx Cx(交换点和标记)跳转.它也有效,唯一令我困扰的是elisp doc,它说

新手Emacs Lisp程序员经常尝试将标记用于错误的目的.标记保存了一个位置,方便用户使用.大多数编辑命令不应改变标记.

我对马克的使用 - 这是正确的吗?或者什么是更好的解决方案?



1> Gareth Rees..:

考虑点的位置的类比:用户只需要在发出点移动命令时移动点.如果像字体锁定这样的随机操作移动了这一点,那将会非常烦人.因此建议将函数体包装起来(save-excursion ...).

如果您的函数为用户明确设置了标记,那很好.(在这种情况下,我建议调用你的函数sql-mark-column-value,以明确设置标记是它所做的事情之一.)你引用的文档的要点是命令不应该由于做某事而偶然设置标记其他.

如果您的函数恰好在用户将指针放在SQL语句中的列名称时设置标记,那可能不太方便.想象一下某人试图剪切或复制SQL语句的一个用例; 每当他们试图在声明中移动点时,他们的标记就会被破坏!对于此用例,您可能希望提供单独的命令,sql-goto-column-value而不是依赖exchange-point-and-mark.

当然,如果这纯粹是为了您自己的使用,那么任何事情都会发生.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有