[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org dd4d05a159 05/10: ob-tangle: Add flag to optionally
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org dd4d05a159 05/10: ob-tangle: Add flag to optionally remove files before writing |
Date: |
Thu, 29 Feb 2024 06:58:54 -0500 (EST) |
branch: externals/org
commit dd4d05a15931f04875ee6858dfb2b1951ecbe65c
Author: Olivier Lischer <olivier.lischer@liolin.ch>
Commit: Ihor Radchenko <yantar92@posteo.net>
ob-tangle: Add flag to optionally remove files before writing
* lisp/ob-tangle.el: Add new custom option
`org-babel-tangle-remove-file-before-write'.
(org-babel-tangle): Remove file before writing according to the value
of `org-babel-tangle-remove-file-before-write'.
The variable `org-babel-tangle-remove-file-before-write' adds support
for the current and old behaviour of `org-babel-tangle'.
Link: https://list.orgmode.org/orgmode/877cjzhjtg.fsf@liolin.ch/
Co-authored-by: Ihor Radchenko <yantar92@posteo.net>
TINYCHANGE
---
etc/ORG-NEWS | 10 ++++++++++
lisp/ob-tangle.el | 31 ++++++++++++++++++++++++++++++-
2 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index dc0d9c0adc..26f0c90f95 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -928,6 +928,16 @@ properties, links to headlines in the file can also be
made more
robust by using the file id instead of the file path.
** New features
+*** =ob-tangle.el=: New flag to remove tangle targets before writing
+
+When ~org-babel-tangle-remove-file-before-write~ is set to ~t~ the
+tangle target is removed before writing. This will allow overwriting
+read-only tangle targets. However, when tangle target is a symlink,
+this will convert the tangle target into an ordinary file.
+
+The default value is ~auto~ -- overwrite tangle targets when they are
+read-only.
+
*** ~org-bibtex-yank~ accepts a prefix argument
When called with a prefix argument, ~org-bibtex-yank~ adds data to the
diff --git a/lisp/ob-tangle.el b/lisp/ob-tangle.el
index 281ab13d44..9bb69e5da5 100644
--- a/lisp/ob-tangle.el
+++ b/lisp/ob-tangle.el
@@ -166,6 +166,23 @@ read-write permissions for the user, read-only for
everyone else."
:package-version '(Org . "9.6")
:type 'integer)
+(defcustom org-babel-tangle-remove-file-before-write 'auto
+ "How to overwrite the existing tangle target.
+When set to nil, `org-babel-tangle' will replace contents of an existing
+tangle target (and fail when tangle target is read-only).
+When set to t, the tangle target (including read-only) will be deleted
+first and a new file, possibly with different ownership and
+permissions, will be created.
+When set to symbol `auto', overwrite read-only tangle targets and
+replace contents otherwise."
+ :group 'org-babel-tangle
+ :package-version '(Org . "9.7")
+ :type '(choice
+ (const :tag "Replace contents, but keep the same file" nil)
+ (const :tag "Re-create file" t)
+ (const :tag "Re-create when read-only" auto))
+ :safe t)
+
(defun org-babel-find-file-noselect-refresh (file)
"Find file ensuring that the latest changes on disk are
represented in the file."
@@ -323,7 +340,19 @@ matching a regular expression."
(error "Not allowed to tangle into the same file as
self"))
;; We do not erase, but overwrite previous file
;; to preserve any existing symlinks.
- (write-region nil nil file-name)
+ ;; This behavior is modified using
+ ;; `org-babel-tangle-remove-file-before-write' to
+ ;; tangle to read-only files.
+ (when (and
+ (file-exists-p file-name)
+ (pcase org-babel-tangle-remove-file-before-write
+ (`auto (not (file-writable-p file-name)))
+ (`t t)
+ (`nil nil)
+ (_ (error "Invalid value of
`org-babel-tangle-remove-file-before-write': %S"
+
org-babel-tangle-remove-file-before-write))))
+ (delete-file file-name))
+ (write-region nil nil file-name)
(mapc (lambda (mode) (set-file-modes file-name mode))
modes))
(push file-name path-collector))))))
(if (equal arg '(4))
- [elpa] externals/org updated (755fef38f5 -> ac49228040), ELPA Syncer, 2024/02/29
- [elpa] externals/org c841be9656 07/10: lisp/ol.el (org-target-link-regexp-limit): Bump value, ELPA Syncer, 2024/02/29
- [elpa] externals/org 6ef0154576 09/10: org-up-heading-safe: Return true level, ignoring org-odd-levels-only, ELPA Syncer, 2024/02/29
- [elpa] externals/org 9029470eb9 04/10: fixup! oc-basic.el: Drop {...} when rendering Bibtex entries, ELPA Syncer, 2024/02/29
- [elpa] externals/org dd4d05a159 05/10: ob-tangle: Add flag to optionally remove files before writing,
ELPA Syncer <=
- [elpa] externals/org ac49228040 10/10: Merge branch 'bugfix', ELPA Syncer, 2024/02/29
- [elpa] externals/org ac1ed2bf85 03/10: lisp/org-colview.el: Fix computing summary with low-level first child, ELPA Syncer, 2024/02/29
- [elpa] externals/org 731d16f9e9 08/10: org-table-to-lisp: Preserve text properties, ELPA Syncer, 2024/02/29
- [elpa] externals/org d2df9624ce 02/10: oc-basic.el: Drop {...} when rendering Bibtex entries, ELPA Syncer, 2024/02/29
- [elpa] externals/org 286a8fb798 01/10: org-element-insert-before: Fix return value when setting plain-text, ELPA Syncer, 2024/02/29
- [elpa] externals/org 341a01a07d 06/10: Work around regexp size limitation for large number of link targets, ELPA Syncer, 2024/02/29