From: gemmaro Date: Thu, 1 Jan 2026 13:29:08 +0000 (+0900) Subject: po-mode: Use define-derived-mode for po-subedit-mode. X-Git-Tag: v1.0~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dce47fc9982dd63b6bf5d322d34abf785e6f97b7;p=thirdparty%2Fgettext.git 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. --- diff --git a/gettext-tools/emacs/po-mode.el b/gettext-tools/emacs/po-mode.el index 80fede9dd..e4dec9c67 100644 --- a/gettext-tools/emacs/po-mode.el +++ b/gettext-tools/emacs/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 ;; Greg McGary ;; 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 ()