Emacs

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

1
CiとTABを区別する方法は?
通常、歴史的な理由から、emacsはTABキーコードとC-iキーを同じものとして扱います。cf。ファンクションキーに関するemacs lispのドキュメント、または「TABとの違いは何ですか?」という質問に対するabo-aboの回答 。 注:この記事では、キーコードがありTAB、<tab>とC-i。一方tab、Ctrl+ はキーボードの物理キーです。 i しかし、現時点では、Emacsの扱いTABとC-i同じもののように、すなわち(equal (kbd "TAB") (kbd "C-i"))- > t。 しかし、私たちはもはやコンピューティングの石積みに住んでいないので、これは非常に迷惑です。これを回避するためにできることはいくつかあります。例えば 「TABを変更せずにコマンドをCiにバインドするにはどうすればよいですか?」 Treyのソリューションは私の場合local-function-key-mapsは機能しませんでした。変数は変更されません。変数を使用するdeleteよりも使用するように変更するとdelq、変数が変更されますが、resolve ... tabとCtrl+ iは同じままです。 ハイパーマップへの翻訳は、 1980年代の回避策のように思えます... Hyper+ を使用することiもできます。 を使用して、いくつかのポストASCII制御コードに+ input-decode-mapをマッピングすることCtrliは、ほとんど私が探しているものです。+ kbdをバインドするソースコードのすべてのビットを変更する必要があることを意味するマクロで適切に動作しないことを除きます。すべてのソースコードが適切に変更されていることを考えると、おそらくこれが最良のソリューションです。Ctrli 使用(kbd "<tab>")のためにtabと(kbd "C-i")(に変換され(kbd "TAB")、つまり\tためにリテラルを)Ctrl+は、i 仕事をしていますが、変更する必要があると思い、すべての間違った種類使用するソースファイルtab[読む:キーコードTAB]迷惑です。 これは、たとえばgithubの問題やemacs.sxでも提案されています。 これらの解決策はどれも本当の解決策ではないようで、回避策やハッキング(既存のバグの)を検討したいと思います。 するそこに方法があり、強制的にマップするのemacsをtabする(kbd "<tab>")と(kbd "TAB")しながら、Ctrl+ iにマッピングされている(kbd "C-i")Emacsのソースコードをmodyfingの短いは? このアプローチはつまり、ユーザーには完全に見えなくする必要がありますtabキーコードのような<tab>とはTABしながら結合1にマップする必要がありますCtrl+ iキーコードのようなC-i別の結合にマップする必要があります。 それほど深刻ではありませんが、ここにあるemacs開発者は、これがいつかemacsソースコードで変更/修正されるかどうかをコメントできますか?



