タグ付けされた質問 「defvar」

1
`setq-local`は何をしますか、そしていつそれを使うべきですか?
ここでSXですべてのドキュメントと多数の投稿を読んだ後でも、バッファローカル変数のすべてのバリエーションについては明確ではありません。 私の理解の概要は次のとおりです。 (defvar foo ..)ファイルの動的変数を宣言します。ただし、変数は(1)defvar ステートメントも含まれていない限り、他のファイルには認識されません。(2)変数はバッファーローカルではなくスコープ内でグローバルです。 (make-variable-buffer-local foo)defvar上記は、変数fooが設定されている場合、変数fooが設定されているすべての場所でバッファローカルとして扱われることをコンパイラと他のすべての人に伝えた後です。そのため、このパターンは、バッファローカル変数を宣言するのに適したスタイルであり、ファイルに両方のステートメントを連続して配置します。 (defvar xxx ...) ;declare xxx with global scope (make-variable-buffer-local 'xxx) ;but now make it buffer-local everywhere 便宜上、(defvar-local xxx ...)フォームは上記の2行の代わりに1行として使用できます。 (defvar-local xxx ...) ;make xxx buffer local everywhere 上記のように宣言されると、変数xxxはsetqステートメントの他の変数と同様に使用できます。 既にグローバルダイナミック変数であるバッファローカル変数の単一のインスタンスが必要な場合は、次の宣言を使用します。最初のステートメントはグローバルスコープの動的変数を宣言し、2番目のステートメントはその変数のバッファーローカルバージョンのインスタンスを現在のバッファーに1つだけ作成します。 (defvar xxx ...) ;declare xxx with global scope (make-local-variable 'xxx) ;make xxx local …

1
setqとdefvarの違いは何ですか
Emacs Lisp setqとdefvarEmacs Lispの違いは何ですか? /programming/3855862に同じ質問の一般的なLispバージョンがあります。Elispでも同じですか?
14 defvar  setq 

3
なぜdefvarスコープはinitvalueなしでは動作が異なるのですか?
次のファイルという名前のファイルがあるとしますelisp-defvar-test.el。 ;;; elisp-defvar-test.el --- -*- lexical-binding: t -*- (defvar my-dynamic-var) (defun f1 (x) "Should return X." (let ((my-dynamic-var x)) (f2))) (defun f2 () "Returns the current value of `my-dynamic-var'." my-dynamic-var) (provide 'elisp-dynamic-test) ;;; elisp-defvar-test.el ends here このファイルをロードしてから、スクラッチバッファーに移動して実行します。 (setq lexical-binding t) (f1 5) (let ((my-dynamic-var 5)) (f2)) (f1 5)期待どおり5を返します。これは、の本体が動的スコープの変数としてf1扱わmy-dynamic-varれていることを示しています。ただし、最後の形式では、にvoid変数エラーが発生しmy-dynamic-var、この変数に字句スコープが使用されていることを示しています。これは、のドキュメントと矛盾しているようですdefvar。 また、defvarフォームは変数を「特別」として宣言するため、たとえlexical-bindingtであっても常に動的にバインドされます。 defvarテストファイルのフォームを変更して初期値を指定すると、ドキュメントに記載されているように、変数は常に動的として扱われます。変数のスコープがdefvarその変数を宣言するときに初期値が提供されたかどうかによって決定される理由を誰かが説明できますか? …

4
ライブラリをリロードして、defvarに値を再割り当てさせることはできますか?
ライブラリを開発していて、編集後にEmacsを終了せずに再ロードしたい(オンになっていると想定load-path): (load-library "myname") 私がこれを行うと、Emacsはdefvar-bound変数への変更を取得しません。 各トップレベルフォームで手動でeval-defun(C-M-x)を呼び出したくありません。DOESのM-x eval-buffer尊重defvar/ defcustom?
10 variables  defvar 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.