From: Tom Gillespie <tgbugs@gmail.com> To: Tom Gillespie <tgbugs@gmail.com>, emacs-orgmode <emacs-orgmode@gnu.org> Subject: Re: Bug: inconsistent escaping of coderef regexp Date: Wed, 7 Apr 2021 12:44:28 -0700 [thread overview] Message-ID: <CA+G3_PONzfmfB-UpUcE3jzPw5fVsbjzTeCCO4UkToa9NeUUU-w@mail.gmail.com> (raw) In-Reply-To: <875z0ym0x8.fsf@nicolasgoaziou.fr> [-- Attachment #1: Type: text/plain, Size: 2019 bytes --] Hi Nicolas, I've included the simplest patch I could come up with for the divergence in behavior between org-babel-tangle-single-file and org-link-search. I think there are two new threads that I need to create. One is related to how to make it possible to specify what should be removed along with the coderef (i.e. coderef prefix), the other is the addition of header arguments that provide the same functionality as switches. Best, Tom > This is already conflating the two. I'd like to solve the issue at hand > without having header args interfere at all. > > This can happen later, after a discussion on the ML. Ok. I've included the simplest version of the fix, which is to use org-src-coderef-regexp in org-babel-tangle-single-file. > Would you mind answering my questions first? I still don't follow you > about the coderef prefix/regexp. https://code.orgmode.org/bzg/org-mode/src/2d78ea57cfad1ddc3e993c949daf117b76315170/lisp/org-src.el#L882 That line defines a hardcoded regular expression for matching coderefs. The codref prefix is the first =[ \t]*= and the coderef regexp is the equivalent to the fully formatted version of that format string. Neither of those can currently be specified by the user. The user should not be able to specify the coderef regexp due to the fact that it is too easy to specify a regexp that will not work correctly and because the format string is needed to make org-link-search work for named coderefs (otherwise you wind up trying to replace .+ in the coderef regexp which is a nightmare). The coderef prefix is something that should probably be configurable by the user so that empty comments are not left in the file. I also looked into detecting the comment character for the language in question, but that is significantly more difficult even using (with-temp-buffer (funcall lang-mode) comment-start) because not all languages have sane comment start values and comment-start is not complete, so we would need a way to manually specify what to exclude anyway. [-- Attachment #2: 0001-lisp-ob-tangle.el-Fix-coderef-removal-during-tanglin.patch --] [-- Type: text/x-patch, Size: 1622 bytes --] From c30913da6b1c8d6be3670a59ae867df019505af3 Mon Sep 17 00:00:00 2001 From: Tom Gillespie <tgbugs@gmail.com> Date: Wed, 7 Apr 2021 12:29:01 -0700 Subject: [PATCH] lisp/ob-tangle.el: Fix coderef removal during tangling * lisp/ob-tangle.el (orb-babel-tangle-single-block): Regularize behavior when removing coderefs during tangling. This fixes an issue where trailing whitespace would be retained when coderefs were removed for tangling. --- lisp/ob-tangle.el | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lisp/ob-tangle.el b/lisp/ob-tangle.el index aa0373ab8..4c0c3132d 100644 --- a/lisp/ob-tangle.el +++ b/lisp/ob-tangle.el @@ -414,9 +414,8 @@ non-nil, return the full association list to be used by (src-lang (nth 0 info)) (params (nth 2 info)) (extra (nth 3 info)) - (cref-fmt (or (and (string-match "-l \"\\(.+\\)\"" extra) - (match-string 1 extra)) - org-coderef-label-format)) + (coderef (nth 6 info)) + (cref-regexp (org-src-coderef-regexp coderef)) (link (let ((l (org-no-properties (org-store-link nil)))) (and (string-match org-link-bracket-re l) (match-string 1 l)))) @@ -445,8 +444,7 @@ non-nil, return the full association list to be used by (funcall assignments-cmd params)))))) (when (string-match "-r" extra) (goto-char (point-min)) - (while (re-search-forward - (replace-regexp-in-string "%s" ".+" cref-fmt) nil t) + (while (re-search-forward cref-regexp nil t) (replace-match ""))) (run-hooks 'org-babel-tangle-body-hook) (buffer-string)))) -- 2.26.3
next prev parent reply other threads:[~2021-04-07 19:45 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-01-04 20:33 Tom Gillespie 2021-04-01 15:45 ` Nicolas Goaziou 2021-04-01 16:09 ` Timothy 2021-04-04 22:01 ` Tom Gillespie 2021-04-04 23:12 ` Nicolas Goaziou 2021-04-05 5:22 ` Tom Gillespie 2021-04-05 7:42 ` Tom Gillespie 2021-04-07 17:58 ` Nicolas Goaziou 2021-04-07 19:44 ` Tom Gillespie [this message] 2021-04-09 22:19 ` Nicolas Goaziou
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=CA+G3_PONzfmfB-UpUcE3jzPw5fVsbjzTeCCO4UkToa9NeUUU-w@mail.gmail.com \ --to=tgbugs@gmail.com \ --cc=emacs-orgmode@gnu.org \ --subject='Re: Bug: inconsistent escaping of coderef regexp' \ /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).