2
フレームの下部に沿って単語のリストを表示しますか?
私は開いているすべてのemacsフレームの下部に沿って水平に別々の行に3つの単語のリストを表示したいと思います(上部も機能しますが)。私はこれを行う6つの方法を考えましたが、それらにはすべて問題があります: 最初に考えたのは、モード行に行を追加することでしたが、モード行で改行文字を使用することはできません。「^ J」に変換されるだけです。 私の2番目の考えは、画面の上部に行を持ち、ヘッダー行を使用することでしたが、改行文字もサポートしていません。 ウィンドウの最後の3行にオーバーレイを表示できましたが、これを堅牢にするのは難しいようです。ウィンドウの実際の端ではなく、ポイントがオーバーレイに達したときにスクロールをトリガーする必要があり、常に再配置する必要がありますオーバーレイはウィンドウスペースではなくテキストスペースにあるため、オーバーレイ。 フレームの下部に専用の窓を作ってみることができました。私はこれをコーディングしようとしましたが、あまり堅牢ではありません。フレームにすでに分割ウィンドウが含まれていて、Cx、1を無視するカスタムバージョンのdelete-other-windowsに再バインドする必要がある場合、正しく動作しないようです私の特別な窓と私は他のコーナーケースがあると確信しています。また、ヘルプウィンドウが開くと、水平方向の分割が既にあると考えられるため、垂直方向に開きます(技術的には存在しますが、1行のウィンドウのみを表示します)。 これに専用のフレームを用意することもできますが、その場合、設定はターミナルモードで動作しません。また、ウィンドウマネージャーのスクリプトを作成して、画面の下部に沿って保持し、選択不能にしてレイアウトに影響を与えないようにする必要があります。などなど 3行のテキストを直接ミニバッファーに挿入できます。これが部分的に機能するようになったので、ミニバッファーを増やして3行を収容し、表示できます。ただし、メッセージがエコーされるたびに、別のコマンドを発行して行が再表示されるまで、行は消えます。理想的には、3本の線とエコーエリアが重ならないので、両方を見ることができます。どのメッセージをエコーエリアに送信するかを確実にフィルタリングできれば、これは面倒ではありません-EmacsWikiで解決策を見つけましたが、emacs Cソースに由来するメッセージでは機能しないようです(具体的には、タイマーで頻繁に自動保存するため、メッセージを保存するファイルを取り除きます)。 コンテキストに関して、私の目標は、現在のバッファーで最も頻繁に使用される単語、現在のバッファーで最も近いポイント、および現在のバッファーで最近使用された単語を常に表示することです。私は音声コマンドを介してそれらをバッファに挿入できるようにするつもりです。したがって、「最近接2」と言って、ポイントに最も近い単語のリストから2番目の項目を選択して挿入することができます。私は、現在編集しているバッファが何であれ、単語リストが表示されることだけに関心があります。リストが常に表示される必要があるため、さまざまなコード補完モードで使用されるポップアップウィンドウを使用したくありません。

3
Emacs用のカラーピッカーはありますか?
rainbow-modeCSSファイルの色を強調するために、この優れたツールを使用しています。 ただし、これは私が望む色を知っていることを前提としています。Emacs内でCSS編集に使用できるカラーピッカーはありますか?理想的には、Firefoxカラーピッカーのように、色を少し暗く/明るく/赤く/緑にできるものが本当に欲しいです。 あるいは、customize-face548色のセットからカラーピッカーを提供していることに気付きました。これをCSSに使用できますか?
20 colors 


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)それで終わります。

