Re: [PATCH] org-id: allow using parent's existing id in links to headlines

2023-07-26 Thread Samuel Wales
i can see the appeal given the granularity of id [headings, files]. yu
want to point to smaller things.  but what if those smaller things
could have ids without drawers?  id markers.  then changes in
surrounding text would not break anything.


On 7/26/23, Ihor Radchenko  wrote:
> Max Nikulin  writes:
>
>> I am not excited by the idea of extending id links for heading
>> hierarchy. From my point of view it is more natural to add the ID
>> property to the heading that should be link target.
>>
>> Sometimes I do not mind to disambiguate heading search link by
>> specifying title of its ancestor. I usually add the CUSTOM_ID property
>> or rename heading to be unique.
>>
>> I am afraid that allowing arbitrary link types to specify path to an
>> element is overkill. It is not XPath and not CSS selectors.
>
> I am looking at it from an opposite direction: we already have file:
> links with ::search term, but file is not a very reliable link anchor.
> File ID will persist even when the file is moved. So, instead of having
> something like , we should better also
> provide  with ID defined in the top-level property
> drawer. ID being some sub-heading is then a natural extension of the
> same idea.
>
> --
> Ihor Radchenko // yantar92,
> Org mode contributor,
> Learn more about Org mode at .
> Support Org development at ,
> or support my work at 
>
>


-- 
The Kafka Pandemic

A blog about science, health, human rights, and misopathy:
https://thekafkapandemic.blogspot.com



Re: [PATCH] lisp/org-table.el: Allow named columns on lhs

2023-07-26 Thread Gavin Downard
Max Nikulin  writes:
> The regexp for parsing formulas does not allow named references after @.
> I have no idea if other code should be modified as well. I consider it
> as more important than detection of duplicated definitions.

Yeah, besides changing the regexp, the main thing that will need to be
changed is the interface of `org-table-get-stored-formulas'. Currently,
a field name on the lhs can only exist by itself (that is, it can't be a
part of any other expression, such as a range), so the leading '$' is
removed. So, '$name=1+2' is parsed as '("name" . "1+2")'. This is at
odds with field/column names in the middle of an expression.

I think the best way to do this is to change
`org-table-get-stored-formulas' to not strip the leading '$', and
instead of using '(assoc FIELD-NAME org-table-named-field-locations)' or
'(assoc COL-NAME org-table-column-names)', we can a modified* version of
`org-table-formula-substitute-names' (which is used for field and column
names on the rhs of a formula). That would work as a replacement for the
existent handling of field names that would also work for column names
as we want them.

As a side note, this would allow ranges on the lhs that contain field
names in them:

|   | 1 | 2 |   3 |
| # |   |   | |
| ^ | begin |   | end |
#+TBLFM: $begin..$end=@1*@1

(*): the issue with `org-table-formula-substitute-names' as it is, is
that it will replace field names with the field /value/, not the field
index. Hopefully modifying the function to replace field names with
their indices won't break anything, so we can use the same function for
both sides of the formula.

> A crazy idea: several columns may have the same name:
>
> |   | Jun sum | Jun count | Jun avg | Jul sum | Jul count | Jul avg |
> | ! | |   | average | |   | average |
> |---+-+---+-+-+---+-|
> |   |  150| 10| | 200 |14 | |
>
> #+tblfm: $average=$-2/$-1
>
> It has no sense for numeric references but with names it can help to
> avoid repeated expressions.

Or, if you want to get really crazy, we can let fields and columns with
the same name share a formula. :)

| ! | Apple budget |  Pear Budget | Orange Budget | total |
|---+--+--+---+---|
| # |1 |2 | 3 | 6 |
| # |4 |5 | 6 |15 |
|---+--+--+---+---|
| # |2 |3 | 5 |26 |
| ^ | extra-cost-1 | extra-cost-2 | total | ultimatetotal |
#+TBLFM: $total=vsum($<<..$-1) :: $ultimatetotal=vsum(@I..II) + $-1

But in all seriousness, that does seem like it could be useful. I guess
on the rhs we could give each of those "shared names" the value of an array of
that name's connected columns (or fields). But I think support for that should
probably be added in a separate patch, since it's a bit separate from
the main issue.



Re: Minimal Gnus setup for test purposes

2023-07-26 Thread Kévin Le Gouguec
Jens Schmidt  writes:

> More notes:

