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