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

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

4
名前付き文字列の置換?
私はしばしば同じ文字列のいくつかの置換を行わなければなりません: (format "%s %s %s" "a" "a" "a") ;; gives: "a a a" (これは単なるダミーの例です。この場合、「a」を空白で接着する方が良いですが、一般的にはより複雑な状況に対処します) 名前付き置換を行う方法はありますか?たとえば、Pythonでは次のように記述します。 "{0} {0} {0}".format("a") # or: "{name} {name} {name}".format(name="a")
13 elisp  string 

5
orgmodeファイルを開いたときに、elispをどのように評価できますか?
ロード時にorgmodeファイルで実行したいelispコードがあります(ファイルごとに異なり、ファイル自体で定義されています)。これを行う方法はありますか?http://orgmode.org/manual/In_002dbuffer-settings.htmlには何も表示されませんでした orgmodeファイルが読み込まれるたびに特別な名前のコードブロックを実行するemacs初期化に何かを追加できる場合、それは解決策かもしれませんが、それを行う方法がわからないので、理想的には何かが組み込まれています。
13 org-mode  elisp 

1
(。123)での期間の意味
. /path/to/filebashで学んだことは、ファイルの実行に使用されます。好奇心から、私はEmacsで次のようなものを評価します (. 123) ⇒ 123 (read "(. 123)") ⇒ 123 Emacsは単にと読みます(. 123)が123、どうしたのですか?
12 elisp  list  read 



3
現在の文字がそのメジャーモードのコメント文字かどうかを検出するにはどうすればよいですか?
次の行を現在の行に引き上げるこの小さな機能に取り組んでいます。現在の行が行コメントで、次の行も行コメントである場合、「プルアップ」アクションの後にコメント文字が削除されるように機能を追加します。 例: 前 ;; comment 1▮ ;; comment 2 呼び出し中 M-x modi/pull-up-line 後 ;; comment 1▮comment 2 ;;以前の文字は削除されることに注意してくださいcomment 2。 (defun modi/pull-up-line () "Join the following line onto the current one (analogous to `C-e', `C-d') or `C-u M-^' or `C-u M-x join-line'. If the current line is a comment and the …

1
コードからコマンドを呼び出すときに「インタラクティブ」引数を使用する方法
私はtest単にユーザーからの入力を受け取り、それをエコーバックするというコマンドを持っています: (defun test (input) (interactive "MInput: ") (message "%s" input)) それを呼び出す別の関数を書きたいです。次は失敗します: (defun test-forward () (interactive) (test)) このエラーで test-forward: Wrong number of arguments: (lambda (input) (interactive "MInput: ") (message "%s" input)), 0 test1つの入力を取るため、これは理にかなっています。作るtestのはinput &optional簡単になりますtest-forwardリターンをnil何もせずに。これを行う正しい方法は何ですか?
12 elisp  commands 

5
控えめにテキストのレンダリングを変える方法は?
音声認識で使用するためのemacs拡張機能を作成しています。特定の機能に関するヘルプを探しています。音声認識エンジン(Dragon)が一貫して認識できない単語もあります。何回訓練してもかまいませんが、特定の単語を認識するのは簡単ではありません。通常、トピックについて書いているときやコーディングしているときは、同じ単語を何度も何度も使用します。 そのため、オーバーレイを使用して、バッファ内の単語のレンダリング方法を変更するモードを作成しました。単語にランダムな文字を使用し、ランダムな色で下線を引き、その上にランダムな発音区別符号(アクセント、ウムラウトなど)を付けます。以下にスクリーンショットを示します(おそらく、マーク/下線を表示するにはズームする必要があります)。 次に、「purple p hair」と言うと、「a」の下に紫色の下線が付いた単語が検索されます。そのため、上記のスクリーンショットでは、emacsが「regexp-quote」と入力してしまうと言っています。 これにより、認識機能が一貫して認識に優れている有限の単語セットを使用して、画面上にある既に使用した単語を参照できます。 たまに衝突が発生する場合を除き、非常にうまく機能します。それを行うために(random)、衝突を回避するようにアルゴリズムを変更する代わりに、またはアルゴリズムに変更を割り当てることで、単語のmd5ハッシュからのバイトを使用するのと同じ方法で一貫して単語を参照することを学ぶことができます。私は6つの簡単に区別できる色(下線が1文字幅で1ピクセルの太さだけでは難しい)と3つの簡単に区別できる発音区別記号(互いに区別しやすく、上記の下線と混同しにくい)だけを見つけました線または下線と重なる)、上のソースの上部に表示されます。 衝突の頻度を減らすために、レンダリングを変更する方法がもっと必要です。理想的には、レンダリングの変更は次のようになります。 テキストの残りの部分から不快にならないでください。これにより、たとえば、inverse-videoプロパティを却下することになりました。 他の変更と簡単に混同しないでください。上線は、前の行の下線と間違えやすい。フォントサイズが非現実的に大きくない限り、多くの発音区別符号は似ています。 他の変更がある場所の空間的に近くにあります。今、目がターゲティングキャラクターを見つけると、すべての情報、マーカー、下線、文字がそこにあります。 ダイアクリティカルマークを正しくレンダリングする固定幅フォント(コーディングに必要)でうまく動作します(マークを正しくレンダリングするには、ConsolasからDejaVu Sans Monoに切り替える必要がありました) ラテン系のアルファベット文字に取り組みます。たとえば、アラビア語の結合マークがありますが、ラテンアルファベット文字では結合しません。 文字の色は変更しないでください。これは既に構文の強調表示に使用されているためです。 実際、emacs lispを使用してemacsで実行可能になります;) レンダリングを制御する特殊なUnicode文字が悪用されて、新しい可能性が開かれる可能性がありますか?または、より多くの色を簡単に区別できるように下線を太くする方法はありますか?または、Unicode以外の文字の上にマークをレンダリングできる他のあいまいなemacs機能がありますか?

