Emacs

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


2
パッケージメンテナーがEmacsパッケージマネージャーを使用しないようにするための技術的な考慮事項?
著名なパッケージメンテナーがEmacsパッケージ管理システム(ESS?)を使用しないことを選択している、またはその制限(Helm)に不満を持っていることに気付いています。 HelmのREADME.mdからの引用: 警告:helmファイルのフェッチとコンパイルを担当するpackage.elの悪い概念が原因で、melpaおよびlist-packageからのアップグレード時に、ユーザーはほとんどの場合エラーを抱えていました。これを回避するために、package.elがクリーンな環境でファイルをコンパイルするように、helmへの依存関係として非同期が追加されました。(m)elpaのpackage.elでインストールできる他のすべてのパッケージのインストールを修正するために推奨されますが、gitからインストールしてmakeファイルを使用する人はこの問題に悩まされることはなく、非同期も必要ありません。詳細については、FAQを参照してください。 現在のパッケージ管理システムには、それが示唆している正確な技術的制限があり、パッケージがasync依存関係として使用する必要があるのはなぜですか?

1
org-blank-before-new-entryにTODOリストとテキストのアウトラインを区別させますか?
私たちの多くがそうであるように、私は2つの異なることにorg-modeを使用しています。 TODOリストマネージャーとして テキストアウトライナーとして 空白行を状況に応じて異なる方法で機能させたい。 TODOリスト:空白行なし テキストのアウトライン:見出し以外のテキストが見出しの前にある場合、自動的に1行の空白行を挿入します つまり、TODOリストを実行しているときに、多数の見出しが連続している場合、それらの間に改行を入れたくありません。 TODOリストモード、改行なし: * Organize Party [33%] ** TODO Call people [1/2] *** TODO Peter *** DONE Sarah ** TODO Buy food ** DONE Talk to neighbor ただし、テキストを書いているときは、視覚的な空白/読みやすさのために改行が必要です。 アウトラインモード、見出しの前の空白行: * Heading This is a document that has a heading, and a body. The body will …

7
Magitで使用されるものと同様のポップアップメニューを実装する方法
質問 私はの形でユーザーインターフェイスを作成したいポップアップメニュー、Magitに使用されるものと同様のポップアップメニュー。 特徴 ポップアップの定義 この質問のポップアップは、メニュー項目のコレクションを含む小さな一時的なウィンドウを意味し、ユーザーはこれらの項目の1つだけを選択できます。 画面上の位置 ポップアップは画面のどの部分にも表示できますが、非常にわかりやすく、現在アクティブなウィンドウの横に表示されることが望ましいです。 ポップアップバッファの内容 アイテムはきれいな表の形で表示されるべきです。かなりの質問のコンテキストは視覚的に魅力的であることを意味します。この効果は、メニュー項目をまっすぐな列に配置することで最も簡単に実現できます complete--insert-string。この段落は、追加の説明に役立ちます。独自の方法で行うことができます。これにより、答えが不正確になることはありません。 メニュー項目の選択 選択は、単一のキーを押すか、必要に応じてマウスを使用して実行されることが予想されます(それほど重要ではないため、マウスをサポートしない命題を含む回答は合法です)。マウスをサポートするソリューションを提案する場合は、ユーザーが直感的な方法で、つまり目的の選択肢を左ボタンをクリックすることによってメニュー項目を選択できる必要があることに注意してください。 NBマウスはさまざまな方法で使用でき、選択肢を示す別の方法も歓迎します。 ポップアップの排除 ユーザーが上記の方法でメニュー項目を選択すると、バッファーとそのウィンドウが表示から削除され、強制終了されます。ポップアップメニューを呼び出す前にアクティブであったウィンドウは、再びフォーカスされる(つまり、アクティブになる)必要があります。 戻り値と引数 できれば、このアクションの結果として、Lispオブジェクトが返される必要があります。Lispオブジェクトは次のいずれかです。 nil—これは、ユーザーがを押すC-gか、その他の方法でポップアップメニューを中止したことを示します†。 string—文字列(シンボルの使用が許可されています)はstring-equal 、実際のアイテムのコレクションとしてポップアップメニューに提供される文字列の1つにする必要があります。 プログラムの残りの部分にユーザーの選択、または場合によってはその不在を知らせる別の方法も許容されます。ただし、他にどのように実行できるかが明確でない場合は、すべての回答者に即興で質問し、この側面のさらなる明確化を求めません。 これはすべて戻り値です。入力パラメータについては、可能な選択肢(つまり、メニュー項目)を表す文字列のコレクションを少なくとも含める必要があります。 許容できる回答 予想される回答は次の形式になります。 知識のある読者が上記のような関数を記述できるようにする十分なコードスニペット。作業関数全体を記述することは予期されていません。ただし、不確実性を避けるために(コードのかなりの部分を省略できますか?)、スニペットの欠落部分は回答のテキストコンポーネントで説明する必要があります。 同様の機能を実装する既存のライブラリへのリンク。不確実性を避けるために、私たちの場合と同様に、ライブラリーを使用して、上記の機能を少なくとも2つまたは3つ持つポップアップ(上記の定義を参照)を作成できることに注意してください。提案されたライブラリーが前述の条件を満たせない点と異なる場合、そのようなケースはそれぞれ独立して判断され、OPが有用であると判断した場合は常に賛成されます。 «機能»セクションで説明されている機能を実装するために使用できる組み込みEmacs関数またはサードパーティの関数の説明。上記を参照してください。回避の不確実性には、あなたの答えは実装したい、将来の読者のためにどのように活用できるか明確にしてください状態のポップアップ、Magitに使用されるものと同様のポップアップメニューを。 †ポップアップメニューを中止する別の方法には、次のものがあります(これらに限定されません)。 ポップアップメニューウィンドウの外側をクリックします。 選択せずにポップアップを含むバッファを強制終了します。
10 magit  popup 

