猫态编辑:Meow

https://github.com/DogLooksGood/meow/blob/master/CUSTOMIZATIONS.md#meow-expand-exclude-mode-list

这个变量控制了哪些 mode 下 expand hint 是禁用的. org-mode 下通常字体大小都不一样, 如果显示提示, 效果不好看. 当前的提示会对半角和全角字符用不同的宽度, 但是对不同大小的字体没有办法.

更新了一版,有一些改动,欢迎测试。

  1. 大家一直希望的光标位置修正,目前有两个模式,通过 meow-region-cursor 控制
  • overlay, 画一个假的光标,在选择区域里面。
  • insert, 在有选择的时候光标也是一个竖线,这个模式实现很简单,当前是默认行为。
  1. 移动的时候的提示位置也做了修改,对应了 1 的改动。

  2. meow-kmacro-lines 在每次执行前都会先自动行选,这样和 meow-kmacro-mathces 的行为就一致了。

  3. 去掉了一些命令,insert-at-bol, append-at-eol, meow-delete(fallback 到 meow-c-d),meow-head(-expand), meow-tail(-expand)

  4. 没有选择的时候 append ,光标自动后移

5 个赞

终端下overlay的行为不太一致

back的行为

光标落在了后边并且最后一个字符的face被覆盖了,我觉得如果不能将光标落在字符上的话,终端环境用insert比较好(又回到起点)。

终端光标使用竖线也可,但是似乎比较hack。

终端下面不管是要隐藏光标,还是改变光标,应该都需要那个 ansi 的控制码。 回头看看怎么加上。

我个人觉得 insert 光标的方式比画个假光标好。假光标的位置毕竟不是真的,就很隔应。

我也觉得insert更好一点。

终端cursor shape那边evil有轮子了,看起来要适配不同的terminal,还是挺麻烦的。

其实并不难,所有的终端都是一样的,只不过程序异常中断的时候,光标是回不来的,好像 tmux 里面也可能没效果,所以一直都没有做。

图里的modeline看起来非常不错,主题也很漂亮,可以贴一下您的emacs配置学习一下么

不过, 现在和这个截图的时候已经不一样了, 现在很简约, 我喜欢极简风.

1 个赞

好,谢谢,我也研究研究

更新了一下光标的修改,去掉了 meow-region-cursor 选项,现在两个样式都会应用。光标会显示成竖线,同时也会画一个假光标做为提示符。

效果如下: regioncursor

唯一个问题就是这个假光标的 face 目前没有什么合适的 face 去继承,所以当前默认是灰色的。 如果自己设置一下颜色,配合主题应该挺好看的。

(defface meow-region-cursor
  '((((class color) (background dark))
     (:foreground "grey70" :inverse-video t))
    (((class color) (background light))
     (:foreground "grey30" :inverse-video t)))
  "Indicator for region direction."
  :group 'meow)
1 个赞

有些情况下,发现 KEYPAD 的按键提示并不符合要求,请问是什么问题?应该如何解决? 像如下截图中,二者均为 C-c C-l 打开 lsp 选单,但 KEYPAD 中显示结果不同,甚至并不准确。

不使用 keypad,按 C-c C-l ? 可以列出在在 C-c C-l 下的 keymap (Emacs 内置的功能,和 meow 无关)

`lsp-mode' Minor Mode Bindings Starting With C-c C-l:
key             binding
---             -------

C-c C-l =       Prefix Command
C-c C-l F       Prefix Command
C-c C-l G       Prefix Command
C-c C-l T       Prefix Command
C-c C-l a       Prefix Command
C-c C-l g       Prefix Command
C-c C-l h       Prefix Command
C-c C-l r       Prefix Command
C-c C-l w       Prefix Command

C-c C-l a a     lsp-execute-code-action
C-c C-l a h     lsp-document-highlight

C-c C-l r o     lsp-organize-imports
C-c C-l r r     lsp-rename

C-c C-l h h     lsp-describe-thing-at-point
C-c C-l h s     lsp-signature-activate

C-c C-l g a     xref-find-apropos
C-c C-l g d     lsp-find-declaration
C-c C-l g g     lsp-find-definition
C-c C-l g i     lsp-find-implementation
C-c C-l g r     lsp-find-references
C-c C-l g t     lsp-find-type-definition

C-c C-l T D     lsp-modeline-diagnostics-mode
C-c C-l T L     lsp-toggle-trace-io
C-c C-l T a     lsp-modeline-code-actions-mode
C-c C-l T b     lsp-headerline-breadcrumb-mode
C-c C-l T f     lsp-toggle-on-type-formatting
C-c C-l T h     lsp-toggle-symbol-highlight
C-c C-l T l     lsp-lens-mode
C-c C-l T s     lsp-toggle-signature-auto-activate

C-c C-l F a     lsp-workspace-folders-add
C-c C-l F b     lsp-workspace-blacklist-remove
C-c C-l F r     lsp-workspace-folders-remove

C-c C-l = =     lsp-format-buffer

C-c C-l w D     lsp-disconnect
C-c C-l w d     lsp-describe-session
C-c C-l w q     lsp-workspace-shutdown
C-c C-l w r     lsp-workspace-restart
C-c C-l w s     lsp

我这里显示是这样的,比如说 C-c C-l a 确实应该是个 prefix, 因为有


C-c C-l a a     lsp-execute-code-action
C-c C-l a h     lsp-document-highlight

我研究下 which-key 显示的信息是哪里获取的。

嗯嗯。 显示的名称是一个问题,另一个是问题是 keypad 的提示也缺少了一些 prefix ,比如 g (goto) 。(PS. 截图里是完整的列表)

which-key 是有个函数 which-key-add-key-based-replacements 然后每个插件自己去适配的,emacs 的标准里面看起来没有这样的东西。

没有 g 是因为 g 是 C-M- ,所以要 SPC g

:ok_hand:,这点暂时还不影响使用,谢谢回复。

lsp 是通过 lsp-enable-which-key-integration 这个函数加的,然后我的前缀是 SPC l,所以 (setq lsp-keymap-prefix "SPC l") 就可以了

刚才发现 emacs 内置的一些 keymap 上面是有用 symbol 做为别名的,比如说这个 C-x C-k kmacro-keymap。

参照

刚才更新了一下 Meow, 现在可以正确的显示这样的 keymap 别名了。

自己定义的例子

似乎没有什么好办法给已有的来添加。

1 个赞

嗯嗯,用是没有问题的,只是对 keypad 的提示有点疑问。

狗哥再麻烦问下,我在尝试将 scroll-up 和 scroll-down 通过 meow-normal-define-key 绑定到 C-f C-b 上的时候,发现这个绑定会同时影响 meow-left 和 meow-right ,后两个方法也变成了 scroll-up/down ……检查过 meow-selection-command-fallback ,没有相关配置。

另外,似乎 qwert 下的 z 键被默认绑了 meow-pop-selection ,我觉得应该使用 meow-pop 吧?不然无法利用 fallback pop 第二选区。

提个问题(或者是需求):

在查找 thing 的时候,对于

def fun(param) do

end

是可以用过 defun 确认范围的;但对于

test "xxxx" do

end

无效,这是 bug 吗?如果不是,希望可以增加对于任意 do end 块的支持。