emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Library of Babel confusion
@ 2018-04-03 20:31 Lawrence Bottorff
  2018-04-03 20:44 ` Nicolas Goaziou
  2018-04-03 21:39 ` Berry, Charles
  0 siblings, 2 replies; 12+ messages in thread
From: Lawrence Bottorff @ 2018-04-03 20:31 UTC (permalink / raw)
  To: emacs-orgmode Mailinglist

[-- Attachment #1: Type: text/plain, Size: 1222 bytes --]

I've been trying to grok LOB again. So I've cloned the worg git and
library-of-babel.el is one of the files. org-babel-lob-injest didn't work,
so I customized org-babel-lob-files and inserted
.../worg/library-of-babel.el . . . and it did in fact get added to my
init.el under the custom-set-variables:

 '(org-babel-lob-files (quote ("~/org/worg/library-of-babel.org")))

I checked org-babel-library-of-babel variable, and the new things seemed to
be there, although it's rather mind-bending to know I will be calling LOB
code that is internally stored inside of an association list.

Now, in my org file I put this:

#+lob: write(file="jsontest")

and try C-c C-c on it. Nothing. My minibuffer says "local setup has been
refreshed". How does one use, call a LOB function? Also, while I'm
demonstrating my rank noobian-ness, I try this:

#+name: myelsquare
#+header: :var x=0
#+begin_src emacs-lisp
  (* x x)
#+end_src

#+call: myelsquare(x=6)

#+RESULTS:
: 36

but this results in

#+name: myelsquare
#+header: :var x=0
#+begin_src emacs-lisp
  (defun myelsquare (x)
      (* x x))
#+end_src

#+call: myelsquare(x=6)

#+RESULTS:
: myelsquare2

After a #+call:... I use C-c C-c to evaluate it. What am I missing here?

LB

[-- Attachment #2: Type: text/html, Size: 1833 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-03 20:31 Library of Babel confusion Lawrence Bottorff
@ 2018-04-03 20:44 ` Nicolas Goaziou
  2018-04-04 22:52   ` Lawrence Bottorff
  2018-04-03 21:39 ` Berry, Charles
  1 sibling, 1 reply; 12+ messages in thread
From: Nicolas Goaziou @ 2018-04-03 20:44 UTC (permalink / raw)
  To: Lawrence Bottorff; +Cc: emacs-orgmode Mailinglist

Lawrence Bottorff <borgauf@gmail.com> writes:

> I've been trying to grok LOB again. So I've cloned the worg git and
> library-of-babel.el is one of the files. org-babel-lob-injest didn't
> work,

What doesn't work? You call `org-babel-lob-ingest', specify a file, and
it stores all source code blocks in the file for later use.

> Now, in my org file I put this:
>
> #+lob: write(file="jsontest")

This should be #+call: write(...)

>
> and try C-c C-c on it. Nothing. My minibuffer says "local setup has been
> refreshed". How does one use, call a LOB function? Also, while I'm
> demonstrating my rank noobian-ness, I try this:
>
> #+name: myelsquare
> #+header: :var x=0
>
> #+begin_src emacs-lisp
>   (* x x)
> #+end_src
>
> #+call: myelsquare(x=6)
>
> #+RESULTS: : 36
>
> but this results in
>
> #+name: myelsquare
> #+header: :var x=0
>
> #+begin_src emacs-lisp
>   (defun myelsquare (x)
>       (* x x))
> #+end_src
>
> #+call: myelsquare(x=6)
>
> #+RESULTS:
> : myelsquare2
>
> After a #+call:... I use C-c C-c to evaluate it. What am I missing
> here?

Your second block defines a function, but doesn't return its results.
"#+call: myelsquare(...)" expects to find a block named "myelsquare",
not an Elisp function named "myelsquare".

Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-03 20:31 Library of Babel confusion Lawrence Bottorff
  2018-04-03 20:44 ` Nicolas Goaziou
@ 2018-04-03 21:39 ` Berry, Charles
  2018-04-06 22:15   ` Lawrence Bottorff
  1 sibling, 1 reply; 12+ messages in thread
From: Berry, Charles @ 2018-04-03 21:39 UTC (permalink / raw)
  To: Lawrence Bottorff; +Cc: emacs-orgmode Mailinglist



> On Apr 3, 2018, at 1:31 PM, Lawrence Bottorff <borgauf@gmail.com> wrote:
> 
> I've been trying to grok LOB again. So I've cloned the worg git and library-of-babel.el is one of the files. org-babel-lob-injest didn't work,


Try 

M-x org-babel-lob-ingest RET org/worg/library-of-babel.org RET

Don't be a jester, be an ingester. ;-)


> so I customized org-babel-lob-files and inserted .../worg/library-of-babel.el . . . and it did in fact get added to my init.el under the custom-set-variables:
> 
>  '(org-babel-lob-files (quote ("~/org/worg/library-of-babel.org")))
> 
> I checked org-babel-library-of-babel variable, and the new things seemed to be there, although it's rather mind-bending to know I will be calling LOB code that is internally stored inside of an association list.
> 
> Now, in my org file I put this:
> 
> #+lob: write(file="jsontest")


See (info"(org) Evaluating code blocks")

The proper idiom is

	#+call: write(file="jsontest")

Of course, there needs to be a proper 'write' src block in the file you ingested, etc.

> 
> and try C-c C-c on it. Nothing. My minibuffer says "local setup has been refreshed". How does one use, call a LOB function? Also, while I'm demonstrating my rank noobian-ness, I try this:
> 
> #+name: myelsquare
> #+header: :var x=0
> #+begin_src emacs-lisp
>   (* x x)
> #+end_src
> 
> #+call: myelsquare(x=6)
> 
> #+RESULTS:
> : 36
> 
> but this results in
> 
> #+name: myelsquare
> #+header: :var x=0
> #+begin_src emacs-lisp
>   (defun myelsquare (x)
>       (* x x))
> #+end_src
> 
> #+call: myelsquare(x=6)
> 
> #+RESULTS:
> : myelsquare2


Is this *verbatim* ? Did you cut and paste everything (including the trailing `2') all at once? If so, I do not get it.

I would have expected

#+RESULTS:
: myelsquare

 which is the correct behavior.

To see why put point in the myelsquare src block and type C-c C-v v

then move point to the end of the 'preview' buffer and type C-x C-e.

Look at the value echo-ed in the minibuffer.

If it still isn't clear maybe `M-x (symbol-function 'myelsquare)' will help. 

HTH,

Chuck

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-03 20:44 ` Nicolas Goaziou
@ 2018-04-04 22:52   ` Lawrence Bottorff
  0 siblings, 0 replies; 12+ messages in thread
From: Lawrence Bottorff @ 2018-04-04 22:52 UTC (permalink / raw)
  To: emacs-orgmode Mailinglist

[-- Attachment #1: Type: text/plain, Size: 2294 bytes --]

The docs <https://orgmode.org/worg/org-contrib/babel/intro.html> have this
example:

#+name: square
#+header: :var x=0
#+begin_src python
return x*x
#+end_src

#+call: square(x=6)

...so yes, "return", but with

(defun myelsquare (x)
   (* x x))

isn't the final thing evaluated what is "returned" with Elisp? AFAIK there
is no explicit return with Elisp. #+call can't really call a function, only
named blocks of REPL-style calculator snippets?

Also, today I find that a new start of Emacs doesn't load my LOB file, i.e.,

(custom-set-variables
...
 '(org-babel-lob-files (quote ("~/org/worg/library-of-babel.org")))
...

was being blown off, i.e., not populating the org-babel-library-of-babel
variable. But today org-babel-lob-injest does seem to work, i.e., it did
populate org-babel-library-of-babel. I wonder what's up.




On Tue, Apr 3, 2018 at 4:44 PM, Nicolas Goaziou <mail@nicolasgoaziou.fr>
wrote:

> Lawrence Bottorff <borgauf@gmail.com> writes:
>
> > I've been trying to grok LOB again. So I've cloned the worg git and
> > library-of-babel.el is one of the files. org-babel-lob-injest didn't
> > work,
>
> What doesn't work? You call `org-babel-lob-ingest', specify a file, and
> it stores all source code blocks in the file for later use.
>
> > Now, in my org file I put this:
> >
> > #+lob: write(file="jsontest")
>
> This should be #+call: write(...)
>
> >
> > and try C-c C-c on it. Nothing. My minibuffer says "local setup has been
> > refreshed". How does one use, call a LOB function? Also, while I'm
> > demonstrating my rank noobian-ness, I try this:
> >
> > #+name: myelsquare
> > #+header: :var x=0
> >
> > #+begin_src emacs-lisp
> >   (* x x)
> > #+end_src
> >
> > #+call: myelsquare(x=6)
> >
> > #+RESULTS: : 36
> >
> > but this results in
> >
> > #+name: myelsquare
> > #+header: :var x=0
> >
> > #+begin_src emacs-lisp
> >   (defun myelsquare (x)
> >       (* x x))
> > #+end_src
> >
> > #+call: myelsquare(x=6)
> >
> > #+RESULTS:
> > : myelsquare2
> >
> > After a #+call:... I use C-c C-c to evaluate it. What am I missing
> > here?
>
> Your second block defines a function, but doesn't return its results.
> "#+call: myelsquare(...)" expects to find a block named "myelsquare",
> not an Elisp function named "myelsquare".
>
> Regards,
>
> --
> Nicolas Goaziou
>

[-- Attachment #2: Type: text/html, Size: 7415 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-03 21:39 ` Berry, Charles
@ 2018-04-06 22:15   ` Lawrence Bottorff
  2018-04-06 23:59     ` Thomas S. Dye
  0 siblings, 1 reply; 12+ messages in thread
From: Lawrence Bottorff @ 2018-04-06 22:15 UTC (permalink / raw)
  To: Berry, Charles, emacs-orgmode Mailinglist

[-- Attachment #1: Type: text/plain, Size: 3654 bytes --]

I guess I need more information. For example, what is C-c C-v v doing
exactly? Then C-x C-e? And  M-x (symbol-function 'myelsquare) doesn't work.
Again,

#+name: myelsquare
#+header: :var x=0
#+begin_src emacs-lisp :var x=0
  (defun myelsquare (x)
    (* x x))
#+end_src

is Lisp code where the last thing should be returned. From
library-of-babel.org:

#+name: json
#+begin_src emacs-lisp :var file='() :var url='()
  (require 'json)
  (cond
   (file
    (org-babel-with-temp-filebuffer file
      (goto-char (point-min))
      (json-read)))
   (url
    (require 'w3m)
    (with-temp-buffer
      (w3m-retrieve url)
      (goto-char (point-min))
      (json-read))))
#+end_src

And this calling a sample json-containing file gives

#+call: json(file="jsontest1")

| glossary | (title . example glossary) | (GlossDiv (title . S) (GlossList
(GlossEntry (ID . SGML) (SortAs . SGML) (GlossTerm . Standard Generalized
Markup Language) (Acronym . SGML) (Abbrev . ISO 8879:1986) (GlossDef (para
. A meta-markup language, used to create markup languages such as DocBook.)
(GlossSeeAlso . [GML XML])) (GlossSee . markup)))) |

which is correct, although not in list form. So again I'm looking at elisp
code that is not in the form of a function. So I'm guessing "functions"
cannot be #+call'ed, just "headless" elisp code. So what advantage does LOB
offer?

On Tue, Apr 3, 2018 at 5:39 PM, Berry, Charles <ccberry@ucsd.edu> wrote:

>
>
> > On Apr 3, 2018, at 1:31 PM, Lawrence Bottorff <borgauf@gmail.com> wrote:
> >
> > I've been trying to grok LOB again. So I've cloned the worg git and
> library-of-babel.el is one of the files. org-babel-lob-injest didn't work,
>
>
> Try
>
> M-x org-babel-lob-ingest RET org/worg/library-of-babel.org RET
>
> Don't be a jester, be an ingester. ;-)
>
>
> > so I customized org-babel-lob-files and inserted
> .../worg/library-of-babel.el . . . and it did in fact get added to my
> init.el under the custom-set-variables:
> >
> >  '(org-babel-lob-files (quote ("~/org/worg/library-of-babel.org")))
> >
> > I checked org-babel-library-of-babel variable, and the new things seemed
> to be there, although it's rather mind-bending to know I will be calling
> LOB code that is internally stored inside of an association list.
> >
> > Now, in my org file I put this:
> >
> > #+lob: write(file="jsontest")
>
>
> See (info"(org) Evaluating code blocks")
>
> The proper idiom is
>
>         #+call: write(file="jsontest")
>
> Of course, there needs to be a proper 'write' src block in the file you
> ingested, etc.
>
> >
> > and try C-c C-c on it. Nothing. My minibuffer says "local setup has been
> refreshed". How does one use, call a LOB function? Also, while I'm
> demonstrating my rank noobian-ness, I try this:
> >
> > #+name: myelsquare
> > #+header: :var x=0
> > #+begin_src emacs-lisp
> >   (* x x)
> > #+end_src
> >
> > #+call: myelsquare(x=6)
> >
> > #+RESULTS:
> > : 36
> >
> > but this results in
> >
> > #+name: myelsquare
> > #+header: :var x=0
> > #+begin_src emacs-lisp
> >   (defun myelsquare (x)
> >       (* x x))
> > #+end_src
> >
> > #+call: myelsquare(x=6)
> >
> > #+RESULTS:
> > : myelsquare2
>
>
> Is this *verbatim* ? Did you cut and paste everything (including the
> trailing `2') all at once? If so, I do not get it.
>
> I would have expected
>
> #+RESULTS:
> : myelsquare
>
>  which is the correct behavior.
>
> To see why put point in the myelsquare src block and type C-c C-v v
>
> then move point to the end of the 'preview' buffer and type C-x C-e.
>
> Look at the value echo-ed in the minibuffer.
>
> If it still isn't clear maybe `M-x (symbol-function 'myelsquare)' will
> help.
>
> HTH,
>
> Chuck
>

[-- Attachment #2: Type: text/html, Size: 5233 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-06 22:15   ` Lawrence Bottorff
@ 2018-04-06 23:59     ` Thomas S. Dye
  2018-04-07  2:38       ` Berry, Charles
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas S. Dye @ 2018-04-06 23:59 UTC (permalink / raw)
  To: Lawrence Bottorff; +Cc: emacs-orgmode Mailinglist, Berry, Charles

Aloha Lawrence,

#+name: myelsquare
#+header: :var x=0
#+begin_src emacs-lisp :var x=0
  (defun myelsquare (x)
    (* x x))
#+end_src

#+RESULTS: myelsquare
: myelsquare

Assuming myelsquare has been evaluated:

#+name: eval-myelsquare
#+header: :var y=2
#+BEGIN_SRC emacs-lisp
(myelsquare y)
#+END_SRC

#+RESULTS: eval-myelsquare
: 4

#+call: eval-myelsquare(3)

#+RESULTS:
: 9

hth,
Tom

Lawrence Bottorff writes:

> I guess I need more information. For example, what is C-c C-v v 
> doing
> exactly? Then C-x C-e? And  M-x (symbol-function 'myelsquare) 
> doesn't work.
> Again,
>
> #+name: myelsquare
> #+header: :var x=0
> #+begin_src emacs-lisp :var x=0
>   (defun myelsquare (x)
>     (* x x))
> #+end_src
>
> is Lisp code where the last thing should be returned. From
> library-of-babel.org:
>
> #+name: json
> #+begin_src emacs-lisp :var file='() :var url='()
>   (require 'json)
>   (cond
>    (file
>     (org-babel-with-temp-filebuffer file
>       (goto-char (point-min))
>       (json-read)))
>    (url
>     (require 'w3m)
>     (with-temp-buffer
>       (w3m-retrieve url)
>       (goto-char (point-min))
>       (json-read))))
> #+end_src
>
> And this calling a sample json-containing file gives
>
> #+call: json(file="jsontest1")
>
> | glossary | (title . example glossary) | (GlossDiv (title . S) 
> (GlossList
> (GlossEntry (ID . SGML) (SortAs . SGML) (GlossTerm . Standard 
> Generalized
> Markup Language) (Acronym . SGML) (Abbrev . ISO 8879:1986) 
> (GlossDef (para
> . A meta-markup language, used to create markup languages such 
> as DocBook.)
> (GlossSeeAlso . [GML XML])) (GlossSee . markup)))) |
>
> which is correct, although not in list form. So again I'm 
> looking at elisp
> code that is not in the form of a function. So I'm guessing 
> "functions"
> cannot be #+call'ed, just "headless" elisp code. So what 
> advantage does LOB
> offer?
>
> On Tue, Apr 3, 2018 at 5:39 PM, Berry, Charles 
> <ccberry@ucsd.edu> wrote:
>
>>
>>
>> > On Apr 3, 2018, at 1:31 PM, Lawrence Bottorff 
>> > <borgauf@gmail.com> wrote:
>> >
>> > I've been trying to grok LOB again. So I've cloned the worg 
>> > git and
>> library-of-babel.el is one of the files. org-babel-lob-injest 
>> didn't work,
>>
>>
>> Try
>>
>> M-x org-babel-lob-ingest RET org/worg/library-of-babel.org RET
>>
>> Don't be a jester, be an ingester. ;-)
>>
>>
>> > so I customized org-babel-lob-files and inserted
>> .../worg/library-of-babel.el . . . and it did in fact get added 
>> to my
>> init.el under the custom-set-variables:
>> >
>> >  '(org-babel-lob-files (quote 
>> >  ("~/org/worg/library-of-babel.org")))
>> >
>> > I checked org-babel-library-of-babel variable, and the new 
>> > things seemed
>> to be there, although it's rather mind-bending to know I will 
>> be calling
>> LOB code that is internally stored inside of an association 
>> list.
>> >
>> > Now, in my org file I put this:
>> >
>> > #+lob: write(file="jsontest")
>>
>>
>> See (info"(org) Evaluating code blocks")
>>
>> The proper idiom is
>>
>>         #+call: write(file="jsontest")
>>
>> Of course, there needs to be a proper 'write' src block in the 
>> file you
>> ingested, etc.
>>
>> >
>> > and try C-c C-c on it. Nothing. My minibuffer says "local 
>> > setup has been
>> refreshed". How does one use, call a LOB function? Also, while 
>> I'm
>> demonstrating my rank noobian-ness, I try this:
>> >
>> > #+name: myelsquare
>> > #+header: :var x=0
>> > #+begin_src emacs-lisp
>> >   (* x x)
>> > #+end_src
>> >
>> > #+call: myelsquare(x=6)
>> >
>> > #+RESULTS:
>> > : 36
>> >
>> > but this results in
>> >
>> > #+name: myelsquare
>> > #+header: :var x=0
>> > #+begin_src emacs-lisp
>> >   (defun myelsquare (x)
>> >       (* x x))
>> > #+end_src
>> >
>> > #+call: myelsquare(x=6)
>> >
>> > #+RESULTS:
>> > : myelsquare2
>>
>>
>> Is this *verbatim* ? Did you cut and paste everything 
>> (including the
>> trailing `2') all at once? If so, I do not get it.
>>
>> I would have expected
>>
>> #+RESULTS:
>> : myelsquare
>>
>>  which is the correct behavior.
>>
>> To see why put point in the myelsquare src block and type C-c 
>> C-v v
>>
>> then move point to the end of the 'preview' buffer and type C-x 
>> C-e.
>>
>> Look at the value echo-ed in the minibuffer.
>>
>> If it still isn't clear maybe `M-x (symbol-function 
>> 'myelsquare)' will
>> help.
>>
>> HTH,
>>
>> Chuck
>>


--
Thomas S. Dye
http://www.tsdye.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-06 23:59     ` Thomas S. Dye
@ 2018-04-07  2:38       ` Berry, Charles
  2018-04-10 18:55         ` Lawrence Bottorff
  0 siblings, 1 reply; 12+ messages in thread
From: Berry, Charles @ 2018-04-07  2:38 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: emacs-orgmode Mailinglist, Lawrence Bottorff



> On Apr 6, 2018, at 4:59 PM, Thomas S. Dye <tsd@tsdye.com> wrote:
> 

[Tom's response covering the main issues deleted]

> hth,
> Tom
> 
> Lawrence Bottorff writes:
> 
>> I guess I need more information. For example, what is C-c C-v v doing
>> exactly? Then C-x C-e? And  M-x (symbol-function 'myelsquare) doesn't work.


`C-h k' is really your friend here. If you do not know it, try typing it twice `C-h k C-h k'.

As for the specific keystrokes mentioned above:

,----[ C-h k C-c C-v v ]
| C-c C-v v runs the command org-babel-expand-src-block (found in
| org-mode-map), which is an interactive autoloaded compiled Lisp
| function in ‘ob-core.el’.
| 
| It is bound to C-c C-v v, C-c C-v C-v.
| 
| (org-babel-expand-src-block &optional ARG INFO PARAMS)
| 
| Expand the current source code block.
| Expand according to the source code block’s header
| arguments and pop open the results in a preview buffer.
| 
| [back]
`----

In your case, it shows that the `mtelsquare' src block expands to:


,----
| (let ((x (quote 0)))
| (defun myelsquare (x)
|   (* x x))
| )
`----


,----[ C-h k C-x C-e ]
| C-x C-e runs the command eval-last-sexp (found in global-map), which
| is an interactive compiled Lisp function in ‘elisp-mode.el’.
| 
| It is bound to C-x C-e.
| 
| (eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
| 
| Evaluate sexp before point; print value in the echo area.
| Interactively, with prefix argument, print output into current buffer.
| 
| Normally, this function truncates long output according to the value
| of the variables ‘eval-expression-print-length’ and
| ‘eval-expression-print-level’.  With a prefix argument of zero,
| however, there is no such truncation.  Such a prefix argument
| also causes integers to be printed in several additional formats
| (octal, hexadecimal, and character).
| 
| If ‘eval-expression-debug-on-error’ is non-nil, which is the default,
| this command arranges for all errors to enter the debugger.
| 
| [back]
`----

So with point at the end of the preview buffer for myelsquare (which has one `let' expression it it) it has the same effect as running `eval-buffer'. viz, the elisp function `myelsquare' is created.

If you have gotten this far, there is an lisp function called `myelsquare' and the `symbol-function' expression will return its value when properly `eval'ed. I misspoke before. I should have said 

	M-: (symbol-function 'myelsquare) RET

And that value is `(lambda (x) (* x x))'. Which simply shows you have defun'ed a function and what it is.

Once you have an elisp function, the natural way to call it is src_emacs-lisp{(myelsquare 1.5)}. 

One thing you can do with LOB blocks is use them in header args of src blocks just as you would use calls to ordinary src blocks. 

HTH,

Chuck



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-07  2:38       ` Berry, Charles
@ 2018-04-10 18:55         ` Lawrence Bottorff
  2018-04-10 19:26           ` Thomas S. Dye
  0 siblings, 1 reply; 12+ messages in thread
From: Lawrence Bottorff @ 2018-04-10 18:55 UTC (permalink / raw)
  To: Berry, Charles; +Cc: emacs-orgmode Mailinglist

[-- Attachment #1: Type: text/plain, Size: 3415 bytes --]

Thanks for the help. However, one mystery still remains: Why is this

 '(org-babel-lob-files (quote ("~/org/worg/library-of-babel.org")))

in my init.el's custom-set-variables not getting handled? I always have to
do an org-babel-lob-ingest to actually get library-of-babel.org loaded.

On Fri, Apr 6, 2018 at 10:38 PM, Berry, Charles <ccberry@ucsd.edu> wrote:

>
>
> > On Apr 6, 2018, at 4:59 PM, Thomas S. Dye <tsd@tsdye.com> wrote:
> >
>
> [Tom's response covering the main issues deleted]
>
> > hth,
> > Tom
> >
> > Lawrence Bottorff writes:
> >
> >> I guess I need more information. For example, what is C-c C-v v doing
> >> exactly? Then C-x C-e? And  M-x (symbol-function 'myelsquare) doesn't
> work.
>
>
> `C-h k' is really your friend here. If you do not know it, try typing it
> twice `C-h k C-h k'.
>
> As for the specific keystrokes mentioned above:
>
> ,----[ C-h k C-c C-v v ]
> | C-c C-v v runs the command org-babel-expand-src-block (found in
> | org-mode-map), which is an interactive autoloaded compiled Lisp
> | function in ‘ob-core.el’.
> |
> | It is bound to C-c C-v v, C-c C-v C-v.
> |
> | (org-babel-expand-src-block &optional ARG INFO PARAMS)
> |
> | Expand the current source code block.
> | Expand according to the source code block’s header
> | arguments and pop open the results in a preview buffer.
> |
> | [back]
> `----
>
> In your case, it shows that the `mtelsquare' src block expands to:
>
>
> ,----
> | (let ((x (quote 0)))
> | (defun myelsquare (x)
> |   (* x x))
> | )
> `----
>
>
> ,----[ C-h k C-x C-e ]
> | C-x C-e runs the command eval-last-sexp (found in global-map), which
> | is an interactive compiled Lisp function in ‘elisp-mode.el’.
> |
> | It is bound to C-x C-e.
> |
> | (eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
> |
> | Evaluate sexp before point; print value in the echo area.
> | Interactively, with prefix argument, print output into current buffer.
> |
> | Normally, this function truncates long output according to the value
> | of the variables ‘eval-expression-print-length’ and
> | ‘eval-expression-print-level’.  With a prefix argument of zero,
> | however, there is no such truncation.  Such a prefix argument
> | also causes integers to be printed in several additional formats
> | (octal, hexadecimal, and character).
> |
> | If ‘eval-expression-debug-on-error’ is non-nil, which is the default,
> | this command arranges for all errors to enter the debugger.
> |
> | [back]
> `----
>
> So with point at the end of the preview buffer for myelsquare (which has
> one `let' expression it it) it has the same effect as running
> `eval-buffer'. viz, the elisp function `myelsquare' is created.
>
> If you have gotten this far, there is an lisp function called `myelsquare'
> and the `symbol-function' expression will return its value when properly
> `eval'ed. I misspoke before. I should have said
>
>         M-: (symbol-function 'myelsquare) RET
>
> And that value is `(lambda (x) (* x x))'. Which simply shows you have
> defun'ed a function and what it is.
>
> Once you have an elisp function, the natural way to call it is
> src_emacs-lisp{(myelsquare 1.5)}.
>
> One thing you can do with LOB blocks is use them in header args of src
> blocks just as you would use calls to ordinary src blocks.
>
> HTH,
>
> Chuck
>
>
>

[-- Attachment #2: Type: text/html, Size: 4218 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-10 18:55         ` Lawrence Bottorff
@ 2018-04-10 19:26           ` Thomas S. Dye
  2018-04-11 13:29             ` Lawrence Bottorff
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas S. Dye @ 2018-04-10 19:26 UTC (permalink / raw)
  To: Lawrence Bottorff; +Cc: emacs-orgmode Mailinglist, Berry, Charles

Aloha Lawrence,

You probably want (org-babel-lob-ingest &optional FILE)

All the best,
Tom

Lawrence Bottorff writes:

> Thanks for the help. However, one mystery still remains: Why is 
> this
>
>  '(org-babel-lob-files (quote 
>  ("~/org/worg/library-of-babel.org")))
>
> in my init.el's custom-set-variables not getting handled? I 
> always have to
> do an org-babel-lob-ingest to actually get library-of-babel.org 
> loaded.
>
> On Fri, Apr 6, 2018 at 10:38 PM, Berry, Charles 
> <ccberry@ucsd.edu> wrote:
>
>>
>>
>> > On Apr 6, 2018, at 4:59 PM, Thomas S. Dye <tsd@tsdye.com> 
>> > wrote:
>> >
>>
>> [Tom's response covering the main issues deleted]
>>
>> > hth,
>> > Tom
>> >
>> > Lawrence Bottorff writes:
>> >
>> >> I guess I need more information. For example, what is C-c 
>> >> C-v v doing
>> >> exactly? Then C-x C-e? And  M-x (symbol-function 
>> >> 'myelsquare) doesn't
>> work.
>>
>>
>> `C-h k' is really your friend here. If you do not know it, try 
>> typing it
>> twice `C-h k C-h k'.
>>
>> As for the specific keystrokes mentioned above:
>>
>> ,----[ C-h k C-c C-v v ]
>> | C-c C-v v runs the command org-babel-expand-src-block (found 
>> in
>> | org-mode-map), which is an interactive autoloaded compiled 
>> Lisp
>> | function in ‘ob-core.el’.
>> |
>> | It is bound to C-c C-v v, C-c C-v C-v.
>> |
>> | (org-babel-expand-src-block &optional ARG INFO PARAMS)
>> |
>> | Expand the current source code block.
>> | Expand according to the source code block’s header
>> | arguments and pop open the results in a preview buffer.
>> |
>> | [back]
>> `----
>>
>> In your case, it shows that the `mtelsquare' src block expands 
>> to:
>>
>>
>> ,----
>> | (let ((x (quote 0)))
>> | (defun myelsquare (x)
>> |   (* x x))
>> | )
>> `----
>>
>>
>> ,----[ C-h k C-x C-e ]
>> | C-x C-e runs the command eval-last-sexp (found in 
>> global-map), which
>> | is an interactive compiled Lisp function in ‘elisp-mode.el’.
>> |
>> | It is bound to C-x C-e.
>> |
>> | (eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
>> |
>> | Evaluate sexp before point; print value in the echo area.
>> | Interactively, with prefix argument, print output into 
>> current buffer.
>> |
>> | Normally, this function truncates long output according to 
>> the value
>> | of the variables ‘eval-expression-print-length’ and
>> | ‘eval-expression-print-level’.  With a prefix argument of 
>> zero,
>> | however, there is no such truncation.  Such a prefix argument
>> | also causes integers to be printed in several additional 
>> formats
>> | (octal, hexadecimal, and character).
>> |
>> | If ‘eval-expression-debug-on-error’ is non-nil, which is the 
>> default,
>> | this command arranges for all errors to enter the debugger.
>> |
>> | [back]
>> `----
>>
>> So with point at the end of the preview buffer for myelsquare 
>> (which has
>> one `let' expression it it) it has the same effect as running
>> `eval-buffer'. viz, the elisp function `myelsquare' is created.
>>
>> If you have gotten this far, there is an lisp function called 
>> `myelsquare'
>> and the `symbol-function' expression will return its value when 
>> properly
>> `eval'ed. I misspoke before. I should have said
>>
>>         M-: (symbol-function 'myelsquare) RET
>>
>> And that value is `(lambda (x) (* x x))'. Which simply shows 
>> you have
>> defun'ed a function and what it is.
>>
>> Once you have an elisp function, the natural way to call it is
>> src_emacs-lisp{(myelsquare 1.5)}.
>>
>> One thing you can do with LOB blocks is use them in header args 
>> of src
>> blocks just as you would use calls to ordinary src blocks.
>>
>> HTH,
>>
>> Chuck
>>
>>
>>


--
Thomas S. Dye
http://www.tsdye.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-10 19:26           ` Thomas S. Dye
@ 2018-04-11 13:29             ` Lawrence Bottorff
  2018-04-11 16:57               ` Thomas S. Dye
  2018-04-11 18:20               ` Berry, Charles
  0 siblings, 2 replies; 12+ messages in thread
From: Lawrence Bottorff @ 2018-04-11 13:29 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: emacs-orgmode Mailinglist, Berry, Charles

[-- Attachment #1: Type: text/plain, Size: 4097 bytes --]

I'll try that, Thomas, but this was set up by simply doing the on-board
customize, i.e., it needs to have this corrected. So how do I request this
correction?

On Tue, Apr 10, 2018 at 3:26 PM, Thomas S. Dye <tsd@tsdye.com> wrote:

> Aloha Lawrence,
>
> You probably want (org-babel-lob-ingest &optional FILE)
>
> All the best,
> Tom
>
>
> Lawrence Bottorff writes:
>
> Thanks for the help. However, one mystery still remains: Why is this
>>
>>  '(org-babel-lob-files (quote  ("~/org/worg/library-of-babel.org")))
>>
>> in my init.el's custom-set-variables not getting handled? I always have to
>> do an org-babel-lob-ingest to actually get library-of-babel.org loaded.
>>
>> On Fri, Apr 6, 2018 at 10:38 PM, Berry, Charles <ccberry@ucsd.edu> wrote:
>>
>>
>>>
>>> > On Apr 6, 2018, at 4:59 PM, Thomas S. Dye <tsd@tsdye.com> > wrote:
>>> >
>>>
>>> [Tom's response covering the main issues deleted]
>>>
>>> > hth,
>>> > Tom
>>> >
>>> > Lawrence Bottorff writes:
>>> >
>>> >> I guess I need more information. For example, what is C-c >> C-v v
>>> doing
>>> >> exactly? Then C-x C-e? And  M-x (symbol-function >> 'myelsquare)
>>> doesn't
>>> work.
>>>
>>>
>>> `C-h k' is really your friend here. If you do not know it, try typing it
>>> twice `C-h k C-h k'.
>>>
>>> As for the specific keystrokes mentioned above:
>>>
>>> ,----[ C-h k C-c C-v v ]
>>> | C-c C-v v runs the command org-babel-expand-src-block (found in
>>> | org-mode-map), which is an interactive autoloaded compiled Lisp
>>> | function in ‘ob-core.el’.
>>> |
>>> | It is bound to C-c C-v v, C-c C-v C-v.
>>> |
>>> | (org-babel-expand-src-block &optional ARG INFO PARAMS)
>>> |
>>> | Expand the current source code block.
>>> | Expand according to the source code block’s header
>>> | arguments and pop open the results in a preview buffer.
>>> |
>>> | [back]
>>> `----
>>>
>>> In your case, it shows that the `mtelsquare' src block expands to:
>>>
>>>
>>> ,----
>>> | (let ((x (quote 0)))
>>> | (defun myelsquare (x)
>>> |   (* x x))
>>> | )
>>> `----
>>>
>>>
>>> ,----[ C-h k C-x C-e ]
>>> | C-x C-e runs the command eval-last-sexp (found in global-map), which
>>> | is an interactive compiled Lisp function in ‘elisp-mode.el’.
>>> |
>>> | It is bound to C-x C-e.
>>> |
>>> | (eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
>>> |
>>> | Evaluate sexp before point; print value in the echo area.
>>> | Interactively, with prefix argument, print output into current buffer.
>>> |
>>> | Normally, this function truncates long output according to the value
>>> | of the variables ‘eval-expression-print-length’ and
>>> | ‘eval-expression-print-level’.  With a prefix argument of zero,
>>> | however, there is no such truncation.  Such a prefix argument
>>> | also causes integers to be printed in several additional formats
>>> | (octal, hexadecimal, and character).
>>> |
>>> | If ‘eval-expression-debug-on-error’ is non-nil, which is the default,
>>> | this command arranges for all errors to enter the debugger.
>>> |
>>> | [back]
>>> `----
>>>
>>> So with point at the end of the preview buffer for myelsquare (which has
>>> one `let' expression it it) it has the same effect as running
>>> `eval-buffer'. viz, the elisp function `myelsquare' is created.
>>>
>>> If you have gotten this far, there is an lisp function called
>>> `myelsquare'
>>> and the `symbol-function' expression will return its value when properly
>>> `eval'ed. I misspoke before. I should have said
>>>
>>>         M-: (symbol-function 'myelsquare) RET
>>>
>>> And that value is `(lambda (x) (* x x))'. Which simply shows you have
>>> defun'ed a function and what it is.
>>>
>>> Once you have an elisp function, the natural way to call it is
>>> src_emacs-lisp{(myelsquare 1.5)}.
>>>
>>> One thing you can do with LOB blocks is use them in header args of src
>>> blocks just as you would use calls to ordinary src blocks.
>>>
>>> HTH,
>>>
>>> Chuck
>>>
>>>
>>>
>>>
>
> --
> Thomas S. Dye
> http://www.tsdye.com
>

[-- Attachment #2: Type: text/html, Size: 5260 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-11 13:29             ` Lawrence Bottorff
@ 2018-04-11 16:57               ` Thomas S. Dye
  2018-04-11 18:20               ` Berry, Charles
  1 sibling, 0 replies; 12+ messages in thread
From: Thomas S. Dye @ 2018-04-11 16:57 UTC (permalink / raw)
  To: Lawrence Bottorff; +Cc: emacs-orgmode Mailinglist, Berry, Charles

Aloha Lawrence,

Lawrence Bottorff writes:

> I'll try that, Thomas, but this was set up by simply doing the 
> on-board
> customize, i.e., it needs to have this corrected. So how do I 
> request this
> correction?

There are instructions here:

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

You'll need to indicate which customization option you've set and 
what you expected to happen vs. what actually happened.

I don't use customize and am not familiar with it, but when I 
looked through the Babel section this morning I didn't find an 
option to ingest a library of babel.  Perhaps I missed it, or it 
is found somewhere else?

All the best,
Tom

>
> On Tue, Apr 10, 2018 at 3:26 PM, Thomas S. Dye <tsd@tsdye.com> 
> wrote:
>
>> Aloha Lawrence,
>>
>> You probably want (org-babel-lob-ingest &optional FILE)
>>
>> All the best,
>> Tom
>>
>>
>> Lawrence Bottorff writes:
>>
>> Thanks for the help. However, one mystery still remains: Why is 
>> this
>>>
>>>  '(org-babel-lob-files (quote 
>>>  ("~/org/worg/library-of-babel.org")))
>>>
>>> in my init.el's custom-set-variables not getting handled? I 
>>> always have to
>>> do an org-babel-lob-ingest to actually get 
>>> library-of-babel.org loaded.
>>>
>>> On Fri, Apr 6, 2018 at 10:38 PM, Berry, Charles 
>>> <ccberry@ucsd.edu> wrote:
>>>
>>>
>>>>
>>>> > On Apr 6, 2018, at 4:59 PM, Thomas S. Dye <tsd@tsdye.com> > 
>>>> > wrote:
>>>> >
>>>>
>>>> [Tom's response covering the main issues deleted]
>>>>
>>>> > hth,
>>>> > Tom
>>>> >
>>>> > Lawrence Bottorff writes:
>>>> >
>>>> >> I guess I need more information. For example, what is C-c 
>>>> >> >> C-v v
>>>> doing
>>>> >> exactly? Then C-x C-e? And  M-x (symbol-function >> 
>>>> >> 'myelsquare)
>>>> doesn't
>>>> work.
>>>>
>>>>
>>>> `C-h k' is really your friend here. If you do not know it, 
>>>> try typing it
>>>> twice `C-h k C-h k'.
>>>>
>>>> As for the specific keystrokes mentioned above:
>>>>
>>>> ,----[ C-h k C-c C-v v ]
>>>> | C-c C-v v runs the command org-babel-expand-src-block 
>>>> (found in
>>>> | org-mode-map), which is an interactive autoloaded compiled 
>>>> Lisp
>>>> | function in ‘ob-core.el’.
>>>> |
>>>> | It is bound to C-c C-v v, C-c C-v C-v.
>>>> |
>>>> | (org-babel-expand-src-block &optional ARG INFO PARAMS)
>>>> |
>>>> | Expand the current source code block.
>>>> | Expand according to the source code block’s header
>>>> | arguments and pop open the results in a preview buffer.
>>>> |
>>>> | [back]
>>>> `----
>>>>
>>>> In your case, it shows that the `mtelsquare' src block 
>>>> expands to:
>>>>
>>>>
>>>> ,----
>>>> | (let ((x (quote 0)))
>>>> | (defun myelsquare (x)
>>>> |   (* x x))
>>>> | )
>>>> `----
>>>>
>>>>
>>>> ,----[ C-h k C-x C-e ]
>>>> | C-x C-e runs the command eval-last-sexp (found in 
>>>> global-map), which
>>>> | is an interactive compiled Lisp function in 
>>>> ‘elisp-mode.el’.
>>>> |
>>>> | It is bound to C-x C-e.
>>>> |
>>>> | (eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
>>>> |
>>>> | Evaluate sexp before point; print value in the echo area.
>>>> | Interactively, with prefix argument, print output into 
>>>> current buffer.
>>>> |
>>>> | Normally, this function truncates long output according to 
>>>> the value
>>>> | of the variables ‘eval-expression-print-length’ and
>>>> | ‘eval-expression-print-level’.  With a prefix argument of 
>>>> zero,
>>>> | however, there is no such truncation.  Such a prefix 
>>>> argument
>>>> | also causes integers to be printed in several additional 
>>>> formats
>>>> | (octal, hexadecimal, and character).
>>>> |
>>>> | If ‘eval-expression-debug-on-error’ is non-nil, which is 
>>>> the default,
>>>> | this command arranges for all errors to enter the debugger.
>>>> |
>>>> | [back]
>>>> `----
>>>>
>>>> So with point at the end of the preview buffer for myelsquare 
>>>> (which has
>>>> one `let' expression it it) it has the same effect as running
>>>> `eval-buffer'. viz, the elisp function `myelsquare' is 
>>>> created.
>>>>
>>>> If you have gotten this far, there is an lisp function called
>>>> `myelsquare'
>>>> and the `symbol-function' expression will return its value 
>>>> when properly
>>>> `eval'ed. I misspoke before. I should have said
>>>>
>>>>         M-: (symbol-function 'myelsquare) RET
>>>>
>>>> And that value is `(lambda (x) (* x x))'. Which simply shows 
>>>> you have
>>>> defun'ed a function and what it is.
>>>>
>>>> Once you have an elisp function, the natural way to call it 
>>>> is
>>>> src_emacs-lisp{(myelsquare 1.5)}.
>>>>
>>>> One thing you can do with LOB blocks is use them in header 
>>>> args of src
>>>> blocks just as you would use calls to ordinary src blocks.
>>>>
>>>> HTH,
>>>>
>>>> Chuck
>>>>
>>>>
>>>>
>>>>
>>
>> --
>> Thomas S. Dye
>> http://www.tsdye.com
>>


--
Thomas S. Dye
http://www.tsdye.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Library of Babel confusion
  2018-04-11 13:29             ` Lawrence Bottorff
  2018-04-11 16:57               ` Thomas S. Dye
@ 2018-04-11 18:20               ` Berry, Charles
  1 sibling, 0 replies; 12+ messages in thread
From: Berry, Charles @ 2018-04-11 18:20 UTC (permalink / raw)
  To: Lawrence Bottorff; +Cc: emacs-orgmode Mailinglist



> On Apr 11, 2018, at 6:29 AM, Lawrence Bottorff <borgauf@gmail.com> wrote:
> 
> I'll try that, Thomas, but this was set up by simply doing the on-board customize, i.e., it needs to have this corrected. So how do I request this correction?

The idiom Tom gave you is correct. There are no variables for you to handle yourself - it all happens under the hood.

Chuck

> 
> On Tue, Apr 10, 2018 at 3:26 PM, Thomas S. Dye <tsd@tsdye.com> wrote:
> Aloha Lawrence,
> 
> You probably want (org-babel-lob-ingest &optional FILE)
> 
> All the best,
> Tom
> 
> 
> Lawrence Bottorff writes:
> 
> Thanks for the help. However, one mystery still remains: Why is this
> 
>  '(org-babel-lob-files (quote  ("~/org/worg/library-of-babel.org")))
> 
> in my init.el's custom-set-variables not getting handled? I always have to
> do an org-babel-lob-ingest to actually get library-of-babel.org loaded.
> 
> On Fri, Apr 6, 2018 at 10:38 PM, Berry, Charles <ccberry@ucsd.edu> wrote:
> 
> 
> 
> > On Apr 6, 2018, at 4:59 PM, Thomas S. Dye <tsd@tsdye.com> > wrote:
> >
> 
> [Tom's response covering the main issues deleted]
> 
> > hth,
> > Tom
> >
> > Lawrence Bottorff writes:
> >
> >> I guess I need more information. For example, what is C-c >> C-v v doing
> >> exactly? Then C-x C-e? And  M-x (symbol-function >> 'myelsquare) doesn't
> work.
> 
> 
> `C-h k' is really your friend here. If you do not know it, try typing it
> twice `C-h k C-h k'.
> 
> As for the specific keystrokes mentioned above:
> 
> ,----[ C-h k C-c C-v v ]
> | C-c C-v v runs the command org-babel-expand-src-block (found in
> | org-mode-map), which is an interactive autoloaded compiled Lisp
> | function in ‘ob-core.el’.
> |
> | It is bound to C-c C-v v, C-c C-v C-v.
> |
> | (org-babel-expand-src-block &optional ARG INFO PARAMS)
> |
> | Expand the current source code block.
> | Expand according to the source code block’s header
> | arguments and pop open the results in a preview buffer.
> |
> | [back]
> `----
> 
> In your case, it shows that the `mtelsquare' src block expands to:
> 
> 
> ,----
> | (let ((x (quote 0)))
> | (defun myelsquare (x)
> |   (* x x))
> | )
> `----
> 
> 
> ,----[ C-h k C-x C-e ]
> | C-x C-e runs the command eval-last-sexp (found in global-map), which
> | is an interactive compiled Lisp function in ‘elisp-mode.el’.
> |
> | It is bound to C-x C-e.
> |
> | (eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
> |
> | Evaluate sexp before point; print value in the echo area.
> | Interactively, with prefix argument, print output into current buffer.
> |
> | Normally, this function truncates long output according to the value
> | of the variables ‘eval-expression-print-length’ and
> | ‘eval-expression-print-level’.  With a prefix argument of zero,
> | however, there is no such truncation.  Such a prefix argument
> | also causes integers to be printed in several additional formats
> | (octal, hexadecimal, and character).
> |
> | If ‘eval-expression-debug-on-error’ is non-nil, which is the default,
> | this command arranges for all errors to enter the debugger.
> |
> | [back]
> `----
> 
> So with point at the end of the preview buffer for myelsquare (which has
> one `let' expression it it) it has the same effect as running
> `eval-buffer'. viz, the elisp function `myelsquare' is created.
> 
> If you have gotten this far, there is an lisp function called `myelsquare'
> and the `symbol-function' expression will return its value when properly
> `eval'ed. I misspoke before. I should have said
> 
>         M-: (symbol-function 'myelsquare) RET
> 
> And that value is `(lambda (x) (* x x))'. Which simply shows you have
> defun'ed a function and what it is.
> 
> Once you have an elisp function, the natural way to call it is
> src_emacs-lisp{(myelsquare 1.5)}.
> 
> One thing you can do with LOB blocks is use them in header args of src
> blocks just as you would use calls to ordinary src blocks.
> 
> HTH,
> 
> Chuck
> 
> 
> 
> 
> 
> --
> Thomas S. Dye
> http://www.tsdye.com
> 


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2018-04-11 21:33 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-03 20:31 Library of Babel confusion Lawrence Bottorff
2018-04-03 20:44 ` Nicolas Goaziou
2018-04-04 22:52   ` Lawrence Bottorff
2018-04-03 21:39 ` Berry, Charles
2018-04-06 22:15   ` Lawrence Bottorff
2018-04-06 23:59     ` Thomas S. Dye
2018-04-07  2:38       ` Berry, Charles
2018-04-10 18:55         ` Lawrence Bottorff
2018-04-10 19:26           ` Thomas S. Dye
2018-04-11 13:29             ` Lawrence Bottorff
2018-04-11 16:57               ` Thomas S. Dye
2018-04-11 18:20               ` Berry, Charles

Code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).