Emacs

Emacsを使っている、拡張している、または開発している人のためのQ&A

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 

5
idoモードで最近開いたファイル
私は使用していますがido-mode、私が嫌いなことの1つは、キーをC-x C-f使用up/downして最近開いたファイルを循環させることができないためiswitchbです。idoこのように動作するように設定するにはどうすればよいですか?
12 ido  find-file  cycling 

3
フレームが削除されたときにバッファを殺す
フレームを閉じるとき、そのバッファを削除したいです。 バッファが他のフレームに表示されている場合、バッファを強制終了しないでください。 フレームに複数のバッファが表示されている場合は、何もしません。 これを設定する良い方法は何ですか?
12 buffers  frames 

2
組織モードで2つの異なるコードブロックに共通のコードブロックを含めることはできますか?
私はorg-modeそれとは異なる要約を抽出するデータ二つのPythonコードブロックのテーブルを含むファイルを。 これらの2つのコードブロック間でいくつかの一般的な定数と関数を共有したいと思います。理想的には、他の2つのブロックのいずれかが評価されるたびに自動的に含まれて評価される別のコードブロックに共通コードをファクタリングすることでこれを行います。作成された構文では、次のようになります。 #+NAME: init_block #+BEGIN_SRC python ... common constants and functions here ... #+END_SRC #+NAME: summary_1 #+BEGIN_SRC python :prepend init_block ... data-processing code depending on init code goes here ... #+END_SRC #+NAME: summary_2 #+BEGIN_SRC python :prepend init_block ... more processing which also depends on init code ... #+END_SRC 私はこの:sessionオプションを使用できたと思いますが、2つの理由から、使用したくないでしょう。まず、C-c C-cコードブロックで使用するたびにゼロから実行するシステムではなく、ステートフルシステムをセットアップします。次に、関連して、ファイルを開くたびに共通の初期化コードを手動で評価することを覚えておく必要があります。データテーブルを更新し、サマリーブロックの1つに移動して更新するだけではできませんC-c …

2
パッケージとともに外部プログラムを提供する適切なアプローチ
私は、使用する外部プログラムをインストールできることで恩恵を受ける多くのelispパッケージ(codesearch、emacs-ycmd、traadなど)を維持し、一部のユーザーの時間と労力を節約しています。たとえば、codesearch.elを使用すると、ユーザー向けにコード検索ツール(elispではなくgoで記述)をダウンロード、コンパイル、インストールできると便利です。これにより、パッケージを使用するための少なくとも1つの障壁が削除されます。 これを行うための「ベストプラクティス」はありますか?たとえば、外部プログラムはどこに置くべきですか? 直接的なアドバイスがない場合は、このようなことをする(理想的にはうまくいく)パッケージを紹介してもらえますか?

2
キーボードマクロで次の行を処理する方法
以下を使用して、バッファー内の行を結合するキーボードマクロを作成しました。 F3 C-n M-x join-line RET F4。 行が長すぎて折り返され始める場合を除き、正常に機能します。これにより、このマクロはフレームの幅に依存します。next-line次の実際の行に移動するようではなく、現在の行の「ラップ」部分に移動するようです。 その問題を回避する方法は?

2
モードラインとミニバッファーを一番上に移動する
モード行とミニバッファーを画面の下部から上部に移動する方法はありますか? ミニバッファーは、前の質問「emacsフレームの中央にミニバッファーのコンテンツを表示する方法」で説明されています。、したがって、この質問は主にモードラインに関するものです。 私はちょうどラップトップを落とし、画面を割ったので、一番下の列に沿ってあまり見ることができません。

