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

他の言語、特に他のLisp方言と比較した、言語としてのEmacs Lispに関する質問。つまり、*言語*自体についての質問です。* Emacs Lispの*使用*についての質問には*使用しないでください*。Emacs Lispは、Emacsエディターが組み込まれているスクリプトおよびプログラミング言語です。

2
特定のプレフィックスを持つすべてのシンボル定義のバインドを解除するにはどうすればよいですか?
私はパッケージのAPIをかなり頻繁に変更していますが、完了時にすべての定義済みシンボルを(必要に応じて)company-modeプルします。バインドされていない名前を誤って使用したくないので、たとえば、で始まるすべての変数と関数のバインドを解除するにはどうすればよいですか?この後、再びできるようになります。my-package-load-file

2
リンクの説明を自動的に挿入する組織リンクを取得しますか?
Q:org説明を自動的に挿入するカスタムリンク関数を取得するにはどうすればよいですか? orgファイルへのリンクをdiredバッファに保存したいのですが、フルパスを報告するのではなく、リンクの説明をパスではなくファイル名にすることをお勧めします。 file:~/the/full/path/myfile.ext ; default, but no thanks myfile.ext ; what I want Now:org-store-linkリンクをハードコードしdiredてデフォルトを提供します。代わりに、カスタム関数(ハードコードされた関数からのクリビング)を作成し、それをに追加しましたorg-store-link-functions。 (defun dired-store-link () (when (derived-mode-p 'dired-mode) (let ((file (dired-get-filename nil t))) (setf file (if file (abbreviate-file-name (expand-file-name file)) default-directory)) (org-store-link-props :type "dired" :link file :description (file-name-nondirectory file)) file))) (add-to-list 'org-store-link-functions #'dired-store-link) これまでのところ良好であり、期待どおりに機能しますが、1つの点で: org-insert-link組み込みのデフォルトの動作で呼び出す場合、説明を要求せずにリンクを挿入するだけです。 org-insert-linkカスタム関数で呼び出すと、説明を入力するように求められます(説明には、:descriptionプロパティに保存されているファイル名が正しく入力されます)。 毎回説明を求めorg-insert-linkられるのでは:descriptionなく、カスタム関数が設定する値を使用したいと思います。 プロンプトを表示せずにを自動的org-insert-linkに使用するようにするにはどうすればよい:descriptionですか?
11 org-mode  elisp 

2
入力なしの使用方法は?
docstringから: 保留中の入力がない限り、BODYを実行します。 入力が到着すると、BODYの実行が終了し、while-no-inputtが返されます。終了すると、nilが返されます。BODYが終了した場合、while-no-inputBODYが生成した値を返します。 私が正しく理解している場合、このマクロを使用すると、インターフェースを停止せずに重い計算を実行できます(試みます)。それは確かに私が魅力的だと思うコンセプトですが、それが実際にいつ役立つのか疑問に思っています。 計算はいつでも中断される可能性があり、それがどこで発生したかに関する情報も、後で簡単に再開する方法もありません。結局それはそれほど役に立たないかもしれないと思います... while-no-inputマクロの使用に推奨される方法はありますか? このマクロの実際の使用例はありますか?

1
何のために?
たとえば、次の定義で-firstは、 (--first (funcall pred it) list)) 当然のことながら、「それ」の意味をグーグル検索したり、マニュアルで検索することは非常に困難です。
11 elisp  dash.el 

1
マクロの変数スコープはどのように決定されますか?
で定義されている次のサンプルマクロを見てみましょうmacro.el。 (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) そして、別のファイルで定義された次の関数を取りますfunction.el。 (defun some-function () (some-macro (do-something))) ときにfunction.elバイトコンパイルされ、うsome-variable字句または動的バインディングでバインドできますか? これはファイルがを使用しているかどうかに依存することを理解している-*- lexical-binding: t; -*-ため、私の質問は特に以下の状況に関係しています。 場合function.el結合が、用途は字句macro.elません。 場合macro.el結合が、用途は字句function.elません。 some-var内部で(defvarを使用して)グローバルに宣言されている場合、違いはありfunction.elますか?もしそうなら、私はそれがそうでない場合に特に興味があります。

3
与えられたテキストを領域の周りにラップする方法
リージョンの周りにテキストを適用する必要がある状況がよくあります。HTMLおよび単純なケースの場合、これ用のライブラリがすでにあります。しかし、一般的なケースはどうですか?リージョンの最初と最後に何を挿入するか尋ねられますか。

3
Emacsの関数は、任意のORGプロパティを任意の文字列(つまり、LaTeXラベル)に変換しますか?
私はCUSTOM_LABELプロパティを持つorg-filesとして多くのドキュメントを持っています。 * Introduction :PROPERTIES: :CUSTOM_LABEL: AP 1 :END: この場合、ファイルをLaTeXとしてエクスポートし、それぞれをCUSTOM_LABELとして翻訳する必要があります\label{marker}。上記の例はに変換され\label{AP 1}ます。 私は、エクスポート時にカスタム関数を呼び出す方法をすでに知っているが、私は、その特定の変換を行うための関数定義を書くために専門家に十分な、すなわちないですCUSTOM_LABEL- >\label{} どのように関数定義を注入することができますcustom_labelよう\label{}に書くことを? 私はいくつかの疑似コード、またはいくつかのポインタさえいただければ幸いです。 org-modeマニュアルを徹底的に検索したため、これはEmacsの質問であり、そのような機能は現在利用できません。 エクスポート時に特定のプロパティを変換する一般的な関数(LaTeX、HTML、またはその他の形式)は、さらに優れています。 ありがとうございました。

2
EmacsでピクセルベースまたはベクターベースのUI要素を描画するにはどうすればよいですか?
つまり、端末エミュレーターの等幅文字グリッドに制限されず、画面上の任意のピクセル位置の任意の形状にすることができるUI要素(テキストフィールドやアニメーションボタンなど)を意味します。それが可能かどうか、またそれがどのように可能か、そしてそれが不可能な場合は、将来に向けて計画されているかどうかに興味があります。
11 elisp  editing  images 


3
ネストされた関連リストの値を取得する最良の方法は?
次のような連想リストがあるとします。 (setq x '((foo . ((bar . "llama") (baz . "monkey"))))) そして、私はの値を求めていますbar。私がすることができます: (assoc-default 'bar (assoc-default 'foo x)) しかし、私が本当に欲しいのは、次のような複数のキーを受け入れるものです (assoc-multi-key 'foo 'bar x) そのようなものが、おそらくどこかのパッケージに存在していますか?きっと書けると思いますが、グーグルフーが失敗して、見つけられない気がします。

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その変数を宣言するときに初期値が提供されたかどうかによって決定される理由を誰かが説明できますか? …

1
ローカル変数リファクタリングの名前を変更する
ローカル変数と関数引数の名前を変更できるelispリファクタリングツールはありますか?向きを変えられるようにしたいと思います。 (defun my-func (s r) ... (use s .. r)) に: (defun my-func (string replacement) ... (use string .. replacement)) 変数参照を見つける方法を知っているメソッドを使用します。超衛生的でなくても大丈夫です。
10 elisp 




弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.