Don't know if this is well-suited to ol-gnus hacking, but the gnus-mock
package on GNU ELPA might be of interest?  I have faint memories of
using it once or twice to debug & fix Gnus problems.



Minimal Gnus setup for test purposes

2023-07-26 Thread Jens Schmidt

In the context of some ol-gnus bug I created a minimal Gnus setup.  Ihor
wanted to have a look at it, so here it is.

To use:

- create an empty directory /foo/bar/baz and say

unzip -qd /foo/bar/baz gnus-minimal-test.zip

- if you want to use the nnselect backend based on notmuch (haven't
  tested other search engines), ensure you have notmuch installed and
  generate the search index with

HOME=/foo/bar/baz notmuch new

- HOME=/foo/bar/baz make vanilla, HOME=/foo/bar/baz emacs -Q, whatever.
  Only ensure to set the home directory to that newly created directory
  when starting Emacs.

- M-x load-file ~/.gnus RET

- M-x gnus RET

You should see a rather bland *Group* buffer along the following lines:

   1: nndraft:drafts
 182: nntp+news.gmane.io:gmane.emacs.announce
   156101: nntp+news.gmane.io:gmane.emacs.orgmode
   0: nnml+archive:test01
   0: nnml+archive:test02
   0: nnvirtual:test03
   0: nnselect:test04

(Please don't judge Gnus by this boring look - after all, this is a
minimal test!)

From here you can select groups and articles with RET:

  nndrafts+ - where Gnus saves mail drafts
  nntp+...  - obvious
  nnml+...  - Gnus' own article archive backend
  nnvitual+ - "virtual" group on archives test01 & test02
  nnselect+ - search group searching for "emacs" in
  archives test01 & test02

and exit from these (and Gnus itself) with `q'.

More notes:

- Not sure as to how that could be used with ERT.  Gnus itself has only
  very basic tests in the Emacs distribution, AFAICT.  Using Gnus is
  something rather interactive, after all, and I have little ERT
  experience and none with interactive tests.

- Gnus expects all these files relative to the home directory.  In
  particular, there are some reference to that in the configuration files.
  Here it would be helpful if ERT could be tricked into changing the home
  directory to some temporary directory, as done in the instructions given
  above.  IIRC the home directory must be set before Gnus starts.

- If some of the groups shown above, like nntp (requiring internet
  connectivity) or nnselect (requiring notmuch), are not suitable for
  ERT, these could be removed from the setup.

- Gnus should be rather stable.  Anyhow, if you decide to test
  Org-Gnus-interaction, you most likely will be testing 10% Org
  functionality and 90% Gnus functionality.  Which comes at a certain
  risk, of course.

Have fun and feel free to ask or comment ...<>


Re: [BUG] Issues in ol-gnus when storing links in nnvirtual and nnselect articles [9.7-pre (release_9.6.7-570-gd6f3ae.dirty @ /home/jschmidt/work/org-mode/lisp/)]

2023-07-26 Thread Jens Schmidt

On 2023-07-26  18:04, Ihor Radchenko wrote:

This is not a proper email address and name. Should I use Jens 
Schmidt  ?


Sorry, forgot to maintain that yet in my org-mode clone.  Will do.


May you please add TINYCHANGE cookie to commit message. I do not see
 you having a copyright status in our records. See 
https://orgmode.org/worg/org-contribute.html#first-patch


I completed already an FSF copyright assignment for Emacs.  Does that
count for org-mode as well or do I need to extend/repeat that somehow?
A TINYCHANGE might be sufficient here but I think we could as well
clarify that issue "the thorough way" right from the start.


And maybe add a link to this discussion.


Will do as well.



Re: Subscript entity in the name of files or some advise for alternatives

2023-07-26 Thread Ypo

Hi Ihor!

I wanted to avoid this: "Campayo_2009_BLOQUE1Leyendo3FotosRenglon-2.png"

to look like this:

https://i.ibb.co/CJm99pG/Captura.png


I have solved it by setting "Org Pretty Entities Include Sub 
Superscripts" to nil.


Side effect: I lost pretty superscripts, but it's not too serious ^^


El 26/07/2023 a las 14:22, Ihor Radchenko escribió:

Ypo  writes:


I tried to don't get the subscripts (_) affected by org-pretty-entities.

I wanted it, because I usually use (_) to divide words when naming
my_files, and that looks ugly in Orgmode.

May you please provide an illustration with example Org file, what you
see, and what you want to achieve?


Re: [BUG] Issues in ol-gnus when storing links in nnvirtual and nnselect articles [9.7-pre (release_9.6.7-570-gd6f3ae.dirty @ /home/jschmidt/work/org-mode/lisp/)]

2023-07-26 Thread Ihor Radchenko
Jens Schmidt  writes:

> Package: Org mode version 9.7-pre (release_9.6.7-570-gd6f3ae.dirty @ 
> /home/jschmidt/work/org-mode/lisp/)
> From e1bc9aefd4fd0080012c172d1c21c684a5b2fe51 Mon Sep 17 00:00:00 2001

I looked into applying your patch, but there are several minor issues I
need to clarify.

> From: farblos <43711228+farb...@users.noreply.github.com>

This is not a proper email address and name. Should I use Jens Schmidt
 ?

> Date: Sat, 22 Jul 2023 10:30:19 +0200
> Subject: [PATCH] ol-gnus.el: Fix issue when storing links from Gnus article
>  buffers
>
> * lisp/ol-gnus.el (org-gnus-store-link): Switch to
> `gnus-summary-buffer' when calling functions that are intended to be
> called only there.

