meow-edit / doom-meow

Meow integration for Doom Emacs
14 stars 2 forks source link

Not working on Fedora 41 with Doom Emacs #3

Closed Rope-a-dope closed 2 weeks ago

Rope-a-dope commented 3 weeks ago

Both Fedora 41 (with Kernel 6.11.5) and Doom Emacs are the latest stable version(29.4). Followed the instruction, but after I enabled doom-meow in my doom! block and disabled the evil, the leader key became old Emacs again and when I opened file like init.el, I can't do anything with any key. Is there something I did not do?

The leader and localleader bindings are defined in <a href=”doom-module::config default +bindings”>doom-module::config default +bindings, so that module is required for them to work. For this part, the default Doom Emacs config is like below so I keep it unchanged.

:config 
(default +bindings)

Also, is it better to give a command that can be copied and run directly? Maybe update

mkdir -p ~/.doom.d/modules/editor && git clone <this-module-url> ~/.doom.d/modules/editor/meow

to

mkdir -p ~/.doom.d/modules/editor && git clone https://github.com/meow-edit/doom-meow ~/.doom.d/modules/editor/meow
45mg commented 2 weeks ago

Followed the instruction, but after I enabled doom-meow in my doom! block and disabled the evil, the leader key became old Emacs again and when I opened file like init.el, I can't do anything with any key.

Not really sure what this could be. Did you run doom sync after changing init.el? Did you enable the module correctly (add meow, not doom-meow, after the :editor keyword in your doom! block)?

Also, is it better to give a command that can be copied and run directly?

Yeah, forgot to remove that placeholder. Done in https://github.com/meow-edit/doom-meow/commit/6dc3b8f0808eb1fa8dbcdf0f0b31540ebbca07df.

Rope-a-dope commented 2 weeks ago

Followed the instruction, but after I enabled doom-meow in my doom! block and disabled the evil, the leader key became old Emacs again and when I opened file like init.el, I can't do anything with any key.

Not really sure what this could be. Did you run doom sync after changing init.el? Did you enable the module correctly (add meow, not doom-meow, after the :editor keyword in your doom! block)?

Yes, I did both twice. Please see below. Then run "doom sync", then open Emacs, Emacs shows up with "C-C f r" keybinds on startup, then open init.el, couldn't move the cursor, the bottom shows buffer is read-only.

       :editor
       (meow +everywhere)
       ;;(evil +everywhere); come to the dark side, we have cookies

       :config
       literate
       (default +bindings +smartparens))

Also, is it better to give a command that can be copied and run directly?

Yeah, forgot to remove that placeholder. Done in 6dc3b8f.

45mg commented 2 weeks ago
       :editor
       (meow +everywhere)
       ;;(evil +everywhere); come to the dark side, we have cookies

       :config
       literate
       (default +bindings +smartparens))

Ah, I see the issue. First of all, there is no +everywhere flag for this module. Second, you need to set up bindings for Meow; see the 'Module flags' README section. I've emphasized this in https://github.com/meow-edit/doom-meow/commit/2798e095d5b9ec098aa50460f761994426736bc9.

Rope-a-dope commented 2 weeks ago
       :editor
       (meow +everywhere)
       ;;(evil +everywhere); come to the dark side, we have cookies

       :config
       literate
       (default +bindings +smartparens))

Ah, I see the issue. First of all, there is no +everywhere flag for this module. Second, you need to set up bindings for Meow; see the 'Module flags' README section. I've emphasized this in 2798e09.

Thanks a lot! I finally got it working. By the way 'Module flags' link is 404.

Since "doom doctor" will complain two private configs, in ~/.config/doom/ and ~/.doom.d/, I just moved the module to the doom emacs config folder.

 cp -r ~/.doom.d/modules/editor/meow ~/.config/emacs/modules/editor/

init.el

       :editor
       (meow +qwerty)
       ;;(evil +everywhere); come to the dark side, we have cookies

       :config
       ;;literate
       (default +bindings +smartparens))

So this is the whole process to get it working. Is it a good idea to update the instruction to be more clear? Thank you!

git clone https://github.com/meow-edit/doom-meow  ~/.config/emacs/modules/editor/meow

init.el

       :editor
       (meow +qwerty)
       ;;(evil +everywhere); come to the dark side, we have cookies

       :config
       ;;literate
       (default +bindings +smartparens))
45mg commented 2 weeks ago

EDIT: Whoops, you figured it out yourself while I was typing. Ignore this :)

I can see a number of issues here.

First, you have a config.org. This is an org-mode literate configuration file, so Elisp code needs to be enclosed in source blocks, and then the file must be tangled to generate the actual Elisp config. I've never used a literate config, but I'm pretty sure you can't just treat it like a regular config.el. At any rate, if you only have 4 lines of Elisp in your entire configuration, why not disable :config literate and use a regular config.el?

Second - you appear to be loading the bindings-qwerty.el file that's part of this module. You don't need to explicitly load that file, because all files in a module's autoload/ directory are autoloaded (see the Emacs manual and Doom's docs for more info).