2
特定のバッファを新しいウィンドウで強制的に開くにはどうすればよいですか?
Magitで変更をコミットする場合、コミットに関する詳細を追加するときにdiffビューを開いておくと便利です。 Magitでは、*magit ..*バッファーに差分が表示されます。あなたがヒットするとcc、カーソルが上にある間に段階的なファイル、Magitはバッファをコミット.. COMMIT_EDITMSGポップアップ表示されます。デフォルトでは、この新しいバッファは*magit ..*コミット差分を表示していたバッファを置き換えます。 QUESTION - どのように私は作るのですか.. COMMIT_EDITMSG、私は両方見ることができるように(別のウィンドウ再利用したり、フレームがそもそもちょうど1つのウィンドウを持っていた場合は、新しいウィンドウを作成します)新しいウィンドウで開いているバッファ*magit ..*と.. COMMIT_EDITMSGバッファを?
12 buffers  window  magit 

3
組織モードがファイルローカル変数を飲み込むのを防ぐ
ファイルの末尾にある必要がある次のようなコメントを使用して、ファイルローカル変数を定義すると便利な場合があります。 # Local Variables: # fill-column: 80 # End: ただし、組織モードバッファでは、このコメントは最後の見出しの「内側」にあると見なされます。たとえば、次のバッファでは、サブツリーCまたは非表示の場合にコメントBが非表示になります。 * A * B ** C # Local Variables: # fill-column: 80 # End: 私はこの隠蔽を本当に気にしません。 本当の問題は、Cサブツリーを別の場所に移動するたびにコメントが伝えられることです。 たとえば、を呼び出しorg-refileたC場合、またはorg-metaup(およびいいね!)を使用して移動した場合、コメントはサブツリーとともに移動し、明らかに動作しなくなります。 org-modeこれをやめるように指示する方法はありますか?

1
eshell内からリモートホスト上のcwdでアプリケーションを実行する
私はよくEshellを使用してリモートシステムに接続します。それらのリモートシステムでは、現在の作業ディレクトリでスクリプトを実行したいことがあります。通常の端末では、次のように入力します。 ./my-script.sh 残念ながら、Eshellの内部ではこれは機能しません。 ~ $ cd /remote1:~ /ssh:remote1:/home/rekado $ ./my-script.sh env: /ssh:remote1:/home/rekado/my-script.sh: No such file or directory /ssh:remote1:/home/rekado $ スクリプトへの完全なTRAMPパスを指定した場合にのみ機能します。 /ssh:remote1:/home/rekado $ /ssh:remote1:/home/rekado/my-script.sh It works! /ssh:remote1:/home/rekado $ .単純な呼び出しが機能するように、Eshellに自動的に展開させる方法はありますか? 回避策として、現在バインドされC-c .ている関数を使用して、コマンドラインに現在のフルパスを挿入します。.期待どおりに動作することを望んでいます。
12 tramp  eshell 

3
progモードでシンボルを単語として扱う
Emacsには、「単語」に適用される多くのコマンドがあります。例としてはforward-word、kill-word、upcase-word、mark-word、transpose-words、などの「単語」の定義は、コマンド間のビットを変化させるように思えます。例えば、forward-word単語(例えば内のアンダースコアで停止しますfoo_bar)が、mark-wordアンダースコアで停止しません。 Emacsが現在の言語の構文に適切な単語境界を使用するように、progモードのときに「単語」の定義を変更することは可能ですか? 私は午前ときc-mode、私欲しいforward-wordアンダースコアをスキップして、中に私はときlisp-mode私が欲しいforward-wordなど、ハイフンとアンダースコアの両方をスキップします

1
LaTeX数学環境内にあるかどうかを検出する方法は?
Q:ポイントがLaTeX数学環境内にあるかどうかを検出する方法はありますか? どのように1ポイントがあるかによって、インラインを線引きするかどうか、LaTeXの数学の環境内にないかどうかを検出するであろう$...$という名前の環境(またはによりequation、displaymathなど)?
12 latex  auctex 

2
`syntax-ppss`はどの言語に適していますか?
現在のバッファがどのようにフォント化されているかを調べることにより、ポイントがコメント上にあるかどうかを検出する方法を検討しています。 Smartparensはsp-point-in-comment、に依存しsyntax-ppssます。しかし、ようだsyntax-ppssとparse-partial-sexp、彼らはS式を使用していない場合でも、任意の言語のために使用することができます。 たとえば、このPython: x = 1 # I'm a comment y = 2 コメント内にポイントを配置して評価(if (nth 4 (syntax-ppss)) 'comment 'not-comment)することは正しく機能します。 いsyntax-ppss任意のプログラミングモードのために仕事を?docstringsがs-expressionsを議論するのはなぜですか?