May you please add TINYCHANGE cookie to commit message. I do not see you
having a copyright status in our records. See
https://orgmode.org/worg/org-contribute.html#first-patch

And maybe add a link to this discussion.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



[PATCH v5] ob-tangle.el: Blocks overwrite each other when grouping before tangling

2023-07-26 Thread Evgenii Klimov

Ihor Radchenko  writes:

>> +(ert-deftest ob-tangle/collect-blocks ()
>> +  "Test block collection into groups for tangling."
>> +  (org-test-with-temp-text-in-file
>> +  "* H1 with :tangle in properties
>> +:PROPERTIES:
>> +:header-args: :tangle relative.el
>> +:END:
>> 
>> +  ;; to the first header
>> +  (insert (format "#+begin_src emacs-lisp :tangle %s
>> +\"H1: absolute org-file.lang-ext :tangle %s\"
>> +#+end_src" el-file-abs el-file-abs))
>> +  (goto-char (point-max))
>
> This combination of pre-filled text and insertions is a bit
> disorienting. I understand why you need to insert some things only after
> we know the temporary Org file name, but I'd instead placed all the
> contents together via insert.

Rewrote.

>> +#+begin_src emacs-lisp :tangle %s
>> +\"H2: relative org-file.lang-ext :tangle %s\"
>> +#+end_src" el-file-rel el-file-rel))
>> +  (should (equal (funcall expected-targets-fn 4)
>> + (funcall collected-targets-fn 
>> (org-babel-tangle-collect-blocks
>
> When reading this code, I have no idea what it is trying to test.
> Probably something to do with function names not being descriptive.
> At least, a comment would help.
>
> And the magic numbers "4" and "5" have no obvious meaning.

Hope new version is cleaner.

>From f1bf00592b1ee2bb27148fe93316cc6c1a192179 Mon Sep 17 00:00:00 2001
From: Evgenii Klimov 
Date: Fri, 21 Jul 2023 22:40:06 +0100
Subject: [PATCH v5 1/2] testing/lisp/test-ob-tangle.el: Test block collection
 into groups for tangling

* testing/lisp/test-ob-tangle.el (ob-tangle/collect-blocks): Test
block collection into groups for tangling.
---
 testing/lisp/test-ob-tangle.el | 116 +
 1 file changed, 116 insertions(+)

diff --git a/testing/lisp/test-ob-tangle.el b/testing/lisp/test-ob-tangle.el
index 07e75f4d3..ad0e1c29c 100644
--- a/testing/lisp/test-ob-tangle.el
+++ b/testing/lisp/test-ob-tangle.el
@@ -569,6 +569,122 @@ another block
 (set-buffer-modified-p nil))
   (kill-buffer buffer
 
+(ert-deftest ob-tangle/collect-blocks ()
+  "Test block collection into groups for tangling."
+  (org-test-with-temp-text-in-file "" ; filled below, it depends on temp file name
+(let* ((org-file (buffer-file-name))
+   (test-dir (file-name-directory org-file))
+   (el-file-abs (concat (file-name-sans-extension org-file) ".el"))
+   (el-file-rel (file-name-nondirectory el-file-abs)))
+  (insert (format "* H1 with :tangle in properties
+:PROPERTIES:
+:header-args: :tangle relative.el
+:END:
+
+#+begin_src emacs-lisp
+\"H1: inherited :tangle relative.el in properties\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle yes
+\"H1: :tangle yes\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle no
+\"H1: should be ignored\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle %s
+\"H1: absolute org-file.lang-ext :tangle %s\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle relative.el
+\"H1: :tangle relative.el\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle ./relative.el
+\"H1: :tangle ./relative.el\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle /tmp/absolute.el
+\"H1: :tangle /tmp/absolute.el\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle ~/../../tmp/absolute.el
+\"H1: :tangle ~/../../tmp/absolute.el\"
+#+end_src
+
+* H2 without :tangle in properties
+
+#+begin_src emacs-lisp
+\"H2: without :tangle\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle yes
+\"H2: :tangle yes\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle no
+\"H2: should be ignored\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle %s
+\"H2: relative org-file.lang-ext :tangle %s\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle relative.el
+\"H2: :tangle relative.el\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle ./relative.el
+\"H2: :tangle ./relative.el\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle /tmp/absolute.el
+\"H2: :tangle /tmp/absolute.el\"
+#+end_src
+
+#+begin_src emacs-lisp :tangle ~/../../tmp/absolute.el
+\"H2: :tangle ~/../../tmp/absolute.el\"
+#+end_src" el-file-abs el-file-abs el-file-rel el-file-rel))
+  (letrec ((sort-fn (lambda (lst) (seq-sort-by #'car #'string-lessp lst)))
+   (normalize-expected-targets-alist
+(lambda (blocks-per-target-alist)
+  "Convert to absolute file names and sort expected targets"
+  (funcall sort-fn
+   (map-apply (lambda (file nblocks)
+(cons (expand-file-name file test-dir) nblocks))
+  blocks-per-target-alist
+   (count-blocks-in-target-files
+(lambda (collected-blocks)
+  "Get sorted alist of target file names with number of blocks in each"
+  (funcall sort-fn (map-apply (lambda (file blocks)
+(cons file (length blocks)))
+  collected-blocks)
+(should (equal 

Re: Subscript entity in the name of files or some advise for alternatives

2023-07-26 Thread Ihor Radchenko
Ypo  writes:

> I tried to don't get the subscripts (_) affected by org-pretty-entities.
>
> I wanted it, because I usually use (_) to divide words when naming 
> my_files, and that looks ugly in Orgmode.

May you please provide an illustration with example Org file, what you
see, and what you want to achieve?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



Re: [BUG] WORG example for ob-lilypond is no longer working as described (was: Moving some lisp/ob-*.el files to org-contrib - your advice?)

2023-07-26 Thread Jonathan Gregory




On 26 Jul 2023, Ihor Radchenko wrote:

Ok. That fix has been already installed. 
https://git.sr.ht/~bzg/worg/commit/6f69d212f41bc372426dc9b4df286638fe8f2a92


To the extent of the lilypond.org file, yes, but only if the 
output is a PDF. My suggestion is to revert that commit and 
incorporate the changes into ob-lilypond.


The other patch for ob-lilypond itself does not appear to be 
necessary. I though that you are trying to extend ob-lilypond in 
that patch. If not, I still do not understand its purpose. I 
assume that it should be ignored.


No, the ob-lilypond patch is needed. It allows users to generate 
music fragments (as opposed to a full page) in basic mode using 
pdf, eps, and png.


Anyway, I can add version and paper settings as well, but those 
are user settings and I'm not sure that hard-coding them is a 
good idea. What I don't like is having to repeat 
<> everywhere. Is there a way of telling 
org-mode to insert a noweb reference from the header? Something 
like:


#+PROPERTY: header-args:lilypond :prepend <>


There is :prologue standard header argument. However, it is 
currently not supported by ob-lilypond. (which is a bug)


Can you show me how that's done in elisp? I would expect the last 
block to output "foobar".


#+begin_src elisp :noweb-ref test
(setq x "foo" y "bar")
#+end_src

#+begin_src elisp :prologue <> :noweb yes
(concat x y)
#+end_src


--
Jonathan



Re: [BUG] WORG example for ob-lilypond is no longer working as described (was: Moving some lisp/ob-*.el files to org-contrib - your advice?)

2023-07-26 Thread Ihor Radchenko
Jonathan Gregory  writes:

> On 22 Jul 2023, Ihor Radchenko wrote:
>
>> I guess I do not fully understand what your patch is trying to 
>> achieve. I thought that the patch would make it not necessary to 
>> write some extra boilerplate code, like \version or specifying 
>> the page size.
>
> The purpose of the patch was to fix the problem described in 
> https://masto.ai/@rfc1149/110674961710491363. I wasn't trying to 
> introduce anything new.

Ok. That fix has been already installed.
https://git.sr.ht/~bzg/worg/commit/6f69d212f41bc372426dc9b4df286638fe8f2a92

The other patch for ob-lilypond itself does not appear to be necessary.
I though that you are trying to extend ob-lilypond in that patch. If
not, I still do not understand its purpose. I assume that it should be
ignored.

> Anyway, I can add version and paper settings as well, but those 
> are user settings and I'm not sure that hard-coding them is a good 
> idea. What I don't like is having to repeat <> 
> everywhere. Is there a way of telling org-mode to insert a noweb 
> reference from the header? Something like:
>
> #+PROPERTY: header-args:lilypond :prepend <>

There is :prologue standard header argument. However, it is currently
not supported by ob-lilypond. (which is a bug)

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



Re: [PATCH] org-id: allow using parent's existing id in links to headlines

2023-07-26 Thread Ihor Radchenko
Max Nikulin  writes:

> I am not excited by the idea of extending id links for heading 
> hierarchy. From my point of view it is more natural to add the ID 
> property to the heading that should be link target.
>
> Sometimes I do not mind to disambiguate heading search link by 
> specifying title of its ancestor. I usually add the CUSTOM_ID property 
> or rename heading to be unique.
>
> I am afraid that allowing arbitrary link types to specify path to an 
> element is overkill. It is not XPath and not CSS selectors.

I am looking at it from an opposite direction: we already have file:
links with ::search term, but file is not a very reliable link anchor.
File ID will persist even when the file is moved. So, instead of having
something like , we should better also
provide  with ID defined in the top-level property
drawer. ID being some sub-heading is then a natural extension of the
same idea.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



Re: [BUG] org-up-heading-safe navigates above top heading [9.5.5 (release_9.5.5 @ /opt/homebrew/Cellar/emacs-plus@28/28.2/share/emacs/28.2/lisp/org/)]

2023-07-26 Thread Ihor Radchenko
Daniel Liden  writes:

> Summary: I started to encounter some errors while using the org-fc package
> after. I traced it back to a change in behaviour from org-up-heading-safe
> following some updates to my system. I did not see this change documented.
>
> Old behavior: org-up-heading-safe will not move the point above the top
> headline in an org hierarchy (e.g. if there is text above a top-level
> headline.)
>
> New behavior: org-up-heading-safe *will* move the point above the top
> headline in an org hierarchy (e.g. if there is text above a top-level
> headline.)

Thanks for reporting!
Fixed, on main.
https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=dc78f0946

This function was not test-covered and not fully documented. Now, it is.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



Re: [PATCH v4] ob-tangle.el: Blocks overwrite each other when grouping before tangling

2023-07-26 Thread Ihor Radchenko
Evgenii Klimov  writes:

>> So, :tangle no is always excluded.
>> When TANGLE-FILE is set and not equal to :tangle value (including
>> "yes"), block is also excluded.
>
> Indeed, but later
>
>‘no’
> The *default*.  Do not extract the code in a source code file.
> Example: ‘:tangle no’.
>
> in conjunction with TARGET-FILE's description in ~org-babel-tangle~
> docstring:
>
>Optional argument TARGET-FILE can be used to specify a *default*
>export file for all source blocks.
>
> made me feel doubt about TARGET-FILE's effect.

TARGET-FILE is used instead of the normal default.

> +(ert-deftest ob-tangle/collect-blocks ()
> +  "Test block collection into groups for tangling."
> +  (org-test-with-temp-text-in-file
> +  "* H1 with :tangle in properties
> +:PROPERTIES:
> +:header-args: :tangle relative.el
> +:END:
> 
> +  ;; to the first header
> +  (insert (format "#+begin_src emacs-lisp :tangle %s
> +\"H1: absolute org-file.lang-ext :tangle %s\"
> +#+end_src" el-file-abs el-file-abs))
> +  (goto-char (point-max))

This combination of pre-filled text and insertions is a bit
disorienting. I understand why you need to insert some things only after
we know the temporary Org file name, but I'd instead placed all the
contents together via insert.

> +#+begin_src emacs-lisp :tangle %s
> +\"H2: relative org-file.lang-ext :tangle %s\"
> +#+end_src" el-file-rel el-file-rel))
> +  (should (equal (funcall expected-targets-fn 4)
> + (funcall collected-targets-fn 
> (org-babel-tangle-collect-blocks

When reading this code, I have no idea what it is trying to test.
Probably something to do with function names not being descriptive.
At least, a comment would help.

And the magic numbers "4" and "5" have no obvious meaning.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



[BUG] org-up-heading-safe navigates above top heading [9.5.5 (release_9.5.5 @ /opt/homebrew/Cellar/emacs-plus@28/28.2/share/emacs/28.2/lisp/org/)]

2023-07-26 Thread Daniel Liden
Summary: I started to encounter some errors while using the org-fc package
after. I traced it back to a change in behaviour from org-up-heading-safe
following some updates to my system. I did not see this change documented.

Old behavior: org-up-heading-safe will not move the point above the top
headline in an org hierarchy (e.g. if there is text above a top-level
headline.)

New behavior: org-up-heading-safe *will* move the point above the top
headline in an org hierarchy (e.g. if there is text above a top-level
headline.)

Unfortunately, I'm not sure what version exactly I updated from. However,
see example, I did look at the diff for org-up-heading-safe and found this—
https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=dfd36d1969ce2c33f5899e97c02fa62544735977.
The older version has the expected behavior (well, the behavior I
expected); the newer version will go up above the top headline.

See attached org file with (hopefully) reproducible example.

Emacs  : GNU Emacs 28.2 (build 2, aarch64-apple-darwin22.4.0, NS
appkit-2299.50 Version 13.3.1 (Build 22E261))
 of 2023-05-01
Package: Org mode version 9.5.5 (release_9.5.5 @
/opt/homebrew/Cellar/emacs-plus@28/28.2/share/emacs/28.2/lisp/org/)

current state:
==
(setq
 org-link-elisp-confirm-function 'yes-or-no-p
 org-bibtex-headline-format-function #[257 "\300 \236A\207" [:title] 3
"\n\n(fn ENTRY)"]
 org-export-before-parsing-hook '(org-attach-expand-links)
 org-archive-hook '(org-attach-archive-delete-maybe)
 org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers
org-cycle-show-empty-lines
 org-optimize-window-after-visibility-change)
 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-confirm-shell-link-function 'yes-or-no-p
 outline-isearch-open-invisible-function 'outline-isearch-open-invisible
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 org-src-mode-hook '(org-src-babel-configure-edit-buffer
org-src-mode-configure-edit-buffer)
 org-confirm-elisp-link-function 'yes-or-no-p
 org-speed-command-hook '(org-speed-command-activate
org-babel-speed-command-activate)
 org-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
 org-link-shell-confirm-function 'yes-or-no-p
 org-babel-pre-tangle-hook '(save-buffer)
 org-agenda-loop-over-headlines-in-active-region nil
 org-occur-hook '(org-first-headline-recenter)
 org-metadown-hook '(org-babel-pop-to-session-maybe)
 org-link-parameters '(("attachment" :follow org-attach-follow :complete
org-attach-complete-link) ("id" :follow org-id-open)
  ("eww" :follow org-eww-open :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) ("doi" :follow org-link-doi-open
:export org-link-doi-export) ("file+sys")
  ("file+emacs") ("shell" :follow org-link--open-shell)
  ("news" :follow #[514 "\301\300\302 Q \"\207" ["news" browse-url ":"]
6 "\n\n(fn URL ARG)"])
  ("mailto" :follow #[514 "\301\300\302 Q \"\207" ["mailto" browse-url
":"] 6 "\n\n(fn URL ARG)"])
  ("https" :follow #[514 "\301\300\302 Q \"\207" ["https" browse-url
":"] 6 "\n\n(fn URL ARG)"])
  ("http" :follow #[514 "\301\300\302 Q \"\207" ["http" browse-url ":"]
6 "\n\n(fn URL ARG)"])
  ("ftp" :follow #[514 "\301\300\302 Q \"\207" ["ftp" browse-url ":"] 6
"\n\n(fn URL ARG)"])
  ("help" :follow org-link--open-help :store org-link--store-help)
("file" :complete org-link-complete-file)
  ("elisp" :follow org-link--open-elisp))
 org-metaup-hook '(org-babel-load-in-session-maybe)
 )


org-up-heading-safe-example.org
Description: Binary data