all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* How to get the directory of a package?
@ 2021-02-03  4:50 Marcin Borkowski
  2021-02-03  4:55 ` Marcin Borkowski
  0 siblings, 1 reply; 4+ messages in thread
From: Marcin Borkowski @ 2021-02-03  4:50 UTC (permalink / raw
  To: Help Gnu Emacs mailing list

Hello,

assume that I'm writing a package which wants to use a file from the
same directory the .el (or .elc) file of the package is located in.  How
can the package know where in the filesystem it is located?

Bonus points for a method which works not only with `require', but also
with `load-file' and `eval-buffer' (in the last case,
`default-directory' will probably work, but I skimmed through all
variables and functions matching `directory$' and nothing seemed to be
what I'm looking for).

TIA,

-- 
Marcin Borkowski
http://mbork.pl



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

* Re: How to get the directory of a package?
  2021-02-03  4:50 How to get the directory of a package? Marcin Borkowski
@ 2021-02-03  4:55 ` Marcin Borkowski
  2021-02-03  5:02   ` Stefan Monnier
  2021-02-03  5:14   ` Eric Abrahamsen
  0 siblings, 2 replies; 4+ messages in thread
From: Marcin Borkowski @ 2021-02-03  4:55 UTC (permalink / raw
  To: Help Gnu Emacs mailing list

OK,

> assume that I'm writing a package which wants to use a file from the
> same directory the .el (or .elc) file of the package is located in.  How
> can the package know where in the filesystem it is located?
>
> Bonus points for a method which works not only with `require', but also
> with `load-file' and `eval-buffer' (in the last case,
> `default-directory' will probably work, but I skimmed through all
> variables and functions matching `directory$' and nothing seemed to be
> what I'm looking for).

so I think I've found the answer.  Is this correct?  Are there possibly
some edge cases I didn't think about?

--8<---------------cut here---------------start------------->8---
(if load-file-name
    (file-name-directory load-file-name)
  default-directory)
--8<---------------cut here---------------end--------------->8---

TIA,

--
Marcin Borkowski
http://mbork.pl



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

* Re: How to get the directory of a package?
  2021-02-03  4:55 ` Marcin Borkowski
@ 2021-02-03  5:02   ` Stefan Monnier
  2021-02-03  5:14   ` Eric Abrahamsen
  1 sibling, 0 replies; 4+ messages in thread
From: Stefan Monnier @ 2021-02-03  5:02 UTC (permalink / raw
  To: help-gnu-emacs

> (if load-file-name
>     (file-name-directory load-file-name)
>   default-directory)

That looks right to me,


        Stefan




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

* Re: How to get the directory of a package?
  2021-02-03  4:55 ` Marcin Borkowski
  2021-02-03  5:02   ` Stefan Monnier
@ 2021-02-03  5:14   ` Eric Abrahamsen
  1 sibling, 0 replies; 4+ messages in thread
From: Eric Abrahamsen @ 2021-02-03  5:14 UTC (permalink / raw
  To: Marcin Borkowski; +Cc: Help Gnu Emacs mailing list

Marcin Borkowski <mbork@mbork.pl> writes:

> OK,
>
>> assume that I'm writing a package which wants to use a file from the
>> same directory the .el (or .elc) file of the package is located in.  How
>> can the package know where in the filesystem it is located?
>>
>> Bonus points for a method which works not only with `require', but also
>> with `load-file' and `eval-buffer' (in the last case,
>> `default-directory' will probably work, but I skimmed through all
>> variables and functions matching `directory$' and nothing seemed to be
>> what I'm looking for).
>
> so I think I've found the answer.  Is this correct?  Are there possibly
> some edge cases I didn't think about?
>
> (if load-file-name
>     (file-name-directory load-file-name)
>   default-directory)

I stole the following bit of code to find "this file" from 'ert-x, it
was a bit of cargo-culting as I'm not entirely sure when/how the various
conditions would be true:

(or (bound-and-true-p byte-compile-current-file)
    (and load-in-progress load-file-name)
    buffer-file-name)

Might be helpful?



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

end of thread, other threads:[~2021-02-03  5:14 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-03  4:50 How to get the directory of a package? Marcin Borkowski
2021-02-03  4:55 ` Marcin Borkowski
2021-02-03  5:02   ` Stefan Monnier
2021-02-03  5:14   ` Eric Abrahamsen

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.