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: How not to share `local-set-key' with all other buffers in the same major mode? Date: Fri, 02 Apr 2021 11:32:42 +0300 Message-ID: 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="21345"; mail-complaints-to="usenet@ciao.gmane.io" To: Help GNU Emacs Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Apr 02 10:33:52 2021 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 1lSFFX-0005QY-KG for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 02 Apr 2021 10:33:51 +0200 Original-Received: from localhost ([::1]:34702 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lSFFW-0003w7-MR for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 02 Apr 2021 04:33:50 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:42824) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lSFF9-0003vj-8G for help-gnu-emacs@gnu.org; Fri, 02 Apr 2021 04:33:28 -0400 Original-Received: from stw1.rcdrun.com ([217.170.207.13]:45175) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lSFF7-00067O-6b for help-gnu-emacs@gnu.org; Fri, 02 Apr 2021 04:33:26 -0400 Original-Received: from localhost ([::ffff:41.202.241.58]) (AUTH: PLAIN securesender, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 000000000001E1DB.000000006066D6B2.00001C01; Fri, 02 Apr 2021 01:32:50 -0700 Received-SPF: pass client-ip=217.170.207.13; envelope-from=support1@rcdrun.com; helo=stw1.rcdrun.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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.23 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:128803 Archived-At: I would like to use editing modes as temporary view modes where I would like to set a key like "q" or "i" temporarily, like this for example: (local-set-key "q" 'quit-window) And I use it in read only mode. The binding goes in the current buffer’s local map, which in most cases is shared with all other buffers in the same major mode. If the mode is Markdown then next time I enter in writeable buffer the same key "q" remains and I need to unset it. So it is not convenient. Would a solution for that be to make a new mode map and then invoke new mode map when I wish to view it with special keys? All invoking I do through functions, not manually. Another matter is that I do dynamic `local-set-key' like following: (local-set-key "i" `(lambda () (interactive) (hyperscope-view-with-mode ,id ,(cond ((string= column "hlinks_description") "hlinks_text") ((string= column "hlinks_text") "hlinks_description") (t (error "Cannot find column")))))) So then if I wish to see some database entry in the buffer, I press "i" and I see first "hlinks_description", but if I press "i" again I will see "hlinks_text". This is very handy. Is it possible to invoke mode dynamically, like to define a function that defines mode, and that I call that function which would then call the mode with specified parameters which in turn change the key bindings as how I wish? Jean Take action in Free Software Foundation campaigns: https://www.fsf.org/campaigns Sign an open letter in support of Richard M. Stallman https://rms-support-letter.github.io/