Third, the setup function defined in that file is called +meow--setup-qwerty, not meow-setup-qwerty; if you do M-x view-echo-area-messages, you'll probably see a void-function error. On top of that, rather than calling it in your config, you should enable the +qwerty module flag, which will cause it to be called at the right time in the init process.

Rope-a-dope commented 2 weeks ago

I can see a number of issues here.

First, you have a config.org. This is an org-mode literate configuration file, so Elisp code needs to be enclosed in source blocks, and then the file must be tangled to generate the actual Elisp config. I've never used a literate config, but I'm pretty sure you can't just treat it like a regular config.el. At any rate, if you only have 4 lines of Elisp in your entire configuration, why not disable :config literate and use a regular config.el?

Second - you appear to be loading the bindings-qwerty.el file that's part of this module. You don't need to explicitly load that file, because all files in a module's autoload/ directory are autoloaded (see the Emacs manual and Doom's docs for more info).

Third, the setup function defined in that file is called +meow--setup-qwerty, not meow-setup-qwerty; if you do M-x view-echo-area-messages, you'll probably see a void-function error. On top of that, rather than calling it in your config, you should enable the +qwerty module flag, which will cause it to be called at the right time in the init process.

Thank you for your quick reply! When I reinstalled Doom Emacs, I use the default config.el because literate is commented out by default in init.el.

I did have this in the end.

       :editor
       (meow +qwerty)
       ;;(evil +everywhere); come to the dark side, we have cookies
Rope-a-dope commented 2 weeks ago
       :editor
       (meow +everywhere)
       ;;(evil +everywhere); come to the dark side, we have cookies

       :config
       literate
       (default +bindings +smartparens))

Ah, I see the issue. First of all, there is no +everywhere flag for this module. Second, you need to set up bindings for Meow; see the 'Module flags' README section. I've emphasized this in 2798e09.

Thanks a lot! I finally got it working. By the way 'Module flags' link is 404.

Since "doom doctor" will complain two private configs, in ~/.config/doom/ and ~/.doom.d/, I just moved the module to the doom emacs config folder.

 cp -r ~/.doom.d/modules/editor/meow ~/.config/emacs/modules/editor/

init.el

       :editor
       (meow +qwerty)
       ;;(evil +everywhere); come to the dark side, we have cookies

       :config
       ;;literate
       (default +bindings +smartparens))

So this is the whole process to get it working. Is it a good idea to update the instruction to be more clear? Thank you!

mkdir -p ~/.doom.d/modules/editor && git clone https://github.com/meow-edit/doom-meow  ~/.config/emacs/modules/editor/meow

init.el

       :editor
       (meow +qwerty)
       ;;(evil +everywhere); come to the dark side, we have cookies

       :config
       ;;literate
       (default +bindings +smartparens))

I'm really sorry to open it again. But I noticed a problem. Doom Emacs startup still shows old keybindings. Even though I can use SPC f r, but SPC b is shown undefined. I thought it is because I moved the module to the doom emacs config folder. So I deleted this ~/.config/emacs/modules/editor/meow folder. Then followed the instrucion to copy to ~/.doom.d/modules/editor/meow and doom sync again. But it became the problem I described in the first place, "doom doctor" will complain

  ! Detected two private configs, in ~/.config/doom/ and ~/.doom.d/
    The second directory will be ignored, as it has lower precedence.

old keybings show on startup, SPC leader key is undefined, the file like init.el is locked, can't move the cursor at all.

Update: The same problem is reproduced on my friend's computer which is install meow under ~/.doom.d/modules/editor/meow, get it working but losing Doom Emacs keybindings.

Is there a way to use doom-meow and Doom Emacs keybindings work at the same time? Or is there something wrong on my end? I tried reinstalled Doom Emacs a few times.

mkdir -p ~/.doom.d/modules/editor && git clone https://github.com/meow-edit/doom-meow ~/.doom.d/modules/editor/meow

image

45mg commented 2 weeks ago
  ! Detected two private configs, in ~/.config/doom/ and ~/.doom.d/
    The second directory will be ignored, as it has lower precedence.

You're meant to clone the module into $DOOMDIR, ie. the directory where your Doom config is. Clarified in https://github.com/meow-edit/doom-meow/commit/17e74474991b6cd7f07a3c17408b1ab970309b22.


Even though I can use SPC f r, but SPC b is shown undefined.

From the README:

Note that since this module cannot be used with Evil, you’ll be using Doom’s Emacs leader/localleader bindings, which are not the same as its Evil ones.

Without Evil, Doom doesn't define a b leader prefix. So those bindings are not present. You can manually define those bindings again if you want. Hovewer, as mentioned at the beginning of the README, it's recommended to do the Emacs Tutorial and learn Emacs' default keybindings for those actions; if any of those bindings are inconvenient, you can place them under SPC b.

Here's how I do that in my config:

(defvar 45mg/buffer-map
  (let ((map (make-sparse-keymap)))
    (define-key map (kbd "C-p") #'previous-buffer)
    (define-key map (kbd "C-n") #'next-buffer)
    (define-key map "r" #'revert-buffer-quick)
    map))
(define-key doom-leader-map "b" 45mg/buffer-map)