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


2
プログラムでカスタム変数をデフォルト値にリセットする
Q: Elispを使用して、変数の値を知らずに変数をデフォルト値にリセットするにはどうすればよいですか? initファイルでデフォルト以外の値に設定した変数のカスタマイズインターフェースを表示し、を押しC-h kてから[元に戻す...]ボタンをクリックすることで、これを行う方法を見つけようとしました。これにより、のドキュメントが表示されましたがwidget-button-click、明らかにあまり役に立ちませんでした。(同様C-h k RETに、ボタン上のポイントでのヘルプが表示されますがCustom-newline、これも私が探しているものではありません。)

3
同じ値を複数の変数に割り当てますか?
時には、複数の変数に同じ値を設定する必要があります。 Pythonでは、私はできる f_loc1 = f_loc2 = "/foo/bar" しかし、elispでは、私は書いています (setq f_loc1 "/foo/bar" f_loc2 "/foo/bar") "/foo/bar"一度だけ使用してこれを達成する方法があるかどうか疑問に思っていますか?
12 variables  setq 

2
Elisp:initファイルから機密情報を除外する方法は?(つまり、ログイン資格情報)
initスクリプトでログイン関数を定義したいのですが、ログイン資格情報をハードコーディングしたくありません。私の良い回避策は、私のinitスクリプトにローカルファイルからログイン資格情報を読み込ませ、これらの値を変数として保存することです。そうすることで、ファイルをgitインデックスから除外できるため、ログイン資格情報を安全に保つことができます。 このアプローチ、またはファイルに定義されている値に引数を設定する方法についての提案はありますか? たとえば、私は次のように私の中で使用したいと思いますinit.el: ;; Set up our login variables here: (setq file-location "~/.emacs.d/.login") (setq erc-username "default-name") (setq erc-password "default-password") (setq erc-url "default-url") (setq erc-port "default-port") (defun read-lines (filePath) "Return a list of lines of a file at filePath." (with-temp-buffer (insert-file-contents filePath) (split-string (buffer-string) "\n" t))) (if (file-exists-p file-location) (progn (setq …

1
色で宣言された変数
emacsにC / C ++の単一の関数で宣言された変数を記憶させる簡単な方法を探しています。「シンプル」とは、外部パッケージがなく、構成ファイルにいくつかのelisp行があることを意味します。 私のデフォルトのEmacs構成では、宣言時に変数名を黄色に着色していますが、使用時には白色にしています。 char toto; // 'char' is green, 'toto' is yellow toto = 42; // 'toto' is white 同じ機能/スコープのすべての「toto」も黄色に着色したいと思います。 私はすでにこの質問を見てきましたが、もっと簡単なことを望みます。また、font-lockモードで何かをしようとしましたが、変数名に適応できるものを作ることに成功しませんでした。 (名前パターンを使用した)C ++クラスメンバー名のアイデアはすでにあるので、ここでローカル変数の一致を求めています。


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 


3
変数を切り替える簡単な方法
変数を切り替える簡単な方法があると便利です。これが私が心に留めていることです。 「var切り替え」関数を呼び出します。 completing-read単一の値(ないリストや連想リスト)を持つ変数のみをリストする必要があります。それができるかどうかわかりません。tまたはのいずれかの値を持つ変数のみを一覧表示する場合は、さらに良いでしょうnil。これは不可能だと確信しています。 次にt、現在の値がの場合、関数はvar値をに設定し、nil逆の場合も同様です。 問題は、これを行うelisp関数がすでにあるかどうかです。そうでない場合、およびカスタムソリューションでこの問題に対処したことがある場合は、その方法を確認したいと考えています。 更新: ボーナス機能はcompleting-read、トグルのためにポイント(存在する場合)の下にシンボルを提案することです。 したがって、「toggle var」fnがにバインドされているC-c ~場合、使用量はと同じくらい短くなりC-c ~ RETます。 varを切り替える現在の手順は次のとおりです。 C-h v VAR、現在の変数値を取得します。 M-: (setq VAR toggled-value)。 または M-: (setq VAR (not VAR))。 私はこのプロセスを高速化する方法を探しています(タイピングが少ない)。

1
オートロードと変数
私は関数のオートロードの機能を理解しています(そのような関数が呼び出されたとき、またはそのドキュメント文字列が取得されたときにロードするファイルを登録します)。ただし、変数やマクロと組み合わせてオートロード機能を使用する方法は明確ではありません。 2つの質問があります。 パッケージにパラメーターがあり、ユーザーが設定できる変数として実装されているが、自動ロードされない場合はどうなりますか?そのような変数はオートロードされるべきですか?そうでない場合、そのような変数は存在しないことがわかります。Lisp環境は、パッケージからオートロードされた関数が使用されるまで(通常は構成ファイルのロード後)、ユーザーが変数を設定するまで、デフォルト値を含め、それらについて何も知りません。 /彼女の設定ファイル、それは存在しない変数を設定するようなものです。変数の値が空でないリストであり、ユーザーがその値を使用pushまたはadd-to-list変更する場合、正確にはどうなりますか?デフォルト値は失われますか? マクロがオートロードされるとどうなりますか?いつマクロをオートロードする必要がありますか?

2
バッファローカル変数のデフォルト値は最初の `setq`まで設定されません
私がバッファローカル変数を定義し、fooそのデフォルト値が "a"であるとしましょう: (defvar foo "a") (make-variable-buffer-local 'foo) (default-value 'foo) ;; => "a" この直後に、次のコードを実行します。 (let ((foo "b")) (with-temp-buffer (message "foo: %s" foo))) ;; => "b" 結果は "b"です。これは、で設定した値letです。 setq変数の設定に使用する場合は、前とまったく同じコードを再実行します。 (setq foo "c") ;; => "c" (let ((foo "b")) (with-temp-buffer (message "foo: %s" foo))) ;; => "a" 結果は "a"で、これが現在のデフォルト値です。 質問:一時バッファの場合、のデフォルト値はfoo使用するまで設定されませんsetqか?そしてsetq、私が使用しない限りlet、他のバッファのデフォルト値を変更するために使用できますか? 編集:@npostavsが言ったように、これはmake-varible-buffer-local本当に意味することです。make-variable-buffer-local自分で使えば、setqその後いつでも使えます。しかし、これはのような「組み込み」のバッファローカル変数では本当にトリッキーになりますcase-fold-search。私がパッケージ作成者として外部でバインドcase-fold-searchし、でデフォルト値(ユーザーが設定したかどうかにかかわらず)を使用したい場合、デフォルト値が実際にあることを確認する前に使用する必要があります場合に使用されているユーザはそれを持っていない、彼/彼女に。バッファローカル変数の場合、おそらく、値を設定するときよりも常に安全であることを意味します。デザインやドキュメンテーションは改善できるのかしら。nilletwith-temp-buffersetqwith-temp-buffersetqinit.elsetqlet
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.