From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Old 'C-c tab' binding shadowed Date: Thu, 07 Sep 2017 19:53:16 +0000 Message-ID: References: <84lglqgvcv.fsf@tm6592> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="94eb2c0a8d265b39e905589ed0b2" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58107) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dq2rl-0003nC-Ez for emacs-orgmode@gnu.org; Thu, 07 Sep 2017 15:53:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dq2rg-0005R3-DO for emacs-orgmode@gnu.org; Thu, 07 Sep 2017 15:53:33 -0400 Received: from mail-yw0-x233.google.com ([2607:f8b0:4002:c05::233]:36598) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dq2rg-0005Qb-7h for emacs-orgmode@gnu.org; Thu, 07 Sep 2017 15:53:28 -0400 Received: by mail-yw0-x233.google.com with SMTP id w204so2114175ywg.3 for ; Thu, 07 Sep 2017 12:53:27 -0700 (PDT) In-Reply-To: <84lglqgvcv.fsf@tm6592> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Marco Wahl , emacs-orgmode@gnu.org --94eb2c0a8d265b39e905589ed0b2 Content-Type: text/plain; charset="UTF-8" On Thu, Sep 7, 2017 at 3:33 PM Marco Wahl wrote: > I think the bindings could coexist peacefully since > `org-table-toggle-column-width' makes sense only for the cursor located > in a table and `outline-show-children' makes most sense (AFAICS) when > called on a headline. > > Does this sound reasonable? > > Does anyone see clearly how to implement this? (I don't.) > I always wondered the same about other org-table-* bindings in org.el. This works: diff --git a/lisp/org.el b/lisp/org.el index a03d8c5a429..cba9b20482f 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -19632,7 +19632,12 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names." (org-defkey org-mode-map "\C-j" 'org-return-indent) (org-defkey org-mode-map "\C-c?" 'org-table-field-info) (org-defkey org-mode-map "\C-c " 'org-table-blank-field) -(org-defkey org-mode-map (kbd "C-c TAB") #'org-table-toggle-column-width) +(org-defkey org-mode-map (kbd "C-c TAB") + '(menu-item "toggle-column-width-when-in-table" nil + :filter (lambda (&optional _) + (if (org-at-table-p) + #'org-table-toggle-column-width + #'outline-show-children)))) (org-defkey org-mode-map "\C-c+" 'org-table-sum) (org-defkey org-mode-map "\C-c=" 'org-table-eval-formula) (org-defkey org-mode-map "\C-c'" 'org-edit-special) I actually do this for org-table-* bindings in my config: ;; Bind the "org-table-*" command ONLY when the point is in an Org table. ;; http://emacs.stackexchange.com/a/22457/115 (bind-keys :map org-mode-map :filter (org-at-table-p) ("C-c ?" . org-table-field-info) ("C-c SPC" . org-table-blank-field) ("C-c +" . org-table-sum) ("C-c =" . org-table-eval-formula) ("C-c `" . org-table-edit-field) ("C-#" . org-table-rotate-recalc-marks) ("C-c }" . org-table-toggle-coordinate-overlays) ("C-c {" . org-table-toggle-formula-debugger)) Inspiration: http://endlessparentheses.com/define-context-aware-keys-in-emacs.html -- Kaushal Modi --94eb2c0a8d265b39e905589ed0b2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Thu, Sep 7,= 2017 at 3:33 PM Marco Wahl <= marcowahlsoft@gmail.com> wrote:
I think the bindings could coexist peacefully since
`org-table-toggle-column-width' makes sense only for the cursor located=
in a table and `outline-show-children' makes most sense (AFAICS) when called on a headline.

Does this sound reasonable?

Does anyone see clearly how to implement this?=C2=A0 (I don't.)

I =C2=A0always wondered the same about other o= rg-table-* bindings in org.el.

This works:

diff --git a/lisp/org.el b/lisp/org.el
ind= ex a03d8c5a429..cba9b20482f 100644
--- a/lisp/org.el
++= + b/lisp/org.el
@@ -19632,7 +19632,12 @@ COMMANDS is a list of al= ternating OLDDEF NEWDEF command names."
=C2=A0(org-defkey or= g-mode-map "\C-j" =C2=A0 =C2=A0 'org-return-indent)
=C2=A0(org-defkey org-mode-map "\C-c?" =C2=A0 =C2=A0'org-tab= le-field-info)
=C2=A0(org-defkey org-mode-map "\C-c " = =C2=A0 =C2=A0'org-table-blank-field)
-(org-defkey org-mode-ma= p (kbd "C-c TAB") #'org-table-toggle-column-width)
= +(org-defkey org-mode-map (kbd "C-c TAB")
+ =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'(menu-item "toggle-column-width-wh= en-in-table" nil
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:filter (lambda (&optional _)=
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(if (org-at-table-p= )
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#&= #39;org-table-toggle-column-width
+ =C2=A0 =C2=A0#'outline-show-children))))
=C2=A0= (org-defkey org-mode-map "\C-c+" =C2=A0 =C2=A0'org-table-sum)=
=C2=A0(org-defkey org-mode-map "\C-c=3D" =C2=A0 =C2=A0= 'org-table-eval-formula)
=C2=A0(org-defkey org-mode-map "= ;\C-c'" =C2=A0 =C2=A0'org-edit-special)

I actually do this for org-table-* bindings in my config:

=C2=A0 =C2=A0 ;; Bind the "org-table-*" com= mand ONLY when the point is in an Org table.
=C2=A0 =C2=A0 (bind-keys
=C2=A0= =C2=A0 =C2=A0:map org-mode-map
=C2=A0 =C2=A0 =C2=A0:filter (org-= at-table-p)
=C2=A0 =C2=A0 =C2=A0("C-c ?" . org-table-fi= eld-info)
=C2=A0 =C2=A0 =C2=A0("C-c SPC" . org-table-bl= ank-field)
=C2=A0 =C2=A0 =C2=A0("C-c +" . org-table-sum= )
=C2=A0 =C2=A0 =C2=A0("C-c =3D" . org-table-eval-formu= la)
=C2=A0 =C2=A0 =C2=A0("C-c `" . org-table-edit-field= )
=C2=A0 =C2=A0 =C2=A0("C-#" . org-table-rotate-recalc-= marks)
=C2=A0 =C2=A0 =C2=A0("C-c }" . org-table-toggle-= coordinate-overlays)
=C2=A0 =C2=A0 =C2=A0("C-c {" . org= -table-toggle-formula-debugger))

--

Kaushal M= odi

--94eb2c0a8d265b39e905589ed0b2--