From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roland Everaert Subject: Re: electric-pair, autopair, smartparens, etc in org-mode Date: Tue, 23 Oct 2018 09:58:08 +0200 Message-ID: <87zhv5nlgv.fsf@gmail.com> References: <877eib21z0.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57446) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gErkg-0002xF-SM for emacs-orgmode@gnu.org; Tue, 23 Oct 2018 04:09:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gErZs-0005a8-Ne for emacs-orgmode@gnu.org; Tue, 23 Oct 2018 03:58:17 -0400 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]:41147) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gErZs-0005UD-Cm for emacs-orgmode@gnu.org; Tue, 23 Oct 2018 03:58:12 -0400 Received: by mail-ed1-x52d.google.com with SMTP id x31-v6so670448edd.8 for ; Tue, 23 Oct 2018 00:58:11 -0700 (PDT) In-reply-to: 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: Matt Price Cc: Org Mode Hi, I use the following configuration: ;;;;;;;;;;;;;;;; parenth=C3=A8ses, accolades et brackets ;;;;;; (setq skeleton-pair t) (global-set-key "[" 'skeleton-pair-insert-maybe) (global-set-key "{" 'skeleton-pair-insert-maybe) (global-set-key "(" 'skeleton-pair-insert-maybe) (global-set-key "\"" 'skeleton-pair-insert-maybe) (global-set-key "'" 'skeleton-pair-insert-maybe) This will only close the defined characters. Hope this will help. Roland. Matt Price writes: > wow, I learned a whole lot from your answer Nicholas, but still not quite > enough to make this work for me. After some puzzling over the syntax for > character values, I believe that what I want should be something like thi= s: > > (add-function :before-until electric-pair-inhibit-predicate > (lambda (c) > (and (eq ?\[ c) > (eq major-mode 'org-mode) > (memq (char-before (1- (point))) '(?\[ ?\]))))) > > The manual says to use advice-add instead of add-function for these cases, > so this could be written like this instead: > > (defun mwp-org-mode-electric-inhibit (c) > (and > (eq ?\[ c) > (eq major-mode 'org-mode) > (memq (char-before (1- (point))) '(?\[ ?\]) ))) > > (advice-add electric-pair-inhibit-predicate :before-until > #'mwp-org-mode-electric-inhibit) > > it seems to sort of work. That is, the code is effective, but it doesn't > do what I want, so I had to think about the desired behaviour, which is > maybe too complex for this modification: > > when I start a link [ > go ahead and add pair to > [] > when I add a second [, don't complete > [[] > this is what my code does! > > but what I really want is, when I finish adding a link reference, somehow > allow me to stay inside the link to add the link text: > [[https://google.com]] --> [[https://google.com][]] > with point between the final [ and ]. > This seems like it needs a more complex intervention. > > For now I've just turned off pairing of brackets entirely: > > (defun mwp-org-mode-electric-inhibit (c) > (and > (eq ?\[ c) > (eq major-mode 'org-mode)) > > This works fine, though I'd still like the other :-/ > > Thanks Nicholas! > On Sun, Oct 21, 2018 at 3:28 AM Nicolas Goaziou > wrote: > >> Hello, >> >> Matt Price writes: >> >> > - electric-pair and autopair complete [[ immediately, and don't seem to >> > allow me to skip past the closing brackets, so if I try to type [[ >> > https://link.to.somewhere][link text]] I end up with >> > [[link.to.somewhere]][link-text] . >> >> I use C-c C-l to insert links with description. However, electric >> pairing does get in the way when writing sub/superscript. I use the >> following snippet to work around the issue: >> >> (add-function :before-until electric-pair-inhibit-predicate >> (lambda (c) >> (and (eq ?\{ c) >> (eq major-mode 'org-mode) >> (memq (char-before (1- (point))) '(?_ ?^))))) >> >> I guess you could do something similar to disable pairing when entering >> a bracket link. >> >> Regards, >> >> -- >> Nicolas Goaziou >> --=20 Luke, use the FOSS Sent from Emacs