[解決済み] Emacs Lispにおけるsetqとsetq-defaultの相違点
質問
Emacs Lispについて質問です。とはどう違うのでしょうか? setq と setq-default ?
チュートリアルでは setq が有効になるのは ローカルバッファ 一方 setq-default は全てのバッファに影響します。
例えば、もし私が (setq a-var a-vars-value) で init.el で、Emacsを起動し、新しいバッファを開くと a-var も存在し、その値は a-vars-valueです。 . あるはずのないものだと思っていました。という違いはないようです。 setq と setq-default .
私の理解に何か間違いがあるのでしょうか?
例えば
-
私は (setq hello 123) の中で init.el ファイルを作成し、私は emacs abuffer をシェルで実行し、次に "hello C-x C-e" と入力すると、"123"と表示されます。これをすべての新しいバッファで実行しても同じことが起こります。
-
私が書いた (setq タブ幅 4) の中で init.el ファイル内で を実行すると タブ幅 C-x C-e を実行すると、"8"と表示されます(現在のモードは「テキスト」)。しかし (setq-default tab-width 4) とすると とすると、"4"と表示されます。この現象を説明することができません。
どのように解決するのですか?
Emacs のいくつかの変数は "buffer-local" で、これは各バッファがその変数に個別の値を持つことが許され、それがグローバルなデフォルトを上書きすることを意味します。
tab-width
はバッファローカル変数の良い例です。
変数がバッファローカルであれば
setq
はそのローカル値を現在のバッファに設定し
setq-default
はグローバルなデフォルト値を設定します。
変数がバッファローカルでない場合は
setq
となり
setq-default
は同じことをします。
あなたの場合 2,
(setq tab-width 4)
のバッファローカルの値を設定します。
tab-width
を 4 に設定し、グローバルなデフォルト値である
tab-width
のグローバルなデフォルト値は 8 のままなので
tab-width
をローカル値を持たない別のバッファで評価すると、その 8 が表示されます。 その後、デフォルト値を 4 に設定すると、ローカル値がまだないため、そのバッファがそれを拾いました。
関連
-
[解決済み] EmacsとVimの違い
-
[解決済み] テキストモードのEmacsで4スペースインデントを設定する
-
[解決済み] Emacsの中からディレクトリを作成するにはどうしたらよいですか?
-
[解決済み] emacsの分割画面の大きさを変えるには?
-
[解決済み] emacsのコマンド名が与えられたら、キーバインドをどのように探しますか?(その逆も然り)
-
[解決済み] Emacsのためのタグ。etags, ebrowse, cscope, GNU Global と exuberant ctags の関係
-
[解決済み] イービルモードのベストプラクティス?[クローズド]
-
[解決済み] 2 windows emacsのバッファを交換する方法
-
[解決済み] Emacsのウィンドウサイズはどのように設定するのですか?
-
[解決済み] Emacs: コマンドのキーバインドを表示する、またはすべてのキーバインドをリストアップする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Emacsの中からディレクトリを作成するにはどうしたらよいですか?
-
[解決済み] Emacsでファイルの読み取り/書き込みモードを変更するには?
-
[解決済み] Emacsのデフォルトフォルダを変更する
-
[解決済み] emacs/elispです。ハッシュ(ポンド、数字記号、オクトパス)記号は何のために使うのですか?
-
[解決済み] 標準入力を読み込んでパラメータを受け取るプログラムをgdbで読み込むには?
-
[解決済み] emacsでアクティブなマイナーモードをリストアップするには?
-
[解決済み] 2 windows emacsのバッファを交換する方法
-
[解決済み] Emacsでカーソル下のフォントフェイスを取得する
-
[解決済み] Emacsの現在のバッファ以外のすべてのバッファを閉じる
-
[解決済み] elispでオペレーティングシステムを判断するには?