From: Andrey Orst <andreyorst@gmail.com> To: emacs-orgmode@gnu.org Subject: Bug: incorrect indentation of code in source code blocks Date: Tue, 2 Feb 2021 14:34:34 +0300 [thread overview] Message-ID: <CAAKhXobWP+pvu_LW+n2ZO1hWnrQ5rpdgybrh8Ah0ZDnznRjdKQ@mail.gmail.com> (raw) [-- Attachment #1: Type: text/plain, Size: 5961 bytes --] Hello, I think I've found some bugs with indentation of org mode source code blocks. Bug 1 When edited within the Org buffer, e.g. not by entering indirect buffer with C-c ' the indentation misses two spaces (█ represents the point): #+begin_src emacs-lisp (progn 1 2█ 3) #+end_src Pressing RET here results in the following indent: #+begin_src emacs-lisp (progn 1 2 █ 3) #+end_src But inputting a number and pressing TAB will indent it correctly: #+begin_src emacs-lisp (progn 1 2 0█ 3) #+end_src Org doesn't seem to take into account the leading two space indentation, and sends deindented buffer to indent function. (See demo-1.mp4 for more clear view of the problem) Bug 2 Org mode adds extra two space indent to whole expression if point is before the closing parenthesis: #+begin_src emacs-lisp (progn 1 2 3█) #+end_src Pressing RET here produces extra indentation: #+begin_src emacs-lisp (progn 1 2 3 █) #+end_src (See demo-2.mp4 for more clear view of the problem) All of this occurs in emacs -q with GNU Emacs 28.0.50. Now, I must say, that setting `org-src-preserve-indentation' variable to `t' "fixes" the issue. Org will correctly indent code, but will preserve these additional spaces when entering indirect buffer. I like the default behavior more, e.g. having two spaces before the code in Org buffer, and not having these spaces in indirrect buffer. It seems to me that the fix would be to let bind this variable to `t' ony when indenting the code, but there might be a better solution. Currenlty I've have this workaround in my config: (define-advice org-return (:around (f &optional indent arg interactive) aorst:org-return) (let ((org-src-preserve-indentation t)) (funcall f indent arg interactive))) (define-advice org-cycle (:around (f &optional arg) aorst:org-cycle) (let ((org-src-preserve-indentation t)) (funcall f arg))) Though this fixes the error, I think it is a hack. Emacs : GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.13, cairo version 1.16.0) of 2021-01-17 Package: Org mode version 9.4.4 (release_9.4.4 @ /home/andreyorst/.local/emacs/share/emacs/28.0.50/lisp/org/) current state: ============== (setq org-confirm-elisp-link-function 'yes-or-no-p org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate) org-occur-hook '(org-first-headline-recenter) org-babel-pre-tangle-hook '(save-buffer) org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-show-empty-lines org-optimize-window-after-visibility-change) outline-isearch-open-invisible-function 'outline-isearch-open-invisible org-archive-hook '(org-attach-archive-delete-maybe) org-agenda-loop-over-headlines-in-active-region nil org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer) org-confirm-shell-link-function 'yes-or-no-p org-bibtex-headline-format-function #[257 "\300 \236A\207" [:title] 3 "\n\n(fn ENTRY)"] org-metadown-hook '(org-babel-pop-to-session-maybe) org-mode-hook '(#[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-show-all append local] 5] #[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-babel-show-result-all append local] 5] org-babel-result-hide-spec org-babel-hide-all-hashes) org-metaup-hook '(org-babel-load-in-session-maybe) org-link-shell-confirm-function 'yes-or-no-p org-link-parameters '(("attachment" :follow org-attach-follow :complete org-attach-complete-link) ("id" :follow org-id-open) ("eww" :follow org-eww-open :store org-eww-store-link) ("rmail" :follow org-rmail-open :store org-rmail-store-link) ("mhe" :follow org-mhe-open :store org-mhe-store-link) ("irc" :follow org-irc-visit :store org-irc-store-link :export org-irc-export) ("info" :follow org-info-open :export org-info-export :store org-info-store-link) ("gnus" :follow org-gnus-open :store org-gnus-store-link) ("docview" :follow org-docview-open :export org-docview-export :store org-docview-store-link) ("bibtex" :follow org-bibtex-open :store org-bibtex-store-link) ("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete org-bbdb-complete-link :store org-bbdb-store-link) ("w3m" :store org-w3m-store-link) ("file+sys") ("file+emacs") ("shell" :follow org-link--open-shell) ("news" :follow #[514 "\301\300\302 Q \"\207" ["news" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("mailto" :follow #[514 "\301\300\302 Q \"\207" ["mailto" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("https" :follow #[514 "\301\300\302 Q \"\207" ["https" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("http" :follow #[514 "\301\300\302 Q \"\207" ["http" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("ftp" :follow #[514 "\301\300\302 Q \"\207" ["ftp" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("help" :follow org-link--open-help) ("file" :complete org-link-complete-file) ("elisp" :follow org-link--open-elisp) ("doi" :follow org-link--open-doi)) org-export-before-parsing-hook '(org-attach-expand-links) org-clock-out-hook '(org-clock-remove-empty-clock-drawer) org-agenda-before-write-hook '(org-agenda-add-entry-text) org-link-elisp-confirm-function 'yes-or-no-p org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand) ) -- Best regards, Andrey Listopadov [-- Attachment #2: demo-2.mp4 --] [-- Type: video/mp4, Size: 58749 bytes --] [-- Attachment #3: demo-1.mp4 --] [-- Type: video/mp4, Size: 75095 bytes --]
reply other threads:[~2021-02-02 11:36 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAAKhXobWP+pvu_LW+n2ZO1hWnrQ5rpdgybrh8Ah0ZDnznRjdKQ@mail.gmail.com \ --to=andreyorst@gmail.com \ --cc=emacs-orgmode@gnu.org \ --subject='Re: Bug: incorrect indentation of code in source code blocks' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).