Re: [O] generating org headings from a source block

2015-11-10 Thread Matt Price
On Tue, Nov 10, 2015 at 11:16 AM, Nick Dokos  wrote:

>
> > Pass the level as a parameter?
> >
> > Can I pass the level of the current heading as a parameter, e.g.:
> >
> > where obviously CURRENT-ORG-LEVEL is some function I don't know how to
> access?
> >
>
> You can at the very least set the level manually:
>
> #+BEGIN_SRC elisp :results output raw :var level=3
> ...
>
> by just eyeballing where the source block is in your file.
> I think that's easy and does not require any programming.
> You just have to remember to change the level when you cut
> and paste the code block to other places.
>
> There is org-current-level though if you want to go that way.
>
> :var level=(1+ (org-current-level))
works great.  Thank you Nick!


Re: [O] generating org headings from a source block

2015-11-10 Thread Nick Dokos
Matt Price  writes:

> > also, (c): I'd rather set the level of the org heading based on 
> context. Can I do that when I call
> from
> > a source block? Should I maybe be doing this some other way (e.g., jsut 
> write an interactive
> function
> > and call it with M-x? But I like being able to assemble all the 
> readings at one go, if possible. 
> >
>
> Pass the level as a parameter?
>
> Can I pass the level of the current heading as a parameter, e.g.:
>  
>
> where obviously CURRENT-ORG-LEVEL is some function I don't know how to access?
>

You can at the very least set the level manually:

#+BEGIN_SRC elisp :results output raw :var level=3
...

by just eyeballing where the source block is in your file.
I think that's easy and does not require any programming.
You just have to remember to change the level when you cut
and paste the code block to other places.

There is org-current-level though if you want to go that way.

--
Nick




Re: [O] generating org headings from a source block

2015-11-10 Thread Matt Price
On Mon, Nov 9, 2015 at 4:57 PM, Nick Dokos  wrote:

> Matt Price  writes:
>
> > I would like to be able to insert into an org-buffer the text extracted
> from a pdf file. PDF-Tools (
> > https://github.com/politza/pdf-tools/) provides some excellent tools
> for doing this.  I've written
> > (well, msotly stolen) a defun that finds all my highlights and returns
> them in the form of an org
> > heading:
> >
> > (defun pdf-annot-export-as-org-heading (pdfpath)
> >   ...)
> > -
> >
> > I'm sure it is very clumsy, but it sort of works.  I would like to be
> able to call this function from a
> > source block:
> >
> > #+BEGIN_SRC elisp
> > (pdf-annot-export-as-org-heading
> "/home/matt/HackingHistory/readings/latour-pandoras-hope.pdf")
> > (pdf-annot-export-as-org-heading
> "/home/matt/HackingHistory/readings/historical-authority-hampton.pdf")
> > #+END_SRC
> >
> > The results are close to, but not precisely, what I want:
> >
> > #+RESULTS:
> > #+begin_example
> > ** historical-authority-hampton
> >
> >
>  
> ([[file:///home/matt/HackingHistory/readings/historical-authority-hampton.pdf]
> > [historical-authority-hampton]], 1)
> >
> > In the Tudor palace at Hampton Court, there is a
> > ...
> > #+end_example
> >
> > (a) I only get the last command, because I guess :results value only
> reports the final returned value.
> > But :results output gets me nothing.  What should I be doing?
>
> Have two source blocks? Or use :results output and output the string with
> (princ string)?
>

I ended up with this.  It's not so bad, Though I use it enough that I
should probably just define another function. Also, I'm interested in how 2
source blocks would have worked...

#+BEGIN_SRC elisp :results output raw
  (let ((sources '(

"/home/matt/HackingHistory/readings/Troper-becoming-immigrant-city.pdf"
"/home/matt/HackingHistory/readings/historical-authority-hampton.pdf"))
(output ""))
(dolist (thispdf sources)
  (message "this pdf is: %s" thispdf)
  (setq output (concat output (pdf-annot-markups-as-org-text thispdf

(princ output))
#+END_SRC


>
> > (b) the whole output is wrapped in an example block, which I don't
> want.  Can I do something to fix
> > this?
>
> Maybe :results value raw  or :results value verbatim - untested. I can
> never remember the right combo off the top of my head.
>

:results value raw works -- thank you!

>
> > also, (c): I'd rather set the level of the org heading based on context.
> Can I do that when I call from
> > a source block? Should I maybe be doing this some other way (e.g., jsut
> write an interactive function
> > and call it with M-x? But I like being able to assemble all the readings
> at one go, if possible.
> >
>
> Pass the level as a parameter?
>

Can I pass the level of the current heading as a parameter, e.g.:
 #+BEGIN_SRC elisp :results output raw :var level=(1+ CURRENT-ORG-LEVEL)

where obviously CURRENT-ORG-LEVEL is some function I don't know how to
access?

Many thanks for your help, Nick!

>
> --
> Nick
>
>
>
>
>


Re: [O] generating org headings from a source block

2015-11-09 Thread Nick Dokos
Matt Price  writes:

> I would like to be able to insert into an org-buffer the text extracted from 
> a pdf file. PDF-Tools (
> https://github.com/politza/pdf-tools/) provides some excellent tools for 
> doing this.  I've written
> (well, msotly stolen) a defun that finds all my highlights and returns them 
> in the form of an org
> heading:
>
> (defun pdf-annot-export-as-org-heading (pdfpath)
>   ...)
> -
>
> I'm sure it is very clumsy, but it sort of works.  I would like to be able to 
> call this function from a
> source block:
>
> #+BEGIN_SRC elisp
> (pdf-annot-export-as-org-heading 
> "/home/matt/HackingHistory/readings/latour-pandoras-hope.pdf")
> (pdf-annot-export-as-org-heading 
> "/home/matt/HackingHistory/readings/historical-authority-hampton.pdf")
> #+END_SRC
>
> The results are close to, but not precisely, what I want:
>
> #+RESULTS:
> #+begin_example
> ** historical-authority-hampton
>
>  
> ([[file:///home/matt/HackingHistory/readings/historical-authority-hampton.pdf]
> [historical-authority-hampton]], 1)
>
> In the Tudor palace at Hampton Court, there is a
> ...
> #+end_example
>
> (a) I only get the last command, because I guess :results value only reports 
> the final returned value.
> But :results output gets me nothing.  What should I be doing?

Have two source blocks? Or use :results output and output the string with 
(princ string)?

> (b) the whole output is wrapped in an example block, which I don't want.  Can 
> I do something to fix
> this?

Maybe :results value raw  or :results value verbatim - untested. I can
never remember the right combo off the top of my head.

> also, (c): I'd rather set the level of the org heading based on context. Can 
> I do that when I call from
> a source block? Should I maybe be doing this some other way (e.g., jsut write 
> an interactive function
> and call it with M-x? But I like being able to assemble all the readings at 
> one go, if possible. 
>

Pass the level as a parameter?

--
Nick






[O] generating org headings from a source block

2015-11-09 Thread Matt Price
I would like to be able to insert into an org-buffer the text extracted
from a pdf file. PDF-Tools (https://github.com/politza/pdf-tools/) provides
some excellent tools for doing this.  I've written (well, msotly stolen) a
defun that finds all my highlights and returns them in the form of an org
heading:

(defun pdf-annot-export-as-org-heading (pdfpath)
  "Acquire highlight annotations as text, and insert into existing buffer
as org heading"
  (interactive)
  (let ((outputstring "")

)
(save-excursion
  (find-file pdfpath)
  (let (
(annots (sort (pdf-annot-getannots nil (list 'highlight)  nil)
'pdf-annot-compare-annotations))
(filename (format "%s.org"
  (file-name-sans-extension
   (buffer-name
(linktext (concat "[[file://" (buffer-file-name)
  "][" (file-name-sans-extension (buffer-name))
"]]" )))
  (setq outputstring (concat "** " (file-name-sans-extension
(buffer-name)) "\n\n"))

  ;; (insert (concat "#+TITLE: Notes for " (file-name-sans-extension
filename)))
  ;; (org-insert-heading-respect-content)
  ;; (insert (file-name-sans-extension filename))
  (mapc
   (lambda (annot) ;; traverse all annotations
 (message "%s" annot)
 (let ((page (assoc-default 'page annot))
   (text (assoc-default 'subject annot))
   )
   ;;(insert (concat "\n" text " (" linktext ", " (number-to-string
page) ")\n"))
   (setq outputstring (concat outputstring text " (" linktext ", "
(number-to-string page) ")\n\n"))
   )
 )
   annots)
  ))
;;(write-file filename t)
outputstring
))

-

I'm sure it is very clumsy, but it sort of works.  I would like to be able
to call this function from a source block:

#+BEGIN_SRC elisp
(pdf-annot-export-as-org-heading
"/home/matt/HackingHistory/readings/latour-pandoras-hope.pdf")
(pdf-annot-export-as-org-heading
"/home/matt/HackingHistory/readings/historical-authority-hampton.pdf")
#+END_SRC

The results are close to, but not precisely, what I want:

#+RESULTS:
#+begin_example
** historical-authority-hampton

 
([[file:///home/matt/HackingHistory/readings/historical-authority-hampton.pdf][historical-authority-hampton]],
1)

In the Tudor palace at Hampton Court, there is a
...
#+end_example

(a) I only get the last command, because I guess :results value only
reports the final returned value. But :results output gets me nothing.
What should I be doing?
(b) the whole output is wrapped in an example block, which I don't want.
Can I do something to fix this?
also, (c): I'd rather set the level of the org heading based on context.
Can I do that when I call from a source block? Should I maybe be doing this
some other way (e.g., jsut write an interactive function and call it with
M-x? But I like being able to assemble all the readings at one go, if
possible.

Thanks as always,
Matt