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

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



1
フレーム内のすべてのウィンドウを数える方法は?
質問が述べたように、そのフレームに現在表示されているウィンドウをカウントする関数が欲しいのですが。 したがって、この: +--------------+-------------+ | | | | | | | *scratch* | *Messages* | | | | | | | | | | +--------------+-------------+ | *Help* | | | +----------------------------+ 戻るか => 3 以下の機能を開始しました: (defun count-windows () "Count how many buffers are currently being shown." (interactive) )
10 elisp  window  frames 

2
プログラムでファイルをDiredバッファーに挿入する
ファイル名のリスト(フルパスを含む)があり、このファイルのセットをリストするDiredバッファーを作成したい どうすればいいですか? ファイル名のリストからDiredバッファーを作成するにはどうすればよいですか? 外部依存関係を使用せずに。
10 elisp  dired  files 

3
hl-line-mode背景を非表示にします。これを回避するにはどうすればよいですか?
と: (when window-system (set-face-background 'hl-line "light yellow") (global-hl-line-mode 1)) 現在の行は黄色の背景で強調表示されますが、テキストに背景プロパティがある場合は上書きされます(diff-mode、rainbow-modeなど)。 適切なプロパティを持たないパーツにのみ背景を設定することは可能ですか? 更新私は実験を始めました、スティプルは背景と競合していないようです: (set-face-stipple 'hl-line '(4 4 "\x01\x00\x00\x00")) (set-face-attribute 'hl-line nil :inherit nil) しかし、点描は残念ながらテキストの外観を損ないます...

3
elispからミニバッファープロンプトに応答するにはどうすればよいですか?
自分で使用するために記述している関数の内部で、インタラクティブな関数を使用していることがあります。関数がいくつかの情報を要求する場合(たとえば、「出力ファイル:〜/」)、ミニバッファーにテキストを追加し、Enterキーを押してユーザーがそうする必要がないようにする一般的なelisp方法はありますか? 例として、org-latex-export-to-pdf関数内で実行したいが、ユーザーがファイル名を指定する必要がないようにしたいとします。実行(org-latex-export-to-pdf)するとポイントがミニバッファーに移動しますが(insert "filename.tex")、次の行に何かを置くことは機能しないようです。
10 elisp 

5
ヘルプからEmacsソースコードを参照するときに表示専用モードに入る方法
Emacsのヘルプを参照して関数をC-h f探しているとき、Elisp / Cの実装をよく調べたいと思います。view-modeこの方法でソースコードにアクセスしたときに自動的に入力して、不要な変更を回避したいと考えています。これを達成するためにアドバイスできるフックまたは関数はありますか?

2
生成されたドキュメント文字列をラムダに添付することは可能ですか?
Emacsのドキュメントは、ドキュメント文字列が中に置かれるlambdaかdefun、「関数オブジェクトに直接保存される」と述べています。ただし、次のように名前付き関数のドキュメントを変更できます。 (put 'my-function-name 'function-documentation "Blah.") しかし、同じトリックはラムダでは機能しません。ラムダにドキュメントを追加する方法はありますか?または、どういうわけか動的にドキュメント文字列リテラルを生成しますか? 明確にするために、次の状況を想像してください。 (let ((foo 1) (bar 2)) (lambda () (+ foo bar))) ラムダにfooおよびの値を説明するドキュメント文字列が欲しいbarです。

4
Elispで文字列をディープコピーしますか?
私は適切な文字列を持っています。元の文字列のプロパティを保持しながら、それを深くコピーしてプロパティを追加したいと思います。どうすれば(簡単に)できますか? 例 1つずつ評価: (setq test-str-1 #(";; This `is' a test" 0 3 (fontified nil face font-lock-comment-delimiter-face) 3 9 (fontified nil face font-lock-comment-face) 9 11 (fontified nil face (font-lock-constant-face font-lock-comment-face)) 11 19 (fontified nil face font-lock-comment-face))) (setq test-str-2 (concat test-str-1)) (add-face-text-property 0 (length test-str-2) 'foobar t test-str-2) そしてその結果: test-str-2 ;; => …
9 elisp 

4
現在の文字が文字かどうかを判断する方法
現在の文字が文字(英字)であるかどうか(つまり、[:alpha:]正規表現で構文クラスに属しているかどうか)を判別する方法。以下のような簡単な関数を書きたいと思います: (defun test-letter () (interactive) (if char-after-is-a-letter (message "This is a letter") (message "This is not a letter") ) ) 更新 残念ながら、文字のクラス[:alpha:]と構文クラスの同等性に関する私の仮定は誤っているようです。

2
killリングに移動せずに、バッファからすべてのコメントを削除する機能
elispコードのバッファからすべてのコメントを削除できるようにする必要があります。今のところ、私は使用しています: (goto-char (point-min)) (comment-kill (count-lines (point-min) (point-max))) ただし、comment-killはインタラクティブな機能であり、その主な用途は一度に1つのコメントを削除することです。さらに、キルしたリングにキルしたすべてのコメントを追加するため、目に見える副作用があります。 バッファからコメントの一部またはすべてを削除する(削除しない)ことができる関数はありますか?

2
プロパティ化/オーバーレイするテキストがないウィンドウの場所に一時的なテキストがありますか?
Q:ウィンドウの画面の位置にテキストを表示せずに一時的にテキストを表示/オーバーレイするにはどうすればよいですか? 私はテキストプロパティとオーバーレイの背後にある基本的な考え方に精通しており(このスレッドも参照)、それらを何度か使用していますが、決してそれに慣れているわけではありません。私の限られた理解は、プロパティ化またはオーバーレイするにはテキストが必要であるということですが、テキストが含まれていないウィンドウのセクションをどのように使用するのか疑問に思っています。 次に例のスクリーンショットを示します。 スクリーンショットの赤いボックスの1つ(つまり、テキストの右側、またはバッファーの最後の行の下)に(一時的に)テキストを配置するにはどうすればよいでしょうか。

3
elispで複数行のドキュメント文字列を処理するより良い方法はありますか?
elisp(一般的にLISPかどうかは不明)が複数行のdocstringを処理する方法が嫌いです。 (defun foo () "This is a multi liner docstring" (do-stuff)) 私は私が何かをすることができることを願っています (defun foo () (eval-when-compile (concat "This is\n" "a multi\n" "line\n" "docstring")) (do-stuff)) インデントが一貫するように。 残念ながら、eval-when-compileは機能しません。 誰かアイデアはありますか?

4
バッファがファイルを訪問しているかどうかを確認するにはどうすればよいですか?
一部の(たとえば、現在の)バッファがファイルを訪問しているかどうかを確認したいと思います。私は言うことができます: (if (buffer-file-name) ...) しかし、それはあまりエレガントではないようです-私が興味を持っているのはブール値だけであり、問題のバッファの実際の名前ではありません。buffer-file-name関数がElispで記述されている場合、そのソースを調べて、それが何を使用しているかを調べることができますが、Cで記述されているため、Emacsソースをインストールできましたが、elisp名が見つからないのではないかと心配しています。とにかくそこに私が何をしているかをチェックする機能のために。 私が必要なのは、現在のバッファのファイルの名前に基づいてディレクトリを作成したいということです。現在、これは多かれ少なかれこれを行っています: (make-directory (if (buffer-file-name) (file-name-base) "default-dir")) それでは、これを行うためのElispの慣用的な方法は何でしょうか?
9 elisp  buffers  files 

2
クラッシュしたEmacsのより良いデバッグ?
Emacs(24.3.93.1)は、Finderから起動すると問題なく動作しますが、ターミナルバージョンを起動すると、次のようになります。 /Applications/Emacs.app/Contents/MacOS/Emacs -nw Emacsは次のようにクラッシュします: Fatal error 11: Segmentation fault[1] 51512 abort /Applications/Emacs.app/Contents/MacOS/Emacs -nw。 問題はinit.elの1行によって引き起こされているようです。 (set-face-attribute 'default nil :font "Menlo-16") その行がコメント化されている場合、Emacsのターミナルバージョンも正常に起動します。 クラッシュの原因を特定するのに数時間かかりました(init.elが半分ずつ減少しました)。 Emacsは、ターミナルアプリで指定されたフォントとフォントサイズを継承します(基本的に、この行はCLIでは意味がありません)。 一般的に言えば、クラッシュするEmacsをデバッグするより良い方法はありますか?おそらく、より説明的なメッセージを出力するようなある種のcliデバッガーを使用していますか? その行がcliを介してEmacsをクラッシュさせるのに、Finderから起動したのではないのはなぜですか?

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