Emacs

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

1
特定の行のカスタムインデント?
私は現在、バッファの残りのインデントをめちゃくちゃにすることなく、具体的にいくつかの行を処理する方法を理解しようとしています。MyFunc例として次の関数を考えてください: void MyFunc() { unsigned y = 0; DONOTINDENT; unsigned int x = 5 + 2; return x + 12; } ここでは、行DONOTINDENT;を列0までインデントしますが、関数の残りの部分は通常インデントする必要があります。私は次のカスタムを使用してこれを解決しようとしましたc-special-indent-hook: (defun my-c-mode-indent-hook () (let (p1 p2 myline) (setq p1 (line-beginning-position)) (setq p2 (line-end-position)) (setq myLine (buffer-substring-no-properties p1 p2)) (if (string-match-p "DONOTINDENT" myLine) (save-excursion (indent-line-to 0)) ) ) ) …


1
HTMLエクスポートでSVG画像を<img…>としてエクスポートする方法
通常、org-mode画像へのリンクを含むバッファをhtmlにエクスポートすると、リンクは適切なhtmlに変換されます&lt;img...&gt;。ただし、その画像に.svg拡張子がある場合は、&lt;object...&gt;代わりにエクスポートされます。 これを防ぐにはどうすればよいですか? たとえば、次のリンク: [[file:https://clojars.org/malabarba/lazy-map/latest-version.svg]] このようにエクスポートされます: &lt;object type="image/svg+xml" data="https://clojars.org/malabarba/lazy-map/latest-version.svg" &gt; Sorry, your browser does not support SVG.&lt;/object&gt; しかし、私はそれを次のようにエクスポートしたいです: &lt;img src="https://clojars.org/malabarba/lazy-map/latest-version.svg"&gt;

2
リストの適切な再初期化?内部で何が起こっていますか?
私はもう少しelispを教えています、そして次の問題に遭遇しました: リスト変数をリセットしたい場合、最初の評価後に更新されません。ここにいくつかのサンプルコードがあります: (defun initilize () (setq example '(3))) (defun modify () (initilize) (message "%S" example) (setcar example 2)) ; M-x eval-buffer RET (modify) ; message --&gt; (3) (modify) ; message --&gt; (2) (modify) ; message --&gt; (2) 私は2つのことに興味があります。1つ目は、「内部」で何が起こっているのかを詳しく知ることです。なぜそれが初めて機能し、その後の呼び出しで失敗するのでしょうか。 2番目のより実用的な質問は、リストを適切に再初期化する方法ですか、またはそのようなことを行う別の一般的な方法はありますか? 私が見つけた1つの回避策は、引用リストを使用して、次のようにコンテンツを評価することです。 (setq example `(,3))

1
gnusのnnmaildirに関する問題
私はnnmaildirをmbsync(IMAPとMaildirメールボックスを同期します)と一緒に動作させようとしましたが、gnusで動作させることができません。 次の選択方法を使用します。 (nnmaildir "calgary" (directory "~/mail/ucalgary")) 接続を開くと、サーバーの参照バッファーにすべてのグループが表示されます。 K 0: Calendar U 0: Inbox K 0: Sent Items 受信トレイを開くと、次のエラーが表示されます。 gnus-select-newsgroup: Couldn't request group nnmaildir+calgary:Inbox: No such group: Inbox ここで/home/crb/mail/ucalgary/Inbox/cur/、たとえば、多数の既読メッセージと未読メッセージがあります1443481160.3793_16.Feddie,U=16:2,S。 これを修正する方法に関するアドバイスはありますか?
8 gnus 

1
最高の企業バックエンドリスト
これがスタックの最良のタイプの質問ではないことはわかっています...しかし、十分な露出が得られる可能性のある別の場所は考えられません。 だから私は本当にcompany-modeが好きですが、次のバックエンドに手動で切り替える必要があるのは面倒です(company-try-hardはここでは便利です)。私はグループ化されたバックエンドをいじり始めました、そしていくつかの素晴らしい可能性を見ることができます。残念ながら、これまでに試したものに満足していません。これは、異なるモードのフックで設定する方が良いと思います。誰かが私からいくつかのインスピレーションを得ることができるいくつかの興味深い会社バックエンドのリストを持っていますか? 私は主にpython(elpy)、javascript(js3-mode)、web(web-mode)、シェルスクリプトを使用します。

1
プレーンテキストエクスポートの数式
プレーンテキストで多くの数式を含むOrgドキュメントをエクスポートする方法を見つけようとしていますが、これまでのところ素晴らしい結果は得られません。 私が試したこと: pandoc -基本的に、LaTeXのすべての数学を変更せずに維持し、環境マクロを取り除きません。 detex -ギリシャ語の記号を置き換えません(単に削除します)。生成された式にアーティファクトがあります(配置から残っているアンパサンドなど)。 tex2mail -見た目がおかしくて非常に見づらく、加工品や環境マーカーなどが残ります。 catdvi -これまでのところ最高ですが、OrgファイルのLaTeXフラグメントで実行するために必要なだけであり、ファイルの残りの部分は非常に悪いように見えます(インデント、タイトルなど)。 hevea-このプログラムは、texi2dviテキスト出力を生成するためにによって使用されます。実際には機能しません、出力は非常に奇妙に見えます/ギリシャ語の文字の一部はUnicodeに翻訳されますが、それ以外は翻訳されず、配置がすべて間違っています... おそらくすべてのLaTeXフラグメントを最初にDVIにエクスポートしてcatdviからそれらを実行する特別なバックエンドを作成できますが、それに到達する前に、もっと簡単な方法があるのでしょうか?

1
大括弧内のインデント
AUCTeXのインデントに関するさらに別の 質問 ... 角かっこでコンテンツをインデントできるようにしたいと思います[...]。それは例えば、は、TikZオプションリストのために有用である、または樹木使用して描かれたでしょうforestかqtree。両方これらのパッケージは、それが簡単に括弧インデントをサポートするエディタでソースコードをスキャンすることができ、その構文のために角括弧を使用します。 残念ながら、AUCTeXは環境のコンテンツと中括弧の間のコンテンツのみをインデントします{...}。 このforest例は、インデントしたいコンテンツの周りに中括弧を追加することによる不正行為が機能しない状況でもあります。中括弧はすべてのコンテンツがツリーとして評価されないようにするためです。 例: \documentclass{article} \usepackage{forest} \begin{document} \begin{forest} [A [B] [C [D] [E] ] ] \end{forest} \end{document} 私は次のようにインデントしたいと思います: \documentclass{article} \usepackage{forest} \begin{document} \begin{forest} [A [B] [C [D] [E] ] ] \end{forest} \end{document} 方法はありますか?


4
フレームx / y(マウスの位置)で顔を決定する方法はありますか?
特定のモードのテーマを設定しようとする場合、テーマを設定したアイテムにポイントを配置して(例:行うC-u C-x =)、使用されている顔を特定することはできません。 私の考えは、使用された顔を識別するためにマウスを使用することですが、私が得ることができるのは、フレームのx、y位置(を使用(mouse-position))だけです そこから、それらの座標で顔の定義を取得する方法がわかりません。 どんな助けでもありがたいです。
8 faces  themes  mouse 

1
Emacsを終了してタッチパッドを再度有効にする
私のemacs設定には、タッチパッドを無効にする以下のelispコードがあるので、書いているときに邪魔になりません。 ;; disable touchpad when on emacs (defun turn-off-mouse (&amp;optional frame) (interactive) (call-process-shell-command "xinput --disable bcm5974" nil "*Shell command output*" t)) (defun turn-on-mouse (&amp;optional frame) (interactive) (call-process-shell-command "xinput --enable bcm5974" nil "*Shell command output*" t)) (add-hook 'focus-in-hook #'turn-off-mouse) (add-hook 'focus-out-hook #'turn-on-mouse) (add-hook 'delete-frame-functions #'turn-on-mouse) (provide 'setup-xinput) これは正常に動作します。問題はEmacsを終了するときだけです。 Emacsの使用中にEmacsを終了すると、タッチパッドが無効のままになります。キーボードで新しいターミナルを開き、を実行する必要がありますxinput --enable bcm5974。 …
8 hooks  exit 

3
ワイルドカードを使用してeshellでファイルを開く方法
私はシェルに次のようなものを入力することに非常に慣れています: emacsclient **/Threshold.java Threshold.javaディレクトリの深くネストされたファイルはどこにあり、名前でそれを開きたいだけです。 eshellで同じことを試みると、次のようになります(ecはのエイリアスですfind-file)。 ec **/Threshold.java Wrong type argument: stringp, ("src/main/java/org/elasticsearch/shield/admin/Threshold.java") これをeshellで機能させるにはどうすればよいですか?
8 eshell 

2
Emacsはシャットダウン前に現在のセッションで開かれた最近訪れたファイルの履歴を保存できません
Systemdを使用してデーモンとして起動したemacsに問題があります。 emacsデーモンサービスを手動で停止しない場合、シャットダウン/再起動するたびに、現在のセッションで最近開いたファイルの履歴が失われます。これは、シャットダウン状態のときにSystemdがEmacsを適切に強制終了できないためだと思います。 この問題を解決するにはどうすればよいですか? init.elの最近の設定: (use-package recentf :config (progn (setq recentf-auto-cleanup 'never recentf-max-menu-items 50 recentf-max-saved-items 400 recentf-save-file (expand-file-name "temp/.recentf" user-emacs-directory)) (recentf-mode t))) Systemd emacsサービス構成: [Unit] Description=Emacs: the extensible, self-documenting text editor [Service] Type=forking ExecStart=/usr/bin/emacs --daemon ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)" Restart=always User=%i #WorkingDirectory=%h [Install] WantedBy=multi-user.target


3
基本モードでマイナーモードを自動的に有効にする
設計上、fundamental-mode他の主要なモードがこのモードから派生することになっているため、は必要最低限​​のものです。 情報ページから(elisp) Major Modes、私たちは持っています: これは、基本モードのメジャーモードコマンドです。他のモードコマンドとは異なり、このモードをカスタマイズする必要がないため、モードフックは実行されません(*メジャーモードの規則::に注意)。 そのため、 ありませんfundamental-mode-hook。 また、私のmy-minor-mode主要なモードのバッファでのみ有効になりませんが(global-my-minor-mode 1)、私の設定にはあります。 以下は機能しますが、手動で入力した場合のみですM-x fundamental-mode: (add-hook 'after-change-major-mode-hook #'my-minor-mode) 以下の場合、fundamental-modeデフォルトでバッファ(* abcd *)が作成されるので役に立ちません。 (with-current-buffer (get-buffer-create "*abcd*") (insert "Hello world")) なぜマイナーモードを有効にしたいのfundamental-modeですか? マイナーモードマップにカスタムキーバインディングを保持したい。このマイナーモードをグローバルに有効化しています(ただし、fundamental-modeバッファーでのみ有効化されません)。 これが、この質問をここで行うようにした使用例です。M-x esup(esupパッケージ)を実行*esup-log*するfundamental-modeと、メジャーモードとしてバッファを作成します。しかし、マイナーモードを手動で有効にする必要があるたびに、便利なバインディングを使用します。 my-minor-mode本当にグローバルな方法で実現したいのfundamental-modeか、そうでないのか。 更新1: これがマイナーモードの定義ですmodi-mode。 アップデート2: @npostavsのコメントに基づいて、マイナーモードmodi-modeとの違いを確認しoverride-global-modeましたuse-package/bind-key.el。そして、それは私のモードのINIT値があることが判明nilしてのことoverride-global-modeIS t。 モードの初期値をに変更するtと、基本モードバッファーでも有効になります!しかし、行為は(global-modi-mode 1)同じ結果で終わるわけではありません。変ですか?おそらくバグですか?

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