]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
po-mode: make (po-check-file-header) optional (bug #30835)
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Sun, 12 Sep 2010 17:52:30 +0000 (17:52 +0000)
committerDaiki Ueno <ueno@gnu.org>
Tue, 5 Mar 2013 03:30:04 +0000 (12:30 +0900)
po-mode would always overwrite the PO Header Entry when editing *.po
files. This isn't always desired behavior as noted in bug #30835 so
it's now customizable.

It can be customized through the po-auto-update-file-header variable,
which can be t, nil or 'ask. It's t by default to preserve the old
default behavior.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
gettext-tools/misc/ChangeLog
gettext-tools/misc/po-mode.el

index 9a9aac19ed28f340aa5b83739bd131fdf30e1b01..a9b3c30d1adc497745890aa304d72ec6abf3f453 100644 (file)
@@ -1,3 +1,8 @@
+2013-03-05  Ævar Arnfjörð Bjarmason  <avarab@gmail.com>  (tiny change)
+
+       * po-mode.el (po-auto-update-file-header): New user option.
+       (po-check-file-header): Respect 'po-auto-update-file-header'.
+
 2013-03-04  Daiki Ueno  <ueno@gnu.org>
 
        * autopoint.in: Handle macro directories specified in configure.ac.
index 0e6ef99bdeee26099fa5b4fa4c4bf4cd119df85a..94ddb07bdc3eddd4bd29aa4d244a497217fcd442 100644 (file)
@@ -130,6 +130,13 @@ Value is nil, t, or ask."
   :type 'boolean
   :group 'po)
 
+(defcustom po-auto-update-file-header t
+  "*Automatically revise headers.  Value is nil, t, or ask."
+  :type '(choice (const nil)
+                 (const t)
+                 (const ask))
+  :group 'po)
+
 (defcustom po-auto-replace-revision-date t
   "*Automatically revise date in headers.  Value is nil, t, or ask."
   :type '(choice (const nil)
@@ -1356,42 +1363,47 @@ Position %d/%d; %d translated, %d fuzzy, %d untranslated, %d obsolete")
 ;;; Processing the PO file header entry.
 
 (defun po-check-file-header ()
-  "Create a missing PO mode file header, or replace an oldish one."
-  (save-excursion
-    (save-restriction
-      (widen) ; in case of a narrowed view to the buffer
-      (let ((buffer-read-only po-read-only)
-            insert-flag end-of-header)
-        (goto-char (point-min))
-        (if (re-search-forward po-any-msgstr-block-regexp nil t)
-            (progn
-              ;; There is at least one entry.
-              (goto-char (match-beginning 0))
-              (forward-line -1)
-              (setq end-of-header (match-end 0))
-              (if (looking-at "msgid \"\"\n")
-                  ;; There is indeed a PO file header.
-                  (if (re-search-forward "\n\"PO-Revision-Date: "
-                                         end-of-header t)
-                      nil
-                    ;; This is an oldish header.  Replace it all.
-                    (goto-char end-of-header)
-                    (while (> (point) (point-min))
-                      (forward-line -1)
-                      (insert "#~ ")
-                      (beginning-of-line))
-                    (beginning-of-line)
-                    (setq insert-flag t))
-                ;; The first entry is not a PO file header, insert one.
-                (setq insert-flag t)))
-          ;; Not a single entry found.
-          (setq insert-flag t))
-        (goto-char (point-min))
-        (if insert-flag
-            (progn
-              (insert po-default-file-header)
-              (if (not (eobp))
-                  (insert "\n"))))))))
+  "Create a missing PO mode file header, or replace an oldish one.
+Can be customized with the `po-auto-update-file-header' variable."
+  (if (or (eq po-auto-update-file-header t)
+          (and (eq po-auto-update-file-header 'ask)
+               (y-or-n-p (_"May I update the PO Header Entry? "))))
+      (save-excursion
+        (save-restriction
+          (widen) ; in case of a narrowed view to the buffer
+          (let ((buffer-read-only po-read-only)
+                insert-flag end-of-header)
+            (goto-char (point-min))
+            (if (re-search-forward po-any-msgstr-block-regexp nil t)
+                (progn
+                  ;; There is at least one entry.
+                  (goto-char (match-beginning 0))
+                  (forward-line -1)
+                  (setq end-of-header (match-end 0))
+                  (if (looking-at "msgid \"\"\n")
+                      ;; There is indeed a PO file header.
+                      (if (re-search-forward "\n\"PO-Revision-Date: "
+                                             end-of-header t)
+                          nil
+                        ;; This is an oldish header.  Replace it all.
+                        (goto-char end-of-header)
+                        (while (> (point) (point-min))
+                          (forward-line -1)
+                          (insert "#~ ")
+                          (beginning-of-line))
+                        (beginning-of-line)
+                        (setq insert-flag t))
+                    ;; The first entry is not a PO file header, insert one.
+                    (setq insert-flag t)))
+              ;; Not a single entry found.
+              (setq insert-flag t))
+            (goto-char (point-min))
+            (if insert-flag
+                (progn
+                  (insert po-default-file-header)
+                  (if (not (eobp))
+                      (insert "\n")))))))
+    (message (_"PO Header Entry was not updated..."))))
 
 (defun po-replace-revision-date ()
   "Replace the revision date by current time in the PO file header."