unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Elisp - Store path only once
@ 2021-01-09 10:47 wael-zwaiter
  2021-01-09 10:54 ` Omar Polo
  0 siblings, 1 reply; 9+ messages in thread
From: wael-zwaiter @ 2021-01-09 10:47 UTC (permalink / raw)
  To: Help Gnu Emacs

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")






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

* Re: Elisp - Store path only once
  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
  0 siblings, 1 reply; 9+ messages in thread
From: Omar Polo @ 2021-01-09 10:54 UTC (permalink / raw)
  To: wael-zwaiter; +Cc: help-gnu-emacs


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?



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

* Re: Elisp - Store path only once
  2021-01-09 10:54 ` Omar Polo
@ 2021-01-09 11:30   ` wael-zwaiter
  2021-01-09 11:53     ` Omar Polo
  0 siblings, 1 reply; 9+ messages in thread
From: wael-zwaiter @ 2021-01-09 11:30 UTC (permalink / raw)
  To: Omar Polo; +Cc: help-gnu-emacs

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?
>
>



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

* Re: Elisp - Store path only once
  2021-01-09 11:30   ` wael-zwaiter
@ 2021-01-09 11:53     ` Omar Polo
  2021-01-09 12:55       ` wael-zwaiter
  2021-01-09 21:34       ` Drew Adams
  0 siblings, 2 replies; 9+ messages in thread
From: Omar Polo @ 2021-01-09 11:53 UTC (permalink / raw)
  To: wael-zwaiter; +Cc: help-gnu-emacs

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.



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

* Re: Elisp - Store path only once
  2021-01-09 11:53     ` Omar Polo
@ 2021-01-09 12:55       ` wael-zwaiter
  2021-01-09 17:34         ` Omar Polo
  2021-01-09 21:34       ` Drew Adams
  1 sibling, 1 reply; 9+ messages in thread
From: wael-zwaiter @ 2021-01-09 12:55 UTC (permalink / raw)
  To: Omar Polo; +Cc: help-gnu-emacs

How can enable Rainbow Delimiters on all files (not just programming
language files)?

> Sent: Saturday, January 09, 2021 at 11:53 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
>
> 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.
>



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

* Re: Elisp - Store path only once
  2021-01-09 12:55       ` wael-zwaiter
@ 2021-01-09 17:34         ` Omar Polo
  0 siblings, 0 replies; 9+ messages in thread
From: Omar Polo @ 2021-01-09 17:34 UTC (permalink / raw)
  To: wael-zwaiter; +Cc: help-gnu-emacs


wael-zwaiter@gmx.com writes:

> How can enable Rainbow Delimiters on all files (not just programming
> language files)?

I don't use rainbow delimiters, I don't think I can help, sorry :/



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

* RE: Elisp - Store path only once
  2021-01-09 11:53     ` Omar Polo
  2021-01-09 12:55       ` wael-zwaiter
@ 2021-01-09 21:34       ` Drew Adams
  2021-01-09 21:56         ` Stefan Monnier
  1 sibling, 1 reply; 9+ messages in thread
From: Drew Adams @ 2021-01-09 21:34 UTC (permalink / raw)
  To: Omar Polo, wael-zwaiter; +Cc: help-gnu-emacs

> >(load 'g-eshell)
> >(load 'g-utils)
>
> (require 'something)

There are (at least) 3 functions you can use to load a list file: `require', `load-library', and `load'.

1. `require' loads the library (*.elc or *.el) only once,
   i.e., only if it hasn't yet been loaded.

2. `load-library' and `load' (also `load-file') load the
   library (*.elc or *.el) unconditionally, i.e., each time.

3. `load-library' looks for a library name in your `load-path'.
   `load' and `load-file expect a file name, not a library
   name, but `load' does search directories in `load-path',
   and `load' does try adding suffixes .elc and .el.

This is explained better than I've done here in the Emacs manual, node `Lisp Libraries' (ask Emacs).

https://www.gnu.org/software/emacs/manual/html_node/emacs/Lisp-Libraries.html



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

* Re: Elisp - Store path only once
  2021-01-09 21:34       ` Drew Adams
@ 2021-01-09 21:56         ` Stefan Monnier
  2021-01-09 22:07           ` Drew Adams
  0 siblings, 1 reply; 9+ messages in thread
From: Stefan Monnier @ 2021-01-09 21:56 UTC (permalink / raw)
  To: help-gnu-emacs

>> >(load 'g-eshell)
>> >(load 'g-utils)
>> (require 'something)
> There are (at least) 3 functions you can use to load a list file: `require',
> `load-library', and `load'.

Actually `load-library` (just like `load-file`) is not meant to be used
as a function but rather as a command.  Both `load-library` and
`load-file` are two commands which give interactive access to the
Lisp-level function `load`.


        Stefan




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

* RE: Elisp - Store path only once
  2021-01-09 21:56         ` Stefan Monnier
@ 2021-01-09 22:07           ` Drew Adams
  0 siblings, 0 replies; 9+ messages in thread
From: Drew Adams @ 2021-01-09 22:07 UTC (permalink / raw)
  To: Stefan Monnier, help-gnu-emacs

> >> >(load 'g-eshell)
> >> >(load 'g-utils)
> >> (require 'something)
> > There are (at least) 3 functions you can use to load a list file:
> > `require', `load-library', and `load'.
> 
> Actually `load-library` (just like `load-file`) is not meant to be used
> as a function but rather as a command.  Both `load-library` and
> `load-file` are two commands which give interactive access to the
> Lisp-level function `load`.

Yes.  (But `load-file' at least applies `expand-file-name' for you.)



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

end of thread, other threads:[~2021-01-09 22:07 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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

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).