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

sis-global-respect-mode break magit-log-select-mode keybindings hint #28

Closed
tshu-w opened this issue Jan 17, 2021 · 8 comments
Closed

Comments

@tshu-w
Copy link

tshu-w commented Jan 17, 2021

to enter magit-log-select-mode, M-x magit-status, magit-rebase and select modify a commit
before enable it:
Screen Shot 2021-01-17 at 4 36 47 PM
after:
Screen Shot 2021-01-17 at 4 36 29 PM

@failable
Copy link

开启了几个sis-*-mode之后,经常在magit buffer里自定义的快捷键会失效,比如:global-map里的C-c f绑定为counsel-recentf。有时magit-status在用着用着之后,这个快捷键(和其它一些绑定的global快捷键)就会失效了,然后过一会(不知道是不是又按了什么)又可以。

不知道与这个issue是否相关。

@laishulu
Copy link
Owner

laishulu commented Jan 19, 2021

@tshu-w
那个magit log的buffer叫什么名字?
在你的配置中,参照下面这一行配置变量sis-prefix-override-buffer-disable-predicates

(sis--string-match-p "^magit-revision:" (buffer-name buffer)))

这样可以disable快捷键前缀截取
请测试反馈

@laishulu
Copy link
Owner

laishulu commented Jan 19, 2021

开启了几个sis-*-mode之后,经常在magit buffer里自定义的快捷键会失效,比如:global-map里的C-c f绑定为counsel-recentf。有时magit-status在用着用着之后,这个快捷键(和其它一些绑定的global快捷键)就会失效了,然后过一会(不知道是不是又按了什么)又可以。

不知道与这个issue是否相关。

要不,彻底把magit相关的buffer都disable快捷键前缀截取?
配置变量sis-prefix-override-buffer-disable-predicates
还是参见这一行的配置,"^magit-revision:"改成`"^magit"。

(sis--string-match-p "^magit-revision:" (buffer-name buffer)))

请测试反馈

@laishulu
Copy link
Owner

因为我用的doom,
并不清楚原生emacs键位用户
在magit相关的buffer有没有按下C-c后自动切到英文输入法的需求。
所以,当时只是把magit-revision给加进去了

@laishulu
Copy link
Owner

to enter magit-log-select-mode, M-x magit-status, magit-rebase and select modify a commit
before enable it:
Screen Shot 2021-01-17 at 4 36 47 PM
after:
Screen Shot 2021-01-17 at 4 36 29 PM

看起来,快捷键发生改变了啊。。。
之前是C-c C-c,后来变成e了?
sis本身并不会改变快捷键,只是重定向快捷键绑定的函数。
所以,这个就很诡异了~~

@failable
Copy link

改成了^magit,因为之前也不是百分百出现,所以只能说现在还没有出现问题。基本上,除了写commit message的时候,都不会用到输入法……

@tshu-w
Copy link
Author

tshu-w commented Jan 19, 2021

看起来,快捷键发生改变了啊。。。
之前是C-c C-c,后来变成e了?
sis本身并不会改变快捷键,只是重定向快捷键绑定的函数。
所以,这个就很诡异了~~

其实也没有改变快捷键,magit-log-select-pick 被绑定到了 C-c C-ce,只是 magit-log-select-quit 也被绑定到了 q 却没有显示。

还是参见这一行的配置,"^magit-revision:"改成`"^magit"。

我直接到包里面改成了 ^magit 不行。

最小可复现配置:

(setq package-archives '(("melpa" . "https://melpa.org/packages/")
                         ("org"   . "https://orgmode.org/elpa/")
                         ("gnu"   . "https://elpa.gnu.org/packages/")))

;; initialize packages
(unless (bound-and-true-p package--initialized) ; To avoid warnings in 27
  (setq package-enable-at-startup nil)          ; To prevent initializing twice
  (package-initialize))

;; setup `use-package'
(unless (package-installed-p 'use-package)
  (when (not package-archive-contents)
    (package-refresh-contents))
  (package-install 'use-package))

(require 'use-package)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(use-package evil
  :ensure t
  :init
  (setq evil-want-keybinding nil)
  (evil-mode))

(use-package evil-collection
  :ensure t
  :init
  (evil-collection-init))

(use-package magit :ensure t)

(use-package sis
  :ensure t
  :hook (after-init . sis-global-respect-mode)
  :config
  (sis-ism-lazyman-config nil "rime" 'native)

  (setq sis-prefix-override-keys '("C-c" "C-x" "C-h" "M-SPC"))

  (setq-default sis-inline-tighten-head-rule 0
                sis-inline-tighten-tail-rule 1))

@Eason0210
Copy link

Eason0210 commented Mar 31, 2022

@laishulu 我也遇到了类似的问题。

执行 magit-status (C-x g ) 后,如果光标在 unstaged changes 下面,就没法执行 C-x b C-x 1 等按键,提示按键未定义

C-x b is undefined 

光标在这个位置就不正常:

image

光标在这个位置的时候正常:

image

关闭 sis-global-respect-mode 后,都正常。

目前的解决方案:

配置变量sis-prefix-override-buffer-disable-predicates , "^magit-revision:"改成`"^magit", 可以正常工作。

(setq sis-prefix-override-buffer-disable-predicates
        (list 'minibufferp
              (lambda (buffer)
                (sis--string-match-p "^magit" (buffer-name buffer)))
              (lambda (buffer)
                (and (sis--string-match-p "^\*" (buffer-name buffer))
                     (not (sis--string-match-p "^\*new\*"
                                               (downcase (buffer-name buffer))))
                     (not (sis--string-match-p "^\*scratch\*"
                                               (downcase (buffer-name buffer))))))))

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

No branches or pull requests

4 participants