Re: One vs many directories

2020-11-23 Thread Ihor Radchenko
> I find it entertaining for now. Now, what is exomind? 

Unless I misunderstood, Jean referred to "external brain" concept:
- https://beepb00p.xyz/exobrain/
- https://zettelkasten.de/posts/extend-your-mind-and-memory-with-a-zettelkasten/
- https://github.com/novoid/Memacs
- https://blog.jethro.dev/posts/org_mode_workflow_preview/

Best,
Ihor

Jean Louis  writes:

> * Texas Cyberthal  [2020-11-23 19:08]:
>> Hi Jean,
>> 
>> > I have tried your solution and could not find the mental concept to relate 
>> > to my thinking.
>> 
>> I forgot this inductive sorting skill must be learned gradually, like
>> touch typing, at small scale before exomind conversion.
>
> I find it entertaining for now. Now, what is exomind? 



Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Ihor Radchenko
> I definitely think it's very, very useful!
> I constantly leave tabs open or use bookmarks, but it'd be great to add
> them to ORG with a timestamp to watch later.
> This way I wouldn't forget about them and they wouldn't take memory on the
> browser if I don't bookmark them.

It is possible and many people use it (including me). Useful links:
- https://orgmode.org/manual/Capture.html#Capture
- https://orgmode.org/manual/Protocols.html#Protocols
- https://github.com/yantar92/org-capture-ref

Best,
Ihor


Gerardo Moro  writes:

>  > Do you find that useful? Who does?
> I definitely think it's very, very useful!
> I constantly leave tabs open or use bookmarks, but it'd be great to add
> them to ORG with a timestamp to watch later.
> This way I wouldn't forget about them and they wouldn't take memory on the
> browser if I don't bookmark them.
>
>



Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Ihor Radchenko
> Side note: there shall be feature in Org that quickly
> captures the full link to the heading. Maybe it already
> exists. Instead of constructing links by hand like entering
> the file name, entering the heading for the link, there
> shall by some automated feature:

See org-store-link and org-insert-link. org-store-link stores link in a
link ring and the link/links can be later inserted using
org-insert-link.

> Org headings can be or could be marked with later action on
> the whole collection of headings:

See bulk commands in agenda (Bulk remote editing selected entries):
https://orgmode.org/manual/Agenda-Commands.html

Manually picking headlines to put into agenda is not currently possible
in org-mode, but one can volunteer to do it. It is not too hard to
implement. Patches are welcome.

> - re-filing all of them at once

built-in

> - sending them all by email to other person (I do with Org)

> - sending hyperlinks in other Org file (I do in HyperScope)

> - creating new Org file with the collection of headings

not implemented, but see org-agenda-bulk-custom-functions for extending
the built-in functionality

> - assigning properties to collection of headings, tasks,
> todo or similar. I am often assigning tasks to people,
> collection would help me re-assign tasks instead of doing it
> one by one.

build-in bulk commands provide a way to assign todo keywords or tags.

> But this here, this chunk of various properties shows how
> Org users wish Org to be way more structured, that Org wants
> to become more than just plain text, it wants to become
> database.

As usual, it's user's choice how to use Org. There are built-in tools
that require storing metadata and org-mode devs chose to store
everything as plain text. If user does not want to use this feature, the
user is free to not use it or use alternative ways to store metadata (as
it is done in org-roam, for example).

Best,
Ihor

Jean Louis  writes:

> * Ihor Radchenko  [2020-11-23 11:14]:
>> > Org provides hyperlinks and that useful feature may be used as
>> > on-the-fly information visualizer for many groups of smaller pieces of
>> > information which could be obtained from some structure or found in
>> > real time.
>> 
>> Also, one could quickly select one of multiple links under heading by
>> invoking C-c C-o with point at heading.
>
> I did not know that. That is useful feature for Org.
>
> Side note: there shall be feature in Org that quickly
> captures the full link to the heading. Maybe it already
> exists. Instead of constructing links by hand like entering
> the file name, entering the heading for the link, there
> shall by some automated feature:
>
> Useful Feature A:
> =
>
> - watching 2 windows with 2 Org files
>
> - position cursor in first Org file to accept the hyperlink
>
> - move to 2nd Org file any heading
>
> - press key, and hyperlink is sent to 1st Org file properly
>   formatted for specific heading in second Org file.
>
> And then there shall be also collection of hyperlinks:
>
> Useful feature B to collect hyperlinks similar to above:
> 
>
> - user browses one Org file and thinks of collecting various
> multiple hyperlinks as such need to be referenced in other
> Org file and I refer to headings only for now.
>
> - user would just invoke the key in any heading and message
>   would be "Heading `** TODO Things' captured in the ring"
>
> - user would be able to browse various Org files and collect
>   hyperlinks in memory collection.
>
> - After several collections user could then go to other Org
> files and invoke key or command to insert the whole
> collection of hyperlinks.
>
> Do you find that useful? Who does?
>
> That is how I am implementing information in the personal
> program HyperScope, it will get published when polished and
> ripe. 
>
> Collections are similar to Dired marking, user can mark the
> file and later decide what to do with it.
>
> Org headings can be or could be marked with later action on
> the whole collection of headings:
>
> - re-filing all of them at once
>
> - sending them all by email to other person (I do with Org)
>
> - sending hyperlinks in other Org file (I do in HyperScope)
>
> - creating new Org file with the collection of headings
>
> - assigning properties to collection of headings, tasks,
> todo or similar. I am often assigning tasks to people,
> collection would help me re-assign tasks instead of doing it
> one by one.
>
>> In the following example, C-c C-o would raise a buffer listing all
>> the links. Then, the links can be selected by pressing 1/2/3 (to
>> open first/second/third link):
>
> That is new to me and fine feature, thank you for reference. 
>
> But this here, this chunk of various properties shows how
> Org users wish Org to be way more structured, that Org wants
> to become more than just plain text, it wants to become
> database.
>
> *** NEXT  Commit all the changes
> SCHEDULED: <2020-11-24 Tue 

Re: [PATCH] org-table: Add mode flag to enable Calc units simplification mode

2020-11-23 Thread Kyle Meyer
Daniele Nicolodi writes:

> Subject: [PATCH 1/3] org-table: Remove unused org-tbl-calc-modes variable
>  declaration

Looks good.

