mirror of
https://https.git.savannah.gnu.org/git/gettext.git
synced 2026-01-26 15:39:11 +00:00
po-mode: Remove support for Emacs versions < 22.
Emacs 22 is the oldest version still in use, see <https://repology.org/project/emacs/versions>. * gettext-tools/emacs/po-compat.el: Remove conditional code for Emacs < 22. * gettext-tools/emacs/po-mode.el: Likewise. (po-rehighlight): Remove function. (po-check-all-pending-edits, po-check-for-pending-edit): Update. * gettext-tools/emacs/start-po.el: Update comment.
This commit is contained in:
parent
3201daf2ac
commit
f2e63d27ff
@ -36,35 +36,6 @@
|
||||
|
||||
;;; Emacs portability matters.
|
||||
|
||||
;; Identify which Emacs variety is being used.
|
||||
;; This file supports:
|
||||
;; - GNU Emacs (version 20 and above) -> po-EMACS20 = t,
|
||||
;; - GNU Emacs (version 19) -> no flag.
|
||||
(eval-and-compile
|
||||
(cond ((and (string-lessp "19" emacs-version) (featurep 'faces))
|
||||
(setq po-EMACS20 t))
|
||||
(t (setq po-EMACS20 nil))))
|
||||
|
||||
;; Handle missing 'with-temp-buffer' function.
|
||||
(eval-and-compile
|
||||
(if (fboundp 'with-temp-buffer)
|
||||
(fset 'po-with-temp-buffer (symbol-function 'with-temp-buffer))
|
||||
|
||||
(defmacro po-with-temp-buffer (&rest forms)
|
||||
"Create a temporary buffer, and evaluate FORMS there like 'progn'."
|
||||
(let ((curr-buffer (make-symbol "curr-buffer"))
|
||||
(temp-buffer (make-symbol "temp-buffer")))
|
||||
`(let ((,curr-buffer (current-buffer))
|
||||
(,temp-buffer (get-buffer-create
|
||||
(generate-new-buffer-name " *po-temp*"))))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(set-buffer ,temp-buffer)
|
||||
,@forms)
|
||||
(set-buffer ,curr-buffer)
|
||||
(and (buffer-name ,temp-buffer)
|
||||
(kill-buffer ,temp-buffer))))))))
|
||||
|
||||
(defconst po-content-type-charset-alist
|
||||
'(; Note: Emacs 21 doesn't support all encodings, thus the missing entries.
|
||||
("ASCII" . undecided)
|
||||
@ -92,24 +63,24 @@
|
||||
;("ISO_8859-13" . ??)
|
||||
;("ISO-8859-14" . ??)
|
||||
;("ISO_8859-14" . ??)
|
||||
("ISO-8859-15" . iso-8859-15) ; requires Emacs 21
|
||||
("ISO_8859-15" . iso-8859-15) ; requires Emacs 21
|
||||
("ISO-8859-15" . iso-8859-15)
|
||||
("ISO_8859-15" . iso-8859-15)
|
||||
("KOI8-R" . koi8-r)
|
||||
;("KOI8-U" . ??)
|
||||
;("KOI8-T" . ??)
|
||||
("CP437" . cp437) ; requires Emacs 20
|
||||
("CP775" . cp775) ; requires Emacs 20
|
||||
("CP850" . cp850) ; requires Emacs 20
|
||||
("CP852" . cp852) ; requires Emacs 20
|
||||
("CP855" . cp855) ; requires Emacs 20
|
||||
("CP437" . cp437)
|
||||
("CP775" . cp775)
|
||||
("CP850" . cp850)
|
||||
("CP852" . cp852)
|
||||
("CP855" . cp855)
|
||||
;("CP856" . ??)
|
||||
("CP857" . cp857) ; requires Emacs 20
|
||||
("CP861" . cp861) ; requires Emacs 20
|
||||
("CP862" . cp862) ; requires Emacs 20
|
||||
("CP864" . cp864) ; requires Emacs 20
|
||||
("CP865" . cp865) ; requires Emacs 20
|
||||
("CP866" . cp866) ; requires Emacs 21
|
||||
("CP869" . cp869) ; requires Emacs 20
|
||||
("CP857" . cp857)
|
||||
("CP861" . cp861)
|
||||
("CP862" . cp862)
|
||||
("CP864" . cp864)
|
||||
("CP865" . cp865)
|
||||
("CP866" . cp866)
|
||||
("CP869" . cp869)
|
||||
;("CP874" . ??)
|
||||
;("CP922" . ??)
|
||||
;("CP932" . ??)
|
||||
@ -119,16 +90,15 @@
|
||||
;("CP1046" . ??)
|
||||
;("CP1124" . ??)
|
||||
;("CP1129" . ??)
|
||||
("CP1250" . cp1250) ; requires Emacs 20
|
||||
("CP1251" . cp1251) ; requires Emacs 20
|
||||
("CP1250" . cp1250)
|
||||
("CP1251" . cp1251)
|
||||
("CP1252" . iso-8859-1) ; approximation
|
||||
("CP1253" . cp1253) ; requires Emacs 20
|
||||
("CP1253" . cp1253)
|
||||
("CP1254" . iso-8859-9) ; approximation
|
||||
("CP1255" . iso-8859-8) ; approximation
|
||||
;("CP1256" . ??)
|
||||
("CP1257" . cp1257) ; requires Emacs 20
|
||||
("GB2312" . cn-gb-2312) ; also named 'gb2312' in Emacs 21
|
||||
; also named 'euc-cn' in Emacs 20 or Emacs 21
|
||||
("CP1257" . cp1257)
|
||||
("GB2312" . cn-gb-2312) ; also named 'gb2312' and 'euc-cn'
|
||||
("EUC-JP" . euc-jp)
|
||||
("EUC-KR" . euc-kr)
|
||||
;("EUC-TW" . ??)
|
||||
@ -138,10 +108,10 @@
|
||||
;("GB18030" . ??)
|
||||
("SHIFT_JIS" . shift_jis)
|
||||
;("JOHAB" . ??)
|
||||
("TIS-620" . tis-620) ; requires Emacs 20 or Emacs 21
|
||||
("VISCII" . viscii) ; requires Emacs 20 or Emacs 21
|
||||
("TIS-620" . tis-620)
|
||||
("VISCII" . viscii)
|
||||
;("GEORGIAN-PS" . ??)
|
||||
("UTF-8" . utf-8) ; requires Mule-UCS in Emacs 20, or Emacs 21
|
||||
("UTF-8" . utf-8)
|
||||
)
|
||||
"How to convert a GNU libc/libiconv canonical charset name as seen in
|
||||
Content-Type into a Mule coding system.")
|
||||
@ -178,45 +148,39 @@ Content-Type into a Mule coding system.")
|
||||
|
||||
;;;###autoload (autoload 'po-find-file-coding-system "po-compat")
|
||||
|
||||
(eval-and-compile
|
||||
(if po-EMACS20
|
||||
(defun po-find-file-coding-system-guts (operation filename)
|
||||
"\
|
||||
(defun po-find-file-coding-system-guts (operation filename)
|
||||
"\
|
||||
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)
|
||||
(file-exists-p filename)
|
||||
(po-with-temp-buffer
|
||||
(let* ((coding-system-for-read 'no-conversion)
|
||||
(charset (or (po-find-charset filename) "ascii"))
|
||||
(charset-upper (upcase charset))
|
||||
(charset-lower (downcase charset))
|
||||
(candidate
|
||||
(cdr (assoc charset-upper po-content-type-charset-alist)))
|
||||
(try-symbol (or candidate (intern-soft charset-lower)))
|
||||
(try-string
|
||||
(if try-symbol (symbol-name try-symbol) charset-lower)))
|
||||
(list (cond ((and try-symbol (coding-system-p try-symbol))
|
||||
try-symbol)
|
||||
((and po-EMACS20
|
||||
(not (string-lessp "23" emacs-version))
|
||||
(string-match "\\`cp[1-9][0-9][0-9]?\\'"
|
||||
try-string)
|
||||
(assoc (substring try-string 2)
|
||||
(cp-supported-codepages)))
|
||||
(codepage-setup (substring try-string 2))
|
||||
(intern try-string))
|
||||
(t
|
||||
'no-conversion))))))))
|
||||
(and (eq operation 'insert-file-contents)
|
||||
(file-exists-p filename)
|
||||
(po-with-temp-buffer
|
||||
(let* ((coding-system-for-read 'no-conversion)
|
||||
(charset (or (po-find-charset filename) "ascii"))
|
||||
(charset-upper (upcase charset))
|
||||
(charset-lower (downcase charset))
|
||||
(candidate
|
||||
(cdr (assoc charset-upper po-content-type-charset-alist)))
|
||||
(try-symbol (or candidate (intern-soft charset-lower)))
|
||||
(try-string
|
||||
(if try-symbol (symbol-name try-symbol) charset-lower)))
|
||||
(list (cond ((and try-symbol (coding-system-p try-symbol))
|
||||
try-symbol)
|
||||
((and (not (string-lessp "23" emacs-version))
|
||||
(string-match "\\`cp[1-9][0-9][0-9]?\\'"
|
||||
try-string)
|
||||
(assoc (substring try-string 2)
|
||||
(cp-supported-codepages)))
|
||||
(codepage-setup (substring try-string 2))
|
||||
(intern try-string))
|
||||
(t
|
||||
'no-conversion)))))))
|
||||
|
||||
(if po-EMACS20
|
||||
(defun po-find-file-coding-system (arg-list)
|
||||
"\
|
||||
(defun po-find-file-coding-system (arg-list)
|
||||
"\
|
||||
Return a Mule (DECODING . ENCODING) pair, according to PO file charset.
|
||||
Called through file-coding-system-alist, before the file is visited for real."
|
||||
(po-find-file-coding-system-guts (car arg-list) (car (cdr arg-list)))))
|
||||
|
||||
)
|
||||
(po-find-file-coding-system-guts (car arg-list) (car (cdr arg-list))))
|
||||
|
||||
(provide 'po-compat)
|
||||
|
||||
|
||||
@ -63,21 +63,12 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defconst po-mode-version-string "2.25" "\
|
||||
(defconst po-mode-version-string "2.26" "\
|
||||
Version number of this version of po-mode.el.")
|
||||
|
||||
;;; Emacs portability matters - part I.
|
||||
;;; Here is the minimum for customization to work. See part II.
|
||||
|
||||
;; Identify which Emacs variety is being used.
|
||||
;; This file supports:
|
||||
;; - GNU Emacs (version 20 and above) -> po-EMACS20 = t,
|
||||
;; - GNU Emacs (version 19) -> no flag.
|
||||
(eval-and-compile
|
||||
(cond ((and (string-lessp "19" emacs-version) (featurep 'faces))
|
||||
(setq po-EMACS20 t))
|
||||
(t (setq po-EMACS20 nil))))
|
||||
|
||||
;; Experiment with Emacs LISP message internationalisation.
|
||||
(eval-and-compile
|
||||
(or (fboundp 'set-translation-domain)
|
||||
@ -180,7 +171,7 @@ to this email address."
|
||||
:type 'string
|
||||
:group 'po)
|
||||
|
||||
(defcustom po-highlighting po-EMACS20
|
||||
(defcustom po-highlighting t
|
||||
"*Highlight text whenever appropriate, when non-nil.
|
||||
However, on older Emacses, a yet unexplained highlighting bug causes files
|
||||
to get mangled."
|
||||
@ -562,100 +553,27 @@ or remove the -m if you are not using the GNU version of 'uuencode'."
|
||||
|
||||
;; Handle portable highlighting. Code has been adapted (OK... stolen! :-)
|
||||
;; from 'ispell.el'.
|
||||
(eval-and-compile
|
||||
(cond
|
||||
(po-EMACS20
|
||||
|
||||
(defun po-create-overlay ()
|
||||
"Create and return a deleted overlay structure.
|
||||
(defun po-create-overlay ()
|
||||
"Create and return a deleted overlay structure.
|
||||
The variable 'po-highlight-face' selects the face to use for highlighting."
|
||||
(let ((overlay (make-overlay (point) (point))))
|
||||
(overlay-put overlay 'face po-highlight-face)
|
||||
;; The fun thing is that a deleted overlay retains its face, and is
|
||||
;; movable.
|
||||
(delete-overlay overlay)
|
||||
overlay))
|
||||
(let ((overlay (make-overlay (point) (point))))
|
||||
(overlay-put overlay 'face po-highlight-face)
|
||||
;; The fun thing is that a deleted overlay retains its face, and is
|
||||
;; movable.
|
||||
(delete-overlay overlay)
|
||||
overlay))
|
||||
|
||||
(defun po-highlight (overlay start end &optional buffer)
|
||||
"Use OVERLAY to highlight the string from START to END.
|
||||
(defun po-highlight (overlay start end &optional buffer)
|
||||
"Use OVERLAY to highlight the string from START to END.
|
||||
If limits are not relative to the current buffer, use optional BUFFER."
|
||||
(move-overlay overlay start end (or buffer (current-buffer))))
|
||||
(move-overlay overlay start end (or buffer (current-buffer))))
|
||||
|
||||
(defun po-rehighlight (overlay)
|
||||
"Ensure OVERLAY is highlighted."
|
||||
;; There is nothing to do, as GNU Emacs allows multiple highlights.
|
||||
nil)
|
||||
|
||||
(defun po-dehighlight (overlay)
|
||||
"Display normally the last string which OVERLAY highlighted.
|
||||
(defun po-dehighlight (overlay)
|
||||
"Display normally the last string which OVERLAY highlighted.
|
||||
The current buffer should be in PO mode, when this function is called."
|
||||
(delete-overlay overlay)))
|
||||
(delete-overlay overlay))
|
||||
|
||||
(t
|
||||
|
||||
(defun po-create-overlay ()
|
||||
"Create and return a deleted overlay structure."
|
||||
(cons (make-marker) (make-marker)))
|
||||
|
||||
(defun po-highlight (overlay start end &optional buffer)
|
||||
"Use OVERLAY to highlight the string from START to END.
|
||||
If limits are not relative to the current buffer, use optional BUFFER.
|
||||
No doubt that highlighting, when Emacs does not allow it, is a kludge."
|
||||
(save-excursion
|
||||
(and buffer (set-buffer buffer))
|
||||
(let ((modified (buffer-modified-p))
|
||||
(buffer-read-only nil)
|
||||
(inhibit-quit t)
|
||||
(buffer-undo-list t)
|
||||
(text (buffer-substring start end)))
|
||||
(goto-char start)
|
||||
(delete-region start end)
|
||||
(insert-char ? (- end start))
|
||||
(sit-for 0)
|
||||
(setq inverse-video (not inverse-video))
|
||||
(delete-region start end)
|
||||
(insert text)
|
||||
(sit-for 0)
|
||||
(setq inverse-video (not inverse-video))
|
||||
(set-buffer-modified-p modified)))
|
||||
(set-marker (car overlay) start (or buffer (current-buffer)))
|
||||
(set-marker (cdr overlay) end (or buffer (current-buffer))))
|
||||
|
||||
(defun po-rehighlight (overlay)
|
||||
"Ensure OVERLAY is highlighted."
|
||||
(let ((buffer (marker-buffer (car overlay)))
|
||||
(start (marker-position (car overlay)))
|
||||
(end (marker-position (cdr overlay))))
|
||||
(and buffer
|
||||
(buffer-name buffer)
|
||||
(po-highlight overlay start end buffer))))
|
||||
|
||||
(defun po-dehighlight (overlay)
|
||||
"Display normally the last string which OVERLAY highlighted."
|
||||
(let ((buffer (marker-buffer (car overlay)))
|
||||
(start (marker-position (car overlay)))
|
||||
(end (marker-position (cdr overlay))))
|
||||
(if buffer
|
||||
(save-excursion
|
||||
(set-buffer buffer)
|
||||
(let ((modified (buffer-modified-p))
|
||||
(buffer-read-only nil)
|
||||
(inhibit-quit t)
|
||||
(buffer-undo-list t))
|
||||
(let ((text (buffer-substring start end)))
|
||||
(goto-char start)
|
||||
(delete-region start end)
|
||||
(insert-char ? (- end start))
|
||||
(sit-for 0)
|
||||
(delete-region start end)
|
||||
(insert text)
|
||||
(sit-for 0)
|
||||
(set-buffer-modified-p modified)))))
|
||||
(setcar overlay (make-marker))
|
||||
(setcdr overlay (make-marker))))
|
||||
|
||||
)))
|
||||
|
||||
;;; Buffer local variables.
|
||||
|
||||
;; The following block of declarations has the main purpose of avoiding
|
||||
@ -2164,8 +2082,6 @@ comments) from the current entry, if the user gives the permission."
|
||||
(let ((slot (car po-edited-fields)))
|
||||
(goto-char (nth 0 slot))
|
||||
(pop-to-buffer (nth 1 slot))
|
||||
(let ((overlay (nth 2 slot)))
|
||||
(and overlay (po-rehighlight overlay)))
|
||||
(message po-subedit-message)
|
||||
nil)))
|
||||
|
||||
@ -2179,8 +2095,6 @@ comments) from the current entry, if the user gives the permission."
|
||||
(progn
|
||||
(goto-char marker)
|
||||
(pop-to-buffer (nth 1 slot))
|
||||
(let ((overlay (nth 2 slot)))
|
||||
(and overlay (po-rehighlight overlay)))
|
||||
(message po-subedit-message)))
|
||||
(not slot))))
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
;;; start-po.el --- autoload definitions for viewing and editing PO files
|
||||
|
||||
;; Copyright (C) 1995-2004, 2016 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1995-2004, 2016, 2019 Free Software Foundation, Inc.
|
||||
;;
|
||||
;; This file is part of GNU gettext.
|
||||
;;
|
||||
@ -44,7 +44,7 @@ all reachable through 'M-x customize', in group 'Emacs.Editing.I18n.Po'."
|
||||
|
||||
;; For viewing PO and POT files.
|
||||
|
||||
;; To use the right coding system automatically under Emacs 20 or newer.
|
||||
;; To use the right coding system automatically.
|
||||
(unless (fboundp 'po-find-file-coding-system)
|
||||
(autoload 'po-find-file-coding-system "po-compat"
|
||||
"\
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user