wasamasa / eyebrowse

A simple-minded way of managing window configs in emacs
GNU General Public License v3.0
437 stars 24 forks source link

Overriding eyebrowse-keymap-prefix doesn't work #49

Closed saevarb closed 8 years ago

saevarb commented 8 years ago

I have the following use-package declaration

(use-package eyebrowse
  :ensure t
  :config
  (setq eyebrowse-keymap-prefix nil)
  (eyebrowse-mode t)
  (eyebrowse-setup-evil-keys)
  (setq eyebrowse-wrap-around t
        eyebrowse-switch-back-and-forth t)
  (global-set-key (kbd "s-1") 'eyebrowse-switch-to-window-config-1)
  (global-set-key (kbd "s-2") 'eyebrowse-switch-to-window-config-2)
  (global-set-key (kbd "s-3") 'eyebrowse-switch-to-window-config-3)
  (global-set-key (kbd "s-4") 'eyebrowse-switch-to-window-config-4)
  (global-set-key (kbd "s-5") 'eyebrowse-switch-to-window-config-5)
  )

Regardless, C-w is bound by eyebrowse. I took a peek at the code to do some debugging, and found

(defvar eyebrowse-mode-map
  (let ((map (make-sparse-keymap)))
    (let ((prefix-map (make-sparse-keymap)))
      (define-key prefix-map (kbd "<") 'eyebrowse-prev-window-config)
      (define-key prefix-map (kbd ">") 'eyebrowse-next-window-config)
      (define-key prefix-map (kbd "'") 'eyebrowse-last-window-config)
      (define-key prefix-map (kbd "\"") 'eyebrowse-close-window-config)
      (define-key prefix-map (kbd ",") 'eyebrowse-rename-window-config)
      (define-key prefix-map (kbd ".") 'eyebrowse-switch-to-window-config)
      (define-key prefix-map (kbd "0") 'eyebrowse-switch-to-window-config-0)
      (define-key prefix-map (kbd "1") 'eyebrowse-switch-to-window-config-1)
      (define-key prefix-map (kbd "2") 'eyebrowse-switch-to-window-config-2)
      (define-key prefix-map (kbd "3") 'eyebrowse-switch-to-window-config-3)
      (define-key prefix-map (kbd "4") 'eyebrowse-switch-to-window-config-4)
      (define-key prefix-map (kbd "5") 'eyebrowse-switch-to-window-config-5)
      (define-key prefix-map (kbd "6") 'eyebrowse-switch-to-window-config-6)
      (define-key prefix-map (kbd "7") 'eyebrowse-switch-to-window-config-7)
      (define-key prefix-map (kbd "8") 'eyebrowse-switch-to-window-config-8)
      (define-key prefix-map (kbd "9") 'eyebrowse-switch-to-window-config-9)
      (message (format "Before setting up keymap: %S" eyebrowse-keymap-prefix))
      (define-key map eyebrowse-keymap-prefix prefix-map))
    map)
  "Initial key map for `eyebrowse-mode'.")

I added the message, of course. The output is Before setting up keymap: "^C^W".

I am really not a elisp guru, so I don't know how things are evaluated and when, but it could look like this issue is because the variable has its default value when eyebrowse is loaded and the keymap is defined using that? I dunno. I have grepped all my emacs files for other stuff involving eyebrowse, and there is none, so I can only think of this issue being in eyebrowse.

wasamasa commented 8 years ago

You are correct, the keymap is initialized as soon as eyebrowse.el has been loaded. So, to change its prefix, you must customize it before loading that file. I don't know how use-package works exactly, but I'm sure it has some way to do it like this as it's a thing other packages do as well (like, Evil).

edit: "Use the :init keyword to execute code before a package is loaded. It accepts one or more forms, up until the next keyword: […]".

articuluxe commented 8 years ago

In use-package, the :init form is evaluated before the package is loaded, and the :config form after. So all you have to do is move the setting of the key to :init.

On Apr 26, 2016, at 1:55 PM, Vasilij Schneidermann notifications@github.com wrote:

You are correct, the keymap is initialized as soon as eyebrowse.el has been loaded. So, to change its prefix, you must customize it before loading that file. I don't know how use-package works exactly, but I'm sure it has some way to do it like this as it's a thing other packages do as well (like, Evil).

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub

saevarb commented 8 years ago

Aah, my bad. I simply changed it before (eyebrowse-mode t) and thought that was enough. Thanks!