7
Emacsでインタラクティブに検索と正規表現による置換を練習するにはどうすればよいですか?
正規表現を使用した検索と置換は、これらのアクションを定期的に実行できるEmacsユーザーにとって明らかに強力なツールです。ただし、Emacs(および/またはプログラミング)の初心者として、正規表現を習得する必要があります。 組み込みのEmacsチュートリアルと同様に、Emacsでインタラクティブに正規表現を学習およびトレーニングできますか?そうでない場合、Emacsを利用して検索と置換のための正規表現の使用を練習する他の提案は何ですか?

1
comintプロセスからの出力を非同期に待機します
まず、免責事項。私はこれを何度も研究しました、そして、私はすでに何らかの方法で答えをすでに見つけたと確信していますが、私はそれを理解しません。 私の問題は次のとおりです。 comintを実行しているプロセスがあります 入力行を送信し、出力をキャプチャして、それが終了したとき(出力の最後の行がプロンプトの正規表現に一致したとき)を確認したい プロセスが出力の送信を完了したときにのみ、別の入力行を送信したい(たとえば)。 少しの背景として、プログラムとの対話を実装するメジャーモードを考えてください。プログラムは、任意の時間で任意の量の出力を返す可能性があります。これは異常な状況ではありませんよね?さて、 入力間で待機する必要がある部分は珍しいかもしれませんが、入力全体を送信するよりもいくつかの利点があります。 出力バッファはきれいにフォーマットされています:入力出力入力出力... さらに重要なことは、プロセスに大量のテキストを送信する場合、テキストは断片に分割され、その断片はプロセスによって貼り付けられます。切断ポイントは任意であり、これにより無効な入力が行われることがあります(たとえば、プロセスは識別子の途中で入力カットを正しく貼り付けません) とにかく、珍しいかどうかにかかわらず、それは複雑であることがわかります。今、私はの線に沿って何かを使用しています (defun mymode--wait-for-output () (let ((buffer (mymode-get-buffer))) (with-current-buffer buffer (goto-char (point-max)) (forward-line 0) (while (not (mymode-looking-at-prompt)) (accept-process-output nil 0.001) (redisplay) (goto-char (point-max)) (forward-line 0)) (end-of-line)))) 入力ラインを送信した後、次のラインを送信する前に毎回これを呼び出します。まあ...それは動作します、それはすでに何かです。 ただし、出力を待機しているときにemacsがハングすることもあります。その理由は明らかでありsleep-for、ループに何らかの非同期(たとえば1)を含めると、出力は1秒遅延しますが、ハングは抑制されると考えました。この種の非同期sleep-for は存在しないように見えることを除いて 。 それともそうですか?より一般的には、emacsでこれを達成する慣用的な方法はありますか?言い換えると: プロセスに入力を送信し、出力を待ってから、さらに入力を非同期に送信する方法は? 周りを検索するとき(関連する質問を参照)、主にセンチネル(プロセスが終了しないため、私の場合には当てはまらないと思います)といくつかのcomintフック(しかし、何をすべきですか?フックをバッファローカルにし、「残りの行を評価する」を関数に変え、この関数をフックに追加し、その後フックをきれいにしますか?それは本当に汚いですね?) 自分自身を明確にしない場合、またはどこかで利用可能な明らかな答えがある場合、プロセスの相互作用のすべての複雑さに本当に混乱しています。 必要に応じて、これをすべて実用的な例にすることができますが、以前に見つけて助けにならなかったすべてのような「特定のプロセスの答えを持つ特定のプロセスの質問」をもう1つ作成するだけです。 SOに関するいくつかの関連する質問: /programming//q/16815598/1083706 /programming//q/3572532/1083706 /programming//q/6578373/1083706

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