From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.help Subject: Re: Utf8 symbols in completing-read completion item Date: Fri, 21 Oct 2022 00:02:33 +0300 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="7934"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.2.7+37 (a90f69b) (2022-09-02) Cc: Heime via Users list for the GNU Emacs text editor To: Heime Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu Oct 20 23:15:32 2022 Return-path: Envelope-to: geh-help-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 1olct2-0001vx-Eo for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 20 Oct 2022 23:15:32 +0200 Original-Received: from localhost ([::1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1olct1-0006v6-1z for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 20 Oct 2022 17:15:31 -0400 Original-Received: from [::1] (helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1olcoJ-0003oX-9K for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 20 Oct 2022 17:10:39 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1olcoG-0003oI-TO for help-gnu-emacs@gnu.org; Thu, 20 Oct 2022 17:10:36 -0400 Original-Received: from stw1.rcdrun.com ([217.170.207.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1olcoF-0002ob-6d for help-gnu-emacs@gnu.org; Thu, 20 Oct 2022 17:10:36 -0400 Original-Received: from localhost ([::ffff:197.239.7.218]) (AUTH: PLAIN admin, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 0000000000055D5E.000000006351B949.000046B9; Thu, 20 Oct 2022 14:10:32 -0700 Mail-Followup-To: Heime , Heime via Users list for the GNU Emacs text editor Content-Disposition: inline In-Reply-To: Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_SBL=0.141, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:140211 Archived-At: * Heime via Users list for the GNU Emacs text editor [2022-10-20 15:26]: > Am using "completing-read" to input greek letters. To introduce the corresponding utf8 > symbol I just copy it in the completion item, then match with a pcase that includes the > utf8 symbol. Is this the correct way of doing so? Your Lisp formatting is not readable: (defun nuket-greek (actm) "TODO" (interactive (list (let ( (cseq '("alpha α" "beta β" "gamma" "delta" "epsilon" "zeta" "eta")) ) (completing-read "Nuke: " cseq nil t "eta")))) (pcase actm ("alpha α" (insert "\\alpha")) ("beta β" (insert "\\beta")) ("eta" (insert "\\eta"))) ) I can read better when I format it this way: (defun nuket-greek (actm) "TODO." (interactive (list (let ((cseq '("alpha α" "beta β" "gamma" "delta" "epsilon" "zeta" "eta"))) (completing-read "Nuke: " cseq nil t "eta")))) (pcase actm ("alpha α" (insert "\\alpha")) ("beta β" (insert "\\beta")) ("eta" (insert "\\eta")))) Myself I do not know what is \\alpha, but maybe you use that for LaTeX or something. Personally I don't like complicated `interactive' statements, it looks ugly. I would use the features that beautiful function `completing-read' offers: (completing-read PROMPT COLLECTION &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD) Read a string in the minibuffer, with completion. PROMPT is a string to prompt with; normally it ends in a colon and a space. COLLECTION can be a list of strings, an alist, an obarray or a hash table. What I see is that you wish to choose something like "alpha α" and then to get different result like "\\alpha". Following may give you the result automatically, by using hash: (let ((hash (make-hash-table :test #'equal))) (puthash "alpha α" "\\alpha" hash) (puthash "beta β" "\\beta" hash) (puthash "gamma" "\\gamma" hash) (puthash "delta" "\\delta" hash) (puthash "epsilon" "\\epsilon" hash) (puthash "zeta" "\\zeta" hash) (puthash "eta" "\\eta" hash) (gethash (completing-read "Choose: " hash nil t) hash) I would put larger lists into hash by using this: (let ((list '("alpha α" "\\alpha" "beta β" "\\beta" "gamma" "\\gamma" "delta" "\\delta" "epsilon" "\\epsilon" "zeta" "\\zeta" "eta" "\\eta")) (hash (make-hash-table :test #'equal))) (while list (let ((key (pop list)) (value (pop list))) (puthash key value hash))) (gethash (completing-read "Choose: " hash nil t) hash)) ⇒ "\\epsilon" When I say larger list, my lists are huge and would not have time to use single `puthash` one by one, I must let program do it. -- Jean Take action in Free Software Foundation campaigns: https://www.fsf.org/campaigns In support of Richard M. Stallman https://stallmansupport.org/