将 :general 与 use-package 一起使用有时不起作用

问题描述 投票:0回答:2

我开始将

evil-define-key
调用转换为使用
:general
扩展名
use-package
,有时它们有效,有时则无效。重新评估
(use-package ...)
s-表达式不会改变行为,所以我假设我有配置问题。

此代码有效,因为在正常模式状态下键入

g l
,会调用
link-hint
:

  (use-package link-hint
    :bind
    ("s-o" . link-hint-open-link)

    :general
    (:states 'normal :keymaps 'global-map
             "gl" 'link-hint-open-link
             "gL" 'link-hint-copy-link))

但是,下面的代码看起来非常相似,但在正常模式下并没有添加

g p
绑定:

  (use-package consult
    ;; Enable automatic preview at point in the *Completions* buffer. This is
    ;; relevant when you use the default completion UI.
    :hook (completion-list-mode . consult-preview-at-point-mode)

    :init
    ;; Use Consult to select xref locations with preview
    (setq xref-show-xrefs-function #'consult-xref
          xref-show-definitions-function #'consult-xref)

    :general
    (:states 'normal :keymaps 'global-mode-map
             "gp" 'consult-yank-pop
             "gs" 'consult-line))

我不认为问题出在

:general
扩展名上,但实际上是与 General.el 添加到
g
序列有关,因为以下内容也不起作用:

(general-define-key
  :states 'normal :keymaps 'global-mode-map
  "gp" '(consult-yank-pop :which-key "yank pop")
  "gs" '(consult-line :which-key "visual search"))

也许问题根本不在于一般性,因为以下方法也不起作用:

(evil-define-key 'normal 'global-mode-map (kbd "gp") 'consult-yank-pop)

所以我想我真正的问题是为什么

gl
有效,但
gs
gp
不起作用。

emacs evil-mode
2个回答
0
投票

虽然我不知道为什么我的初始代码有时会起作用,但将

:general
扩展名更改为
use-package
的全局地图的可靠方法是删除
global-mode-map
。换句话说:

(use-package consult
  ...
    :general
    (:states 'normal
             "gp" 'consult-yank-pop
             "gs" 'consult-line)

0
投票

第一段代码之所以有效,是因为您正确输入了键盘映射的名称:“global-map”。在其他文件中,您输入了“global-mode-map”,但它不存在。

© www.soinside.com 2019 - 2024. All rights reserved.