From: Ken Williams <Ken.Williams@windlogics.com> To: "emacs-orgmode@gnu.org" <emacs-orgmode@gnu.org> Subject: [patch] change indentation logic for edit-src Date: Thu, 16 Aug 2012 14:30:06 -0500 [thread overview] Message-ID: <21A5E1E970CD46459ECBE86D6CC4B28C674153FC@spexch01.WindLogics.local> (raw) [-- Attachment #1.1: Type: text/plain, Size: 1314 bytes --] Following on a message from a few days ago, I've prepared a patch (attached) that alters the behavior of 'org-edit-src-exit' so that it no longer adds an extra 2 spaces of indentation each time a source block (or a table.el table) is edited. Previously a workaround was to set 'org-src-preserve-indentation', but without that set, you'd get the undesirable behavior. There's probably some stuff wrong with this approach - let me know. I'm new to both elisp programming and the org-mode code. I also created a little utility function 'org-prefixify', not sure whether that's kosher or not. One change that would be nice to make to it is to avoid prefixing the final line if it's blank, but I couldn't get that to work. Also - could that essentially be replaced by a call to string-insert-rectangle? -- Ken Williams, Senior Research Scientist WindLogics http://windlogics.com ________________________________ CONFIDENTIALITY NOTICE: This e-mail message is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution of any kind is strictly prohibited. If you are not the intended recipient, please contact the sender via reply e-mail and destroy all copies of the original message. Thank you. [-- Attachment #1.2: Type: text/html, Size: 3600 bytes --] [-- Attachment #2: 0001-Change-the-edit-src-save-code-so-that-it-either-pres.txt --] [-- Type: text/plain, Size: 2564 bytes --] From d80b7726402a39b4c8a630a86614b0ba9d7eca6a Mon Sep 17 00:00:00 2001 From: Ken Williams <Ken.Williams@WindLogics.com> Date: Thu, 16 Aug 2012 13:26:44 -0500 Subject: [PATCH] Change the edit-src-save code so that it either preserves original formatting, or imposes its new indentation, but not both. --- lisp/org-src.el | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lisp/org-src.el b/lisp/org-src.el index c110f32..61b800f 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -601,11 +601,9 @@ the language, a switch telling if the content should be in a single line." (buffer (current-buffer)) (single (org-bound-and-true-p org-edit-src-force-single-line)) (macro (eq single 'macro-definition)) - (total-nindent (+ (or org-edit-src-block-indentation 0) - org-edit-src-content-indentation)) (preserve-indentation org-src-preserve-indentation) (allow-write-back-p (org-bound-and-true-p org-edit-src-allow-write-back-p)) - (delta 0) code line col indent) + (delta 0) code line col indent total-nindent) (when allow-write-back-p (unless preserve-indentation (untabify (point-min) (point-max))) (if org-src-strip-leading-and-trailing-blank-lines @@ -640,14 +638,10 @@ the language, a switch telling if the content should be in a single line." (when (org-bound-and-true-p org-edit-src-picture) (setq preserve-indentation nil) (untabify (point-min) (point-max)) - (goto-char (point-min)) - (while (re-search-forward "^" nil t) - (replace-match ": "))) - (unless (or single preserve-indentation (= total-nindent 0)) - (setq indent (make-string total-nindent ?\ )) - (goto-char (point-min)) - (while (re-search-forward "^" nil t) - (replace-match indent))) + (org-prefixify ": ")) + (setq total-nindent (if preserve-indentation (or org-edit-src-block-indentation 0) + org-edit-src-content-indentation )) + (org-prefixify (make-string total-nindent ?\ )) (if (org-bound-and-true-p org-edit-src-picture) (setq total-nindent (+ total-nindent 2))) (setq code (buffer-string)) @@ -692,6 +686,12 @@ the language, a switch telling if the content should be in a single line." (message (or msg "")))) (def-edebug-spec org-src-in-org-buffer (body)) +(defun org-prefixify (s) + (unless (string= "" s) + (goto-char (point-min)) + (while (re-search-forward "^" nil t) + (replace-match s)))) + (defun org-edit-src-save () "Save parent buffer with current state source-code buffer." (interactive) -- 1.7.9
next reply other threads:[~2012-08-16 19:30 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-08-16 19:30 Ken Williams [this message] 2012-08-21 23:13 ` Bastien 2012-08-22 13:58 ` Ken Williams 2012-08-22 14:32 ` Bastien 2012-08-17 15:27 Ken Williams 2012-08-17 15:47 ` Nick Dokos
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=21A5E1E970CD46459ECBE86D6CC4B28C674153FC@spexch01.WindLogics.local \ --to=ken.williams@windlogics.com \ --cc=emacs-orgmode@gnu.org \ --subject='Re: [patch] change indentation logic for edit-src' \ /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).