From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Visuwesh Newsgroups: gmane.emacs.bugs Subject: bug#58376: [PATCH] Set the PARENTS argument for language environments Date: Sun, 09 Oct 2022 20:20:36 +0530 Message-ID: <87wn99oxtv.fsf@gmail.com> References: <83wn9ajrud.fsf@gnu.org> <83tu4eji4l.fsf@gnu.org> <83edvhjt76.fsf@gnu.org> <838rlpjfmr.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35624"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: =?UTF-8?Q?=E0=A4=B8=E0=A4=AE=E0=A5=80=E0=A4=B0_?= =?UTF-8?Q?=E0=A4=B8=E0=A4=BF=E0=A4=82=E0=A4=B9?= Sameer Singh , 58376@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Oct 09 16:51:11 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ohXe2-00099R-QW for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 09 Oct 2022 16:51:10 +0200 Original-Received: from localhost ([::1]:58002 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ohXe1-0002Oq-PF for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 09 Oct 2022 10:51:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ohXdu-0002Oi-In for bug-gnu-emacs@gnu.org; Sun, 09 Oct 2022 10:51:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:45653) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ohXdu-000269-BE for bug-gnu-emacs@gnu.org; Sun, 09 Oct 2022 10:51:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ohXdu-0000xJ-43 for bug-gnu-emacs@gnu.org; Sun, 09 Oct 2022 10:51:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Visuwesh Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 09 Oct 2022 14:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 58376-submit@debbugs.gnu.org id=B58376.16653270493654 (code B ref 58376); Sun, 09 Oct 2022 14:51:02 +0000 Original-Received: (at 58376) by debbugs.gnu.org; 9 Oct 2022 14:50:49 +0000 Original-Received: from localhost ([127.0.0.1]:44731 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ohXdh-0000ws-4d for submit@debbugs.gnu.org; Sun, 09 Oct 2022 10:50:49 -0400 Original-Received: from mail-pf1-f196.google.com ([209.85.210.196]:45862) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ohXde-0000we-Ky for 58376@debbugs.gnu.org; Sun, 09 Oct 2022 10:50:47 -0400 Original-Received: by mail-pf1-f196.google.com with SMTP id 67so8785350pfz.12 for <58376@debbugs.gnu.org>; Sun, 09 Oct 2022 07:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=APStIOZ1KWaXNhvzg0MgztTdn3/d3gHcwiZONsbxVBs=; b=UioXvfKtSyHSXX7KA69fcEkqmKSjBSdJwng/IQriRq5lsHhFZ33QkA4ySkafctfU2J s2POw4t6X377z01rBjnMgYKyXILYqcofvhERLQvxlRLp79yK8EP0xLnVc/WS7bBVS8ag 4NBL3viq1rvYT/jH7E974Jrgl3soW9Gozh9V/WEo87CaPruyyD7QN3YX2QAVmd2T11TB Urjlol/batOcKC89NtjyBfm+gQeejsQ3BnDBkMsmXGG7TE2Bw//raa7DHtrc9KNNyEkm EWO3be+5kwZAw7X6lemeoO6URMpl0fCXSSgoonytQHCs/zkRkYrCCQYyg12/QJFguUsI TljQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=APStIOZ1KWaXNhvzg0MgztTdn3/d3gHcwiZONsbxVBs=; b=XFJSWXGXPeGO2NOIDEFxYLIS8B9wJWa/FvZjEqS5FSG5rdNR4tNrOWOtlXrWvdM8fF LsuzNrrmyn2WMBJjUTAHZdIep7EGEk6pAyZmpX5DYm/jxNTQTgfx3zxncoA1OI0WGziU BlgGGQQv2sKNCPpCv3qkzWN6YXYlrhU2AbvxCc2pd2P2WT96cvyr1yHr0Bhg8vuPFaQ5 Qudrrgpv35k5h/j5KC5CU6rmvdRLR+ViGcnnsOeG9fjARKoui0RWX4cUanK85SHm98E3 wDNgf+gpZzrC3GZdnrzl2RDunDPoon9Xx4GpRp7+q8DVkUFTsRj48rB21uk7o1Ulin/7 sf0g== X-Gm-Message-State: ACrzQf33oWuvFaU0aS6XS7zAFwO/4c2htihLdNqxVPKXA6jwU93ogWqt 569mpnTwigsl6ycKkNN1cfk= X-Google-Smtp-Source: AMsMyM6QL84fDUM++TNHD40FBzeAH6uX0BDYCcAzBLsT4bVJckQobDdK2PDEBkbQw6j/wm4mIcaJ8g== X-Received: by 2002:a05:6a00:843:b0:563:fd4:d73 with SMTP id q3-20020a056a00084300b005630fd40d73mr5924325pfk.47.1665327040816; Sun, 09 Oct 2022 07:50:40 -0700 (PDT) Original-Received: from localhost ([118.185.152.162]) by smtp.gmail.com with ESMTPSA id cp17-20020a170902e79100b00176b3c9693esm4780848plb.299.2022.10.09.07.50.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Oct 2022 07:50:39 -0700 (PDT) In-Reply-To: <838rlpjfmr.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 09 Oct 2022 16:22:36 +0300") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:244964 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable [=E0=AE=9E=E0=AE=BE=E0=AE=AF=E0=AE=BF=E0=AE=B1=E0=AF=81 =E0=AE=85=E0=AE=95= =E0=AF=8D=E0=AE=9F=E0=AF=8B=E0=AE=AA=E0=AE=B0=E0=AF=8D 09, 2022] Eli Zarets= kii wrote: >> If I do something like: >>=20 >> (set-language-info-alist >> "Kharoshthi" '((charset unicode) >> (coding-system utf-8) >> (coding-priority utf-8) >> (input-method . "kharoshthi") >> (sample-text . "Kharo=E1=B9=A3=E1=B9=ADh=C4=AB (=F0=90= =A8=91=F0=90=A8=AA=F0=90=A8=86=F0=90=A8=9B=F0=90=A8=81) =F0=90=A8=A3=F0=90= =A8=A8=F0=90=A8=B2=F0=90=A8=AA=F0=90=A8=86 =F0=90=A8=90=F0=90=A8=AA=F0=90= =A8=85=F0=90=A8=A8=F0=90=A8=81") >> (documentation . "\ >> Language environment for G=C4=81ndh=C4=81r=C4=AB, Sanskrit, and other la= nguages >> using the Kharo=E1=B9=A3=E1=B9=ADh=C4=AB script.")) >> '("Misc" "Indian")) >>=20 >> Then compile and open emacs -Q >> Now opening Options>Multilingual Environment>Set Language Environment>In= dian >> It only has the Kharoshthi entry >> Options>Multilingual Environment>Set Language Environment>Misc now also = has an Indian submenu with >> only Kharoshthi entry. > > Hmm... Either we don't understand what PARENTS mean (could it mean a > hierarchy of several menu levels?), or there is a bug. > > If you want to work on that, please do; otherwise I'll just install > your original patch. Attached patch puts the "Kharosthi" item in both Indian and Misc submenus without overwriting. --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=set-language-info-alist.patch diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 48e5c9aa1f..f39a4da439 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -1208,6 +1208,16 @@ set-language-info-internal (list 'const lang)) (sort (mapcar 'car language-info-alist) 'string<)))))) +(defun set-language-info-setup-keymap (lang-env alist describe-map setup-map) + "Setup menu items for LANG-ENV. +See `set-language-info-alist' for details of other arguments." + (let ((doc (assq 'documentation alist))) + (when doc + (define-key-after describe-map (vector (intern lang-env)) + (cons lang-env 'describe-specified-language-support)))) + (define-key-after setup-map (vector (intern lang-env)) + (cons lang-env 'setup-specified-language-environment))) + (defun set-language-info-alist (lang-env alist &optional parents) "Store ALIST as the definition of language environment LANG-ENV. ALIST is an alist of KEY and INFO values. See the documentation of @@ -1252,16 +1262,11 @@ set-language-info-alist (define-key-after setup-map (vector parent-symbol) (cons parent map)))) (setq setup-map (symbol-value map)) - (setq l (cdr l))))) - - ;; Set up menu items for this language env. - (let ((doc (assq 'documentation alist))) - (when doc - (define-key-after describe-map (vector (intern lang-env)) - (cons lang-env 'describe-specified-language-support)))) - (define-key-after setup-map (vector (intern lang-env)) - (cons lang-env 'setup-specified-language-environment)) - + (setq l (cdr l)) + (set-language-info-setup-keymap lang-env alist describe-map setup-map) + (setq describe-map describe-language-environment-map) + (setq setup-map setup-language-environment-map))) + (set-language-info-setup-keymap lang-env alist describe-map setup-map)) (dolist (elt alist) (set-language-info-internal lang-env (car elt) (cdr elt))) --=-=-= Content-Type: text/plain The problem is that when looping, the variables setup-map and describe-map gets outdated and causes the overwrite. The solution I came up with was to update them both to their default after each iteration. This involved moving the keymap-setting forms to a separate function. --=-=-=--