From: Bruno Haible Date: Mon, 11 Mar 2002 13:56:07 +0000 (+0000) Subject: Allow po-mode to be called on nonexisting or empty files. X-Git-Tag: v0.11.1~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f86dbd8c0258222bf310d0f9e858e982349b00ae;p=thirdparty%2Fgettext.git Allow po-mode to be called on nonexisting or empty files. --- diff --git a/misc/ChangeLog b/misc/ChangeLog index 6449a0e4e..817133c98 100644 --- a/misc/ChangeLog +++ b/misc/ChangeLog @@ -1,3 +1,10 @@ +2002-03-09 Karl Eichwalder + + * po-mode.el (po-find-file-coding-system-guts): Don't try to + detect the coding system when filename does not exists. + (po-compute-counters): Search for "^msgid" not 'po-next-entry' if + we don't know for sure any entry will follow at all. + 2002-02-18 Karl Eichwalder * po-mode.el (po-mode): Provide it. diff --git a/misc/po-mode.el b/misc/po-mode.el index a1114ccfb..6d4f2be18 100644 --- a/misc/po-mode.el +++ b/misc/po-mode.el @@ -49,7 +49,7 @@ ;;; Code: -(defconst po-mode-version-string "1.90" "\ +(defconst po-mode-version-string "1.91" "\ Version number of this version of po-mode.el.") ;;; Emacs portability matters - part I. @@ -964,7 +964,8 @@ Content-Type into a Mule coding system.") "\ Return a Mule (DECODING . ENCODING) pair, according to PO file charset. Called through file-coding-system-alist, before the file is visited for real." - (and (eq operation 'insert-file-contents) + (and (file-exists-p filename) + (eq operation 'insert-file-contents) (po-with-temp-buffer (let ((coding-system-for-read 'no-conversion)) (let* ((charset (or (po-find-charset filename) @@ -1197,33 +1198,34 @@ Then, update the mode line counters." ;; While counting, skip the header entry, for consistency with msgfmt. (po-find-span-of-entry) (if (string-equal (po-get-msgid nil) "") - (if (po-next-entry) - (progn - ;; Start counting - (while (re-search-forward po-any-msgstr-regexp nil t) - (and (= (% total 20) 0) - (if flag - (message (_"Position %d/%d") position total) - (message (_"Position %d") total))) - (setq here (point)) - (goto-char (match-beginning 0)) - (setq total (1+ total)) - (and flag (eq (point) current) (setq position total)) - (cond ((eq (following-char) ?#) - (setq po-obsolete-counter (1+ po-obsolete-counter))) - ((looking-at po-untranslated-regexp) - (setq po-untranslated-counter (1+ po-untranslated-counter))) - (t (setq po-translated-counter (1+ po-translated-counter)))) - (goto-char here)) - - ;; Make another pass just for the fuzzy entries, kind of kludgey. - ;; FIXME: Counts will be wrong if untranslated entries are fuzzy, yet - ;; this should not normally happen. - (goto-char (point-min)) - (while (re-search-forward po-fuzzy-regexp nil t) - (setq po-fuzzy-counter (1+ po-fuzzy-counter))) - (setq po-translated-counter (- po-translated-counter po-fuzzy-counter))) - '()))) + (goto-char po-end-of-entry)) + (if (re-search-forward "^msgid" (point-max) t) + (progn + ;; Start counting + (while (re-search-forward po-any-msgstr-regexp nil t) + (and (= (% total 20) 0) + (if flag + (message (_"Position %d/%d") position total) + (message (_"Position %d") total))) + (setq here (point)) + (goto-char (match-beginning 0)) + (setq total (1+ total)) + (and flag (eq (point) current) (setq position total)) + (cond ((eq (following-char) ?#) + (setq po-obsolete-counter (1+ po-obsolete-counter))) + ((looking-at po-untranslated-regexp) + (setq po-untranslated-counter (1+ po-untranslated-counter))) + (t (setq po-translated-counter (1+ po-translated-counter)))) + (goto-char here)) + + ;; Make another pass just for the fuzzy entries, kind of kludgey. + ;; FIXME: Counts will be wrong if untranslated entries are fuzzy, yet + ;; this should not normally happen. + (goto-char (point-min)) + (while (re-search-forward po-fuzzy-regexp nil t) + (setq po-fuzzy-counter (1+ po-fuzzy-counter))) + (setq po-translated-counter (- po-translated-counter po-fuzzy-counter))) + '())) ;; Push the results out. (if flag