> Subject: [PATCH 2/3] org-table: Simplify mode string parsing
> and reduce scope of local variables.
[...]
> -  (if (string-match ";" formula)
> -   (let ((tmp (org-split-string formula ";")))
> - (setq formula (car tmp)
> -   fmt (concat (cdr (assoc "%" org-table-local-parameters))
> -   (nth 1 tmp)))
> +  (if (string-match "\\(.*\\);\\(.*\\)" formula)
> +   (progn
> + (setq fmt (concat (match-string-no-properties 2 formula)
> +   (cdr (assoc "%" org-table-local-parameters

Hmm, the concat arguments are getting swapped.  Intentional?

The rest looks good.

> Subject: [PATCH 3/3] org-table: Add mode flag to enable Calc units
>  simplification mode
>
> * org-table.el (org-table-eval-formula): Add the `u` mode flag to
> enable Calc's units simplification mode.
>
> * test-org-table.el (test-org-table/mode-string-u): Add Unit test for
> the new mode flag.
>
> * org-manual.org: Document new mode flag.
> ---
>  doc/org-manual.org |  8 
>  etc/ORG-NEWS   |  7 ++-
>  lisp/org-table.el  |  5 +++--
>  testing/lisp/test-org-table.el | 12 
>  4 files changed, 29 insertions(+), 3 deletions(-)

Thanks for the additions.

> diff --git a/doc/org-manual.org b/doc/org-manual.org
> index be69996d5..70b748fc7 100644
> --- a/doc/org-manual.org
> +++ b/doc/org-manual.org
> @@ -2075,6 +2075,14 @@ variable ~org-calc-default-modes~.
>  
>Fraction and symbolic modes of Calc.
>  
> +- =u= ::
> +
> +  Units simplification mode of Calc. Calc is also a symbolic

convention nit: two spaces after a period

> +  calculator and is capable of working with values having an unit
> +  (numerals followed by an unit string in Org table cells). This mode
> +  instructs Calc to simplify the units in the computed expression
> +  before returning the result.
> +
>  - =T=, =t=, =U= ::
>  
>Duration computations in Calc or Lisp, [[*Durations and time values]].
> diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
> index 889eb4aab..6f6db8e43 100644
> --- a/etc/ORG-NEWS
> +++ b/etc/ORG-NEWS
> @@ -60,7 +60,7 @@ relative links within a project as follows:
>  #+end_src
>  
>  ** New features
> -*** =ob-python= improvements to =:return= header argument 
> +*** =ob-python= improvements to =:return= header argument

unrelated space change

>  The =:return= header argument in =ob-python= now works for session
>  blocks as well as non-session blocks.  Also, it now works with the
> @@ -112,6 +112,11 @@ package, to convert pandas Dataframes into orgmode 
> tables:
>  | 2 | 3 | 6 |
>  #+end_src
>  
> +*** New =u= table formula flag to enable Calc units simplification mode
> +
> +A new =u= mode flat for Calc formulas in Org tables has been added to
> +enable Calc units simplification mode.

s/flat/flag/



Re: Is Org really so simple?

2020-11-23 Thread Jean Louis
* Tom Gillespie  [2020-11-23 23:41]:
> I have read many perspectives like this of late on this mailing list.
> In summary I think that Org is such an incredibly flexible and
> powerful tool that many users have not the faintest idea what other
> users are doing with it (for example I am completely mystified by the
> level of activity in the one vs many files thread and its counterpart
> on the orgmode subreddit).

I have many files but I do not hyperlink them as they are in the other
sense self-contained. This is due to my individual use case. I simply
do not know why should I hyperlink from one file to other as subjects
of the files are so much separate.

My way of handling things is to designate a project with TODOs, but I
do not have TODOs in many various files so those agenda adding
functions are rather disturbing me then helping as those are few
seconds of delay for nothing. My TODO things are in separate files and
they are many times not really "My TODO". They are rather TODO for
people to which I assign tasks, and send such. Those people do not
need to write Org files, they get it by email and execute in the real
world, then they report back.

When searching for tasks I do not use agenda, I use people from where
I quickly enter the Org file related to that person without knowing
where it is located, there are many Org files like that.

That is how I do not encounter problems others do encounter.

One bulk of 173 Org files in one single directory I do not search with
Agenda rather with grep as those are simply not TODO/Action related.

There are just 2-3 files that have TODO/Action related stuff and they
are on key bindings.

I am in transition to stop with Org tracking my TODO actions and just
use it for the written instructions, prose and project management
which is then printed on the paper and assigned to people. While my
TODO notes I will simply keep in the database as it gives me better
access and tracking.

Just recently I have implemented dumb version control or backup for
database entries so that entry is first saved before editing for later
comparison or revisions. If I am to use RCS or other revision control
system on user's Org files, this would mean I would need to invoke the
version control in hundreds of directories and use all the
keybindings, etc. With the program backed version control when editing
Org file from database, it is automatically saved in the `vc' table
without me thinking anything about it.

If there is any version control, users should not think about it. It
should be a built-in feature. 

> Despite this, in a sense, Org is just as simple as it has always
> been

On that I am not convinced at all. 129 Emacs .el files are in the Org
distribution here and that I do not call simple. Maybe outline-mode is
simple on which org is built upon. 

> which is why people build on top of it, and thus there isn't really
> any way to "go back" to a simpler time -- such a time is fictional,
> it has never existed.

Right.

> I can say for myself that it is not Org that has changed, it is how
> I use it. I used to use it in simple ways, and still can if I want,
> but now I use it as a substrate for self describing (sometimes
> self-modifying) interactive programs -- as complex as you can get.

I will look into that package to see if it has good ideas for
HyperScope dynamic knowledge repository that I am working on,
something like meta Org.

> For some use cases there are performance issues and for others
> workflow issues.

I have no workflow issues and performance only when Org updates its
stuff which I do not need. I would like to see some more automated
link construction functions and recognitions of other modes. For
example when browsing gopher:// or gemini:// pages with M-x elpher
that I can quickly construct hyperlinks and insert somewhere. Org has
such functions to read email and obtain hyperlink, to use eww and
obtain hyperlink and similar. It just needs more and
more. Hyperlinking is what I need but I need it in more textual and
peculiar non-common way.

I would rather like to have simple text files formatted any how so
that file can be readable and sent to other people while meta
information and hyperlinks can be defined in separate file or other
pieces of information. GNU Hyperbole offers similar system where
buttons and hyperlink information is defined in separate files. I can
include GNU Hyperbole hyperlinks in any file and they will not look so
complex as Org files.

This link looks complicated if not in Org mode:

[[https://www.example.com/something/more/here][Fetch software]]

This link can be in any mode and looks simpler:

<(Fetch software)> 

but in that case hyperlinks are defined elsewhere, not in same file.

> Thus we arrive back at your original complaint, which is that Org
> files are not sufficiently self-contained.

No complaint, just my viewpoint. I do not mind of principles,
philosophy, etc. I do not need Org files to be sufficiently
self-contained.

I have 

Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Gerardo Moro
 > Do you find that useful? Who does?
I definitely think it's very, very useful!
I constantly leave tabs open or use bookmarks, but it'd be great to add
them to ORG with a timestamp to watch later.
This way I wouldn't forget about them and they wouldn't take memory on the
browser if I don't bookmark them.


El lun, 23 nov 2020 a las 12:59, Jean Louis () escribió:

> * Ihor Radchenko  [2020-11-23 11:14]:
> > > Org provides hyperlinks and that useful feature may be used as
> > > on-the-fly information visualizer for many groups of smaller pieces of
> > > information which could be obtained from some structure or found in
> > > real time.
> >
> > Also, one could quickly select one of multiple links under heading by
> > invoking C-c C-o with point at heading.
>
> I did not know that. That is useful feature for Org.
>
> Side note: there shall be feature in Org that quickly
> captures the full link to the heading. Maybe it already
> exists. Instead of constructing links by hand like entering
> the file name, entering the heading for the link, there
> shall by some automated feature:
>
> Useful Feature A:
> =
>
> - watching 2 windows with 2 Org files
>
> - position cursor in first Org file to accept the hyperlink
>
> - move to 2nd Org file any heading
>
> - press key, and hyperlink is sent to 1st Org file properly
>   formatted for specific heading in second Org file.
>
> And then there shall be also collection of hyperlinks:
>
> Useful feature B to collect hyperlinks similar to above:
> 
>
> - user browses one Org file and thinks of collecting various
> multiple hyperlinks as such need to be referenced in other
> Org file and I refer to headings only for now.
>
> - user would just invoke the key in any heading and message
>   would be "Heading `** TODO Things' captured in the ring"
>
> - user would be able to browse various Org files and collect
>   hyperlinks in memory collection.
>
> - After several collections user could then go to other Org
> files and invoke key or command to insert the whole
> collection of hyperlinks.
>
> Do you find that useful? Who does?
>
> That is how I am implementing information in the personal
> program HyperScope, it will get published when polished and
> ripe.
>
> Collections are similar to Dired marking, user can mark the
> file and later decide what to do with it.
>
> Org headings can be or could be marked with later action on
> the whole collection of headings:
>
> - re-filing all of them at once
>
> - sending them all by email to other person (I do with Org)
>
> - sending hyperlinks in other Org file (I do in HyperScope)
>
> - creating new Org file with the collection of headings
>
> - assigning properties to collection of headings, tasks,
> todo or similar. I am often assigning tasks to people,
> collection would help me re-assign tasks instead of doing it
> one by one.
>
> > In the following example, C-c C-o would raise a buffer listing all
> > the links. Then, the links can be selected by pressing 1/2/3 (to
> > open first/second/third link):
>
> That is new to me and fine feature, thank you for reference.
>
> But this here, this chunk of various properties shows how
> Org users wish Org to be way more structured, that Org wants
> to become more than just plain text, it wants to become
> database.
>
> *** NEXT  Commit all the changes
> SCHEDULED: <2020-11-24 Tue .+1d>
> :PROPERTIES:
> :CREATED: [2019-04-18 Thu 09:40]
> :STYLE: habit
> :REPEAT_TO_STATE: NEXT
> :LOGGING: DONE(!)
> :ARCHIVE: %S_archive_%y.org::* Habits
> :ORG-TIME-BONUS: 0
> :LAST_REPEAT: [2020-11-23 Mon 14:10]
> :SHOWFROMDATE: 2020-11-09
> :RESET_CHECK_BOXES: t
> :END:
>
>


Bug: org-toggle-link-display and org-hide-emphasis-markers [9.4 (9.4-44-g5272d9-elpaplus @ /home/gustavo/.emacs.d/elpa/org-plus-contrib-20201123/)]

2020-11-23 Thread Gustavo Barros

Hi All,

when using `org-hide-emphasis-markers', making links visible with 
`org-toggle-link-display' also unhides the emphasis markers.  I believe 
this to be unexpected behavior (it certainly is to me), but I might be 
wrong here, given that the emphasis markers are explicitly set to a 
`org-link' invisible property (which see).


An ECM to reproduce the issue is:

- Start `emacs -Q'

- Do an initial setup:
 #+begin_src emacs-lisp
 (add-to-list 'load-path "~/.emacs.d/elpa/org-plus-contrib-20201123")
 (setq org-hide-emphasis-markers t)
 #+end_src

- Open an Org buffer with contents:
 #+begin_src org
 [[https://orgmode.org/][Org mode for Emacs]]
 ,*bold*
 #+end_src
 given the settings, both the link and emphasis markers should be 
 invisible.


- Call `M-x org-toggle-link-display', see that both the link and the 
 emphasis markers are made visible.  Toggle it again, and both are 
 invisible.


As far as I dug, the reason for this behavior lies in 
`org-do-emphasis-faces' which indeed uses the `org-link' invisible 
property to hide the links (at the very end of the function):


#+begin_src emacs-lisp
(when (and org-hide-emphasis-markers
   (not (org-at-comment-p)))
 (add-text-properties (match-end 4) (match-beginning 5)
   '(invisible org-link))
 (add-text-properties (match-beginning 3) (match-end 3)
   '(invisible org-link)))
#+end_src

So that `org-toggle-link-display' cannot really distinguish an emphasis 
marker from an actual link when it removes `org-link' from the 
invisibility-spec.


I don't know why this is done this way in `org-do-emphasis-faces', so I 
might be missing something, but it does lead to this peculiar behavior 
of `org-toggle-link-display'.


Best regards,
Gustavo.



Emacs  : GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 
3.24.20, cairo version 1.16.0)

of 2020-08-11
Package: Org mode version 9.4 (9.4-44-g5272d9-elpaplus @ 
/home/gustavo/.emacs.d/elpa/org-plus-contrib-20201123/)


current state:
==
(setq
org-src-mode-hook '(org-src-babel-configure-edit-buffer 
org-src-mode-configure-edit-buffer)

org-link-shell-confirm-function 'yes-or-no-p
org-metadown-hook '(org-babel-pop-to-session-maybe)
org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
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-hide-emphasis-markers t
org-agenda-loop-over-headlines-in-active-region nil
org-src-lang-modes '(("redis" . redis) ("php" . php) ("arduino" 
. arduino) ("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-hide-drawers 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-export-before-parsing-hook '(org-attach-expand-links)
org-confirm-shell-link-function 'yes-or-no-p
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)
		   (

Re: [PATCH] org-table: Add mode flag to enable Calc units simplification mode

2020-11-23 Thread Daniele Nicolodi
An updated patch series is attached.

Thank you.

Cheers,
Dan
From d2ab4d06e19620c0347425861e4534cde8656543 Mon Sep 17 00:00:00 2001
From: Daniele Nicolodi 
Date: Mon, 23 Nov 2020 23:44:51 +0100
Subject: [PATCH 1/3] org-table: Remove unused org-tbl-calc-modes variable
 declaration

* org-table.el (org-tbl-calc-modes): Remove variable declaration as
the varialble is used only within `org-table-eval-formula'.

* org-table.el (org-table-eval-formula): Rename `org-tbl-calc-modes`
local variable without the `org-tbl-` prefix and use the gained screen
real estate to avoid indirection through covenience macro. This
requires moving the mode lookup table from `org-table--set-calc-mode`
to here.

* org-table.el (org-table--set-calc-mode): Drop convenience macro.
Note that the macro was not working as intended when the caller tried
to add a new entry in the plist as in this case the macro would create
a new plist with the added entry but return the old one.
---
 lisp/org-table.el | 42 +++---
 1 file changed, 15 insertions(+), 27 deletions(-)

diff --git a/lisp/org-table.el b/lisp/org-table.el
index 112b1e171..a3b73a828 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -676,8 +676,6 @@ Will be filled automatically during use.")
 ("_" . "Names for values in row below this one.")
 ("^" . "Names for values in row above this one.")))
 
-(defvar org-tbl-calc-modes nil)
-
 (defvar org-pos nil)
 
 
@@ -721,18 +719,6 @@ Field is restored even in case of abnormal exit."
 (org-table-goto-column ,column)
 (set-marker ,line nil)
 
-(defsubst org-table--set-calc-mode (var  value)
-  (if (stringp var)
-  (setq var (assoc var '(("D" calc-angle-mode deg)
-("R" calc-angle-mode rad)
-("F" calc-prefer-frac t)
-("S" calc-symbolic-mode t)))
-   value (nth 2 var) var (nth 1 var)))
-  (if (memq var org-tbl-calc-modes)
-  (setcar (cdr (memq var org-tbl-calc-modes)) value)
-(cons var (cons value org-tbl-calc-modes)))
-  org-tbl-calc-modes)
-
 
 ;;; Predicates
 
@@ -2433,7 +2419,7 @@ location of point."
equation
  (org-table-get-formula equation (equal arg '(4)
   (n0 (org-table-current-column))
-  (org-tbl-calc-modes (copy-sequence org-calc-default-modes))
+  (calc-modes (copy-sequence org-calc-default-modes))
   (numbers nil)   ; was a variable, now fixed default
   (keep-empty nil)
   n form form0 formrpl formrg bw fmt x ev orig c lispp literal
@@ -2449,14 +2435,12 @@ location of point."
  (setq c (string-to-char (match-string 1 fmt))
n (string-to-number (match-string 2 fmt)))
  (if (= c ?p)
- (setq org-tbl-calc-modes
-   (org-table--set-calc-mode 'calc-internal-prec n))
-   (setq org-tbl-calc-modes
- (org-table--set-calc-mode
-  'calc-float-format
-  (list (cdr (assoc c '((?n . float) (?f . fix)
-(?s . sci) (?e . eng
-n
+ (setf (cl-getf calc-modes 'calc-internal-prec) n)
+   (setf (cl-getf calc-modes
+  'calc-float-format)
+  (list (cdr (assoc c '((?n . float) (?f . fix)
+(?s . sci) (?e . eng
+n)))
  (setq fmt (replace-match "" t t fmt)))
(if (string-match "[tTU]" fmt)
(let ((ff (match-string 0 fmt)))
@@ -2476,9 +2460,13 @@ location of point."
(setq keep-empty t
  fmt (replace-match "" t t fmt)))
(while (string-match "[DRFS]" fmt)
- (setq org-tbl-calc-modes
-   (org-table--set-calc-mode (match-string 0 fmt)))
- (setq fmt (replace-match "" t t fmt)))
+ (let* ((c (string-to-char (match-string 0 fmt)))
+(mode (cdr (assoc c '((?D calc-angle-mode deg)
+  (?R calc-angle-mode rad)
+  (?F calc-prefer-frac t)
+  (?S calc-symbolic-mode t))
+   (setf (cl-getf calc-modes (car mode)) (cadr mode))
+   (setq fmt (replace-match "" t t fmt
(unless (string-match "\\S-" fmt)
  (setq fmt nil
   (when (and (not suppress-const) org-table-formula-use-constants)
@@ -2621,7 +2609,7 @@ location of point."
 
  (setq ev (if (and duration (string-match 
"^[0-9]+:[0-9]+\\(?::[0-9]+\\)?$" form))
   form
-(calc-eval (cons form org-tbl-calc-modes)
+(calc-eval (cons form calc-modes)
 

Re: [PATCH] org-table: Add mode flag to enable Calc units simplification mode

2020-11-23 Thread Daniele Nicolodi
On 23/11/2020 23:25, Kyle Meyer wrote:
> Daniele Nicolodi writes:
> 
>> On 23/11/2020 04:14, Kyle Meyer wrote:
>>> You already mentioned that you plan to add documentation.  It'd also be
>>> good to add a test to test-org-table.el and a NEWS entry.
>>
>> By the way, have you seen my other patch with some documentation updates
>> for Org tables?
> 
> Aside from recalling seeing some discussion about word choice, only in
> the sense that it exists in a queue of patches that I will try to get to
> if nobody else does.

I am not planning to revisit the word choice as the current choice
maintain consistency within the manual and revisit all the manual for
substituting "interpolate" with something else consistently is outside
the scope of the proposed patch.

>  Are you bringing it up because it'd be easier to
> revisit this series after that patch is applied?

No, they both touch parts of the manual/code that deal with org-table
formula mode flags, but in different context. On the other hand, they
are related enough that it may be worth to review them in close
succession to amortize cognitive context switch costs :-)

Cheers,
Dan



Re: Bug: org-clone-subtree-with-time-shift throws error [9.3 (release_9.3 @ /usr/share/emacs/27.1/lisp/org/)]

2020-11-23 Thread Kyle Meyer
skap...@pm.me writes:

> Thanks for the reply. I used the version shipped with emacs in the
> report, and now I installed org 9.4 from the gnu default repository
> via package-list-packages within emacs and the error indeed goes
> away. Is that the recommended stable version to use?

I suppose it depends largely on the user.  For many, the version of Org
bundled with Emacs will do, and it's not worth the hassle of installing
it from another source.  But, if you've hit into a bug that's fixed in
the latest release or just always want to keep up with the latest
release, then the default ELPA source is a good choice.

There's also Org's ELPA archives, if you instead wanted code based off
of the maint branch.

  https://orgmode.org/elpa.html

> Should I report bugs against the latest git version only?

Reporting a bug against the Org bundled with Emacs is fine.  Many times
this issue is still around, and a fix is applied to the maint branch and
will be included in the next release.  But if it turns out that it's
already fixed, then there's no other action we take on our end.
However, if a reporter is willing to take the time to check the latest
release (or even the maint or master branch) or search the mailing list
archives, that's of course appreciated and helpful.



Re: ob-python: import local package into a session

2020-11-23 Thread Joost Kremers
Hi Jack,

On Mon, Nov 23 2020, Jack Kamm wrote:
> This shouldn't be ob-python or even Emacs specific. You can test whether
> things work by typing "python" in the terminal and attempting to import
> your module.

It all seems to depend on the exact directories, though, and other than
modifying =sys.path= there doesn't seem to be a way to make Org, Python and me
happy at the same time. :-)

I wanted to create a few small, related projects that would share the utility
functions, so I thought I'd put them all in separate subpackages of a single
package. That works with `M-x run-python` and with an LSP server, but when I
then put an Org file in its own subdirectory inside the package, I couldn't
import the utils subpackage.

I guess putting a =:dir= header arg might resolve that, but the Org manual says
that =:dir= should not be used with =:exports both=, which I was also using.

Anyway, thanks to you and to John. I think I have a better idea now how it all
works and what my options are.

> By the way, are you using IPython or vanilla Python? I recently
> encountered an issue trying to import modules through a symlink in
> IPython, whereas it worked perfectly fine in a vanilla Python session.

I'm using IPython in `M-x run-python`, but vanilla Python for Org. There are no
symlinks involved, so I guess it shouldn't matter.

-- 
Joost Kremers
Life has its moments



Re: [PATCH] org-table: Add mode flag to enable Calc units simplification mode

2020-11-23 Thread Kyle Meyer
Daniele Nicolodi writes:

> On 23/11/2020 04:14, Kyle Meyer wrote:
>> Daniele Nicolodi writes:
[...]
>>> diff --git a/lisp/org-table.el b/lisp/org-table.el
>>> index 4baad2600..6b92656bd 100644
>>> --- a/lisp/org-table.el
>>> +++ b/lisp/org-table.el
>>> @@ -2447,11 +2447,12 @@ location of point."
>>>   (?e (org-table--set-calc-mode 'calc-float-format (list 'eng 
>>> n)
>>>   ;; Remove matched flags from the mode string.
>>>   (setq fmt (replace-match "" t t fmt)))
>>> -   (while (string-match "\\([tTUNLEDRFS]\\)" fmt)
>>> +   (while (string-match "\\([tuTUNLEDRFS]\\)" fmt)
>>>   (let ((c (string-to-char (match-string 1 fmt
>>> (cl-case c
>>>   (?t (setq duration t numbers t
>>> duration-output-format 
>>> org-table-duration-custom-format))
>>> + (?u (org-table--set-calc-mode 'calc-simplify-mode 'units))
>>>   (?T (setq duration t numbers t duration-output-format nil))
>>>   (?U (setq duration t numbers t duration-output-format 'hh:mm))
>>>   (?N (setq numbers t))
>> 
>> A nit-pick about ordering: I think it'd be better to not nestle "u" in
>> between "t" and "T" because it invites the reader to incorrectly assume
>> that "u" is somehow connected to "t", "T", and "U".
>> 
>> You already mentioned that you plan to add documentation.  It'd also be
>> good to add a test to test-org-table.el and a NEWS entry.
>
> I thought alphabetical ordering was the most natural. Which other
> ordering would make sense?

I'd be more likely to agree that alphabetical is the most natural if the
list was already alphabetical, but instead it's grouped by "topic" (or
something :).  So I'd say just tacking u onto the end.  But I also don't
feel strongly about that, so I'm okay if you stick with the current
order.



Re: [PATCH] org-table: Add mode flag to enable Calc units simplification mode

2020-11-23 Thread Kyle Meyer
Daniele Nicolodi writes:

> On 23/11/2020 04:14, Kyle Meyer wrote:
>> You already mentioned that you plan to add documentation.  It'd also be
>> good to add a test to test-org-table.el and a NEWS entry.
>
> By the way, have you seen my other patch with some documentation updates
> for Org tables?

Aside from recalling seeing some discussion about word choice, only in
the sense that it exists in a queue of patches that I will try to get to
if nobody else does.  Are you bringing it up because it'd be easier to
revisit this series after that patch is applied?



Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Jean Louis
* Diego Zamboni  [2020-11-23 12:53]:
> Hi Gerardo,
> 
> Apart from what others have suggested, what you can do if you have a fixed
> list of files you want to quickly access, you could manually define
> keybindings for them. I have four main files where I capture things, so I
> define a submenu that allows me to access them quickly:
> 
> (note: I got this idea originally from Sacha Chua's
> https://sachachua.com/blog/2015/02/learn-take-notes-efficiently-org-mode/)
> 
> First, I define a helper function to define keybindings that open files.
> Note that this requires lexical binding to be enabled, so that  the
> =lambda= creates a closure, otherwise the keybindings don't work.
> 
> #+begin_src emacs-lisp
> (defun zz/add-file-keybinding (key file  desc)
>   (let ((key key)
> (file file)
> (desc desc))
> (map! :desc (or desc file)
>   key
>   (lambda () (interactive) (find-file file)
> #+end_src
> 
> (note #2: the map! macro is Doom Emacs-specific, should be replaced with
> `bind-key` or equivalent if you are not using Doom)
> 
> Now I define keybindings to access my commonly-used org files.
> 
> #+begin_src emacs-lisp
> (zz/add-file-keybinding "C-c z w" "~/Work/work.org.gpg" "work.org")
> (zz/add-file-keybinding "C-c z i" "~/org/ideas.org" "ideas.org")
> (zz/add-file-keybinding "C-c z p" "~/org/projects.org" "projects.org")
> (zz/add-file-keybinding "C-c z d" "~/org/diary.org" "diary.org")
> #+end_src

Another idea how to quickly access those files could be with
completion function which could also be bound to a key.

(defun my-org-files ()
  (interactive)
  (let* ((list '(("Work" . "~/Work/work.org.gpg")
 ("Ideas" . "~/org/ideas.org")
 ("Projects" . "~/org/projects.org")
 ("Diary" . "~/org/diary.org")))
 (completion-ignore-case t)
 (file (completing-read "My files: " list))
 (file (cdr (assoc file list
(find-file file)))

or function that finds all org files and offers completion on such:

(defun my-all-org-files ()
  (interactive)
  (let* ((my-org-dir "~/Documents/Org")
 (all-org (directory-files my-org-dir t "\.org$"))
 (alist '())
 (all-org-alist (dolist (org all-org alist)
  (setf (alist-get (file-name-base org) alist) org)))
 (completion-ignore-case t)
 (file (completing-read "My files: " all-org-alist))
 (file (cdr (assoc file alist
(find-file file)))

M-x my-all-org-files

Even better is when you turn on some visual completion package such as

M-x ivy-mode

or

M-x helm-mode

package ivy is in GNU ELPA






Re: Is Org really so simple?

2020-11-23 Thread Tom Gillespie
I have read many perspectives like this of late on this mailing list.
In summary I think that Org is such an incredibly flexible and
powerful tool that many users have not the faintest idea what other
users are doing with it (for example I am completely mystified by the
level of activity in the one vs many files thread and its counterpart
on the orgmode subreddit). Despite this, in a sense, Org is just as
simple as it has always been which is why people build on top of it,
and thus there isn't really any way to "go back" to a simpler time --
such a time is fictional, it has never existed. I can say for myself
that it is not Org that has changed, it is how I use it. I used to use
it in simple ways, and still can if I want, but now I use it as a
substrate for self describing (sometimes self-modifying) interactive
programs -- as complex as you can get.

For some use cases there are performance issues and for others
workflow issues. The performance issues are likely to be resolved via
more developer time. The workflow issues have to be resolved by
writing custom elisp code, in many times that elisp gets packaged as
org extensions. Thus we arrive back at your original complaint, which
is that Org files are not sufficiently self-contained. In order to
make them self-contained you currently have to copy and paste a bunch
of boilerplate into files (thus the workflow issues). For some things
the boilerplate is seemingly unavoidable, even using #+setupfile:
doesn't work if you are trying to solve a problem in a certain way in
Org. Other times, you could solve the same problem without any
boilerplate using a slightly different approach, but not always.

I have been working on an extension for Org (orgstrap
https://github.com/tgbugs/orgstrap) with the goal of making Org files
self-describing, if not fully self-contained (There is a distinction
between the two, but only for certain failure modes. Also, why force
__DATA__ to be embedded with the file when everything has to be
dereferenced at some point anyway? You could embed it later if it fits
your use case, or you could embed the org file in the data!). I came
at the problem from the perspective of reproducible research, but it
seems like there are many use cases for being able to move information
implicit in the environment into an Org file explicitly. If you want a
database to handle relational data, great, describe what you need to
access it in the org file that will act as the interface to that
relational data, that way if the database access is down you won't get
cryptic errors, but a big warning that says "hey! a service required
to use functionality in this file correctly is missing!" For the
described frustration with needing to track users, give the org-file
an embedded id and use that to access and update the assignees
associated with a file. There is no need to choose Org or something
else, you can have your comfortable org-mode workflow, and your
data-appropriate store.



Bug: Org-babel output malformed for MATLAB source blocks running in a session [9.3 (release_9.3 @ /usr/share/emacs/27.1/lisp/org/)]

2020-11-23 Thread Karthik Chikmagalur

Remember to cover the basics, that is, what you expected to happen and
what in fact did happen.  You don't know how to make a good report?  See

 https://orgmode.org/manual/Feedback.html#Feedback

Your bug report will be posted to the Org mailing list.

Org-babel's handling of MATLAB block output with the =:results session= 
argument is broken. Here is some sample code along with the expected result:

#+begin_src matlab :results output :session *MATLAB*
a = 3;
b = 4;
c = a + b
#+end_src

#+RESULTS:
: c =
: 
:  7

However here is the actual result:

#+begin_src matlab :results output :session *MATLAB*
a = 3;
b = 4;
c = a + b
#+end_src

#+RESULTS:
#+begin_example
a = 3;
b = 4;
c = a + b

c =

 7
'org_babel_eoe'

ans =

'org_babel_eoe'
#+end_example

There are two separate problems:

1. The =org-babel-octave-eoe-indicator= is not being stripped.
2. The comint input is being echoed in the output.

#1 is easy to fix. The problem is in the function 
=org-babel-octave-evaluate-session=, in the line:

 #+begin_src emacs-lisp
 (cdr (reverse (delq "" (mapcar #'org-strip-quotes
(mapcar #'org-trim raw)
 #+end_src

Where empty lines in the output are being removed with =delq=. =delq= compares 
with =eq= instead of =equal=, which fails on blank lines. Replacing this with 
=delete= works fine.

#2 is a much trickier problem to solve. Here is the body of the input as it 
appears in the MATLAB session:

#+begin_example
>> a = 3;
b = 4;
c = a + b
'org_babel_eoe'
a = 3;
>> b = 4;
>> c = a + b

c =

 7

>> 'org_babel_eoe'

ans =

'org_babel_eoe'

>> 
#+end_example

Here `>>' is the shell prompt, which is absent from the raw comint output as 
given to org by comint-mode. =matlab-shell= does not work like other comint 
shells in that it doesn't echo bulk (/i.e./ multi-line) input all at once. 
Instead, it echoes each line of input and follows it with its output. This 
interspersal of input and output is causing =org-babel-comint-with-output=, the 
function (actually macro) responsible for removing the comint input echo text 
from the raw comint output, to fail. This macro assumes that the raw comint 
output looks like 
#+begin_example
<>

<>
#+end_example

as you can see from this code from =org-babel-comint-with-output=:
#+begin_src emacs-lisp
 (when (and ,remove-echo ,full-body
(string-match
 (replace-regexp-in-string
  "\n" "[\r\n]+" (regexp-quote (or ,full-body "")))
 string-buffer))
   (setq string-buffer (substring string-buffer (match-end 0
#+end_src

To fix this, either =org-babel-octave-evaluate-session= or 
=org-babel-comint-with-output= needs to be modified. This problem is local to 
MATLAB, it does not happen with GNU Octave, which shares most of its org-babel 
code with MATLAB's. So I wrote a patch to the former that does additional 
line-by-line processing on the raw comint output to detect and remove the 
echoed input. (Patch is attached.) However while this fixes the problem it's 
not a robust solution.

-Karthik

--- ob-octave.el	2020-11-23 11:22:01.473682045 -0800
+++ ob-octave-new.el	2020-11-23 11:10:07.961900383 -0800
@@ -187,6 +187,7 @@
 			(org-babel-process-file-name tmp-file 'noquote)))
 	   (org-babel-octave-import-elisp-from-file tmp-file))
 
+
 (defun org-babel-octave-evaluate-session
 (session body result-type  matlabp)
   "Evaluate BODY in SESSION."
@@ -237,12 +238,31 @@
   (`output
(setq results
 	 (if matlabp
-		 (cdr (reverse (delq "" (mapcar #'org-strip-quotes
+		 (cdr (reverse (delete "" (mapcar #'org-strip-quotes
 		(mapcar #'org-trim raw)
 	   (cdr (member org-babel-octave-eoe-output
 			(reverse (mapcar #'org-strip-quotes
 	 (mapcar #'org-trim raw)))
-   (mapconcat #'identity (reverse results) "\n")
+   ;; This kludge is to remove the input lines from the output. Because of
+   ;; the special way that MATLAB processes bulk comint output (the output
+   ;; of each line follows that line) the macro
+   ;; `org-babel-comint-with-output' cannot remove the echoed commands. The
+   ;; following handles this manually, by splitting both the original input
+   ;; (`BODY') and full output (`RESULTS') on newlines, comparing them line
+   ;; by line and removing all lines in BODY from RESULTS. Note that RESULTS
+   ;; is already a list of strings so additional care is needed.
+   (let* ((body-lines (split-string body "\n+"))
+  (result-lines (flatten-list
+ (mapcar
+  (lambda (entry) (reverse (split-string entry "\n")))
+  results
+ (mapconcat
+  #'identity
+  (reverse (cl-remove-if
+(lambda (line) (member line 

Re: One vs many directories

2020-11-23 Thread Jean Louis
* Texas Cyberthal  [2020-11-23 19:08]:
> Hi Jean,
> 
> > I have tried your solution and could not find the mental concept to relate 
> > to my thinking.
> 
> I forgot this inductive sorting skill must be learned gradually, like
> touch typing, at small scale before exomind conversion.

I find it entertaining for now. Now, what is exomind? 

> > Do we think of a tree of knowledge first? I do not think so. And there are 
> > memory systems that DO think of plethora of various things and increase 
> > human memory capabilities.
> 
> Yes, Textmind becomes a mnemonic system.  The tree associates all
> one's info together, making explicit one's personal implicit
> prioritization of info.  Doing so systematically is only possible with
> computer plus user algorithm.

I do agree that various systems like 10 Bins for filing files by how
human thinks are useful. Only that "how human thinks" varies by
humans and not even humans may know how to explain how they think.

My concept is that I think what I want, like "I wish to see history of
interactions with this person" and then I click F3 or something, I can
see SMS, emails, if there were any negotiations, contracts, if there
are licenses submitted for partnership. That all has some practical
meanings. As for now and probably due to misunderstanding I cannot
find 10 Bin practical for me and this may be due to different way of
thinking.

Could you give me reference describing how you would file:

- Contract signed between your company 123 and person ABC?

- Image on which there is only your family member, not you, which has
  its date?

- Image of you, with the date?

- Image without date in the file name and not embedded?

- Software git tree related to mailing things?

> > How human think -- is nowhere defined and is vague. Human thinks how they 
> > think and there may be as many versions as humans.
> 
> The brain is plastic.  It adapts easily to sync with a Textmind tree.
> This tree's complete thought algorithm is an improvement over native
> thought pattern.  Computer and brain meet in the middle.  That is
> cognitive cyborg first stage.  Keyboard+screen is Brain-Computer
> Interface.

OK while I do try to adapt for now I do not find it easy. While I do
not adore hierarchies, file system is easier to adapt, as user can
just something like "Brother" and file it there.

It is entertaining as it sounds futuristic. But I do not know thought
algorithm, and what would be native thought pattern, and I would not
like to become cognitive cyborg, not in this stage of Emacs
development, as nobody likes to get killed. Maybe in some future when
I can load it into my personal memory and run on it even during sleep
time.

Keyboards will soon expire, they partially already expired as billions
of people use computers without keyboards including that term
"computer" became dilluted and hidden so that people do not even know
they carry one or two in their pockets. Screen will expire
too. Keyboards will become sensitive lights and screens holograms.

> The other complete thought algorithm is Pubmind, for longform content.
> But it doesn't work without Textmind.

Need practical example.




Is Org really so simple?

2020-11-23 Thread Jean Louis
* Ihor Radchenko  [2020-11-23 17:18]:
  :PROPERTIES:
  :CREATED:  [2020-11-23 Mon 18:42]
  :ID:   edebb3e7-e755-4ecc-a5e8-a3353a3f5fd0
  :END:
> Dear Jean Louis,
> 
> Your description of the database reminds me how org-roam handles the
> files - it also uses an external database for linking and allows quick
> incremental search that does not really depend on where the
> files/headings are stored.

Sounds good, I can see there is graph database used.

> However, what you are talking about is against org-mode philosophy,
> as I know it.

Only philosophy I know is that it is plain text. Is there any official
philosophy? I have no idea, at least manual does not give me
references. I cannot find "philosophy", send me references.

It says "to keep simple things simple". But Org is far far from being
simple any more. It offers good principles, paradigms and people built
many enhancements upon those. Speedily it becomes way much more than
simple.

Headings do not look any more as headings, it looks like pieces of
code to a person that is new. Properties, tags, clocks, schedule,
deadline, all that tries to store itself under specific heading. There
is easily too much of it and things are not simple any more.

> Currently, the dev's stance is that org files must be
> self-sufficient.

There is no compact principle there practically. Anything is
possible. That Org files are not practically self-sufficient shows the
fact that there are 129 Emacs packages in one Org distribution. 

> Org-mode should not depend on external database to manage the org
> files and operations with them. Everything must be plain text!

Question is what is meant by database, it can be anything. One can
save LISP data. Recent files, desktop, eww bookmarks, init.el or
.emacs file are also all similar databases, there is the underused
EIEIO with persistent stuff that represent built-in database
functionality.

That Org files are not self-sufficient shows the demand that there is
almost no Org user who does not have add-ons, packages, modifications,
configurations.

Would it be really self-sufficient there would be no development going
on, right?

Babel executions clearly show that Org is not self sufficient and
depends on number of external software.

I don't mind of philosophy, in fact I would like that philosophy is
really that what it wanted to be, but that time is over.

I am just pointing out that it is by many means not self sufficient.

Is by default LaTeX export enabled? I think it is. How big is the
LaTeX package? It is huge, and Org depends on it for export.

Thus Org is far far from being self-sufficient.

Almost every system has GDBM database, if Emacs would have bindings to
GDBM, there would be so much less of development in general for many
various packages and Emacs would be expanding faster and easier.

In fact I think that author and initial developers could not predict
at the time where the Org goes and that speaking of self-sufficient
and "plain text" only is history.

Before I found out about Org I was using back in time `hnb' in console
to track various planning tasks. It works nice and simple. That is
really self sufficient. Org definitely not.

HNB - Hierarchical Notebook
http://hnb.sourceforge.net/

In the mean time I have created database where I can store TODO,
Notes, Calls, SMS, People, Invoices, Groups, Mailing Lists and so on,
and made my own shell and Perl interfaces to it. And I used to manage
it through: GeDaFe - PostgreSQL Generic Database Interface
http://gedafe.github.io/doc/gedafe-sql.en.html and this was and is
hierarchical or better graph knowledge management and relational
database.

Creating simple table in the database automatically helped me to
manage that table. It is trivial to create NOTES table with schedule
date, clock in, TODO or other conditions and tags. The interface is
just there and automatic to whatever table I create the interface is
there to add/modify/delete/search/refine records. That is what I would
say "simple" and keeping things simple and indefinitely extensible
without modification of software. The fundamental GeDaFe principle I
would like to try to implement in Emacs. And same database I use for
web interface I am using also within Emacs.

GeDaFe principle is following:

- define your data (like handling notes, TODO, or executing scripts within 
notes)

- work and forget about any underlying functions,
  add/create/delete/modify/index or search, make reports with simple exports

- expand with more definitions of data when necessary (like add
  various properties, or other data tables, like contacts, invoices,
  etc.) and repeat the process.

Org also shows that it does not hold "Notes" only, it holds more than
that, I have written average book size technical documents with
it. Only just one part of the document is printed from one single node
that belongs to single project among many. People use such documents
on the ground. My use case is not for simple notes.

A node in a 

Re: ob-python: import local package into a session

2020-11-23 Thread Jack Kamm
Jack Kamm  writes:

> You need to make sure your module is either in the working directory you
> started the Python session in, or in your PYTHONPATH, for example by
> adjusting os.env["PYTHONPATH"] before attempting to import the module.

Sorry, this was incorrect, you need to set PYTHONPATH before starting
Python. The correct way to do it from within Python is to use sys.path,
as John points out.



Re: ob-python: import local package into a session

2020-11-23 Thread Jack Kamm
Hi Joost,

> What I'm trying to do is to import a Python file with a bunch of utility
> functions into the ob-python session. I thought this might be possible if I'd
> structure my code as a regular Python package, because that works if I want to
> import my utility functions into another Python file. But it doesn't seem to
> work for the ob-python session.

You need to make sure your module is either in the working directory you
started the Python session in, or in your PYTHONPATH, for example by
adjusting os.env["PYTHONPATH"] before attempting to import the module.

This shouldn't be ob-python or even Emacs specific. You can test whether
things work by typing "python" in the terminal and attempting to import
your module.

By the way, are you using IPython or vanilla Python? I recently
encountered an issue trying to import modules through a symlink in
IPython, whereas it worked perfectly fine in a vanilla Python session.

Jack



Re: One vs many directories

2020-11-23 Thread Texas Cyberthal
Hi Jean,

> I have tried your solution and could not find the mental concept to relate to 
> my thinking.

I forgot this inductive sorting skill must be learned gradually, like
touch typing, at small scale before exomind conversion.

> Do we think of a tree of knowledge first? I do not think so. And there are 
> memory systems that DO think of plethora of various things and increase human 
> memory capabilities.

Yes, Textmind becomes a mnemonic system.  The tree associates all
one's info together, making explicit one's personal implicit
prioritization of info.  Doing so systematically is only possible with
computer plus user algorithm.

> How human think -- is nowhere defined and is vague. Human thinks how they 
> think and there may be as many versions as humans.

The brain is plastic.  It adapts easily to sync with a Textmind tree.
This tree's complete thought algorithm is an improvement over native
thought pattern.  Computer and brain meet in the middle.  That is
cognitive cyborg first stage.  Keyboard+screen is Brain-Computer
Interface.

The other complete thought algorithm is Pubmind, for longform content.
But it doesn't work without Textmind.

Other thought methods are even less complete, and thus more dependent
on the Textmind foundation.  For example, pure association and search
retrieval benefits greatly from Textmind de facto spaced repetition
and directory scoping.

> Doug Engelbart has already envisioned how files could be stored, accessed, 
> hyperlinked, referenced and we do not use it in that sense today after how 
> many years?

Exactly.  To the extent he was correct, his ideas have been adopted.
To the extent wrong, ignored.

The main problem is sustaining long-term hybrid-intelligence text-mind
sync.  It requires a complete OODA algorithm.  Engelbart doesn't think
on this scale.  David Allen's GTD tries to, but is limited by paper.

One can always improve the crystallized knowledge of a PIMS by adding
more metadata and links.  That misses the point: fluid intelligence is
more important.  It tells which info is worth promoting to more
expensive representations.



Re: ob-python: import local package into a session

2020-11-23 Thread John Kitchin
I usually do that by either having the py file in the working directory of
the session, in which case you simply import it.

Alternatively something like this in python:

import sys
sys.path.insert(0, '/path/to/dir/with/myfile.py')
import myfile

you could also append to sys.path if that matters.

John

---
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu



On Mon, Nov 23, 2020 at 10:49 AM Joost Kremers 
wrote:

> Hi all,
>
> If I have an Org file with Python source blocks, I can run them in a
> session
> with the `:session` header arg. That way, I can include packages installed
> in
> `site-packages` and have them available in all code blocks. But is there a
> way
> to import my own packages into a session? In particular, packages I haven't
> installed system-wide?
>
> What I'm trying to do is to import a Python file with a bunch of utility
> functions into the ob-python session. I thought this might be possible if
> I'd
> structure my code as a regular Python package, because that works if I
> want to
> import my utility functions into another Python file. But it doesn't seem
> to
> work for the ob-python session.
>
> Is there a way to achieve this? I don't *have* to structure my utility
> functions
> as a Python package, so if there's another way of doing this, I'd be
> interested
> as well.
>
> TIA
>
> Joost
>
>
> --
> Joost Kremers
> Life has its moments
>
>


ob-python: import local package into a session

2020-11-23 Thread Joost Kremers
Hi all,

If I have an Org file with Python source blocks, I can run them in a session
with the `:session` header arg. That way, I can include packages installed in
`site-packages` and have them available in all code blocks. But is there a way
to import my own packages into a session? In particular, packages I haven't
installed system-wide?

What I'm trying to do is to import a Python file with a bunch of utility
functions into the ob-python session. I thought this might be possible if I'd
structure my code as a regular Python package, because that works if I want to
import my utility functions into another Python file. But it doesn't seem to
work for the ob-python session.

Is there a way to achieve this? I don't *have* to structure my utility functions
as a Python package, so if there's another way of doing this, I'd be interested
as well.

TIA

Joost


-- 
Joost Kremers
Life has its moments



Re: One vs many directories

2020-11-23 Thread Ihor Radchenko
Dear Jean Louis,

Your description of the database reminds me how org-roam handles the
files - it also uses an external database for linking and allows quick
incremental search that does not really depend on where the
files/headings are stored.

However, what you are talking about is against org-mode philosophy, as I
know it. Currently, the dev's stance is that org files must be
self-sufficient. Org-mode should not depend on external database to
manage the org files and operations with them. Everything must be plain
text! Moreover, some devs are even reluctant to hide metadata (like
unique ID implemented in org-id module) from users (which is possible
and also partially implemented).

Best,
Ihor


Jean Louis  writes:

> * Texas Cyberthal  [2020-11-23 12:51]:
>> Hi Dr. Arne,
>> 
>> > The only part that hits performance limits is the agenda.
>> 
>> Well, IIRC your Org Textmind is much smaller than mine.
>> 
>> > My current guess is that the agenta is slow because it has to parse all my 
>> > 7500 clock entries, and it has to check the Todo states of around 1200 
>> > headings.
>> 
>> Ouch.  I'd rather keep a "ramble log" so I can reconstruct an exactly
>> honest time accounting, with discounts for partial attention, without
>> worrying about fiddly clockin/outs.  At least when working from home.
>> If clocking into a work site, that's different, because one can
>> reasonably bill for the entire time, with minimal clock toggling.
>> 
>
>> > Did you check against filesystem limits? At 10k entries in a
>> directory typical filesystems start becoming slow. That's the main
>> reason I see for adding hierarchies.
>
> From ext4 manual:
>
>  dir_index
>   Use hashed  b-trees to speed  up name lookups  in large
>   directories.   This feature  is supported  by ext3  and
>   ext4 file systems, and is ignored by ext2 file systems.
>
>  dir_nlink
>   This ext4 feature allows more than 65000 subdirectories
>   per directory.
>
> I think that file systems should be unlimited and fast in relation to
> that. I have ~/Maildir with over 5 subdirectories, direct access
> is very easy and fast while listing takes some time.
>
> If file system does not allow fast access it is time to replace it
> with one that does allow it.
>
> Now I wonder of HAMMER in DragonflyBSD is also slow with 5
> directories.
>
> My PostgreSQL database is not huge, it is when packed about 50 MB. On
> the file system it is 810 MB.
>
> To select 2469 contacts as subset of 204048 contacts that belong in
> certain group does not give (usually) feeling of any delay, it looks
> instant for human.
>
> My Org work is on meta-level so my truly important headings or subtree
> names are in the database. Subtrees have their various properties,
> like I can place any tags there inside, like TODO or designate type of
> TODO. My work is intertwined with text and Org mode mostly, but I
> could use any kind of mime type or any kind of Emacs mode. Some nodes
> are on file system while some are in the database.
>
> Nodes within subtree are hyperdocuments, they are all linkable and
> could be on file system or not on file system.
>
> Everything is together in one tree and it does not matter as access to
> the nodes does not go over the tree necessary. There are 19197 nodes.
> To find 76 that are tagged with TODO does not give me any slight or
> visible delay, definitely not even 0.2 seconds. When I press enter it
> is right there.
>
> From the system I am using personally I am thinking that Org mode
> could get its database connection so that headings and properties are
> managed in the database fully while text could be managed in files. It
> seems very possible.
>
> The only thing that would be needed to add to Org in that case is some
> heading tag that would uniquely designate where in the database that
> heading is managed. It could be very lightly displayed on the screen
> and would not be exported by default.
>
> Something like
>
> *** TODO Heading :ID-123:
>
> That would be all. All other meta data belonging to the heading could
> be managed in the database. If heading is deleted it need not be
> deleted in the database. Text belonging to heading could be managed in
> the text file. Properties in the database. It can be simple database
> such as GDBM if such is fast enough.
>
> Meta data for the heading would or could be updated automatically from
> time to time.
>
> User could easily decide to show the properties in the Org file or not
> to show. It does not matter much as long as :ID-123: tag is there.
>
> All things like tags, properties, clock-in and out, schedule,
> deadlines, custom_id and everything else as heading meta data could be
> manageable in the database. It could be copied into new headings.
> Creation of heading like this:
>
> *** TitleRET
>
> would automatically invoke creation of heading 124 in the database and it 
> would appear as:
>
> *** Title  :ID-124;
>
> 

Re: buggy plantuml function

2020-11-23 Thread Heinz Tuechler

see inline
Immanuel Litzroth wrote/hat geschrieben on/am 23.11.2020 12:32:

There is a solution in all source blocks that would have a problem because there
is a * at the beginning of a line. Just prepend it with ,.
So this works over here:
#+BEGIN_SRC plantuml :file test.png
@startmindmap
,* Debian
,** Ubuntu
,*** Linux Mint
,*** Kubuntu
,*** Lubuntu
,*** KDE Neon
,** LMDE
,** SolydXK
,** SteamOS
,** Raspbian with a very long name
,*** Raspmbc => OSMC
,*** Raspyfi => Volumio
@endmind
#+END_SRC

Of course I also had to change  org-babel-plantuml-make-body
 (defun org-babel-plantuml-make-body (body _)
   body)
to make that work with "C-c C-c".
Weren't there supposed to be maintainers for this stuff? Has no plantuml
maintainer been found?
Immanuel


Thank you for this very useful hint. I had no idea, how to search for
that solution.
Regarding your change of org-babel-plantuml-make-body, I don't know what
you mean. Your example works for me without any change I would be aware of.
Heinz




On Mon, Nov 23, 2020 at 11:28 AM Heinz Tuechler  wrote:


Immanuel Litzroth wrote/hat geschrieben on/am 15.11.2020 13:27:

(defun org-babel-plantuml-make-body (body params)
  "Return PlantUML input string.

BODY is the content of the source block and PARAMS is a property list
of source block parameters.  This function relies on the
`org-babel-expand-body:generic' function to extract `:var' entries
from PARAMS and on the `org-babel-variable-assignments:plantuml'
function to convert variables to PlantUML assignments.

If BODY does not contain @startXXX ... @endXXX clauses, @startuml
... @enduml will be added."
  (let ((assignments (org-babel-variable-assignments:plantuml params)))
(if (string-prefix-p "@start" body t) assignments
  (format "@startuml\n%s\n@enduml"
  (org-babel-expand-body:generic body params assignments)

expands to assignments if the body starts with @startmindmap?
Immanuel



Dear Immanuel,

did you ever receive an answer to your post? I ask, because I am
curious, if you were able to use mindmap in a #+BEGIN_SRC plantuml /
#+END_SRC block? For me it was not possible with *, because they get
interpreted as org headlines and break the SRC block.

best regards,

Heinz








Re: One vs many directories

2020-11-23 Thread Jean Louis
* Texas Cyberthal  [2020-11-23 12:51]:
> Hi Dr. Arne,
> 
> > The only part that hits performance limits is the agenda.
> 
> Well, IIRC your Org Textmind is much smaller than mine.
> 
> > My current guess is that the agenta is slow because it has to parse all my 
> > 7500 clock entries, and it has to check the Todo states of around 1200 
> > headings.
> 
> Ouch.  I'd rather keep a "ramble log" so I can reconstruct an exactly
> honest time accounting, with discounts for partial attention, without
> worrying about fiddly clockin/outs.  At least when working from home.
> If clocking into a work site, that's different, because one can
> reasonably bill for the entire time, with minimal clock toggling.
> 

> > Did you check against filesystem limits? At 10k entries in a
> directory typical filesystems start becoming slow. That's the main
> reason I see for adding hierarchies.

>From ext4 manual:

 dir_index
  Use hashed  b-trees to speed  up name lookups  in large
  directories.   This feature  is supported  by ext3  and
  ext4 file systems, and is ignored by ext2 file systems.

 dir_nlink
  This ext4 feature allows more than 65000 subdirectories
  per directory.

I think that file systems should be unlimited and fast in relation to
that. I have ~/Maildir with over 5 subdirectories, direct access
is very easy and fast while listing takes some time.

If file system does not allow fast access it is time to replace it
with one that does allow it.

Now I wonder of HAMMER in DragonflyBSD is also slow with 5
directories.

My PostgreSQL database is not huge, it is when packed about 50 MB. On
the file system it is 810 MB.

To select 2469 contacts as subset of 204048 contacts that belong in
certain group does not give (usually) feeling of any delay, it looks
instant for human.

My Org work is on meta-level so my truly important headings or subtree
names are in the database. Subtrees have their various properties,
like I can place any tags there inside, like TODO or designate type of
TODO. My work is intertwined with text and Org mode mostly, but I
could use any kind of mime type or any kind of Emacs mode. Some nodes
are on file system while some are in the database.

Nodes within subtree are hyperdocuments, they are all linkable and
could be on file system or not on file system.

Everything is together in one tree and it does not matter as access to
the nodes does not go over the tree necessary. There are 19197 nodes.
To find 76 that are tagged with TODO does not give me any slight or
visible delay, definitely not even 0.2 seconds. When I press enter it
is right there.

>From the system I am using personally I am thinking that Org mode
could get its database connection so that headings and properties are
managed in the database fully while text could be managed in files. It
seems very possible.

The only thing that would be needed to add to Org in that case is some
heading tag that would uniquely designate where in the database that
heading is managed. It could be very lightly displayed on the screen
and would not be exported by default.

Something like

*** TODO Heading :ID-123:

That would be all. All other meta data belonging to the heading could
be managed in the database. If heading is deleted it need not be
deleted in the database. Text belonging to heading could be managed in
the text file. Properties in the database. It can be simple database
such as GDBM if such is fast enough.

Meta data for the heading would or could be updated automatically from
time to time.

User could easily decide to show the properties in the Org file or not
to show. It does not matter much as long as :ID-123: tag is there.

All things like tags, properties, clock-in and out, schedule,
deadlines, custom_id and everything else as heading meta data could be
manageable in the database. It could be copied into new headings.
Creation of heading like this:

*** TitleRET

would automatically invoke creation of heading 124 in the database and it would 
appear as:

*** Title  :ID-124;

>From there on user would be doing anything as usual in the Org mode
with the difference that properties would be displayed in the updated
manner and would not be really in the Org file. They would be
displayed on the fly. Any properties and plethora of other new
properties could be included.

System would recognize automatically by saving the Org file or by
opening it:

- If headings are in the right file, if file changed its place it
would be automatically updated in the database. 

- the heading ID would always remain unique no matter what, so users
linking to any heading would not need to worry of title remaining. The
unique ID that links to heading would basically link to the database
entry. Opening the link would ask database where the entry is located
and it would open up proper Org file at proper location without
parsing the Org file in usual manner. Org file would then 

Re: looking for a macro eval workaround (9.1 vs 9.2 and +) for export backend test

2020-11-23 Thread Eric S Fraga
On Monday, 23 Nov 2020 at 14:02, Bruno BEAUFILS wrote:
> I blame myself not having it in the first place.

Don't be too hard on yourself! :-)

Org, just like Emacs, has so many different ways of accomplishing
anything that sometimes the easiest is overlooked!

Glad I could help.

-- 
: Eric S Fraga via Emacs 28.0.50, Org release_9.4-118-g2a4578.dirty



Re: looking for a macro eval workaround (9.1 vs 9.2 and +) for export backend test

2020-11-23 Thread Bruno BEAUFILS
On Mon, Nov 23, 2020 at 10:19:16AM +, Eric S Fraga wrote:
> Maybe define your macro like this:
> 
> #+macro: hfill @@latex:\hfill@@

Very good idea indeed.

I blame myself not having it in the first place.

Thank's a lot!

-- 
Bruno BEAUFILS


signature.asc
Description: PGP signature


Re: Bug: org-clone-subtree-with-time-shift throws error [9.3 (release_9.3 @ /usr/share/emacs/27.1/lisp/org/)]

2020-11-23 Thread skaphle
Kyle Meyer wrote:
[...]
> Thanks for detailed report and nice reproduction steps.
> 

> I believe this has already been addressed by c716b7c08 (org-id: Allow
> file name to be overridden on ID creation, 2020-04-16), which was
> included in the 9.3.7 release.
> 

> related thread: https://orgmode.org/list/87a73caayj.fsf@phaktory/T/#u
>

Thanks for the reply. I used the version shipped with emacs in the report, and 
now I installed org 9.4 from the gnu default repository via 
package-list-packages within emacs and the error indeed goes away. Is that the 
recommended stable version to use? Should I report bugs against the latest git 
version only?

signature.asc
Description: OpenPGP digital signature


Don’t select-frame after Babel export

2020-11-23 Thread Titus von der Malsburg


When I export an org document to PDF via Babel, the frame is select at the end 
of the process.  Is there a way to prevent this?

Example:

1. Request exporting the following org file to PDF via `C-e C-p`:

  This is a test:

  #+BEGIN_SRC elisp :eval yes :exports both
  (sit-for 3)
  (print "Done!")
  #+END_SRC

2. Then immediately iconify the Emacs frame.
3. Wait until the end of the 3 seconds.
Result: The Emacs frame will be raised and focused.

Background: I often export computation-heavy org documents and work on 
something else in the meantime.  I don’t want Emacs to interfere with that 
other work when it’s done exporting.

  Titus



Re: Using a code block as input to another code block

2020-11-23 Thread Magnus Therning

Berry, Charles  writes:

> Inline.
>
>> On Nov 21, 2020, at 2:30 PM, Magnus Therning  wrote:
>>
>> I know I can use an example block (literal example) as input to a code
>> block, but I haven't found a way to fontify examples. Since my input is
>> code (JSON, and various programming languages) I would really like to
>> have that, as well as the language's mode when editing by using
>> ~org-edit-source-code~.
>>
>> A code block gives me fontification, but I haven't found a way to pass a
>> code block as is to another code block.
>>
>> For instance, something like this:
>>
>> #+name: code-input
>> #+begin_src C
>> #include 
>> #+end_src
>>
>> #+begin_src bash :var input=input :results verbatim
>> cat <> ${input}
>> EOF
>> #+end_src
>
>
> Sounds like you want the :noweb header and code chunks, viz.
>
> #+begin_src bash :noweb yes :results verbatim
> cat < <>
> EOF
> #+end_src
>
> HTH,
>
> Chuck
>
> [deleted]

Ah, I didn't think of that. It does have some limitations though as
:noweb isn't as flexible as shell expansion. For instance, I'm not able
to do

#+name: my-json
#+begin_src json
{
  ...
}
#+end_src

#+begin_src bash :noweb yes :results verbatim
cat <> | jq '@text')
}
EOF
#+end_src

Though it isn't too difficult to work around in this case:

#+begin_src bash :noweb yes :results verbatim
cat <>
EOF0
{
  "foo": $(cat /dev/stdin)
}
EOF1
#+end_src

It's absolutely a workable solution. Thanks!

/M

--
Magnus Therning  OpenPGP: 0x927912051716CE39
email: mag...@therning.org
twitter: magthe  http://magnus.therning.org/

Sometimes I wonder whether the world is being run by smart people who
are putting us on or by imbeciles who really mean it.
 — Mark Twain
Clearly, it's the imbeciles. And they really mean it.
 — DBT


signature.asc
Description: PGP signature


Re: buggy plantuml function

2020-11-23 Thread Immanuel Litzroth
There is a solution in all source blocks that would have a problem because there
is a * at the beginning of a line. Just prepend it with ,.
So this works over here:
#+BEGIN_SRC plantuml :file test.png
@startmindmap
,* Debian
,** Ubuntu
,*** Linux Mint
,*** Kubuntu
,*** Lubuntu
,*** KDE Neon
,** LMDE
,** SolydXK
,** SteamOS
,** Raspbian with a very long name
,*** Raspmbc => OSMC
,*** Raspyfi => Volumio
@endmind
#+END_SRC

Of course I also had to change  org-babel-plantuml-make-body
 (defun org-babel-plantuml-make-body (body _)
   body)
to make that work with "C-c C-c".
Weren't there supposed to be maintainers for this stuff? Has no plantuml
maintainer been found?
Immanuel



On Mon, Nov 23, 2020 at 11:28 AM Heinz Tuechler  wrote:
>
> Immanuel Litzroth wrote/hat geschrieben on/am 15.11.2020 13:27:
> > (defun org-babel-plantuml-make-body (body params)
> >   "Return PlantUML input string.
> >
> > BODY is the content of the source block and PARAMS is a property list
> > of source block parameters.  This function relies on the
> > `org-babel-expand-body:generic' function to extract `:var' entries
> > from PARAMS and on the `org-babel-variable-assignments:plantuml'
> > function to convert variables to PlantUML assignments.
> >
> > If BODY does not contain @startXXX ... @endXXX clauses, @startuml
> > ... @enduml will be added."
> >   (let ((assignments (org-babel-variable-assignments:plantuml params)))
> > (if (string-prefix-p "@start" body t) assignments
> >   (format "@startuml\n%s\n@enduml"
> >   (org-babel-expand-body:generic body params assignments)
> >
> > expands to assignments if the body starts with @startmindmap?
> > Immanuel
> >
>
> Dear Immanuel,
>
> did you ever receive an answer to your post? I ask, because I am
> curious, if you were able to use mindmap in a #+BEGIN_SRC plantuml /
> #+END_SRC block? For me it was not possible with *, because they get
> interpreted as org headlines and break the SRC block.
>
> best regards,
>
> Heinz
>


-- 
-- Researching the dual problem of finding the function that has a
given point as fixpoint.



Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Jean Louis
* Ihor Radchenko  [2020-11-23 11:14]:
> > Org provides hyperlinks and that useful feature may be used as
> > on-the-fly information visualizer for many groups of smaller pieces of
> > information which could be obtained from some structure or found in
> > real time.
> 
> Also, one could quickly select one of multiple links under heading by
> invoking C-c C-o with point at heading.

I did not know that. That is useful feature for Org.

Side note: there shall be feature in Org that quickly
captures the full link to the heading. Maybe it already
exists. Instead of constructing links by hand like entering
the file name, entering the heading for the link, there
shall by some automated feature:

Useful Feature A:
=

- watching 2 windows with 2 Org files

- position cursor in first Org file to accept the hyperlink

- move to 2nd Org file any heading

- press key, and hyperlink is sent to 1st Org file properly
  formatted for specific heading in second Org file.

And then there shall be also collection of hyperlinks:

Useful feature B to collect hyperlinks similar to above:


- user browses one Org file and thinks of collecting various
multiple hyperlinks as such need to be referenced in other
Org file and I refer to headings only for now.

- user would just invoke the key in any heading and message
  would be "Heading `** TODO Things' captured in the ring"

- user would be able to browse various Org files and collect
  hyperlinks in memory collection.

- After several collections user could then go to other Org
files and invoke key or command to insert the whole
collection of hyperlinks.

Do you find that useful? Who does?

That is how I am implementing information in the personal
program HyperScope, it will get published when polished and
ripe. 

Collections are similar to Dired marking, user can mark the
file and later decide what to do with it.

Org headings can be or could be marked with later action on
the whole collection of headings:

- re-filing all of them at once

- sending them all by email to other person (I do with Org)

- sending hyperlinks in other Org file (I do in HyperScope)

- creating new Org file with the collection of headings

- assigning properties to collection of headings, tasks,
todo or similar. I am often assigning tasks to people,
collection would help me re-assign tasks instead of doing it
one by one.

> In the following example, C-c C-o would raise a buffer listing all
> the links. Then, the links can be selected by pressing 1/2/3 (to
> open first/second/third link):

That is new to me and fine feature, thank you for reference. 

But this here, this chunk of various properties shows how
Org users wish Org to be way more structured, that Org wants
to become more than just plain text, it wants to become
database.

*** NEXT  Commit all the changes
SCHEDULED: <2020-11-24 Tue .+1d>
:PROPERTIES:
:CREATED: [2019-04-18 Thu 09:40]
:STYLE: habit
:REPEAT_TO_STATE: NEXT
:LOGGING: DONE(!)
:ARCHIVE: %S_archive_%y.org::* Habits
:ORG-TIME-BONUS: 0
:LAST_REPEAT: [2020-11-23 Mon 14:10]
:SHOWFROMDATE: 2020-11-09
:RESET_CHECK_BOXES: t
:END:




Re: looking for a macro eval workaround (9.1 vs 9.2 and +) for export backend test

2020-11-23 Thread Eric S Fraga
Maybe define your macro like this:

#+macro: hfill @@latex:\hfill@@

HTH,
eric

-- 
: Eric S Fraga via Emacs 28.0.50, Org release_9.4-118-g2a4578.dirty



Re: [PATCH] org-table: Add mode flag to enable Calc units simplification mode

2020-11-23 Thread Daniele Nicolodi
On 23/11/2020 04:14, Kyle Meyer wrote:
> You already mentioned that you plan to add documentation.  It'd also be
> good to add a test to test-org-table.el and a NEWS entry.

By the way, have you seen my other patch with some documentation updates
for Org tables?

Cheers,
Dan



Re: [PATCH] org-table: Add mode flag to enable Calc units simplification mode

2020-11-23 Thread Daniele Nicolodi
Hello Kyle,

thank you for the review. It is much appreciated as lisp (and Emacs lisp
in particular) is not the language I am most fluent in.

On 23/11/2020 04:14, Kyle Meyer wrote:
> Daniele Nicolodi writes:
> 
>> Subject: [PATCH 1/4] org-table: Fix table formula mode string handling
>>
>> * lisp/org-table.el (org-table-eval-formula): Move mode lookup table
>> from org-table--set-calc-mode to here.
>>
>> * lisp/org-table.el (org-table--set-calc-mode): Use plist-put instead
>> of the buggy open coded version.
> 
> So I think the "buggy" is referring to your analysis in
> <6d8c15c2-d1b0-d913-df39-c60381cff...@grinta.net>:
> 
>   The first (if ...) does some value substitutions, however, IIUC the
>   second (if ...) sets a new value for an entry in the org-tbl-calc-modes
>   plist if the entry is already present and builds a new plist with the
>   entry prepended if the entry is not there. However, the original plist
>   is returned and not the one with the new entry prepended.
> 
> And...
> 
>> ---
>>  lisp/org-table.el | 24 ++--
>>  1 file changed, 10 insertions(+), 14 deletions(-)
>>
>> diff --git a/lisp/org-table.el b/lisp/org-table.el
>> index 112b1e171..0790dc3ca 100644
>> --- a/lisp/org-table.el
>> +++ b/lisp/org-table.el
>> @@ -721,17 +721,8 @@ Field is restored even in case of abnormal exit."
>>   (org-table-goto-column ,column)
>>   (set-marker ,line nil)
>>  
>> -(defsubst org-table--set-calc-mode (var  value)
>> -  (if (stringp var)
>> -  (setq var (assoc var '(("D" calc-angle-mode deg)
>> - ("R" calc-angle-mode rad)
>> - ("F" calc-prefer-frac t)
>> - ("S" calc-symbolic-mode t)))
>> -value (nth 2 var) var (nth 1 var)))
>> -  (if (memq var org-tbl-calc-modes)
>> -  (setcar (cdr (memq var org-tbl-calc-modes)) value)
>> -(cons var (cons value org-tbl-calc-modes)))
>> -  org-tbl-calc-modes)
>> +(defsubst org-table--set-calc-mode (var value)
>> +  (plist-put org-tbl-calc-modes var value))
> 
> ...that does look to be the case.  Do you have an example that triggers
> the issue?  If so, it'd be good to cover that in test-org-table.el.

calc-simplify-mode is not part of the default calc mode plist, thus
adding it to the plist does not work without this change.

> However, looking ahead, org-table--set-calc-mode is dropped in the last
> patch.  I'd suggest instead dropping org-table--set-calc-mode and moving
> to using cl-getf as part of this first patch.  (I know that'd require a
> bit of reworking since it touches changes from patches 2 and 3.)

I can do this.

>> Subject: [PATCH 2/4] org-table: Simplify mode string parsing
>>
> [...]
>>  ;;; Predicates
>> @@ -2427,54 +2427,42 @@ location of point."
>> (org-tbl-calc-modes (copy-sequence org-calc-default-modes))
>> (numbers nil)   ; was a variable, now fixed default
>> (keep-empty nil)
>> -   n form form0 formrpl formrg bw fmt x ev orig c lispp literal
>> +   form form0 formrpl formrg bw fmt ev orig lispp literal
>> duration duration-output-format)
>>;; Parse the format string.  Since we have a lot of modes, this is
>>;; a lot of work.  However, I think calc still uses most of the time.
>> -  (if (string-match ";" formula)
>> -  (let ((tmp (org-split-string formula ";")))
>> -(setq formula (car tmp)
>> -  fmt (concat (cdr (assoc "%" org-table-local-parameters))
>> -  (nth 1 tmp)))
>> +  (if (string-match "\\(.*\\);\\(.*\\)" formula)
>> +  (progn
>> +(setq fmt (concat (match-string-no-properties 2 formula)
>> +  (cdr (assoc "%" org-table-local-parameters)))
>> +  formula (match-string-no-properties 1 formula))
> 
> This patch's changes look good to me.  As a minor comment, I'd prefer if
> the rewritten parts (here and for the entire series) only used one pair
> per setq call, even if it's not worth updating the entire function to
> use this style.

Funny. This is also the style I prefer, but I wrote the code to conform
to the style used in this context. I can fix this too.

>> Subject: [PATCH 3/4] org-table: Add mode flag to enable Calc units
>>  simplification mode
>>
>> * org-table.el (org-table-eval-formula): Add the `u` mode flag to
>> enable Calc's units simplification mode.
> 
> Neat.  As far as I can tell, this works nicely.
> 
>> ---
>>  lisp/org-table.el | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/lisp/org-table.el b/lisp/org-table.el
>> index 4baad2600..6b92656bd 100644
>> --- a/lisp/org-table.el
>> +++ b/lisp/org-table.el
>> @@ -2447,11 +2447,12 @@ location of point."
>>(?e (org-table--set-calc-mode 'calc-float-format (list 'eng 
>> n)
>>;; Remove matched flags from the mode string.
>>(setq fmt (replace-match "" t t fmt)))
>> -(while (string-match "\\([tTUNLEDRFS]\\)" fmt)

Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Diego Zamboni
Hi Gerardo,

Apart from what others have suggested, what you can do if you have a fixed
list of files you want to quickly access, you could manually define
keybindings for them. I have four main files where I capture things, so I
define a submenu that allows me to access them quickly:

(note: I got this idea originally from Sacha Chua's
https://sachachua.com/blog/2015/02/learn-take-notes-efficiently-org-mode/)

First, I define a helper function to define keybindings that open files.
Note that this requires lexical binding to be enabled, so that  the
=lambda= creates a closure, otherwise the keybindings don't work.

#+begin_src emacs-lisp
(defun zz/add-file-keybinding (key file  desc)
  (let ((key key)
(file file)
(desc desc))
(map! :desc (or desc file)
  key
  (lambda () (interactive) (find-file file)
#+end_src

(note #2: the map! macro is Doom Emacs-specific, should be replaced with
`bind-key` or equivalent if you are not using Doom)

Now I define keybindings to access my commonly-used org files.

#+begin_src emacs-lisp
(zz/add-file-keybinding "C-c z w" "~/Work/work.org.gpg" "work.org")
(zz/add-file-keybinding "C-c z i" "~/org/ideas.org" "ideas.org")
(zz/add-file-keybinding "C-c z p" "~/org/projects.org" "projects.org")
(zz/add-file-keybinding "C-c z d" "~/org/diary.org" "diary.org")
#+end_src

This results in a submenu bound to "C-c z" which looks like this, and which
allows me to quickly open my files:

[image: image.png]

--Diego


On Sun, Nov 22, 2020 at 11:01 AM Gerardo Moro 
wrote:

> Basically that :)
> I'm looking for some setup that allows me to open a menu with a list of
> files and shortcut access keys to open them.
>
> Probably somebody has done this before.
>
> Thank you,
> GM
>


Re: One vs many directories

2020-11-23 Thread Texas Cyberthal
Hi Dr. Arne,

> The only part that hits performance limits is the agenda.

Well, IIRC your Org Textmind is much smaller than mine.

> My current guess is that the agenta is slow because it has to parse all my 
> 7500 clock entries, and it has to check the Todo states of around 1200 
> headings.

Ouch.  I'd rather keep a "ramble log" so I can reconstruct an exactly
honest time accounting, with discounts for partial attention, without
worrying about fiddly clockin/outs.  At least when working from home.
If clocking into a work site, that's different, because one can
reasonably bill for the entire time, with minimal clock toggling.

> Did you check against filesystem limits? At 10k entries in a directory 
> typical filesystems start becoming slow. That’s the main reason I see for 
> adding hierarchies.

10k entries in a directory sounds inhumanely unergonomic.  I guess my
biggest flat name directory might eventually reach that size?  In
which case I could just split it in the middle of the alphabet, or
similar solution.

Right now it's only 600.  If I guess a generous growth rate of 2 per
day, times 30 years, that would be an additional 22k.  Sounds
manageable.

Remember there are ways to consolidate entries even in flat "solid
names" directory.  It's advantageous to do so to facilitate isearch
matching.  For example, everyone with the same last name is one
directory.  Ditto everything that starts with the same word or even
prefix.  For example I have a directory called ~Wiki-~ and another
called ~Tru-~ which contains truth, Trudeau and Trump.

Most adults know 20-35k words.  That's not the same as "solid names"
known, but gives a ballpark on human memory size for a similar name
type.  I suspect computers will advance faster than anyone's Textmind
reaches the Dired lag limit.

No, if we are talking about scaling limits, then limits such as buffer
size and Agenda search speed are orders of magnitude more relevant.
Which problems deep tree nesting fixes.

A 10k entry directory is getting into enterprise territory, and I'm
sure enterprise has tech tricks that become worthwhile at that scale.

> There are scaling problems in every direction: Too many files per directory, 
> too large files, too much content per heading, too many headings.

There are scaling problems from too much deep tree nesting, namely too
much fiddly ambiguous manual refiling.  Solution is flat "solid name"
directories just below feasible 10 Bins.  Work fine.

> I would have to build lots of additional tooling to make that work as well. 
> Many of the tools in Emacs work better on large files than on many files — I 
> will switch to more files when performance on large files reaches its limits.

Nah, my 100 mb (non archived) Textmind works fine.  I just separated
Agenda metadata from bulk prose.

I am curious how many headings I have, how would I count that recursively?

On Sun, Nov 22, 2020 at 8:04 PM Dr. Arne Babenhauserheide
 wrote:
>
>
> Texas Cyberthal  writes:
>
> >> I need instant search in the knowledge database and quick filing of tasks. 
> >> Also I need the agenda to create a clocktable (that’s on the limit of 
> >> being too slow) and the calendar and tasks of the week.
> >
> >> Also I need quick filing of notes and quotes (in specific files, not part 
> >> of the agenda) and of long-form articles, one file per article (using 
> >> journal.el, also outside the agenda, searched using M-x deft), and quick 
> >> creation of website entries for a given category within the site (i.e. M-x 
> >> draketo-software).
> >
> > So your Org usage style quickly hits critical performance problems at scale.
>
> The only part that hits performance limits is the agenda. All the rest
> scales nicely. My current guess is that the agenta is slow because it
> has to parse all my 7500 clock entries, and it has to check the TODO
> states of around 1200 headings. Having multiple files would only add to
> that.
>
> > I don't have these problems.  Treefactor refiling is immune to scale.
>
> Did you check against filesystem limits? At 10k entries in a directory
> typical filesystems start becoming slow. That’s the main reason I see
> for adding hierarchies.
>
> > Org's many tools and tricks are still handy in niche cases, but they
> > don't cause scaling problems because they don't handle bulk info
> > management.  For example Org's refile tools are useful when writing
> > advanced documentation with large single-file outlines.  Most info
> > doesn't require that much organization.  It works fine as flat lists
> > of headings in a detailed directory tree.
>
> Or as sub-headings in a large outline.
>
> There are scaling problems in every direction: Too many files per
> directory, too large files, too much content per heading, too many
> headings.
>
> I would have to build lots of additional tooling to make that work as
> well. Many of the tools in Emacs work better on large files than on many
> files — I will switch to more files when performance on large 

Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Ihor Radchenko
> One question: what does  do? Thanks

Just wanted to indicate the cursor position.

Best,
Ihor

Gerardo Moro  writes:

> Excellent stuff.
> One question: what does  do? Thanks
>
> El lun, 23 nov 2020 a las 10:13, Ihor Radchenko ()
> escribió:
>
>> > Org provides hyperlinks and that useful feature may be used as
>> > on-the-fly information visualizer for many groups of smaller pieces of
>> > information which could be obtained from some structure or found in
>> > real time.
>>
>> Also, one could quickly select one of multiple links under heading by
>> invoking C-c C-o with point at heading.
>>
>> In the following example, C-c C-o would raise a buffer listing all the
>> links. Then, the links can be selected by pressing 1/2/3 (to open
>> first/second/third link):
>>
>> *** NEXT  Commit all the changes
>> SCHEDULED: <2020-11-24 Tue .+1d>
>> :PROPERTIES:
>> :CREATED: [2019-04-18 Thu 09:40]
>> :STYLE: habit
>> :REPEAT_TO_STATE: NEXT
>> :LOGGING: DONE(!)
>> :ARCHIVE: %S_archive_%y.org::* Habits
>> :ORG-TIME-BONUS: 0
>> :LAST_REPEAT: [2020-11-23 Mon 14:10]
>> :SHOWFROMDATE: 2020-11-09
>> :RESET_CHECK_BOXES: t
>> :END:
>>
>> - [[file:~/Org/]]
>> - [[file:~/Knowledge_base/2016/Private/Get_started_with_org_mode/]]
>> - file:/home/yantar92/Git/emacs-config
>>
>> Best,
>> Ihor
>>
>> Jean Louis  writes:
>>
>> > * Gerardo Moro  [2020-11-23 07:00]:
>> >> Thanks so much, now it works when using that elisp function.
>> >
>> > OK, it was your idea and I adopt the approach. If Elisp function
>> > works, then shell command may not be important.
>> >
>> > Org provides hyperlinks and that useful feature may be used as
>> > on-the-fly information visualizer for many groups of smaller pieces of
>> > information which could be obtained from some structure or found in
>> > real time.
>> >
>> > It is useful to think of Org as a meta hyperdocument visualizer and as
>> > a self-helping and self-producing system. That would mean that few
>> > simple functions could automate collection of pieces of information
>> > for further human annotation and expansion.
>> >
>> > Memex
>> > https://en.wikipedia.org/wiki/Memex
>> >
>> > Memacs
>> > https://github.com/novoid/Memacs
>> >
>> > Semantic Synchrony
>> > https://github.com/synchrony/smsn
>>



Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Gerardo Moro
Ok, thanks!

El lun, 23 nov 2020 a las 11:12, Ihor Radchenko ()
escribió:

> > One question: what does  do? Thanks
>
> Just wanted to indicate the cursor position.
>
> Best,
> Ihor
>
> Gerardo Moro  writes:
>
> > Excellent stuff.
> > One question: what does  do? Thanks
> >
> > El lun, 23 nov 2020 a las 10:13, Ihor Radchenko ()
> > escribió:
> >
> >> > Org provides hyperlinks and that useful feature may be used as
> >> > on-the-fly information visualizer for many groups of smaller pieces of
> >> > information which could be obtained from some structure or found in
> >> > real time.
> >>
> >> Also, one could quickly select one of multiple links under heading by
> >> invoking C-c C-o with point at heading.
> >>
> >> In the following example, C-c C-o would raise a buffer listing all the
> >> links. Then, the links can be selected by pressing 1/2/3 (to open
> >> first/second/third link):
> >>
> >> *** NEXT  Commit all the changes
> >> SCHEDULED: <2020-11-24 Tue .+1d>
> >> :PROPERTIES:
> >> :CREATED: [2019-04-18 Thu 09:40]
> >> :STYLE: habit
> >> :REPEAT_TO_STATE: NEXT
> >> :LOGGING: DONE(!)
> >> :ARCHIVE: %S_archive_%y.org::* Habits
> >> :ORG-TIME-BONUS: 0
> >> :LAST_REPEAT: [2020-11-23 Mon 14:10]
> >> :SHOWFROMDATE: 2020-11-09
> >> :RESET_CHECK_BOXES: t
> >> :END:
> >>
> >> - [[file:~/Org/]]
> >> - [[file:~/Knowledge_base/2016/Private/Get_started_with_org_mode/]]
> >> - file:/home/yantar92/Git/emacs-config
> >>
> >> Best,
> >> Ihor
> >>
> >> Jean Louis  writes:
> >>
> >> > * Gerardo Moro  [2020-11-23 07:00]:
> >> >> Thanks so much, now it works when using that elisp function.
> >> >
> >> > OK, it was your idea and I adopt the approach. If Elisp function
> >> > works, then shell command may not be important.
> >> >
> >> > Org provides hyperlinks and that useful feature may be used as
> >> > on-the-fly information visualizer for many groups of smaller pieces of
> >> > information which could be obtained from some structure or found in
> >> > real time.
> >> >
> >> > It is useful to think of Org as a meta hyperdocument visualizer and as
> >> > a self-helping and self-producing system. That would mean that few
> >> > simple functions could automate collection of pieces of information
> >> > for further human annotation and expansion.
> >> >
> >> > Memex
> >> > https://en.wikipedia.org/wiki/Memex
> >> >
> >> > Memacs
> >> > https://github.com/novoid/Memacs
> >> >
> >> > Semantic Synchrony
> >> > https://github.com/synchrony/smsn
> >>
>


Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Gerardo Moro
Excellent stuff.
One question: what does  do? Thanks

El lun, 23 nov 2020 a las 10:13, Ihor Radchenko ()
escribió:

> > Org provides hyperlinks and that useful feature may be used as
> > on-the-fly information visualizer for many groups of smaller pieces of
> > information which could be obtained from some structure or found in
> > real time.
>
> Also, one could quickly select one of multiple links under heading by
> invoking C-c C-o with point at heading.
>
> In the following example, C-c C-o would raise a buffer listing all the
> links. Then, the links can be selected by pressing 1/2/3 (to open
> first/second/third link):
>
> *** NEXT  Commit all the changes
> SCHEDULED: <2020-11-24 Tue .+1d>
> :PROPERTIES:
> :CREATED: [2019-04-18 Thu 09:40]
> :STYLE: habit
> :REPEAT_TO_STATE: NEXT
> :LOGGING: DONE(!)
> :ARCHIVE: %S_archive_%y.org::* Habits
> :ORG-TIME-BONUS: 0
> :LAST_REPEAT: [2020-11-23 Mon 14:10]
> :SHOWFROMDATE: 2020-11-09
> :RESET_CHECK_BOXES: t
> :END:
>
> - [[file:~/Org/]]
> - [[file:~/Knowledge_base/2016/Private/Get_started_with_org_mode/]]
> - file:/home/yantar92/Git/emacs-config
>
> Best,
> Ihor
>
> Jean Louis  writes:
>
> > * Gerardo Moro  [2020-11-23 07:00]:
> >> Thanks so much, now it works when using that elisp function.
> >
> > OK, it was your idea and I adopt the approach. If Elisp function
> > works, then shell command may not be important.
> >
> > Org provides hyperlinks and that useful feature may be used as
> > on-the-fly information visualizer for many groups of smaller pieces of
> > information which could be obtained from some structure or found in
> > real time.
> >
> > It is useful to think of Org as a meta hyperdocument visualizer and as
> > a self-helping and self-producing system. That would mean that few
> > simple functions could automate collection of pieces of information
> > for further human annotation and expansion.
> >
> > Memex
> > https://en.wikipedia.org/wiki/Memex
> >
> > Memacs
> > https://github.com/novoid/Memacs
> >
> > Semantic Synchrony
> > https://github.com/synchrony/smsn
>


Re: [ANN] org-ql 0.5 released

2020-11-23 Thread Adam Porter
Hi Jean Louis,

Thanks for your feedback.

>As the more complexities are created then even org-ql becomes complex
>to work with just as SQL becomes more and more complex with more
>relational tables and pieces of information.

The idea of Org QL is to make such things simple.  For example, you
don't need to know Elisp to run "M-x org-ql-search RET" and type this
query:

  todo: priority:A deadline:to=3

Which would display all to-do items with priority A due within the next
3 days.

> For org-ql I hope that your system can be used as underlying layer or
> low level language for functionality that may help user to think their
> stuff without thinking on underlying functionality. You have offered
> examples and those are in my opinion too abstract for Org users. They
> are fine for programmers or more skilled users.

The org-ql-search and org-ql-view UIs are built on the underlying org-ql
library.

> High level functions would be something like a wizard with code
> generation, that creates hyperlink for the user without user having to
> think about org-ql

> It could be something like `ql-meta' or `ql-summary' that is created
> on the fly and that collects information for agenda like view, and
> creates Org file with hyperlink that invokes the agenda like view.

This is already implemented.  Search views can be built incrementally
using the Transient UI.  See the screencast GIFs in the readme.

> Entries from the past week could be something on the fly. Additional
> hyperlink in the ql-summary could have the user to customize sorting
> without thinking of the underlying code.

See "M-x org-ql-view-recent-items RET".

> Find entries matching a certain CUSTOM_ID could be automatically
> generated heading:
>
> *** Entries by CUSTOM_ID
>
> ONE TWO THREE MORE HYPERLINKED AND SORTED CUSTOM_IDS
>
> when user clicks on any of those this would invoke the org-ql and show
> those entries. By click and by thinking, not necessarily by
> constructing the org-ql.
>
> Similar could be for deadlines.

This is already implemented.  See the sections "Links" and "Dynamic
Blocks" in the readme.

> Music could be sorted by author in the summary Org file that has many
> hyperlinks which in turn use the org-ql to activate music, or annotate
> it.

Those are interesting ideas for future work, thanks.

> Your file `examples.org' has some hyperlinks under the heading
> Contents and none of hyperlinks work. Why is it so?

I went to https://github.com/alphapapa/org-ql/blob/master/examples.org
and clicked the links in "Contents" and they work for me.

> In the end I could not test examples as it asks for org-ql-search that
> in turn asks for super-agenda that I do not have.
>
> I wonder how could I install the package that requires
> org-super-agenda and that it starts working. Maybe you missed one
> (require 'org-super-agenda) as when I wish to install it, it does not.

If you install org-ql from MELPA or with Quelpa, org-super-agenda will
be installed automatically.  The `require' function does not install
packages.

Thanks,
Adam




Re: Bring up a screen giving option to open a series of orgmode files

2020-11-23 Thread Ihor Radchenko
> Org provides hyperlinks and that useful feature may be used as
> on-the-fly information visualizer for many groups of smaller pieces of
> information which could be obtained from some structure or found in
> real time.

Also, one could quickly select one of multiple links under heading by
invoking C-c C-o with point at heading.

In the following example, C-c C-o would raise a buffer listing all the
links. Then, the links can be selected by pressing 1/2/3 (to open
first/second/third link):

*** NEXT  Commit all the changes
SCHEDULED: <2020-11-24 Tue .+1d>
:PROPERTIES:
:CREATED: [2019-04-18 Thu 09:40]
:STYLE: habit
:REPEAT_TO_STATE: NEXT
:LOGGING: DONE(!)
:ARCHIVE: %S_archive_%y.org::* Habits
:ORG-TIME-BONUS: 0
:LAST_REPEAT: [2020-11-23 Mon 14:10]
:SHOWFROMDATE: 2020-11-09
:RESET_CHECK_BOXES: t
:END:

- [[file:~/Org/]]
- [[file:~/Knowledge_base/2016/Private/Get_started_with_org_mode/]]
- file:/home/yantar92/Git/emacs-config

Best,
Ihor

Jean Louis  writes:

> * Gerardo Moro  [2020-11-23 07:00]:
>> Thanks so much, now it works when using that elisp function.
>
> OK, it was your idea and I adopt the approach. If Elisp function
> works, then shell command may not be important.
>
> Org provides hyperlinks and that useful feature may be used as
> on-the-fly information visualizer for many groups of smaller pieces of
> information which could be obtained from some structure or found in
> real time.
>
> It is useful to think of Org as a meta hyperdocument visualizer and as
> a self-helping and self-producing system. That would mean that few
> simple functions could automate collection of pieces of information
> for further human annotation and expansion.
>
> Memex
> https://en.wikipedia.org/wiki/Memex
>
> Memacs
> https://github.com/novoid/Memacs
>
> Semantic Synchrony
> https://github.com/synchrony/smsn