Emacs

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

2
略語の使用方法
Emacsで略語を使用すると混乱を招きます。関わらず読んで マニュアルやEmacsWikiを、私はそれらを使用して問題を持ち続けます。 目標: 1つのEmacsセッションに対して、使い捨ての簡単な略語を定義します。 例: PythonとNumpyを使用する場合、出力が省略記号で短縮されることがあります。 array(['1007.65', '1007.63', '1007.66', ..., '993.40', '993.40', '993.57'], dtype=object) 配列を完全に表示するには、次の口頭のステートメントを発行する必要があります。 with np.printoptions(threshold=np.inf): print(my_arr['field_name']) これは略語に最適な状況のようです! これが私がすることです: fp「フルプリント」のタイプ 直後のポイントpでfp、C-x a g(add-global-abbrev)を発行 以下のためのプロンプトミニバッファにはGlobal abbrev for "fp":、プットwith np.printoptions(threshold=np.inf): print()を押し<RET> 後の点で私のオリジナルバッファに私を返すミニバッファを抜ける、pでfp 問題C-x a e(expand-abbrev) 何も起こりません。 チェックするとlist-abbrevs、次のようになります。 (global-abbrev-table) "with np.printoptions(threshold=np.inf): print()" 0 "fp" abbrev-mode自動拡張にのみ使用されるため、有効にする必要はないというのが私の理解です。ちなみに、有効化はabbrev-modeまだ拡張されていませんfp。 私は自分が間違っていることで途方に暮れていて、アドバイスをいただければ幸いです!
7 abbrev 

