help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: don't understand setq-default


From: Emanuel Berg
Subject: Re: don't understand setq-default
Date: Mon, 19 Apr 2021 05:06:26 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Omar Polo wrote:

> [ keep in mind that I'm not really an expert elisp hacker ]

You are getting there...

> Let's take the indent-tabs-mode variable for instance: you
> set it to t to enable hard tabs, or nil if you don't.
> For some modes you may want to use tabs (e.g. C, or Go),

You may, but you don't need tabs in C. (I'm not familiar
with Go.) The only thing that always wants tabs are the
Makefiles, right?
>
> Another example: I'm writing a chat application in elisp.
> I have a, say, toxe-friend-name that holds the name of the
> chat you've opened. It's useful to keep this
> a buffer-local, so it gets a different value per
> chat-buffer, and the elisp code is simple.

That's right, it is a good example, when you have several
buffers of the same kind to hold some data piece or pieces
connected to that particular buffer of whatever the program
in general is suppose to do...

> that buffer. (I don't know how to retrieve the global
> value, but a short trip to the manual should tell me that)
>
> So, for example:
>
>       (defvar my-var 5)

Heh, OK so now the global has a default as well... let's see
how this goes.

>       my-var
>       ;; => 5

Right, defined with a default and not set. So it is
the default. What else is there to be.

>       (with-current-buffer (get-buffer-create "test")
>         (message "my-var is %d" my-var) ; my-var is 5

Not changed so this is the global-default (only) version at
this time.

>         (make-local-variable 'my-var)
>         (setq my-var 7)
>         (message "my-var is %d" my-var) ; my-var is 7

Now it is set locally so now it is 7. By locally we mean
buffer-local, that's the only local there is?

>         (setq-default my-var 'foo)
>         (message "my-var is %d" my-var)) ;; my-var is 7

Now we set the default but since it is set hat doesn't matter.

>       my-var
>       ;; => foo

And now it isn't anymore so the default is there, great.

So the pecking order is:

   local var
   global var
   local default
   global default

?

and local default and global default are even lower because
they don't do anything if there's a value there already.

-- 
underground experts united
https://dataswamp.org/~incal




reply via email to

[Prev in Thread] Current Thread [Next in Thread]