Emacs

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

1
異なるHelmプロンプトの履歴を分離する方法
動作する場合、別ドクター・オブ・フェイト、Inzaは身に着けているヘルムらとケントのオリジナル衣装しばらく... – グーグルhelm separate history M-pHelmプロンプトでを押すと、helm-git-grep以前に入力したファイルパスが表示されますhelm-find-files。 私が本当に見たいのは、以前にで検索したパターンhelm-git-grepです。 どのようヘルムがヘルムの種類ごとに別々のミニバッファ履歴を持っている(作るためにhelm-M-x、helm-mini、helm-git-grep及びhelm-find-files)?
9 helm 

4
まだロードされていないキーマップにキーをバインドする方法は?
use-packageインストールしたパッケージを管理しbind-keyたり、好きなカスタムキーにアクションを割り当てたりするために使用しています。 デフォルトのEmacsキーバインドのほとんどをオーバーライドします(たとえば、にC-nなるM-k、にC-pなるM-i)が、キーバインドスキームをオーバーライドする他のモードでも問題ありません。ただし、キーバインドを永続化したい場合もあります。私がしたいM-kデフォルトのGnusやヘルムよりも他の平均何かを、。 ただし、キーマップが存在しない場合はバインドを追加できないため(use-packageパッケージの読み込みが遅れることがあるため)、Emacsの起動時にすべてが競合します。たとえば、(void-variable helm-map)HelmとGnusがまだ完全にロードされていないため、次のコマンドはエラーをスローします(例:)。 (bind-key "M-Y" 'helm-end-of-buffer helm-map) (bind-key "M-k" 'helm-next-line helm-find-files-map) (bind-key "M-s" 'other-window gnus-summary-mode-map) すべてのuse-package呼び出しが1つのファイルにありbind-key、カスタムキーバインドの別のファイルにあります。use-packageカスタムキーバインドスキームをスタンドアロンパッケージとして公開する可能性があるため、バインディングを呼び出しに含めたくありません。私のスキームをインストールする誰かにHelmとGnusのローカルキーバインドもオーバーライドさせたい場合はどうなりますか? bind-keyパッケージを最近ロードした場合でもすべてのキーが設定され、すべてのキー設定が1つのファイル内にあるように、を使用してモードローカルキーバインドを管理するにはどうすればよいですか?

3
org-babelを使用して、関数呼び出しの結果に名前を付けて再利用する方法
ではorg-mode、関数と変数を定義してから、最初の変数に対する関数呼び出しの結果を別の変数に割り当てようとしています。しかし、その後、この新しい変数を後続の関数呼び出しで使用できないようです。 関数呼び出しのインライン化は機能しますが、最初に変数の値に影響を与えると、最初の関数呼び出しで問題が発生した場合にデバッグを高速化し、コストがかかる可能性のある計算の重複を回避できます。 MWE:((require 'ob-emacs-lisp)必要に応じて使用) #+name: square #+begin_src emacs-lisp :var x=3 (message (format "%s" (* x x))) #+end_src #+RESULTS: square : 9 #+name: value : 45 #+name: squaredvalue #+call: square(x=value) #+RESULTS: squaredvalue : 2025 Now I try to reuse this value: #+begin_src emacs-lisp :var res=squaredvalue (message res) #+end_src #+RESULTS: : nil …

1
特定の悪の状態のモードにキーバインディングを設定するにはどうすればよいですか?
(Evilの)挿入モードweb-modeとphp-mode挿入モードの両方で使用するキーバインディングのセットがあります。set-local-mapなんか使えないので。通常モードでは、同じキーが他のコマンドを呼び出すためです。したがって、バインディングはアクティブである必要があるevil-insert-state-mapだけです。 私は以下を持っています: (eval-after-load 'php-mode '(progn (define-key evil-insert-state-map (kbd "C-<next>") (lambda () (interactive) (insert " = "))) (define-key evil-insert-state-map (kbd "C-<prior>") (lambda () (interactive) (insert "->"))))) (eval-after-load 'web-mode '(progn (define-key evil-insert-state-map (kbd "C-<next>") 'zencoding-expand-yas) (define-key evil-insert-state-map (kbd "C-<prior>") 'zencoding-expand-line))) したがって、web-modeまたはphp-modeロードされるたびに、これらのキーバインディングがアクティブになります。 問題は次のとおりです。私が2つのオープンバッファーを持っているphp-modeとしweb-modeます。ときにweb-modeバッファがカレントバッファであると私はだ別のバッファに切り替えphp-mode、web-modeバインディングはまだ内部のアクティブなphp-modeバッファ。 私が使用してこの問題を解決しようとした(add-hook 'web-mode-hook [...])と(add-hook 'php-mode-hook [...])の代わりにバインディングを設定しますeval-after-load。しかし、その解決策はこの状況では機能しません。 助言がありますか?とても感謝しております。

1
defgroupが役立つのはなぜですか?
idoソースを読んでいます: (defgroup ido nil "Switch between files using substrings." :group 'extensions :group 'convenience :version "22.1" :link '(emacs-commentary-link :tag "Commentary" "ido.el") :link '(emacs-library-link :tag "Lisp File" "ido.el") :link '(custom-manual "(ido) Top") :link '(info-link "(ido) Customization")) defgroup多くの大きなパッケージの上部に表示されます。私はそれがこれをするのを見ます: SYMBOLをMEMBERSを含むカスタマイズグループとして宣言します。SYMBOLは引用する必要はありません。 また、カスタマイズグループのページでは、それらをいつどのように使用するかについてはあまり答えていません。いつ、どのように使用しますか?

1
emacsが主要なアップ/ダウンイベントをサポートしない理由
AFAIK emacsはkeyup/keydownイベントをサポートしていませんkeypressed。結果の例としては、リージョンをマークしたい場合、最初にマークset-mark-commandを設定する必要があり、ポイントを移動することでリージョンをマークできます。テキストをマークするときにShiftキーを押す必要がないため、これは本当に興味深い機能ですが、他のエディターと同じように動作することが望ましい場合があります。この質問は、emacsがこの機能をサポートしていない理由と、これがより優れていると考えられる理由を理解するためのものです。また、これをemacsで解決するための理想的なアプローチはありますか?

4
Elispで文字列をディープコピーしますか?
私は適切な文字列を持っています。元の文字列のプロパティを保持しながら、それを深くコピーしてプロパティを追加したいと思います。どうすれば(簡単に)できますか? 例 1つずつ評価: (setq test-str-1 #(";; This `is' a test" 0 3 (fontified nil face font-lock-comment-delimiter-face) 3 9 (fontified nil face font-lock-comment-face) 9 11 (fontified nil face (font-lock-constant-face font-lock-comment-face)) 11 19 (fontified nil face font-lock-comment-face))) (setq test-str-2 (concat test-str-1)) (add-face-text-property 0 (length test-str-2) 'foobar t test-str-2) そしてその結果: test-str-2 ;; => …
9 elisp 

1
メジャーモードを初めてロードするときに、劣ったプロセスを自動的に実行するにはどうすればよいですか?
会社でPython(またはMatlab)を使用しているとしましょう。劣ったプロセスがなければ、会社は Completion needs an inferior Python process running ただし、劣ったプロセスを自動的に実行する明白な解決策 (add-hook 'python-mode 'run-python) .pyファイルを開くたびに新しいpythonプロセスを実行します(Matlabを使用するとコストが高くなります) メジャーモードが初めて実行されるときにのみ実行されるフックはありますか?または、python / matlabの下位プロセスがすでに実行されているかどうかを検出する方法はありますか?または、メジャーモードで1回だけ下位プロセスを自動的に実行するというこの問題を解決する別の方法はありますか?

3
use-packageを使用してelpyの読み込みを延期するにはどうすればよいですか?
私はすべてのuse-package呼び出しを更新してきました。これ:idleは、物事を延期するための適切な方法ではなくなりました。現時点で、私の読み込み時間の最大のヒットの1つは、elpy追加のモジュールの束全体を読み込むことです。現時点では、私の呼び出しはかなり基本的です。 (use-package elpy :commands elpy-enable :init (elpy-enable) :config (progn (setq elpy-rpc-backend "jedi" elpy-rpc-project-specific 't) (when (fboundp 'flycheck-mode) (setq elpy-modules (delete 'elpy-module-flymake elpy-modules))))) ただし、Pythonモジュールを編集しない場合、これはかなり無駄になります。問題は、elpyがモードのコレクションであるため、elpy-enable必要に応じてモードバインディングフォームを使用できないことです。だから私はどのアプローチを使うべきですか?python-modeフックでトリガーするだけのケースですか?

1
良いハイライト顔を定義する方法
を使用したいのですglobal-hl-line-modeが、一部のテーマには優れたハイライトフェイスがありません。これを定義する一般的な方法はありますか(それは逆色ではありません)?私の試みで壊れた構文の強調表示を維持したいと思います。
9 colors 

1
明るい背景と暗い背景の事前定義された顔を上書きするにはどうすればよいですか?
set-face-attribute現在のテーマの背景が明るいか暗いかに応じて、前景に2つの色のいずれかを使用したいと思います。 予想される動作は、明るい背景のテーマから暗い背景のテーマに、またはその逆に切り替えると、前景が自動的に変更されることです。 ここにユースケースがあります: の顔をstripe-hl-line次のようにカスタマイズします。 (set-face-attribute 'stripe-hl-line nil :overline "gray" :underline "gray" :foreground "dodger blue") でも、テーマが明るいか暗いかに基づいて前景を変えたいです。そうすれば、各テーマでその顔をカスタマイズすることを心配する必要はありません。
9 faces 

2
すべてのウィンドウの単一モード行
すべてのウィンドウに対して1つのモード行(「ステータスバー」と呼ばれることもある)のみを設定することは可能ですか? この単一モードの行に、現在選択されているバッファーに関する情報を表示させたいのですが。

3
パッケージマネージャーのエンコーディングエラー
を実行するpackage-list-packagesと、次のエラーが発生します。 These default coding systems were tried to encode text in the buffer ` *temp*': (iso-latin-1-dos (3242 . 37326) (3243 . 40165)) However, each of them encountered characters it couldn't encode: iso-latin-1-dos cannot encode these: 野 鳥 デフォルトのパッケージマネージャーのエンコーディングをどのように設定できますutf-8か?

4
現在の文字が文字かどうかを判断する方法
現在の文字が文字(英字)であるかどうか(つまり、[:alpha:]正規表現で構文クラスに属しているかどうか)を判別する方法。以下のような簡単な関数を書きたいと思います: (defun test-letter () (interactive) (if char-after-is-a-letter (message "This is a letter") (message "This is not a letter") ) ) 更新 残念ながら、文字のクラス[:alpha:]と構文クラスの同等性に関する私の仮定は誤っているようです。

1
*コンパイル*バッファに制御文字が表示されるのはなぜですか?
*compilation*Centos 5およびCentos 6でC ++アプリケーションをビルドするためにバッファーを使用しています。バッファーにはビルドが表示され、ビルドの一部であるファイルへの参照が含まれています。ただし、^[出力に表示されるような制御文字が表示され、読みづらく、出力でクリックするとemacsが破損したファイル名を取得します。これらの文字は、コンパイラの出力でのある種のカラーリングまたはその他の注釈であると思いますが、どこから来ているのかわかりません。次に出力例を示します。 cc -c -g -I../machind -I. -DRELEASE_VERSION -g -O2 -m64 -D__BITS64 -pipe -DARCH_64 -DARCH_INTEL -DARCH_X86 -DARCH_X86_64 -DOS_LINUX -pthread -DLM_INTERNAL -DFLEXLM_KITBUILD -DFLEX_STATIC -DRELEASE_VERSION -DGPLATFORM=\\"x64_lsb\\" -DLINUX -DLSB3_0 -D__FD_SETSIZE=65535 -DGLIBC -DLINUX64 -DAMD64 -DREDHAT -DREL -DRHLINUX64 -DPLATFORM_AMD64_RHLINUX -DNO_ACTIVATION_SUPPORT ../machind/lmcrypt.c ^[[01m^[[K../machind/lmcrypt.c:^[[m^[[K In function ^[[01m^[[Kmain^[[m^[[K : ^[[01m^[[K../machind/lmcrypt.c:156:47:^[[m^[[K ^[[01;35m^[[Kwarning: ^[[m^[[Kcast to pointer from integer …

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