Subject: bug#34977: org-edit-src-code undesirable behaviour

From: pinkanon pinkanon <[email-masked]>
Date: Sun, 24 Mar 2019 18:33:55 +0200

GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.7) of 2019-03-17
Org mode version 9.1.9 (release_9.1.9-65-g5e4542 @ /usr/share/emacs/26.1/lisp/org/)

There are two things that work undesirably for me when using org-edit-src-code:
(1) With a selected region, the point in the edit buffer will be one line below the bottom of the selection.
(2) After closing the edit buffer, if it was modified, the point jumps to the beginning of the block.
(3) If I wanted to programmatically edit src code in the block, is calling 'org-edit-src-code the right way anyway? Because there seems to be some lag, besides the points mentioned above.

Steps to reproduce:

M-x org-mode

Eval this function:

  (defun commit-bad-deeds ()
    (interactive)
    (let* ((p (point))
           (w (get-buffer-window (current-buffer))))
      (org-edit-src-code)
      (gnus-delete-line) ; any code that modifies buffer
      (org-edit-src-exit)
      (set-window-point w p)))

Bind it:

(global-set-key (kbd "M-w") 'commit-bad-deeds)

Paste this code:

#+BEGIN_SRC elisp
(1) cursor jumps to the beginning of this line
(2) lawfully-good line to be selected
(3) and this line to be murdered instead
(4) w/ no witnesses
#+END_SRC

- Jump to line (2)
- Select whole line: (progn (end-of-line) (set-mark (line-beginning-position))) or any other way
- press M-w

Observe:
(1) Line (3) removed instead of (2)
(2) Point jumping to the beginning of the block
(3) Lag?