Emacs Lispにおけるsetqとsetq-defaultの違い



setq-local (1)

Emacsのいくつかの変数は "バッファローカル"です。つまり、各バッファは、グローバルデフォルトを上書きするその変数に対して別個の値を持つことができます。 tab-widthは、バッファローカル変数の良い例です。

変数がバッファローカルの場合、 setqは現在のバッファにローカル値を設定し、 setq-defaultはグローバルデフォルト値を設定します。

変数がバッファローカルでない場合、 setqsetq-defaultは同じことを行います。

あなたのケース2では、 (setq tab-width 4)現在のバッファでtab-widthのバッファローカル値を(setq tab-width 4)設定し(setq tab-width 4)のグローバルデフォルト値は8のままです。ローカルの値を持たない別のバッファは、あなたはそれを見ました。そして、デフォルト値を4に設定すると、そのバッファはまだローカル値を持たないので、それを取り上げました。

Emacs Lispに関する質問があります。 setqsetq-defaultの違いは何ですか? 私はそれについて非常に混乱しています。

チュートリアルでは、 setq-defaultがすべてのバッファに影響しますが、 setqローカルバッファで有効となります。

たとえば、 init.el(setq a-var a-vars-value)を書きましたが、Emacsを起動して新しいバッファを開いた後、 a-varもそこにあり、その値はa-var-valueです。 私はそこにいるはずがないと思った。 setqsetq-defaultには違いはないようです

私の理解に何か間違っていますか?

どうもありがとうございました。

例えば:
1)私はinit.elファイルに(setq hello 123 )を書きました。シェルでemacs abufferを実行した後、 "hello Cx Ce"と入力すると "123"と表示されます。 これをすべての新しいバッファで実行すると同じことが起こります。

2) init.elファイルに(setq tab-width 4 )を書きました。 タブ幅Cx Ceを実行すると、「8」(現在のモードは「テキスト」)と表示されます。 しかし、私は(setq - デフォルトのタブ幅4)を使用すると、 "4"と表示されます。 私はこの現象を説明することはできません。





elisp