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

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

4
Elispからの任意のキーイベントをシミュレートするにはどうすればよいですか?
elispから任意のキーイベントをシミュレートすることは可能ですか?特定のキーのバインドを見つけて、そのコマンドを対話的に呼び出す方法を知っていますが、そのキーイベントがコマンドにバインドされていない場合はどうなりますか? 1例、私はバインドしたい場合C-`と同じ動作をするESCキーすべてのコンテキストでは?

1
regexビルダーで作成された正規表現が、インタラクティブな正規表現とは異なる構文を使用するのはなぜですか?
したがって、正規表現ビルダー(Mx re-builder)を使用して、\で終わる行を見つけるには「\\ $」を使用しますが、検索および正規表現で置換する場合は「\ $」のみを使用します。正規表現ビルダーが直接使用可能な式を構築することを期待していましたが、この違いを説明するものは何ですか?

2
関数は名前にアクセスできますか?
Cには__func__、現在の関数名を保持するマジック変数があります。BashにはFUNCNAME、呼び出しスタック内のすべての関数の名前を保持する配列があります!!! Emacs Lispに同様のものがありますか?または、関数がその名前にアクセスする簡単な方法はありますか? Emacs Lispマニュアル(関数の章または変数と関数のインデックスの章12および..)に答えが見つかりませんでした。
25 elisp  functions 

6
動的な目次として2番目のバッファーに組織モードのアウトラインを取得するにはどうすればよいですか?
大きなドキュメントを編集するとき、アウトライン(コンテンツなし)を別のバッファーに表示することで、現在の場所を確認したいと思います。PDFファイルを読むときのように、左側に目次があります。(下記参照) 組織モードでは、アウトラインを展開/縮小することができます。しかし、別のバッファーの左(または右)に静的なアウトラインを設定して、見出しをクリックすると、他のバッファーがその位置に移動することは可能ですか? ちょっとこのようなが、組織モードのために? [編集]非常に近い私が何をしたいのです。パズルの欠けている部分は、見出し/(または実際に任意のポイント)をクリックしたときに同じ場所にジャンプすることです。clone-indirect-buffer このために、私はいくつかのコードを書き込もうとしました:他のクローンされたバッファを同じポイントに移動しますか?(間接バッファの同期位置)(組織モード) ただし、コンテンツが折りたたまれている場合は機能しません。これを機能させることができる場合、clone-inderect-bufferはこれに対する完全なソリューションです。 [Edit2 Solution] 上記のリンクと以下の回答のコードは、niceleyを組み合わせて、前後のジャンプを解決します。 ;first call 'clone-indirect-buffer'. Then... ;This function works between buffer and it's clone. (defun my/goto-same-spot-in-other-buffer () "Go to the same location in the other buffer. Useful for when you have cloned indirect buffers" (interactive) (let ((my/goto-current-point (point))) (other-window 1) (goto-char my/goto-current-point) (when …


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

1
sortはどのアルゴリズムを使用しますか?
既にソートされているリストに単一の整数を追加して、適切な場所に配置する必要があります。私の最初の考えは次のようなものでした (sort (cons newelt list) #'<) ただし、それlistが既にソートされている場合、実際に必要な挿入は1つだけです。つまり、で使用されるアルゴリズムによっては、このソリューションは恐ろしく不適切になる可能性がありますsort。 では、どのアルゴリズムをsort使用していますか? 次のようなことをした方が良いでしょうか? (let ((tail list)) ;; The first element is never less-than (while (and tail (< newelt (cadr tail))) (setq tail (cdr tail))) (setcdr tail (cons newelt (cdr tail))) list)

1
関数 `purecopy`は何のために必要ですか?
私はブラウジングしていたがcompile.el、この構造に気づいた: (defcustom compile-command (purecopy "make -k ")) purecopyドキュメントの状態: purecopyは、「Cソースコード」の組み込み関数です。 (純粋コピーOBJ) 純粋なストレージにオブジェクトOBJのコピーを作成します。ベクトルとコンスセルの内容を再帰的にコピーします。シンボルをコピーしません。テキストプロパティなしで文字列をコピーします。 したがってcompile-command、後日修正が必要になる可能性のある複雑なリストが含まれていることが予想される場合、なぜ必要になるのか理解できたと思います。しかし、それは単なる文字列なので、なぜpurecopy必要なのでしょうか?より一般的には、いつpurecopy必要ですか?
23 elisp 

1
記号の前の「#」と「#」の違いは何ですか?
私はEmacsに少し慣れていない。いくつかの構成を見ると、「add-hook」に2つのタイプのコマンドがあることがわかりました。 (add-hook 'LaTeX-mode-hook #'LaTeX-math-mode) そして (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) これは私を長い間混乱させており、Googleで「#」を検索する方法がわかりません... ありがとう。
22 elisp  hooks  functions  quote 

2
Elispコードをフォーマット(プリティファイ)するコマンド
次のような関数があるとしましょう(elisp出力を印刷する場合によくあることです)。 (defun my-example-function () (let ((a (do-something)) (b (do-something))) (setq someone me) (with-current-buffer b (do-that (or this (and that those))) (format "%s" a)))) 次のように、それを人間が書く何かに変えることができるコマンドが欲しいです。 (defun my-example-function () (let ((a (do-something)) (b (do-something))) (setq someone me) (with-current-buffer b (do-that (or this (and that those))) (format "%s" a)))) elispコードをフォーマットする方法は複数あり、人間によって異なる方法があることを理解しています。さらに、私はそれがやや主観的であることを理解しています。しかし、少なくともまともなコードになる一連のルールを考え出すのはかなり簡単なはずです。 私は実際に少し前にこれを自分で行うことを考えましたが、車輪を再発明する前に尋ねる方が良いと考えました。 注意してください、私はpp関数を知っていますが、そこまでは到達しません: (defun …
21 elisp  formatting 

3
Elispの2つの変数を交換する
私が持っていると仮定します (setq a 1 b 2) どのように私はエレガントの値入れ替えることができますaし、b一時的な変数を使用せずに?
20 elisp 

3
なぜlisp-interaction-modeが存在し、それが必要なのでしょうか?
Q:なぜlisp-interaction-mode存在するのemacs-lisp-modeですか?代わりに使用する理由はありますか? マニュアル状態emacs-lisp-modeとlisp-interaction-mode後者に結合することを除いて同一であるC-jとeval-print-last-sexp。それを超えて、「Lisp Interactionモードの他のすべてのコマンドは、Emacs Lispモードと同じです。」 私の知る限り、*scratch*バッファのみが後者のモードを使用します。 単一のキーバインドだけが他のモードと異なるモード全体があるのは奇妙に思えるので、いくつかの履歴またはコンテキストが欠落していると思います。 そう: なぜlisp-interaction-mode存在するのですか? C-jキーバインディングをカウントしないで、それが望ましい状況はありemacs-lisp-modeますか? バッファのモードをに変更する*scratch*emacs-lisp-modeと、予期しない結果が発生しますか? この質問の動機は、現在、キーを2回(2つのモードで)バインドしているため、*scratch*バッファーが*.elファイルを訪問するバッファーのように動作することです。維持する実用的な理由がない場合lisp-interaction-mode、私はただ(setq initial-major-mode 'emacs-lisp-mode)それで終わります。

2
大きなバッファーで `line-number-at-pos`を取得するより高速な方法
この機能line-number-at-pos(約50回繰り返した場合)は、ポイントがバッファーの終わり近くにあるときに、セミラインバッファー(たとえば50,000行)で顕著なスローダウンを引き起こしています。スローダウンとは、合計で約1.35秒を意味します。 100%のelisp関数を使用して行をカウントし、バッファーの先頭に移動する代わりに、モード行に表示される行番号に関与する組み込みのC機能を活用するハイブリッドメソッドに興味があります。モードラインに表示される行番号は、バッファのサイズに関係なく、軽い速度で発生します。 テスト関数は次のとおりです。 (defmacro measure-time (&rest body) "Measure the time it takes to evaluate BODY. http://lists.gnu.org/archive/html/help-gnu-emacs/2008-06/msg00087.html" `(let ((time (current-time))) ,@body (message "%.06f" (float-time (time-since time))))) (measure-time (let* ( line-numbers (window-start (window-start)) (window-end (window-end))) (save-excursion (goto-char window-end) (while (re-search-backward "\n" window-start t) (push (line-number-at-pos) line-numbers))) line-numbers))

2
変数の設定またはモードの有効化時にnilと0、またはtと1を選択する方法
nil、0および/または-1いくつかの機能を無効にするために使用されt、1および/または+1いくつかの機能を有効にするために使用されることを理解しています。変数を割り当てる場合、またはマイナーモードを有効/無効にする場合、どちらを選択する必要がありますか? これらのバリエーションのすべてが、ある時点で使用されるのを見てきました。実際にそれらの間に違いがあるのではないかと思うようになります。私は時々使うの0がうまくいかないのを見てきましたnil。使用場所に違いはありますか?
19 elisp 


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