avy-migemo は avy 関数の migemo 版に切り替えるためのマイナーモードです.
このパッケージでは,以下の関数が定義されています.
avy-migemo-goto-char
avy-migemo-goto-char-2
avy-migemo-goto-char-in-line
avy-migemo-goto-char-timer
avy-migemo-goto-subword-1
avy-migemo-goto-word-1
avy-migemo-isearch
avy-migemo-org-goto-heading-timer
avy-migemo--overlay-at
avy-migemo--overlay-at-full
avy-migemo--read-candidates
上記のほとんどは avy.el で定義されている関数の regexp-quote
の箇所を migemo に置き換えたのものです.
また以下の拡張パッケージは avy.el の拡張ではないですが,
avy-migemo-mode
で切り替えて使用できるように定義されています.
- avy-migemo-e.g.zzz-to-char.el
- avy-migemo-e.g.ivy.el
- avy-migemo-e.g.swiper.el
- avy-migemo-e.g.counsel.el
- avy-migemo
- Requirements
- Setup
- Customization
- User Option:
avy-migemo-lighter
- User Option:
avy-migemo-get-function
- User Option:
avy-migemo-regex-concat-use-non-capturing
- User Option:
avy-migemo-function-names
- Function:
avy-migemo-remove-names
&rest names - Function:
avy-migemo-add-names
&rest names - User Option:
avy-migemo-use-isearch-search-fun
- User Option:
avy-migemo-at-full-max
- User Option:
avy-migemo-regex-cache-clear-hook
- An example config for zzz-to-char (
zzz-to-char--base
) - An example config for ivy
- An example config for swiper
- An example config for counsel
- User Option:
counsel-grep-base-command-migemo
- User Option:
counsel-pt-migemo-base-command
- User Option:
counsel-rg-migemo-base-command
- User Option:
counsel-cmd-to-dired-migemo-grep-command
- User Option:
counsel-cmd-to-dired-migemo-grep-invert-matching
- User Option:
counsel-find-file-occur-migemo-ls-cmd
- User Option:
counsel-find-file-occur-migemo-ls-xargs-cmd
- User Option:
counsel-find-file-occur-migemo-find-cmd
- User Option:
counsel-find-file-occur-migemo-find-xargs-cmd
- User Option:
counsel-unquote-regex-parens-migemo-function
- User Option:
- User Option:
(add-to-list 'load-path "/path/to/avy-migemo")
(require 'avy-migemo)
;; `avy-migemo-mode' overrides avy's predefined functions using `advice-add'.
(avy-migemo-mode 1)
(global-set-key (kbd "M-g m m") 'avy-migemo-mode)
avy-migemo-mode
の lighter です.初期値は nil
に設定されています.
引数として文字列を取り,正規表現を返す関数を設定することができます.
初期値は migemo-get-pattern
に設定されています.
;; e.g. Using non-capturing group
(custom-set-variables
'(avy-migemo-get-function 'avy-migemo-get-pattern-non-capturing)
'(avy-migemo-regex-concat-use-non-capturing t))
non-nil の場合, avy-migemo-regex-concat
/ avy-migemo-regex-quote-concat
時に non-capturing group を使用します.
初期値は nil
に設定されています.
non-nilの場合,grep の -E オプションと使用することができません.
そのため counsel-grep-function-migemo
を使用する場合は,
counsel-grep-base-command-migemo
で -P オプションまたは他のコマンドを使用する必要があります.
avy-migemo の関数名のリストです.
また advice-add
の引数のように, (orig-fn where advice-fn)
と指定することができます.
初期値にはアドバイス関数として使用できる全ての関数名が含まれています.
この変数を変更する場合は, setq
ではなく custom-set-variables
を使用してください.
setq
を使用すると,オーバーライドする関数との整合性が取れなくなります.
avy-goto-char-timer
のみをオーバーライドして使用する場合は,以下のようになります.
;; Override only `avy-goto-char-timer' when `avy-migemo-mode' is enabled.
(custom-set-variables
'(avy-migemo-function-names
'(avy-migemo-goto-char-timer)))
avy-migemo-function-names
から names を取り除くための関数です.
;; Remove only `avy-migemo-goto-char' from `avy-migemo-function-names'.
(avy-migemo-remove-names 'avy-migemo-goto-char)
avy-migemo-function-names
に names を追加するための関数です.
non-nil の場合, avy-migemo-isearch
時に isearch-search-fun
を使用して候補を集めます.
初期値は nil
に設定されています.
migemo-isearch-toggle-migemo
,isearch symbol/word などの切り替えに対応しています.
この変数に整数を指定すると,候補上に表示されるキーの長さを制限することができます.
初期値は nil
に設定されています.
この機能は avy-migemo--overlay-at-full
に依存しています.
(custom-set-variables '(avy-migemo-at-full-max 2))
avy-migemo-regex-cache-clear
の呼び出し時に実行されるノーマルフックです.
以下のように,avy を使用している関数の migemo版を新たに追加することができます.
既存の関数名に -migemo
を加えた関数を新たに定義し,追加します.
以下の設定例は avy-migemo-e.g.zzz-to-char.el をロードすることで使用することができます.
;; If you use zzz-to-char (which can be installed from MELPA or El-Get),
;; you can adapt it for migemo.
(require 'zzz-to-char)
;; Adding "-migemo" to the original name is needed.
(defun zzz-to-char--base-migemo (char n-shift)
"The same as `zzz-to-char--base' except for using migemo."
(let ((p (point))
(avy-all-windows nil))
(avy-with zzz-to-char
(avy--generic-jump
(if (= 13 char)
"\n"
;; Adapt for migemo
(avy-migemo-regex-quote-concat (string char)))
nil
avy-style
(- p zzz-to-char-reach)
(+ p zzz-to-char-reach)))
(let ((n (point)))
(when (/= n p)
(cl-destructuring-bind (beg . end)
(if (> n p)
(cons p (- (1+ n) n-shift))
(cons (+ n n-shift) p))
(goto-char end)
(kill-region beg end))))))
(avy-migemo-add-names 'zzz-to-char--base-migemo)
avy-migemo-e.g.ivy.el は ivy.el のための設定ファイルです.
(require 'avy-migemo-e.g.ivy)
以下の関数はアドバイス関数として使用されます.
ivy--regex-migemo-around
ivy--regex-ignore-order-migemo-around
ivy--regex-plus-migemo-around
ivy--highlight-default-migemo
ivy-occur-revert-buffer-migemo
ivy-occur-press-migemo
引数として文字列を取り,正規表現を返す関数を設定することができます.
初期値は avy-migemo-regex-concat-nnl
に設定されています.
ivy-state-caller
または ivy-state-collection
に使用される関数名のリストです.
ivy--regex-*-migemo-around
実行時に migemo を使用しないようにすることができます.
初期値は nil
に設定されています.( avy-migemo-e.g.counsel.el ロード時にいくつかの counsel コマンドが追加されます. )
正規表現のリストです.
ivy-state-prompt
にマッチする場合, ivy--regex-*-migemo-around
で migemo を使用しないようにすることができます.
初期値は (list (regexp-opt '("symbol" "function" "variable" "binding" "face")))
に設定されています.
ivy-state-caller
が設定されていないコマンドに使用することができます.
ivy-state-caller
または ivy-state-collection
に使用される関数名のリストです.
ivy--regex-*-migemo-around
実行時に, 指定された関数のみ migemo を使用します.
non-nil の場合, ivy-migemo-ignore-functions
/ ivy-migemo-ignore-prompts
の設定は使用されません.
初期値は nil
に設定されています.
;; e.g. Using only swiper with migemo.
(add-to-list 'ivy-migemo-preferred-functions 'swiper)
avy-migemo-e.g.swiper.el は swiper.el のための設定ファイルです.
(require 'avy-migemo-e.g.swiper)
以下の関数はアドバイス関数として使用されます.
swiper--add-overlays-migemo
swiper--re-builder-migemo-around
初期値は 2
に設定されています.
入力文字列の長さがこの値以上になった場合のみハイライトします.
nil
の場合は, swiper-min-highlight
が使用されます.
avy-migemo-e.g.counsel.el は counsel.el のための設定ファイルです.
(require 'avy-migemo-e.g.counsel)
以下の関数はアドバイス関数として使用されます.
counsel-grep-migemo-around
counsel-grep-function-migemo
counsel-grep-occur-migemo
counsel-git-occur-migemo-around
counsel-find-file-occur-migemo-around
avy-migemo-disable-around
forcounsel-clj
以下の関数は ivy-migemo-ignore-functions
に追加されます.
counsel-ag, counsel-rg, counsel-git-grep, counsel-locate counsel-describe-variable, counsel-fzf, counsel-describe-function, counsel-descbinds, counsel-M-x ,counsel-dpkg, counsel-rpm, counsel-irony
以下のコマンドが定義されています.
counsel-pt-migemo
counsel-rg-migemo
counsel-grep-function-migemo
で使用されるフォーマットです.
初期値は counsel-grep-base-command
に設定されています.
avy-migemo-regex-concat-use-non-capturing
が non-nilの場合,grep の -E オプションと使用することができません.
以下のように -P オプションと使用することができます.
;; e.g. grep with -P option
(custom-set-variables
'(counsel-grep-base-command-migemo "grep -nP %s %s"))
;; e.g. ripgrep
(custom-set-variables
'(counsel-grep-base-command-migemo "rg --color never --no-heading -ni %s %s"))
counsel-pt-migemo
で使用されるフォーマットです.
初期値は counsel-pt-base-command
に設定されています.
counsel-rg-migemo
で使用されるフォーマットです.
初期値は counsel-rg-base-command
に設定されています.
counsel-cmd-to-dired
の引数として使用される grep コマンドのフォーマットです.
初期値は “grep %s -i -P %s” に設定されています.
grep コマンドの --invert-matching
オプションです.
counsel-cmd-to-dired-migemo-grep-command
の1つめの書式指定子に使用されます.
初期値は “-v” に設定されています.
counsel-find-file-occur-cmd
の ls
コマンド部分です.
初期値は “ls -a”.
counsel-find-file-occur-cmd
の xargs
コマンド部分です.
初期値は “xargs -d ‘\n’ ls -d –group-directories-first”.
counsel--occur-cmd-find
の find
コマンド部分です.
初期値は “find . -maxdepth 1” に設定されています.
counsel--occur-cmd-find
の xargs
コマンド部分です.
初期値は “xargs -I {} find {} -maxdepth 0 -ls” に設定されています.
counsel-unquote-regex-parens-migemo
で内部的に使用されます.
引数として文字列を取り,正規表現を返す関数を設定することができます.
ivy--regex
の返り値が引数として使用されます.
初期値は counsel-unquote-regex-parens-migemo-default
に設定されています.
counsel-unquote-regex-parens-migemo-default
は 引数に対して counsel-unquote-regex-parens
を実行し,
その返り値に含まれている “\\|” を “|” に変換します.