From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Bug: canceled capture operation results in demoted following heading when template ends with newline [9.2.4 (9.2.4-11-g1c3eae-elpaplus @ /home/gustavo/.emacs.d/elpa/org-plus-contrib-20190722/)] Date: Sat, 10 Aug 2019 07:46:37 +0200 Message-ID: References: <87sgqqq7gw.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="0000000000006496cc058fbcd1d0" Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:42857) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwKDR-00054J-6N for emacs-orgmode@gnu.org; Sat, 10 Aug 2019 01:46:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwKDO-0002GS-Oe for emacs-orgmode@gnu.org; Sat, 10 Aug 2019 01:46:57 -0400 Received: from mail-ed1-f48.google.com ([209.85.208.48]:41373) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwKDO-0002GE-F2 for emacs-orgmode@gnu.org; Sat, 10 Aug 2019 01:46:54 -0400 Received: by mail-ed1-f48.google.com with SMTP id w5so8943937edl.8 for ; Fri, 09 Aug 2019 22:46:54 -0700 (PDT) In-Reply-To: <87sgqqq7gw.fsf@gmail.com> 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: Gustavo Barros Cc: org-mode list --0000000000006496cc058fbcd1d0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Gustavo, I tried to reproduce your example, and things worked properly.... Carsten On Sun, Jul 28, 2019 at 9:34 PM Gustavo Barros wrote: > Hi all, > > When the capture template ends with a newline character and the capture > process is canceled, the following heading gets demoted. And it > shouldn=E2=80=99t. > > > Consider the following scenario. We have an agenda file with the > following content: > > #+name: ~/org/agenda.org > #+begin_src org > ,* Capture > > ,* Following heading > > #+end_src > > We start ~emacs -Q~, and do some basic setup: > > #+begin_src emacs-lisp > (package-initialize) > (global-set-key (kbd "C-c c") 'org-capture) > (setq org-agenda-files > '("~/org/agenda.org")) > (setq org-refile-targets > '((org-agenda-files :maxlevel . 2))) > (setq org-capture-templates > '(("t" "TODO entry" entry > (file+headline "~/org/agenda.org" "Capture") > "* TODO %?\n"))) > #+end_src > > Now we start capture with "C-c c t" and cancel it with "C-c > k". Examination of "agenda.org" will show: > > #+name: ~/org/agenda.org > #+begin_src org > ,* Capture > ,** Following heading > > #+end_src > > Both the line between them is gone, and "* Following heading" got > demoted, which is particularly unfortunate. > > I=E2=80=99m not sure that I found a general rule in this respect. I had = met > this effect before in my workflow and vaguely associated it with a > trailing "\n". Investigating it further, I could find a recipe to > reproduce the effect, as shown, but I don=E2=80=99t really know how gener= al it > is. > > This effect does not occur if "\n" is removed from the template, and I > don=E2=80=99t know if its inclusion is to be considered bad practice, > particularly as the capture templates already have a structure to handle > empty lines. But, if my memory does not betray me in this respect, one > will find plenty of those laying around in folks configs. > > > Best regards, > Gustavo Barros. > > > > Emacs : GNU Emacs 26.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version > 3.22.30) > of 2019-04-19 > Package: Org mode version 9.2.4 (9.2.4-11-g1c3eae-elpaplus @ > /home/gustavo/.emacs.d/elpa/org-plus-contrib-20190722/) > > current state: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > (setq > org-src-mode-hook '(org-src-babel-configure-edit-buffer > org-src-mode-configure-edit-buffer) > org-metadown-hook '(org-babel-pop-to-session-maybe) > org-clock-out-hook '(org-clock-remove-empty-clock-drawer) > org-refile-targets '((org-agenda-files :maxlevel . 2)) > org-agenda-files '("~/org/agenda.org") > org-mode-hook '(#[0 "\300\301\302\303\304$\207" > [add-hook change-major-mode-hook org-show-all append > local] > 5] > #[0 "\300\301\302\303\304$\207" > [add-hook change-major-mode-hook > org-babel-show-result-all > append local] > 5] > org-babel-result-hide-spec org-babel-hide-all-hashes > org-eldoc-load) > org-archive-hook '(org-attach-archive-delete-maybe) > org-confirm-elisp-link-function 'yes-or-no-p > org-agenda-before-write-hook '(org-agenda-add-entry-text) > org-metaup-hook '(org-babel-load-in-session-maybe) > org-bibtex-headline-format-function #[257 "\300\236A\207" [:title] 3 > "\n\n(fn ENTRY)"] > org-babel-pre-tangle-hook '(save-buffer) > org-tab-first-hook '(org-babel-hide-result-toggle-maybe > org-babel-header-arg-expand) > org-src-lang-modes '(("arduino" . arduino) ("redis" . redis) ("php" > . php) > ("C" . c) ("C++" . c++) ("asymptote" . asy) > ("bash" . sh) ("beamer" . latex) ("calc" > . fundamental) > ("cpp" . c++) ("ditaa" . artist) ("dot" > . fundamental) > ("elisp" . emacs-lisp) ("ocaml" . tuareg) > ("screen" . shell-script) ("shell" . sh) > ("sqlite" . sql)) > org-occur-hook '(org-first-headline-recenter) > org-cycle-hook '(org-cycle-hide-archived-subtrees > org-cycle-show-empty-lines > org-optimize-window-after-visibility-change) > org-speed-command-hook '(org-speed-command-activate > org-babel-speed-command-activate) > org-confirm-shell-link-function 'yes-or-no-p > org-link-parameters '(("id" :follow org-id-open) > ("eww" :follow eww :store org-eww-store-link) > ("rmail" :follow org-rmail-open :store > org-rmail-store-link) > ("mhe" :follow org-mhe-open :store > org-mhe-store-link) > ("irc" :follow org-irc-visit :store > org-irc-store-link > :export org-irc-export) > ("info" :follow org-info-open :export > org-info-export > :store org-info-store-link) > ("gnus" :follow org-gnus-open :store > org-gnus-store-link) > ("docview" :follow org-docview-open :export > org-docview-export :store > org-docview-store-link) > ("bibtex" :follow org-bibtex-open :store > org-bibtex-store-link) > ("bbdb" :follow org-bbdb-open :export > org-bbdb-export > :complete org-bbdb-complete-link :store > org-bbdb-store-link) > ("w3m" :store org-w3m-store-link) ("file+sys") > ("file+emacs") > ("elfeed" :follow elfeed-link-open :store > elfeed-link-store-link) > ("doi" :follow org--open-doi-link) > ("elisp" :follow org--open-elisp-link) > ("file" :complete org-file-complete-link) > ("ftp" :follow > (lambda (path) (browse-url (concat "ftp:" > path)))) > ("help" :follow org--open-help-link) > ("http" :follow > (lambda (path) (browse-url (concat "http:" > path)))) > ("https" :follow > (lambda (path) (browse-url (concat "https:" > path)))) > ("mailto" :follow > (lambda (path) (browse-url (concat "mailto:" > path)))) > ("news" :follow > (lambda (path) (browse-url (concat "news:" > path)))) > ("shell" :follow org--open-shell-link)) > org-capture-templates '(("t" "TODO entry" entry > (file+headline "~/org/agenda.org" "Capture") > "* TODO %?\n") > ) > ) > > --0000000000006496cc058fbcd1d0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Gustavo,

