On Sat, Jul 23, 2016 at 1:24 AM, Michael Welle <mwe012...@gmx.net> wrote:

> Hello,
>
> Matt Price <mopto...@gmail.com> writes:
>
> > On Fri, Jul 22, 2016 at 1:54 PM, Michael Welle <mwe012...@gmx.net>
> wrote:
> >
> >> Hello,
> >>
> >> Matt Price <mopto...@gmail.com> writes:
> >>
> >> > On Fri, Jul 22, 2016 at 11:38 AM, Matt Price <mopto...@gmail.com>
> wrote:
> >> >
> >> >>
> >> >> (2) Is it possible to set the default value for interactive file
> >> selection
> >> >> to something OTHER than the currect directory of the current buffer?
> >> >> Something like:
> >> >>
> >> >> (let
> >> >>   ((base-dir "./Assignment1/"))
> >> >>   (org-attach--attach))
> >> >>
> >> >> I'd like to set different base directories when attaching files to
> >> >> subtrees of different first-level trees in a buffer. I guess I would
> set
> >> >> the value for the base directory with a property.
> >> >>
> >> >
> >> > OK, I made some progress on this:
> >> >
> >> > (let ((default-directory  (concat default-directory "Assignment1/") ))
> >> > (call-interactively 'org-attach-attach))
> >> >
> >> > However, I'd like to do something like:
> >> >
> >> > (let
> >> >     ((parent-basedir nil))
> >> >   (save-excursion
> >> >     (outline-up-heading)
> >> >     (setq parent-basedir (org-get-entry "BASEDIR")))
> >> >   (let
> >> >       ((default-directory (concat default-directory parent-basedir) ))
> >> >     (call-interactively 'org-attach-attach  )))
> >> >
> >> >
> >> >
> >> > But there are errors I don't understand in this code. Any hints?
> Thanks
> >> > again!
> >> well, I guess the errors are too secret to share them with us? The first
> >> I can see is that org-get-entry doesn't need parameters. And the overall
> >> structure looks strange, but that could be just me ;).
> >>
> >> :-( No, they're not too secret, I just have a terrible head cold and can
> > hardly think, so didn't think to include it!
> don't worry and get well soon ;).
>
>
> > The overall structure feels strange to me -- I just want a way of
> retaining
> > a temprary variable value in a let that also includes a temporary
> excursion
> > to the parent node. More on that shortly.
> >
> >
> >> The reason for the current behaviour is the interactive form of
> >> org-attach-attach. Ad hoc I have no idea how to change that. What I
> >> would try is to (cd your-wanted-dir) before calling org-attach-attach.
> >> Maybe a bit of cleanup if useful after calling the function.
> >>
> >
> > So it turns out  that, like most interactive functions, org-attach-attach
> > uses the built-in read-file-name macro, which relies on the value of
> > "default-directory", which is buffer-local. By calling org-attach-attach
> > from inside a let statement, I can get the behaviour I want:
> > (let
> >   ((default-directory (concat default-directory "Galileo/")))
> >   (org-attach-attach))
> That makes sense.
>
>
> >  The problem now is that I need to access a property from the parent node
> > in order ot dynamically set the appropriate value for default-directory,
> > and I'm struggling to do that.
> >
> > Here is a minimal test file:
> >
> > * Galileo :ASSIGNMENT:
> > :PROPERTIES:
> > :BASEDIR:  Galileo
> > :END:
> >
> >
> > ** testing
> >
> > #+BEGIN_SRC emacs-lisp
> >   (let
> >       ((parent-basedir nil))
> >     (save-excursion
> >       (outline-up-heading)
> >       (setq parent-basedir (org-entry-get (point) "BASEDIR"))
> >       (message parent-basedir))
> >     (let
> >         ((default-directory (concat default-directory parent-basedir) ))
> >       (call-interactively 'org-attach-attach  )))
> > #+END_SRC
> I use Emacs 25 and there outline-up-heading uses a mandatory
> parameter. I changed that to (outline-up-heading 1).
>
>
> > This seems to work but so far I'm having issues actually opening the
> > attachment.  This may be due to the way that org-attach constructs links
> to
> > attachments (I prefer not to copy, as my disk space is limited).
> I haven't used attachments before, so I'm not sure what to expect. But if
> I use the code from above, I get the attachment related properties, as you
> said. Next I do M-x org-attach o and I get prompted for the attachment,
> which isn't right I think. The reason is IMO, that org-attach-open
> searches the attachment below the default-directory, not in the changed
> path. So, if the default-directory is /tmp, it searches /tmp/data/$ID,
> not /tmp/Galileo/date/$ID. Thinking about it that makes sense, somehow ;).
>
> So it looks like the are several more places where 'cheating' is needed
> to make this work.
>
Yes. Looks like I wold need to rewrite org-attach-attach and bind to my new
function; that feels hard so I've sort of given up on it for now.

>
>
> > Anyway, thanks for your help; this seems to be getting closer, despite
> what
> > feels like substantial mental impairment due to increased cranial
> pressure
> > (ouch!)
> I can feel your pain. Last week I had something that could have been an
> inflammation of the middle ear or something like that. For two nights it
> felt like my ear and the associated part of the head will explode. One
> don't need that too often ;).
>
> FINALLY getting better! thank you!
sorry ofr the longdelay. If I don get around to rewriting org-attach-attach
I'll report back.

Reply via email to