2
hexl-modeでバイトシーケンスを検索する方法
でバイトシーケンスを検索し、hexl-mode場合によってはそれを強調表示することは可能ですか? たとえば、以下のファイルでバイトシーケンスを検索しますf9beb4d9。isearch元のファイルではなく、バッファ内のプレゼンテーションを検索するため、機能しません。 00000000: f9be b4d9 1d01 0000 0100 0000 0000 0000 ................ 00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000020: 0000 0000 0000 0000 0000 0000 3ba3 edfd ............;... 00000030: 7a7b 12b2 7ac7 2c3e 6776 8f61 7fc8 1bc3 z{..z.,>gv.a.... 00000040: 888a 5132 3a9f b8aa 4b1e 5e4a 29ab …

2
新しいメジャーモードの言語文法を書くためのオプションは何ですか?
文法が明確なプログラミング言語のメジャーモードを書いています。BNFがあり、いくつかのハッピーファイルで形式化されています。 私は特に、BNFを一連の順方向/逆方向の正規表現スキャンとして再実装したくはありません(多くの主要モードがそうであるように)。手動または自動で変換することに反対はしません。 私はSMIEを認識しています。Emacslispで使用できる他のオプションを使用して、言語の文法を定義し、顔、sexpコマンド、imenu集団など、可能な限り自動的に生成することができます。 私は主に、生のパフォーマンスではなく、モードの単純さと正確さに関心がありますが、トレードオフが何であるかを大まかに知りたいと思います(明らかに、パフォーマンスが低すぎると、使用できなくなり、したがって、使用するのは適切ではありません)。 Emacs Lispマニュアルの「Major Modes」ですべてをすでに認識しているため、これはメジャーモードの記述に多少関係があります。 更新:私はSemanticの作者と調査して話しましたが、font-locks を生成することはできません。より高いレベルのツールを提供することを目的としており、私が探しているものではありません。


2
組織モードのテーブルの数式で一般的な算術優先順位を使用する
この組織モードのドキュメントを考えると: | 4 | ? | #+TBLFM: $2=$1/2*2 数式を評価すると、(2番目のセルに)(4/2 * 2 =)4ではなく、驚くべき結果1が生成されます。 どうやら、乗算は組織モードの数式で除算よりも優先度が高いため、予期せぬ結果が(ときどき黙って)生成される可能性があります。 ほとんどのインフィックス表記のように、組織モードの数式で一般的な算術演算子の優先順位を使用する方法はありますか?

1
視覚的に結合しない発音区別符号の結合
左側のバッファの最初の2文字はLATIN SMALL LETTER Aand COMBINING CIRCUMFLEX ACCENTです。彼らは一緒にと表示されるはずâと同じように、LATIN SMALL LETTER A WITH CIRCUMFLEX、â。 ただし、ご覧のaとおり、サーカムフレックスはの横ではなく、横に表示されています。 スクリーンショットは、emacs -QUbuntu 18.04上のGNU Emacs 26.1のものです。文字は他のアプリケーションで正しく表示されます。何が問題になっていて、どうすれば修正できますか?
7 faces  fonts  unicode 

2
読み書き可能なOrg-mode構成ファイルをバッキングEmacs Lispファイルでインストルメントすることは可能ですか?
Orgモードでは、文芸的プログラミングスタイルを使用してEmacs構成ファイルを作成するのが一般的です。 あいにく、読みやすさは向上しますが、これにはプログラミング上の重大な欠点があります。特に、バッキング.elファイルがないため、Emacsは現在のソースブロック内のコードのみを認識します。これは、現在編集されているブロックを除いて、ナビゲーション、シンボル定義、およびフライチェックはすべて使用できないことを意味します。 #+BEGIN_SRC emacs-lisp (defun literate-but-invisible () (interactive) (message "I close my eyes...")) #+END_SRC #+BEGIN_SRC emacs-lisp (defun humans-can-read-but-emacs-cannot () (interactive) (literate-but-invisible) ; No navigation! Flycheck reports undefined symbol! (message "...so that the room will be empty")) #+END_SRC Emacsに生成された.elファイルをもつれさせて使用し、これらの機能を組織モードで提供する方法はありますか?そのような機能は、文芸的なEmacs Lispコードの保守性を改善します。 FlycheckがOrgとEmacs Lispで同時に1つのバッファーで動作するのを見るのは素晴らしい機能ですが、私はorg-editバッファーorg-edit-special(通常(C-c ')を呼び出したときに取得する環境)を計測する方法についてのみ質問していることに注意してください。バッファにはアクティブモードが1つしかないため、これは簡単です。 Flycheckリポジトリの機能リクエストをこちらで開きました。別の問題について、関連する調査がここにあります。ただし、まだソリューションを構築することはできません。

2
emacsclientを使用して接続できない
私は使用してemacsサーバーを起動しています systemctl --now --user enable emacs 実行すると、そのサーバーは実行中です systemctl --user status emacs わかった $ systemctl --user status emacs ● emacs.service - Emacs text editor Loaded: loaded (/usr/local/lib/systemd/user/emacs.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2018-06-09 09:27:56 CDT; 2 days ago Docs: info:emacs man:emacs(1) https://gnu.org/software/emacs/ Main PID: 17613 (emacs) CGroup: …

2
一致するすべての値を返す「assoc」のような関数はありますか?
このassoc KEY LIST関数は、alistcarがに等しいの最初の要素を返しますKEY。 車がに等しいのすべての要素をサブアリストまたは値のリストとして返す組み込みのEmacs Lisp関数はありますか?結局のところ、が一意のキーを持つ必要はありません。alistKEYalist あれは、 (assoc foo '((foo . 5) (bar . 6) (foo . 7))) = '(foo . 5) だが、 (assoc-all foo '((foo . 5) (bar . 6) (foo . 7))) = '((foo . 5) (foo . 7))

3
複数のキーでほぼ同一のコマンド
Visual Studioには、何かにポイントを置いて押すことができるこの優れた機能があり、ポイントのC-f3下にあるものの次のインスタンスを見つけて、それを記憶します。次に、を押しf3て次のインスタンスを見つけ、S-f3同じものを逆方向に検索します。 私が書いたelispを使用して、Emacsで同じことを行うことができます。(かさばるし、確かに悪いので省略します)。 私は何をしたいのは、のために同様の機能を有効にすると言う、することでf2、f3、f4、とf5。したがって、押すと、C-f2そのものを変数/関連付け配列/シンボルにどこかに保存することでそのポイントの下にあるものを検索C-f3し、別のものを押すと、emacsはその2番目のものを別個の変数に保存するため、検索できます一つf2目f3は未来を押すことで、二つ目は未来を押すことで検索できます。 Control-X用に1つ、プレーンX用に1つ、Shift-X用に3つ目の関数を作成したいのですが、これにどのように取り組むかわかりません。 関数に現在のキー押下を要求させる必要があるのですか(la this-single-command-keys)、または(関数を既に押しているので、ユーザーにプロンプ​​トを表示せずに)からインタラクティブ関数にパラメーターを渡す方法を見つける方が良いですか? インタラクティブ機能に追加情報を渡すにはどうすればよいですか?

1
use-packageの:ensureタグでパッケージ名を指定するのはいつですか?
use-package:ensureタグを使用してパッケージを自動的にインストールできます。あなたは次のようにそれを行うことができます (use-package <package> :ensure t) しかし、のように機能しない一部のパッケージではauctex。これらの場合、パッケージをensure次のように指定できます。 (use-package tex :ensure auctex) このブログ/チュートリアル/サイトによると、理由は これは、インストールされるとパッケージをauctex上書きするためtexです。 それは何を意味し、他のパッケージに対していつそれを行うべきかをどのようにして知ることができますか?

2
すべての読み取り専用バッファに対して実行されるフックはありますか
show-trailing-whitespace編集可能なファイルを有効にしshow-trailing-whitespace、読み取り専用ファイルを無効にしたい。私はもう試した (defun my/read-only-whitespace () (setq-local show-trailing-whitespace (not buffer-read-only))) (setq-default show-trailing-whitespace t) (add-hook 'read-only-mode-hook #'my/read-only-whitespace) しかし、これは私がread-only-mode手動で有効にした場合にのみ機能するようです。自動的に読み取り専用になるバッファー(読み取り専用ファイルなど)を開くと、フックが実行されません。 すべての読み取り専用バッファに対して実行されるフックはありますか?

1
バッファ内の日/月/日付などの増分
テキストドキュメントでは、編集中にカレンダーデータをインクリメント/デクリメントする必要がよくあります。したがって、金曜日は月曜日になり、12月は3月になる必要があります。 または、5を追加した後の4月28日は5月3日、15を追加した後の2017年12月31日は2018年1月15日になります。 目的の単語/番号にカーソルを置き、いくつかのキーを押してインクリメントまたはデクリメントすることによってこれを実現する方法はありますか? つまり、金曜日に「Add 3」と言って何かを打つと、それは月曜日になります。4月28日の28日に何かを押して「Add 5」と言って、5月03になります。しかし、4月28日の4月に、「減算2」と言うために何かを押すと、2月28日になります。 ちょうどあなたがアイデアを得るために、vimは私が目指していることを正確に実行するスピードデートプラグインを持っています。

1
「シンボルの関数定義は無効です:org-babel-get-header」を修正する方法
これをどのようにトラブルシューティングしますか?(shブロックを非同期で実行しようとしています) #+BEGIN_SRC sh /tmp/7.sh #+END_SRC それから私はします C-c C-c 私は得る Symbol's function definition is void: org-babel-get-header 私のセットアップ prelude emacs25 orgインストール済み ;; my ~/prelude/personal/personal.el (prelude-require-package 'ob-async) (require 'ob-async) (setq org-confirm-babel-evaluate nil) (org-babel-do-load-languages 'org-babel-load-languages '( (sh . t) (ruby . t) ))

1
単一の文字を検索するときに、search-forwardに代わるより効率的な方法はありますか?
バッファの内容を文字列のリストに分割する必要があります。null文字は、アイテムを区切るために使用されます。 アイテムが改行文字で区切られている場合は、同じ方法を使用できますprocess-lines。 (let (lines) (while (not (eobp)) (setq lines (cons (buffer-substring-no-properties (line-beginning-position) (line-end-position)) lines)) (forward-line 1)) (nreverse lines)) 私は仮定しforward-line、効率的ですが、使用line-beginning-positionしてline-end-position少し疑わしいです。しかし、ヌル文字が使用されているため、とにかくそれを行うことはできません。 それを行う1つの方法は次のとおりです。 (split-string (buffer-string) "\0") 私もこのバリエーションを検討していました: (split-string (buffer-substring-no-properties (point-min) (point-max)) "\0") それは実際にはより効率的ですか?バッファ内のテキストはプロパティ化されていませんが、存在しないプロパティを探すとオーバーヘッドが増えると思います。 バッファを文字列に読み取ってから文字列を分割する代わりに、バッファを直接操作したいと思います。これも実際にはより効率的であると想定しています。 (let ((beg (point)) items) (while (search-forward "\0" nil t) (push (buffer-substring-no-properties beg (1- (point))) items) (setq beg (point))) (nreverse …

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