purcell / emacs.d

An Emacs configuration bundle with batteries included
BSD 2-Clause "Simplified" License
6.82k stars 2.04k forks source link

org-mode cannot swap lists #862

Closed jiangshanyu closed 1 month ago

jiangshanyu commented 4 months ago

Under emacs org mode, when trying to swap lists (option+shift+uparrow, or just option+uparrow), receiving a user-error: No further hunks found.

purcell commented 4 months ago

I suspect this is something local to your configuration, because I can't reproduce this locally. It sounds like the bindings are triggering commands in diff-hl-mode, but for me those two bindings just cause the normal org-mode actions.

jiangshanyu commented 4 months ago

Hummm, I tried the following:

  1. removed init-local, the same error occurs;
  2. removed .emacs.d completely, it worked;
  3. with a clean install, no additional touches, the same error occurs.

GNU Emacs 29.2, used in terminal, on Sonoma 14.4.

dcorking commented 3 months ago

I can't get those 2 key combinations to work at all in Terminal with Emacs 29.3, Sonoma 14.4. Emacs sees them as <up> which is mapped to previous-line.

(In GUI mode, for me, option-shift-uparrow is S-up that calls (org-shiftup) as I expected: it will swap list rows or kill table rows. option-uparrow is M-<up> that maps to (org-metaup) that will swap two items (lists, subtrees, tables , paragraphs). I expect that is what is broken for you.)

If you still need help,

  1. What are the outputs of C-h k (describe-key) for your key combinations?
  2. What are your key actions in Terminal profile? [I don't have any set for those keys.]
  3. Does everything work as expected in GUI mode?
  4. (By the way, do you have "Use Option as Meta Key" set? [I don't] do you start emacs from zsh? and what are your relevant customizations, if any, in $HOME/.zshrc)
jiangshanyu commented 2 months ago

Thanks @dcorking! Sorry for my late in reply -- I was working towards several deadlines and then forgot about it.

What are the outputs of C-h k (describe-key) for your key combinations? Please find the output below: "runs the command diff-hl-previous-hunk (found in diff-hl-mode-map), which is an interactive byte-compiled Lisp function in ‘diff-hl.el’. It is bound to M-ESC and C-x v [. (diff-hl-previous-hunk) Go to the beginning of the previous hunk in the current buffer. [back] "

Does everything work as expected in GUI mode? I don't have GUI installed, but the terminal version works before me updating to the current version of emacs. (By the way, do you have "Use Option as Meta Key" set? Yes, I have this set already.

dcorking commented 1 month ago

Your paste missed out the beginning of the output of C-h k. However the parts you show make it pretty clear that your Emacs is not being sent the keystrokes you typed. I think you must have something in your terminal, shell or keyboard driver that is mapping option+shift+uparrow, or just option+uparrow to either option-esc or C-x v [ . (The first part will tell you which key strokes Emacs actually received.)

To diagnose your keyboard driver, I think the virtual keyboard might help you. I'm not a zsh user, but I suggest you also check for relevant bindkey entries in your plugins and customizations.

Alternatively, and probably simpler than all that, add a new global-set-key to 'org-metaup in your init-local.el .

Just for info mine looks like this in Linux and macOS (whether in no-window-system mode or GUI, for example if I start it with emacs -nw -q so bypassing all customizations.):

M-<up> runs the command org-metaup (found in org-mode-map), which is
an interactive byte-compiled Lisp function in ‘org.el’.

org.el is built in to Emacs: purcell/emacs.d doesn't do anything special with this keybinding.

jiangshanyu commented 1 month ago

Hi @dcorking

Thanks for your suggestions. I at the end disabled the keybindings in diff-hl to resolve the issue, with the following code added in my init-local.el

(with-eval-after-load 'diff-hl ;; Unbind M-ESC and C-x v [ (define-key diff-hl-mode-map (kbd "M-ESC") nil) (define-key diff-hl-mode-map (kbd "C-x v [") nil))

purcell commented 1 month ago

Yay, glad you figured this out. Thanks for the helpful replies, @dcorking!