Emacs

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

1
emacsを再起動して、オープンバッファとインタラクティブな履歴を保持するにはどうすればよいですか?
フォローアップとして、私は変更を加えたときにすべての私の影響を受けたバッファがそれらの変更をピックアップしますので、私の.emacsファイルをリロードする最速の方法は何? 再起動の質問は個別に行うことをお勧めします。 以前のすべてのバッファを再度開き、コマンドの対話型履歴を保持する簡単な方法はありますか?M-p
17 session 

2
emacsでMarkdownのSEフレーバーを使用するにはどうすればよいですか?
私はemacsでマークダウンのSE風味を使用したいと思います。デフォルトのマークダウンモードには、いくつかの機能(バックティックとインデントマークコード、#ヘッダーの作成>、フォントの変更)がありますが、次の機能も必要です。 * インデントを含むリストアイテムを作成します。 [foo](http://example.com)fooとして表示されhttp://example.com、クリックするとブラウザが開きます。 理想的には、これをレンダリングされたマークダウンとしてemacsに表示したいと思います。たとえば、次のように書く場合: ## Header * item 1 * item 2 while true; do echo foo; done End of list and more code while true; do echo bar; done See [here](http://example.com) for details emacs自体で次のようにレンダリングしたいと思います。 ヘッダ アイテム1 アイテム2 while true; do echo foo; done リストの終わりとその他のコード while true; do echo …

4
キーストロークの損失をリアルタイムで表示するモードはありますか?
C-h lは、最近のキーストロークを示す損失ヘルプバッファーを示しています。を押すgと元に戻り、更新されます。残念ながら、有効にauto-revert-modeしても、継続的に更新されるようには変更されません。 別のウィンドウまたはフレームを開いて、リアルタイムで損失を表示して、入力中の内容を視聴者に見せることができたらいいですね。これは、tmux / tmateセッションでのペアリングにも使用できます。オンラインのビデオの一部にはこのようなものがありますが、外部アプリケーションおよびOS固有のもののようです。 キーストロークをEmacs内からリアルタイムで表示する良い方法はありますか?

1
Emacs Lispのコメント規約
Emacs Lispリファレンスマニュアルの付録D.7には、コメントのヒントがいくつか記載されています。 ;インラインコメントには単一のセミコロン()を使用する必要があります。 ;;行コメントには二重セミコロン()を使用する必要があります。 トリプルセミコロン(;;;)は、「アウトラインマイナーモードによる見出しと見なされるコメント」に使用する必要があります。 ;;;;プログラムの主要セクションの見出しには、4つのセミコロン()を使用する必要があります。 シングルセミコロンとダブルセミコロンのユースケースは明確ですが、トリプルセミコロンとクアッドセミコロンの間に明確な線引きはないようです。 特に、提供されるEmacsパッケージの標準ドキュメントでauto-insertは、ファイル名や主要セクションなどの最高レベルの見出しであっても、トリプルセミコロンを使用し、4重セミコロンを使用しません。以下の例を参照してください。 ;;; test.el --- A test file. -*- lexical-binding: t; -*- ;; Copyright (C) 2016 ;; Author: John Smith ;; Keywords: ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public …
17 elisp  comment 

2
Magitログの日付
Magitログでは、バッファコミット(1行に1つ)が相対日付で表示されます。これは最近のコミットには適していますが、古い変更にはほとんど意味がありません。特に、これにより、「4月3日にリリースが壊れた可能性があるのはどの変更か」という質問に対する答えを見つけるなど、コミット日付を特定の日付に関連付けるのが面倒です。 コミット日付の表示方法を何らかの方法で変更することは可能ですか?私は見つけただけですがmagit-duration-spec、それは私が必要なものではありません。
17 magit 


2
プレフィックスキーとしてのCxまたはCcの使用に関する規則
使用するための規則どのようなものがありC-x、C-cまたはM-プレフィックスキーとしては? 例:is C-xなど、バッファを保存または訪問しますか?あるC-cテキスト編集のために、など、? バックグラウンド たぶん、これはばかげた質問です。スペイン語のキーボードを使用していますが、英語(QWERTY)キーボードに共通のキーバインドを再定義することもあります。例:shellコマンドはにバニラEmacsでバインドされていM-!ます。M-¡代わりにバインドします。なぜなら、を押すのは簡単ではないからM-!ですM-shift-1。これらの種類の変更を行うときにオーバーライドする規則があるかどうか疑問に思っています

1
組織モードのカレンダー統合?
カレンダー(によって呼び出されるM-x calendar)には日記統合機能があります。これにより、カレンダーバッファの特別な日付(その日のダイアリーエントリがある場合はその日が色付けされます)を表示し、でその日の詳細なエントリを表示できますd。 org-modeにはタイムスタンプ機能もあるため、ダイアリーエントリと同様に、タイムスタンプをカレンダーに統合すると便利です。必ずしもとの統合ではありませんcalendarが、カレンダー形式のように日付の表示を可能にし、そのカレンダーから詳細な日付ビューを開くことができます。 質問:そのような機能はありますか?

1
CUAモードをアクティブにすることで何をgivingめますか?
CUAモードは、私がEmacsの外部で使用しているワークフローに非常に近いため、アクティブにしたいと思います。 しかし、Emacsには便利なgemが隠されている可能性があることを学びました。CUAモードは後で追加されたように見えます。 CUAモードの利点を知っています。 しかし、私はそれをアクティベートすることで何をあきらめたかわかりません。 Emacs情報を読むことは、EmacsコアアプローチとCUAモードの長所と短所についてあまり明らかにしていません。 CUAモードのEmacsWikiセクションもその点であまり役に立ちません。 熟練したEmacsユーザーがCUAモードをアクティブにすることで見逃してしまう機能は何ですか?
16 editing  cua-mode 

2
(point-min)が1よりはるかに人気があるのはなぜですか?
Emacs GitリポジトリですべてのEmacs Lispファイルを検索しました(goto-char (point-min))が、3621回(goto-char 1)発生し、31回発生しました。個人的に、私はたくさん見(point-min)たがどれもが1、でも、多くの場合、それは領域が狭くされていないことは100%間違いないだろう。だからここに私の質問があります:狭められていないバッファ内(point-min)より1もまだ好まれていますか? 関数呼び出しである間、定数であるため、それ1よりも高速です。さらに、は、1文字対11文字よりもはるかに短いです。(point-min)1(point-min)1(point-min)
16 buffers 

3
デーモンモード:起動時に対話型プロンプトを延期しますか?
(逆に、この質問はデーモンモードで起動して対話型ダイアログを非表示にする方法と同じではないことに注意してください。その質問は特定のプロンプトを表示させる原因を排除して提出者によって「回答」されたためです。) まだ存在しないミニバッファに表示されるプロンプトへの回答を待って永遠にハングアップしないようにする一般的な方法があるかどうかを知りたいemacs --daemonです。 Emacsが起動シーケンスを完了するまでサーバーは起動しないため、emacsclientに接続してこれらのプロンプトに答えることはできません。(つまり、ALTERNATE_EDITORが空の文字列に設定されている場合emacsclient、サーバーが新しいデーモンを開始できないことがわかると、複数のEmacsデーモンがすべてスタックして待機killall emacsすることになります。)問題を解決する必要があります続行する前に。 Emacsを非デーモンモードで起動し、何を要求しているかを確認することで、起動時にプロンプ​​トを表示する各問題でwhack-a-moleを再生できますが、次のデーモンを停止できないため、解決策ではありません新しい理由でスタートアップにハングアップすることから。 例を挙げると、最初の再起動後のEmacsが古いEmacsからロックファイルを盗むことができるかどうかを知りたいときに、システムが再起動またはEmacsがクラッシュした後にハングする一般的な理由です。そのプロンプトが対話なしで常に「はい」と答えるようにアドバイスを作成することで、それを修正できました。ただし、前回のセッションの保存時に開いていたファイルの1つは、sudoまたはSSHパスワードを必要とするTRAMPファイルであったため、デーモンはパスワードプロンプトで待機しています。そこで、問題のあるファイルを削除するためにセッションファイルを(viまたはemacs -q!を使用して)手動で編集することで修正します。 そのため、起動時にセッションのロードを自動的に停止し、最初のemacsclientから手動で実行する必要があるコマンドに変更できます。しかし、バックグラウンドでセッションをロードしておらず、使用する準備が整うまでに準備が整っている場合、デーモンの目的はすべて失われます! だから私が欲しいのは: (最良)残りの初期化を完了しながら、emacsclientを開くまでミニバッファープロンプトを延期する方法。 (OK)noemacsclientが実行されていない限り、上記で説明したように、私がまだアドバイスしていないすべてのミニバッファープロンプトを返す方法があります。TRAMPバッファーがほとんど機能する限り、私はTRAMPバッファーでエラーが発生しても生き続けることができます。 これらの目標のいずれかを達成する方法はありますか?

2
flycheckがinit.elをパッケージファイルとして扱うのを防ぐ方法は?
init.elでflycheck-modeが有効になっている場合、次の種類のエラーが発生しました。 The first line should be of the form: ";;; package --- Summary" (emacs-lisp-checkdoc) ... The footer should be: (provide 'init)\n;;; init.el ends here (emacs-lisp-checkdoc) flycheckがinit.elをパッケージとして扱うのを止めるにはどうすればよいですか? 編集 私は最小限の起動ファイルを次のようにしようとしました: ;; flycheck-mode (require 'flycheck) (global-flycheck-mode) (setq-default flycheck-disabled-checker '(emacs-lisp-checkdoc)) flycheckとその依存関係のみが有効になります。emacs-lisp-checkdocは無効なチェッカーリストにありますが、flycheckは引き続きエラーをリストします。 0 warning The first line should be of the form: ";;; package --- …
16 flycheck 

6
Emacsパッケージにパッチを適用するにはどうすればよいですか?
パッケージを変更してテストし、その後プルリクエストを送信したいです。安全で効率的な方法でそれを行うにはどうすればよいですか?質問は広すぎると感じるかもしれませんが、私は次の問題をカバーする答えを受け入れます。 パッケージの別のブランチをインストールし、気まぐれに安定したブランチを切り替えることができると期待しています。必要なときに自動的に再コンパイルが実行されますが、それpackage.elを行う簡単な方法は提供されていないようです。emacs-SEに関するこの回答は、「パッケージの複数のコピーがインストールされている場合、最初のコピーがロードされる」ことを教えてくれるので、手動で混乱させることができると思いますload-pathが、これは堅牢ではありません。インストールされているパッケージの中から特定のバージョンのパッケージを選択する標準的な方法は何ですか? いくつかのブランチをEmacsに公開できたとしても、大幅な調整のために、パッチを当てていないブランチを「アンロード」し、その副作用を分離する必要があります。unload-featureそれはマルチバージョンのパッケージのすべてのテスターが知っておくべきことの特異性を持って適切にまたは多分これを処理しますか? ローカルバージョンをインストールしてテストするにはどうすればよいですか?答えは、パッケージがシンプル(= 1ファイル)かマルチファイルかによって異なります。EmacsWikiは、マルチファイルパッケージについて次のように述べています。「MELPAはパッケージをビルドします」。defunマルチファイルパッケージのフォームを変更するたびにMELPAと話す必要がある(またはすべき)とは思いませんが、疑問は残ります。少なくとも、ローカルバージョンについてパッケージマネージャーに伝える必要があります。その場合、どのようにすればよいですか? パッケージのローカルバージョンにどのような名前を割り当てる必要がありますか?複数の機能やバグを同時に処理したい場合、つまり複数のブランチを作成したいとします。Emacsでは、記述的な方法でバージョンに名前を付けることはできません(の行に沿って20170117.666-somebugorfeature)。パッケージごとにサフィックスをブランチごとに名前変更できると思いますが、load-pathQ1 で手動で混乱させるのと同様に、これはいハックなので、広く受け入れられている慣行でない限り、アップストリームに送信するものでそれを試しません。 gitや同様のvcを適用したパッチを作成したことがないため、質問はおそらく単純です。しかし、多くのEmacsユーザーにとって、Emacsパッケージへのパッチ適用は彼らにとって初めての(あるいはおそらく唯一の)ソーシャルプログラミングの試みかもしれません。そのため、この質問に対する答えはまだ価値があると思います。


1
簡単な履歴ナビゲーションのためにmagitと元に戻すツリーを組み合わせる
私は大好きですundo-tree(下のスクリーンショット)。それは、次のような簡単なキーを持つ別のウィンドウ(下のウィンドウ)で、ファイルの履歴ツリーの周りのユーザーの動きをさせることで、ファイル(上のウィンドウ)の異なるバージョンをナビゲートするために簡単な方法を提供しn、pかつC-bとC-f同じの子孫渡ってスイッチに親。 最も注目すべきundo-treeは、ツリービューでの選択に基づいて、対応するバージョンでファイルを保持しているバッファを自動的に更新することです。 もちろん、magitgit には驚異的であり、同様の機能、つまり、ユーザーがファイルのgit履歴をインタラクティブにナビゲートしながら、同時にファイルを保持しているバッファーを自動的に更新できるようになると驚くでしょう。 これはmagit今日でも可能ですか?

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