3
Emacsデーモンを使用する場合のターミナルフレームとグラフィカルフレームのさまざまなテーマ
Emacs24で次の動作を実現しようとしています。 実行中のサーバーに端末フレームで接続するかどうかに応じて、異なるテーマ(solarized-dark vs. solarized-light)を使用したい % emacsclient -t またはgtkフレーム付き % emacsclient -c これは古いEmacsで機能していたようですが、現在のEmacsには方法が見つかりませんでした。私はSO(例えば、確認alreday /programming//q/18904529/152439と回答)とメーリングリスト(例えば、https://lists.gnu.org/archive/html/help-gnu-emacs/ 2012-02 / msg00227.htmlおよびhttps://lists.gnu.org/archive/html/help-gnu-emacs/2012-02/msg00237.html)。 私の現在のセットアップは次のようになります。 (add-to-list 'custom-theme-load-path "~/.emacs.d/themes/solarized") (if (daemonp) (add-hook 'after-make-frame-functions (lambda (frame) (select-frame frame) (if (display-graphic-p frame) (load-theme 'solarized-light t) (load-theme 'solarized-dark t) ) ) ) (load-theme 'solarized-light t) ) この問題は、グラフィカルフレームを開いてからでターミナルフレームを開くとemacsclient -t、テーマsolarized-darkが新しいターミナルフレーム(正しい)と既に開いているグラフィカルフレーム(残すべき)の両方に適用されることです。理想的にはそのまま)。ターミナルフレームが既に開いていて、新しいグラフィカルフレームをで開くと、同等のことが起こりemacsclient -cます。 編集:現在のEmacs24でこれが不可能な場合、再び可能にする計画はありますか?
20 frames  daemon  themes 

1
顔がバッファの周辺領域に出血するのを防ぐ方法は?
Q:org-modeリンクさ...れたヘッダーが折り畳まれたヘッダーの最後にある選択的な表示文字にはみ出さないようにするにはどうすればよいですか? これは視覚的な目盛りで、私を少し気取ってしまいます。すると、org-modeリンクが行の一番最後で、リンクの顔がに超える出血...ヘッダーが折り畳まれていることを示しています。たとえば、リンクの後に空白スペースがある場合、出血はありません。 私が投稿したスクリーンショットは問題を示しています。3行目は、リンクの終わりと行の終わりの間に文字がない問題のある行です。4行目はリンクを示し、その後にスペースが続きます。 まず、なぜこれが起こるのですか?第二に、さらに重要なことに、どうすれば停止させることができますか? 更新1:コメントに従って、ヘッダーを閉じた状態と開いた状態のバッファーのスクリーンショットを以下に掲載します。Emacsを初期化ファイルなしで(つまりemacs -Q)、required org-modeで開き、このサンプルファイルを開きました。だから、それは私の設定では変なものではないようです。 すべてのヘッダーが閉じられました: すべてのヘッダーが開きます: 上記で使用していたテーマはインクポットですが、デフォルトのテーマ(新しいスクリーンショットのように)と同様にソーラー化されたテーマを使用しても同じ問題が発生します。 Emacsのバージョンは24.3.1です。orgバージョン7.9.3f(つまり、そのEmacsバージョンにバンドルされているもの)と8.3betaを使用しても同じ結果が得られます。 更新2:コメントリクエストへの応答の最小の動作例を次に示します。 * here's a header with a [[~/somefile.txt][link at the end]] - This one's a problem - Interesting note: + put the cursor immediately *after* the *d* in "end" with the header closed/folded * the face no longer bleeds …
20 org-mode  faces 

3
emacsフレームの中央にミニバッファーのコンテンツを表示する方法は?
最大化されたEmacsフレームで作業している場合、画面の下部にミニバッファー/エコーエリアの内容を表示するのは見にくい場合がありますが、コマンドを入力するときに編集中のテキストにフォーカスを失います。使いやすさの点で問題。 現在のemacsバッファーの中央にあるミニバッファー/エコー領域を、ミニバッファーがアクティブなときに編集中のテキスト上に移動する方法、またはミニバッファーの内容をキャプチャして中央に表示する方法がありますか?コマンドを入力しながら、現在のバッファの?
20 minibuffer 


4
画像モードでの画像の縮小/ズーム/スケール
Emacsのdoc-view-modeを使用すると、PDFを簡単に縮小/ズーム/などできますが、画像でも同じことができるようになりたいです。現在、画像を開くと、ズームレベルを調整してフレームに合わせることができません。があることは知っimage-mode-fit-frameていますが、画像が画面よりも大きい場合は役に立ちません。 画像を拡大または縮小できるパッケージまたはモードはありますか?

3
initファイルのエラーを適切に処理する方法
initファイルを実行するときにエラーをキャッチし、それを適切に処理する方法が必要です。私の最も重要なカスタマイズとキーバインドの多くは、他の設定がそれらの上に適用されないようにするために、initファイルの最後に表示されます。問題は、初期化が早期に中止されると、馴染みのあるキーバインディングと設定を適用せずに問題をデバッグしようとすると、完全に不自由に感じることです。 エラーが発生したときに初期化プロセスを正常に終了する方法はありますか?


2
「文字レベル」差分で2つのバッファ間の差分を表示する方法
2つのバッファの違いを比較する場合、M-x ediff-buffers単語内で変更された特定の文字(つまり、「文字レベル」の差分)を示しません。最新の差分ツールのほとんどは、単語内の差分を表示します。 Emacsはデフォルトでこの重要な(または明らかに有用な)機能を欠いているようです。Emacsに文字ごとにdiffを表示させるにはどうすればよいですか? ここM-x ediff-buffers diff1 diff2でを更新しemacs -Qて、私のテーマが邪魔にならないようにするために使用します: Meldに貼り付けた同じテキストを次に示します。
20 ediff  diff-mode 

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