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 ()

Reply via email to