2
組織モードのエクスポート:各段落の最初の行をインデント、「文学的」スタイル
私のソースファイルをフォーマットするためにODT(または他のフォーマット)へのエクスポートで使用できる組織モードのスイッチはありますか これは段落これは段落これは段落これは段落これは段落これは段落これは段落これは段落 これは別の段落これは別の段落これは別の段落これは別の段落これは別の段落これは別の段落これは別の段落これは別の段落 に: This is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph. This is another paragraph this is another paragraph this is …

1
emacsは開いているLaTeXタグを自動的に閉じることができますか?
を使用する場合web-mode、a </を入力すると、最高レベルの開始タグ名でオートコンプリートされます。たとえば、を開いている場合<div>、</はにオートコンプリートされ</div>ます。 LaTeXで同じものを取得することは可能ですか?たとえば、\begin{foo}タグがある場合、emacsにオートコンプリート\endまたは\end{toをオートコンプリートさせるにはどうすればよい\end{foo}ですか?
10 latex 

1
(バックトレース/スタックトレース)から関数が呼び出される場所を見つける方法は?
(transient-mark-modeで)リージョンが非アクティブ化されるという問題に遭遇しました。関数deactivate-markが呼び出され、それがどこから(なぜ)呼び出されたかを知りたい。 試しましM-x debug-on-entry RET deactivate-markたが止まりましたが、発信者を見つける方法がありませんでした。表示される全体のスタックトレースは次のとおりです。 Debugger entered--entering a function: * deactivate-mark() 私は試しましたM-x edebug-eval-defunが、Edebugは発信者も表示しません。 なぜ(どこから)deactivate-mark呼び出されているのかを知る方法は?私はバックトレースまたはスタックトレース機能を探しています。 編集: advice-addトリック: (defun message-show-backtrace () (message "%s" (backtrace-frame 10))) (advice-add deactivate-mark :before #'message-show-backtrace) で生成さnilれ*Messages*ます。 編集:詳細deactivate-mark:http : //emacshorrors.com/posts/deactivate-mark.html

1
ファイルパスはどのように.dir-locals.elのサブディレクトリにマッピングされますか?
のアイデアが好きです.dir-locals.el。.dir-locals.el自分のホームディレクトリに自分のファイルがあり、ファイルを開い.dir-locals.elたディレクトリに近い場合を除いて、開いたディレクトリ/ファイルのすべての変数を設定する必要があります。ただし、ファイルが認識されても、サブディレクトリのディレクトリ変数は開いているファイルに適用されます。 これは私の~/.dir-locals.elです: (("dev/school" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) ("dev/test" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) (c-mode . ((c-file-style . "linux") (c-basic-offset . 8)))) ファイルを開くと~/dev/test/test.c、変数indent-tabs-modeはに設定されtてc-basic-offsetい8ます。 (describe-variable 'c-basic-offset)そのファイルでは、8fromに設定されていることがわかります~/.dir-locals.el。 (describe-variable 'indent-tabs-mode)そのファイルではt、その値()はデフォルトの状態にあると述べています。 どういうわけか望ましい動作を達成できますか?何が悪いのですか?ファイルパスはどのようにしてサブディレクトリにマッピングされ~/.dir-locals.elますか? 編集: ジョナサンが示唆され、私も試してみました: (;; dev/school subdir ("dev/school" . ;; dev/school specification for all modes (nil . ((indent-tabs-mode . nil) …

2
拡張子のないファイルのモードを記憶する
拡張子のない多くのファイルを編集し始めましたが、まだメジャーモード形式です。 私はチームで唯一のEmacsユーザーであり、私のエディターが特別なものを必要としていることを痛々しく明白にしたくありません。コードベースの変更は避けたいです。 ファイル名を変更できません 特別なEmacsコメントを使用できない Emacsに、手動でファイルを最後に(たとえばと言ってM-x conf-mode)置いたモードを記憶し、再度アクセスしたときにそのモードを自動的にアクティブにしてほしいと思います。 savehist-mode永続化の処理に使用します。 簡単にできますか?
10 major-mode 

1
コマンドラインで組織モードファイルをPDFとしてエクスポートしますか?
Emacsが組織モードファイルをBeamer PDFにエクスポートするために使用するコマンドライン引数は何ですか?(Makefileユーザーが実行したときにPDFを生成するを作成したいと思いますmake。) 私はこの答えに従ってみましたが、うまくいきませんでした: $ emacs --batch foo.org -f org-beamer-export-to-pdf Symbol's function definition is void: org-beamer-export-to-pdf $ emacs --batch -l ox-beamer foo.org -f org-beamer-export-to-pdf Cannot open load file: ox-beamer 上記のエラーは、org-modeファイルがカスタムの場所にあり、私~/.emacs.d/init.elがロードされていない(別名を--batch意味する)ために発生します。-q--no-init-file Emacsにinitファイルをロードするように指示すると、動作します。 $ emacs --batch -l ~/.emacs.d/init.el foo.org -f org-beamer-export-to-pdf しかし、これは他のユーザーを使用することで機能しない~/.emacsか、~/.emacs.el代わりに~/.emacs.d/init.el。Emacsにロードするように指示してみましたuser-init-fileが、うまくいきませんでした: $ emacs --batch --eval '(load user-init-file)' foo.org -f org-beamer-export-to-pdf Wrong type …

3
1つのバッファーで複数のソースブロックを編集する
同じファイルに絡まっている複数のソースブロックがあります。C-c '1つのブロック内で呼び出すと、この特定のブロックのみが新しいバッファーに表示されます。 (この特定のスニペットだけでなく)このバッファ内のこのファイルのすべての部分を表示する可能性はありますか? 例: #+begin_src emacs-lisp :tangle foo.el (defvar *ok* "") #+end_src This is where the variable is stored... #+begin_src emacs-lisp :tangle foo.el (defun add-one (n) (+ 1 n)) #+end_src C-c '最初のブロックでヒットすると、次のようになります。 (defvar *ok* "") でも私はしたい: (defvar *ok* "") (defun add-one (n) (+ 1 n))

3
Emacsがインストールしたパッケージをエクスポートしますか?
emacs 24.4を使用しています。Mx list-packagesディレクティブを使用して、約1年間使用するインストール済みパッケージを多数追加しました。インストールしたパッケージのリストを他の場所で使用するためにエクスポートしたいと思います。.emacsをコピーすると、起動時にいくつかのエラーが発生し、メモリを動かして特定のものをインストールします。私は.emacs.dをコピーできると思いますが、それはおそらく悪い考えのようです。 インストールされたパッケージのリストを、外部のマシンで簡単に取得するために使用できるファイルにダンプするために発行できる手順またはディレクティブはありますか?
10 package 

2
Emacsは常に起動時にカラーテーマを信頼するように求めます
私のEmacsは、選択したカラーテーマを信頼するべきかどうかを常に尋ねてきます。私はいつも答えるyとy信頼し、私の選択を覚えています。色のテーマを手動でロードしています: (load-theme 'my-favourite-theme) これは、簡単なカスタマイズがカラーテーマの読み込みの下に配置されているためだと思います。それを修正する方法はありますか?または、簡単にカスタマイズできるように、カラーテーマの読み込みを委任する必要がありますか?

1
あるサブプロセスが他のサブプロセスを枯渇させないようにするにはどうすればよいですか?
明確にするために、私はemacsをマルチスレッド化する必要のあることについては何も話していません(おそらくこれも解決されるでしょう)。再現するには: emacs -Q#24.4.1を実行しています 2番目のフレームを作成する 最初のフレームに戻る MXシェル Mx rename-uniquely(後で2番目のシェルを作成します) 実行を開始: while true; do echo "hello world"; done 2番目のフレームでは、Mxシェル 2番目のシェルが表示されることはほとんどありません(まれに繰り返し試行しても機能します)。どうやらemacsは、最初のシェルの出力を読み取って他のプロセスからの出力をリッスンすることを決して中断しません。保留中の出力を持つ複数のプロセスがある場合、ラウンドロビンの方がはるかに良い動作になります。より良い行動をとる方法はありますか? 私が知っている唯一のトリックは、シェルバッファーを独自のプロセスにすることですが、残念ながらそれは私にはうまくいきません。それを行ったとしても、音声認識ソフトウェアが機能するようにソケットをリッスンするサブプロセスを実行する必要があります。そうすれば、シェルを最初に実際に制御できるようになります。これが、私がこれを発見した方法です。上記のような無限ループを実行すると、データがソケットから取り出されなくなります。


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