unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Omar Polo <op@omarpolo.com>
To: wael-zwaiter@gmx.com
Cc: help-gnu-emacs@gnu.org
Subject: Re: Elisp - Store path only once
Date: Sat, 09 Jan 2021 12:53:11 +0100	[thread overview]
Message-ID: <B52F836E-7C27-4A0E-A9B5-D7CE99106087@omarpolo.com> (raw)
In-Reply-To: <trinity-b956dd32-65bd-41f9-bdef-971499bf34bf-1610191857231@3c-app-mailcom-bs15>

On 9 January 2021 12:30:57 CET, wael-zwaiter@gmx.com wrote:
>Am unsure whether I can  require on the elisp files I have written.
>
>(require 'g-eshell)
>(require 'g-utils)
>
>Aw getting confused, as I was simply doing
>
>(setq g-eshell
>   "/home/bard/Genadm/build/gadin-1.0/elisp/g-eshell.el")
>
>(setq g-utils
>   "/home/bard/Genadm/build/gadin-1.0/elisp/g-utils.el")
>
>(load 'g-eshell)
>(load 'g-utils)
>
>> Sent: Saturday, January 09, 2021 at 10:54 PM
>> From: "Omar Polo" <op@omarpolo.com>
>> To: wael-zwaiter@gmx.com
>> Cc: help-gnu-emacs@gnu.org
>> Subject: Re: Elisp - Store path only once
>>
>>
>> wael-zwaiter@gmx.com writes:
>>
>> > I have a lot of customisation files for emacs stored in the
>> > directory /home/bard/Genadm/build/gadin-1.0/elisp/.
>> >
>> > Would like to store the path so that I can define it only once.
>> > How can I do this in Emacs Lisp.
>> >
>> >
>> >   (setq g-eshell
>> >      "/home/bard/Genadm/build/gadin-1.0/elisp/g-eshell.el")
>> >
>> >   (setq g-utils
>> >      "/home/bard/Genadm/build/gadin-1.0/elisp/g-utils.el")
>>
>> Couldn't you just
>>
>>     (add-to-list 'load-path
>"/home/bard/Genadm/build/gadin-1.0/elisp")
>>
>> and then
>>
>>     (require 'g-eshell)
>>     (require 'g-utils)
>>
>> when needed?
>>
>>

you should definitely check the manual for more detailed information, but the gist of it is that when you

(require 'something)

emacs will search for something.el in all the directories listed in load-path.  This is like the UNIX $PATH variable if you're familiar, only for elisp files instead.

Now, you can require any file, given that they contains a provide at the bottom.  i.e. your g-eshell.el should ends with

(provide 'g-shell)

this way you can avoid typing the full path every time, and is also easier to move those files without braking you configuration.

(Also, require is better than load because it won't evaluate the same file two times)
-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.



  reply	other threads:[~2021-01-09 11:53 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-09 10:47 Elisp - Store path only once wael-zwaiter
2021-01-09 10:54 ` Omar Polo
2021-01-09 11:30   ` wael-zwaiter
2021-01-09 11:53     ` Omar Polo [this message]
2021-01-09 12:55       ` wael-zwaiter
2021-01-09 17:34         ` Omar Polo
2021-01-09 21:34       ` Drew Adams
2021-01-09 21:56         ` Stefan Monnier
2021-01-09 22:07           ` Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=B52F836E-7C27-4A0E-A9B5-D7CE99106087@omarpolo.com \
    --to=op@omarpolo.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=wael-zwaiter@gmx.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).