1
バッファのレキシカルバインディングを有効にする潜在的な落とし穴は何ですか?
これは、この質問での字句バインディングと字句レットの議論に触発されました。字句結合あなたの人々はあなたがそれをすべての時間を有効になっていないだろう、なぜJavaScriptのような他の言語にするために使用することができる便利なクロージャを持ってすることができますか? 古いEmacsenとの後方互換性は、レガシーコードバッファーで有効にした場合、どのような落とし穴を探す必要があるのか​​を気にしませんか?

1
Elispの再実装
Emacsは、事実上の参照実装として機能するCのelispのインタープリターを実装します。他の言語(特にJavascript)でのelispの他の実装はありますか?elispを完全に再実装するために必要なプリミティブの最小セットは何ですか?そうすることの本質的な困難は何ですか(例:動的スコープ)。
12 elisp 

5
この再帰コードを理解する方法は?
入力された行数に基づいて小石の数を見つける関数An Introduction to Programming in Emacs Lispの助けを借りて再帰を実証するマニュアルでこのコードを見つけました。condそこ。 (defun triangle-using-cond (number) (cond ((<= number 0) 0) ((= number 1) 1) ((> number 1) (+ number (triangle-using-cond (1- number)))))) 引数4を渡した後、10と評価されます: (triangle-using-cond 4) マニュアルでは、特にこのサンプルコードの各ステップで何が起こるかを明確に説明していなかったため、ここで再帰がどのように機能するかを理解できませんでした。各インスタンスで何が起こるかをステップごとにメカニックスを理解するのに役立ちますか?
12 elisp  learning 

2
優れたソースコードを備えた組み込みパッケージとは何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 Emacs Lisp、その構文、データ構造などに精通しようとしているので、言語の使用方法とイディオムを学ぶ方法をよりよく理解できるソースを持つ組み込みパッケージは何ですか?

3
format-time-stringのような関数を実装する最も簡単な方法は何ですか
この format-time-string 関数は文字列を受け取り、その文字列内の一連の特別な構成(先頭にが%付いた文字)を特定のテキストに置き換えます。 そのような機能を自分の関数に実装したいと思います。 文字と記号の間に次のような連想リストがあります'((?n . name) (?r . reputation))。 関数はのような文字列を取る必要があります"My name is %n, and my rep is %r"。 それは交換する必要がある%nと%rの変数の値を持つnameとreputation、その結果を返します。 %%同様に処理する必要がありますformat-time-string(それをに置き換えてください%)。 この機能を実装する最も簡単な方法は何ですか? これを容易にするライブラリまたは関数はありますか?%%正しく処理することが重要です。
12 elisp 

1
バッファローカル変数を再びグローバルにする
私はローカル変数を試し、設定しました: (defvar-local foo nil "Buffer local foo") 私は後でプログラムを再設計して、代わりにグローバル変数を使用しました: (defvar foo nil "Not buffer local foo") しかし、変数はまだローカルなバッファで(kill-local-variable 'foo)あり、それを殺すことさえしませんでした。 基本的に、どうすれば「元に戻す」ことができmake-local-variableますか?


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