I tried to reproduce your e= xample, and things worked properly....

Carsten

On Sun, Jul 28, 2019 at 9:34 PM Gustavo Barros <gusbrs.2016@gmail.com> wrote:
Hi all,

When the capture template ends with a newline character and the capture process is canceled, the following heading gets demoted. And it
shouldn=E2=80=99t.


Consider the following scenario. We have an agenda file with the
following content:

#+name: ~/org/agenda.org
#+begin_src org
,* Capture

,* Following heading

#+end_src

We start ~emacs -Q~, and do some basic setup:

#+begin_src emacs-lisp
(package-initialize)
(global-set-key (kbd "C-c c") 'org-capture)
(setq org-agenda-files
=C2=A0 =C2=A0 =C2=A0 '("~/org/agenda.org"))
(setq org-refile-targets
=C2=A0 =C2=A0 =C2=A0 '((org-agenda-files :maxlevel . 2)))
(setq org-capture-templates
=C2=A0 =C2=A0 =C2=A0 '(("t" "TODO entry" entry
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(file+headline "~/org/agenda.org" &= quot;Capture")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"* TODO %?\n")))
#+end_src

Now we start capture with "C-c c t" and cancel it with "C-c =
k". Examination of "agenda.org" will show:

#+name: ~/org/agenda.org
#+begin_src org
,* Capture
,** Following heading

#+end_src

Both the line between them is gone, and "* Following heading" got=
demoted, which is particularly unfortunate.

I=E2=80=99m not sure that I found a general rule in this respect.=C2=A0 I h= ad met
this effect before in my workflow and vaguely associated it with a
trailing "\n".=C2=A0 Investigating it further, I could find a rec= ipe to
reproduce the effect, as shown, but I don=E2=80=99t really know how general= it
is.

This effect does not occur if "\n" is removed from the template, = and I
don=E2=80=99t know if its inclusion is to be considered bad practice,
particularly as the capture templates already have a structure to handle empty lines.=C2=A0 But, if my memory does not betray me in this respect, on= e
will find plenty of those laying around in folks configs.


Best regards,
Gustavo Barros.



Emacs=C2=A0 : GNU Emacs 26.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)
=C2=A0of 2019-04-19
Package: Org mode version 9.2.4 (9.2.4-11-g1c3eae-elpaplus @
/home/gustavo/.emacs.d/elpa/org-plus-contrib-20190722/)

current state:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
(setq
=C2=A0org-src-mode-hook '(org-src-babel-configure-edit-buffer
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0org-src-mode-configure-edit-buffer)
=C2=A0org-metadown-hook '(org-babel-pop-to-session-maybe)
=C2=A0org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
=C2=A0org-refile-targets '((org-agenda-files :maxlevel . 2))
=C2=A0org-agenda-files '("~/org/agenda.org")
=C2=A0org-mode-hook '(#[0 "\300\301\302\303\304$\207"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[add-h= ook change-major-mode-hook org-show-all append
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0local]=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A05]
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#[0 "\30= 0\301\302\303\304$\207"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[add-h= ook change-major-mode-hook
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0org-ba= bel-show-result-all
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 appen= d local]
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A05]
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0org-babel-res= ult-hide-spec org-babel-hide-all-hashes
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0org-eldoc-loa= d)
=C2=A0org-archive-hook '(org-attach-archive-delete-maybe)
=C2=A0org-confirm-elisp-link-function 'yes-or-no-p
=C2=A0org-agenda-before-write-hook '(org-agenda-add-entry-text)
=C2=A0org-metaup-hook '(org-babel-load-in-session-maybe)
=C2=A0org-bibtex-headline-format-function #[257 "\300\236A\207" [= :title] 3
=C2=A0"\n\n(fn ENTRY)"]
=C2=A0org-babel-pre-tangle-hook '(save-buffer)
=C2=A0org-tab-first-hook '(org-babel-hide-result-toggle-maybe
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 org-babel-header-arg-expand)
=C2=A0org-src-lang-modes '(("arduino" . arduino) ("redis= " . redis) ("php"
=C2=A0. php)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ("C" . c) ("C++" . c++) ("asymptote" . as= y)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ("bash" . sh) ("beamer" . latex) ("calc" =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 . fundamental)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ("cpp" . c++) ("ditaa" . artist) ("dot" <= br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 . fundamental)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ("elisp" . emacs-lisp) ("ocaml" . tuareg)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ("screen" . shell-script) ("shell" . sh)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ("sqlite" . sql))
=C2=A0org-occur-hook '(org-first-headline-recenter)
=C2=A0org-cycle-hook '(org-cycle-hide-archived-subtrees
=C2=A0org-cycle-show-empty-lines
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 org-optimize= -window-after-visibility-change)
=C2=A0org-speed-command-hook '(org-speed-command-activate
=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 org-babel-speed-command-activate)
=C2=A0org-confirm-shell-link-function 'yes-or-no-p
=C2=A0org-link-parameters '(("id" :follow org-id-open)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("eww" :follow eww :store org-eww-store-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("rmail" :follow org-rmail-open :store
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 org-rmail-store-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("mhe" :follow org-mhe-open :store
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0org-mhe-store-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("irc" :follow org-irc-visit :store
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0org-irc-store-link
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 :export org-irc-export)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("info" :follow org-info-open :export
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0org-info-export
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 :store org-info-store-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("gnus" :follow org-gnus-open :store
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 org-gnus-store-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("docview" :follow org-docview-open :export
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 org-docview-export :store
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 org-docview-store-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("bibtex" :follow org-bibtex-open :store
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 org-bibtex-store-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("bbdb" :follow org-bbdb-open :export
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0org-bbdb-export
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 :complete org-bbdb-complete-link :store
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 org-bbdb-store-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("w3m" :store org-w3m-store-link) ("file+sys"= )
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("file+emacs")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("elfeed" :follow elfeed-link-open :store
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 elfeed-link-store-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("doi" :follow org--open-doi-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("elisp" :follow org--open-elisp-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("file" :complete org-file-complete-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("ftp" :follow
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (lambda (path) (browse-url (concat "ftp:"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 path))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("help" :follow org--open-help-link)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("http" :follow
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (lambda (path) (browse-url (concat "http:"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 path))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("https" :follow
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (lambda (path) (browse-url (concat "https:"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 path))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("mailto" :follow
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (lambda (path) (browse-url (concat "mailto:"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 path))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("news" :follow
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (lambda (path) (browse-url (concat "news:"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 path))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0("shell" :follow org--open-shell-link))
=C2=A0org-capture-templates '(("t" "TODO entry" ent= ry
=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 (file+headline "~/org/agenda.org" "Capture&quo= t;)
=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 "* TODO %?\n")
=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)

--0000000000006496cc058fbcd1d0--