branch: externals/po-mode
commit a5b248daf0356ca451a1072ba95edcf21076bd2b
Author: gemmaro <[email protected]>
Commit: Bruno Haible <[email protected]>
po-mode: Use define-derived-mode for po-subedit-mode.
* gettext-tools/emacs/po-mode.el (po-subedit-mode): Define as derived
mode from text mode using define-derived-mode.
(po-subedit-mode-syntax-table, po-mode-abbrev-table): Remove these
variables, as define-derived-mode creates them automatically.
(po-edit-string): Use po-subedit-mode instead of text-mode. Remove
local abbrev table, keymap, syntax table, and hook invocation, since
define-derived-mode handles these automatically. Move easy-menu
definition to the define-derived-mode body.
(Package-Requires): Add minimum Emacs version requirement. The
define-derived-mode was probably introduced in Emacs 19.23, and commit
7797a29e9 dropped support for Emacs versions before 23.
---
po-mode.el | 26 +++++++++++---------------
1 file changed, 11 insertions(+), 15 deletions(-)
diff --git a/po-mode.el b/po-mode.el
index 80fede9dd2..e4dec9c672 100644
--- a/po-mode.el
+++ b/po-mode.el
@@ -1,11 +1,12 @@
;;; po-mode.el --- major mode for GNU gettext PO files
-;; Copyright (C) 1995-2025 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2026 Free Software Foundation, Inc.
;; Authors: François Pinard <[email protected]>
;; Greg McGary <[email protected]>
;; Keywords: i18n gettext
;; Created: 1995
+;; Package-Requires: ((emacs "24"))
;; This file is part of GNU gettext.
@@ -477,9 +478,6 @@ or remove the -m if you are not using the GNU version of
'uuencode'."
:type 'string
:group 'po)
-(defvar po-subedit-mode-syntax-table
- (copy-syntax-table text-mode-syntax-table)
- "Syntax table used while in PO mode.")
;;; Emacs portability matters - part II.
@@ -873,10 +871,6 @@ M-S Ignore path M-A Ignore PO file *M-L
Ignore lexicon
(if (not (fboundp 'po-find-file-coding-system))
(require 'po-compat))
-(defvar po-mode-abbrev-table nil
- "Abbrev table used while in PO mode.")
-(define-abbrev-table 'po-mode-abbrev-table ())
-
(defvar po-mode-map
;; Use (make-keymap) because (make-sparse-keymap) does not work on Demacs.
(let ((po-mode-map (make-keymap)))
@@ -1005,6 +999,14 @@ all reachable through 'M-x customize', in group
'Emacs.Editing.I18n.Po'."
(run-mode-hooks 'po-mode-hook)
(message (_"You may type 'h' or '?' for a short PO mode reminder.")))
+(define-derived-mode po-subedit-mode text-mode
+ ; The mode name is taken from the menu string in po-subedit-mode-menu-layout.
+ "PO-Edit"
+ "PO subedit mode."
+ :group 'po
+ (easy-menu-define po-subedit-mode-menu po-subedit-mode-map ""
+ po-subedit-mode-menu-layout))
+
(defvar po-subedit-mode-map
;; Use (make-keymap) because (make-sparse-keymap) does not work on Demacs.
(let ((po-subedit-mode-map (make-keymap)))
@@ -2196,21 +2198,15 @@ Run functions on po-subedit-mode-hook."
(setq slot (list marker edit-buffer overlay)
po-edited-fields (cons slot po-edited-fields))
(pop-to-buffer edit-buffer)
- (text-mode)
+ (po-subedit-mode)
(set (make-local-variable 'po-subedit-back-pointer) slot)
(set (make-local-variable 'indent-line-function)
'indent-relative)
(setq buffer-file-coding-system edit-coding)
- (setq local-abbrev-table po-mode-abbrev-table)
(erase-buffer)
(insert string "<")
(goto-char (point-min))
(and expand-tabs (setq indent-tabs-mode nil))
- (use-local-map po-subedit-mode-map)
- (easy-menu-define po-subedit-mode-menu po-subedit-mode-map ""
- po-subedit-mode-menu-layout)
- (set-syntax-table po-subedit-mode-syntax-table)
- (run-hooks 'po-subedit-mode-hook)
(message po-subedit-message)))))
(defun po-edit-comment ()