Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement ace jump #47

Merged
merged 1 commit into from Aug 1, 2019

Conversation

AmaiKinono
Copy link
Contributor

@AmaiKinono AmaiKinono commented Aug 1, 2019

之前看不见 ace 序列只能盲操作的问题修复了,现在基本可用。我把剩余的问题一起说了吧,不用翻上一个 PR 了:

  • read-key 的过程中敲 C-g 没法取消,这是刚发现的。我能想到的就是加个判断,不过我一直觉得 C-g 是 "通用机制",不起作用还是挺奇怪的。。
  • 需要实现一个 ace 序列默认使用 "error" face 的前景色,但仍允许用户自定义的功能。

剩下的那个任意跳窗口 / tab 的功能,把这个问题解决之后我会以 issue 或 PR 的形式再和您讨论。

PS: 可以先用我的 fork 来测试,不着急合并。

@manateelazycat manateelazycat merged commit 3c83864 into manateelazycat:master Aug 1, 2019
@manateelazycat
Copy link
Owner

解决第一个问题的关键是:with-local-quit
6fc20e9

@manateelazycat
Copy link
Owner

第二个问题,我觉得直接用函数名的颜色就行了。
因为 Awesome-Tab 已经是根据主题自适应了,为什么 Ace Jump 的Face要自定义呢?
自定义反而众口难调。

8d07119

@AmaiKinono
Copy link
Contributor Author

解决第一个问题的关键是:with-local-quit

我看到代码里是把 C-g 硬编码进去了,但实际上不一定退出键是 C-g,使用 set-input-mode 是可以自定义的(虽然我估计很少人这样做)。我看不如这样,我加一个 awesome-tab-ace-quit-keys 变量,用户可以把他想用的退出键统统放进去,这样比方说按 q 也可以退出,按空格也可以退出,比 C-g 更轻松。

因为 Awesome-Tab 已经是根据主题自适应了,为什么 Ace Jump 的 Face 要自定义呢?

Tab 本身的底色和文字是要和当前 buffer 协调的,所以自适应是好的做法。但 ace 序列是「高亮」的,要有突出的色彩,所以这里可能就有人想要红的,有人想要绿的。我看可以加一个变量 awesome-tab-ace-str-color,当它被指定时我们用它,没指定就用函数名 face,用户也可以用他自己的钩子来更新这个变量,以实现他想要的自适应。

@manateelazycat
Copy link
Owner

其实我的建议是先啥都不用管,看有没有人报这些问题。
如果没有人抱怨的话,就证明这些都不重要,现在就挺好的。

感谢你牛逼的补丁啊,我也超喜欢用

@AmaiKinono
Copy link
Contributor Author

AmaiKinono commented Aug 1, 2019

🤣 其实都是我自己的需求,我想要按 q 退出,想要红色的 ace 序列。我是想确认一下你是否反对加进这些,不反对的话我就都做了。

感谢你牛逼的补丁

过奖了 🤣 我写完都觉得自己的代码太菜了

PS:刚试了一下发现那个选择不相邻的 tab 后自动重排的功能没了,用鼠标点也不行,是去掉了吗,还是默认不打开了?

@manateelazycat
Copy link
Owner

按Q那个,建议直接做一个选项吧。
颜色那个,你更新一下最新版, 函数名字的颜色应该既能自适应又足够醒目吧?

这个函数 awesome-tab-ace-jump 的代码我觉得可以稍微重构精简一下,功能挺好用的。

你说的那个重排的功能,点击不会重排了,但是这个功能一直不是很完美,我还没有想到新的方案替代它,重排有时候很方便,有时候也很烦人

@AmaiKinono
Copy link
Contributor Author

新版我已经试用了。其实你讲的也对,因为我写了代码,中途需要考虑用什么 face,所以就觉得能改才好,其实别人用的时候大概根本不会注意到。那就不动它了。剩下的俺明儿睡醒再想吧 🤣

@manateelazycat
Copy link
Owner

我稍微重构了一下代码,16e33de

尽量用 dotimes 做循环, while 会增加一个 index 的临时变量。
rangel 和 rangeu 改成一个有意义的名字吧,这样代码可读性更好。

@AmaiKinono
Copy link
Contributor Author

噢噢,我之前不知道有 dotimes 这种东西。rangel 和 rangeu 是 range lower/upper bound 的意思,这个算法就是随用户输入不断缩小这个范围直到最后卡到一个 tab 上,想要清楚一点的话可以叫 lower-bound 和 upper-bound。

@manateelazycat
Copy link
Owner

好,我一会改一下名字,看看把代码弄得更清晰点。

@manateelazycat
Copy link
Owner

重构了一下代码 eff4466

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants