Idea征集:改进lsp-ui-doc

就freenode里面的#emacs频道,有一些六十多岁的emacs开发者,简直牛逼的不行了

1 个赞

IDE 也是有的。

Vscode: Alt + Mouse left click

Intellij: Alt + Shift + Mouse left click。想要一次性选中当前页面中所有的,就用Ctrl-command-g (mac上)。

但其实,ide有高效的refactor的方式,是会自动检测你的project的内容的,比方说你改了个class name,那么对应的其他地方import或者定义了object的话,就会提示你需不需要refractor。但这需要对语言/框架100%的理解,lsp现在也在实现这方面的东西。

我个人觉得这个是比传统的multucursor / iedit 方式方便的。这个不需要用户一个一个的去查看,一般来说都是选择refractor的,它甚至会区分comments里的内容,看你需不需要refactor。如果对一个新项目的内容不是特别熟悉的话,这个功能真的是满强大的。真是懒人日常必备😂,对理解项目也有帮助。

这种重构主要对语言支持比较好的情况, 比如Java, 非常成熟和安全. 但是对于那些脚本语言, 很难保证重构的正确性.

IDE 的 rename refactor 主要是对变量的重构比较方便, 有时候会进行一些代码级别复杂API重构,IDE就很难做到.

举个例子: 在项目中找到匹配某个正则表达式的行并进行 API 重新设计:

  1. color-moccur.el 中进行正则表达式匹配, 找到整个项目中所有匹配的行, 而不仅仅只是一个变量
  2. moccur buffer 中按 r 进入编辑模式
  3. 然后在 moccur buffer 中用 multiple-cursor.el 进行批量匹配编辑, 多光标改 API
  4. 最后 Ctrl + C Ctrl + C 重构所有 API

这种级别的操作时, IDE 那种只是单纯的改变量和函数名称的动作就做不了了.

注释用的字体挺好看的,名字是什么?是等宽字体吗?

我对这个有个不太成熟的想法(当作 yy 的程度看就行,但比较复杂,不是一两句可以概括的),不知是否可以论坛私信里聊。

其他人有兴趣也可以参与,只要私信我就行。

mac默认字体

我还满想要这种效果的,文件名和行分开来。现在用ivy-occur出来的都在一行,分屏的时候挤在一块,尤其是文件路径长的时候,很难看,只能放在下面。

公开吧,我在外面边遛娃边写代码,私信聊好累,也不能及时讨论

color-moccur。把相同文件名的聚合在一起,文件名单独一行,比较方便

1 个赞

那我整理成个文档另外发出来

私信你了~查看下

1 个赞

你是说类似要改:

emacs-china
emacs-china-lsp
emacs-china-general

这些类似的变量么?

确实用正则会很方便。

不过现在intelllij真的还是做的挺人性化的,它也有regex的选项可以勾选。

现在IDE都做的不错, 只是不喜欢点鼠标, 点一下, 我就忍不住卸载了.

我装 IDE 的目的就是定期去模仿一下他们优秀的插件.

这是没有 namespace 的无奈之举,其实是语言本身的设计问题。╮( ̄▽ ̄"")╭

我觉得不是鼠标本身有什么原罪,只是鼠标相关的绑定设计的太低效了:只能用左右键和滑轮,通过菜单和滚动来交互。像一些建模软件那样,和 Shift, Alt, Meta 键乃至鼠标手势组合提供更多的功能,其实用起来是很爽的。

1 个赞

商业世界, 唯快不破.

IDE世界都是面向鼠标快速出产品的, 没人像 Emacs/VIM 这些黑客慢慢磨细节.

e.g., CAD

以python为例

展示文档的意义不是很大

从doc中提取代码应该更有意义

将代码放到一个临时的buffer 可以执行 查看结果 扩展里面的函数(将代码插入当前buffer)

最后将代码回写到doc中

可以不改变原来的代码 用个简单的sqlite也可以

每个人用到的情况不同。。

本掉包侠表示展示doc的意义对我来说很大。。尤其是能针对性的显示argument documentation的。。至于文档中的代码。。我用到的package 的doc里有代码的就没多少,能直接放进source buffer里用的就更少了。。

虽然可以随时调出dash来看文档 但是终究不够specific

之前看到过不知道是IDEA还是什么的操作视频, 选中一段代码之后, refactor菜单里可以将这段代码转换为一个函数, 同时选中部分被自动替换为函数调用. 当然跟具体代码有关.

代码的智能化编辑是一个发展方向.

主要是要基于抽象语法树来做这些基础设施, Emacs底层是正则表达式, 这种东西在复杂场景一定都不靠谱.