Giter Site home page Giter Site logo

Comments (25)

oantolin avatar oantolin commented on August 19, 2024 2

You know, if we keep at it we will eventually match the capabilities Icicles has had for 15 years (or more?) now...

from orderless.

protesilaos avatar protesilaos commented on August 19, 2024 2

oantolin: And anyway maybe both things would be useful: having an extra string to match against, with normal orderless matching (I know @protesilaos has wanted the abilitity to match against the annotation), and also arbitrary predicates that are not string matching.

This is great! I am afraid I cannot be of any help here with regard to the technicalities, though I am eager to test any such functionality and provide feedback.

In the meantime, I flush lines in Embark collect buffers (e.g. targeting the c meta datum (commands) in consult-imenu).

oantolin: You know, if we keep at it we will eventually match the capabilities Icicles has had for 15 years (or more?) now...

Correct!

minad: Yes, that's the plan! Have you tried it?

Edit: Here is the list of features we should implement:

Looking forward to the new iceberg package! Seriously though, there probably are lots of good idea in there. Drew has intimate knowledge of core Emacs stuff and is a veteran in the field.

from orderless.

oantolin avatar oantolin commented on August 19, 2024 1

And anyway maybe both things would be useful: having an extra string to match against, with normal orderless matching (I know @protesilaos has wanted the abilitity to match against the annotation), and also arbitrary predicates that are not string matching.

from orderless.

oantolin avatar oantolin commented on August 19, 2024 1

I like how you keep the title up to date. 😛

from orderless.

minad avatar minad commented on August 19, 2024 1

The bundle of these packages is called iceberg from now on 🤣

from orderless.

clemera avatar clemera commented on August 19, 2024

These are interesting ideas, I also see some use cases for special filter expressions based on completion category. For example one could maybe use @match to filter for a match in the docstrings in command/function completions or for example to filter buffer completions for buffers which contain a match for this in their contents (I believe helm also supports this).

from orderless.

minad avatar minad commented on August 19, 2024

Okay, @clemera your idea is even more interesting. The way I originally thought about this is that Consult attaches some metadata to the candidates, but this is obviously not a good idea since it couples Consult and Orderless too closely. But from your idea this gets me thinking how we can implement it nicely even for existing commands.

Add support only to Orderless - add a list of (category key function) entries, for example (symbol ?@ (lambda (cand) ...)). Then these filter functions can be configured afterwards. Maybe the key is not even necessary or we use a fixed key? Or support multiple different "tags"?

Only support for consult-multi dispatching would be necessary to have in orderless then, but this would probably be 5 lines as it is in embark-consult and in marginalia.

from orderless.

oantolin avatar oantolin commented on August 19, 2024

Ooh, I like that idea!

from orderless.

minad avatar minad commented on August 19, 2024

I quickly looked into this and it seems to require an additional filtering step since as of now everything is compiled to regular expressions. In orderless-filter, does it make sense to use a modified predicate or just walk over the candidates again as returned by all-completions?

from orderless.

oantolin avatar oantolin commented on August 19, 2024

Here's a different idea: what if we instead have an alist of (category . extradata) pairs, where the extradata is a function that given a candidate produces either a string or a buffer. Then orderless components that start with a @ match against the extra string or buffer rather than against the candidate.

This would be nice for matching against buffer contents or docstrings.

from orderless.

oantolin avatar oantolin commented on August 19, 2024

Mmh. In both versions we want to select the metadata based on the category, but we already tried that and you conviced me @minad, that completion styles aren't supposed to know the category.

from orderless.

minad avatar minad commented on August 19, 2024

Here's a different idea: what if we instead have an alist of (category . extradata) pairs, where the extradata is a function that given a candidate produces either a string or a buffer.

This sounds good too, but what if I want multiple different extradatas? For this I proposed the key. For example I would want to match buffer content and buffer major mode.

Mmh. In both versions we want to select the metadata based on the category, but we already tried that and you conviced me @minad, that completion styles aren't supposed to know the category.

Ouch, right. But the issue can easily be avoided by the same approach as before - simply define derived completion styles for each category.

And anyway maybe both things would be useful: having an extra string to match against, with normal orderless matching (I know @protesilaos has wanted the abilitity to match against the annotation), and also arbitrary predicates that are not string matching.

Yes, both would be even better if it can be implemented with reasonable effort.

from orderless.

minad avatar minad commented on August 19, 2024

Yes, that's the plan! Have you tried it?

Edit: Here is the list of features we should implement:

;;    `a', `any', `buffer', `clear-option',
;;    `cycle-icicle-expand-to-common-match',
;;    `cycle-icicle-image-file-thumbnail',
;;    `cycle-icicle-incremental-completion',
;;    `cycle-icicle-sort-order',
;;    `cycle-icicle-S-TAB-completion-method',
;;    `cycle-icicle-TAB-completion-method', `file',
;;    `icicle-add-buffer-candidate', `icicle-add-buffer-config',
;;    `icicle-add-entry-to-saved-completion-set',
;;    `icicle-add-file-to-fileset',
;;    `icicle-add/update-saved-completion-set', `icicle-anything',
;;    `icicle-apply' `icicle-apropos', `icicle-apropos-command',
;;    `icicle-apropos-function', `icicle-apropos-option',
;;    `icicle-apropos-options-of-type', `icicle-apropos-value',
;;    `icicle-apropos-variable',
;;    `icicle-apropos-vars-w-val-satisfying', `icicle-apropos-zippy',
;;    `icicle-auto-complete-keys-mode', `icicle-bbdb-complete-mail',
;;    `icicle-bbdb-complete-name', `icicle-bookmark',
;;    `icicle-bookmark-a-file', `icicle-bookmark-all-tags',
;;    `icicle-bookmark-all-tags-other-window',
;;    `icicle-bookmark-all-tags-regexp',
;;    `icicle-bookmark-all-tags-regexp-other-window',
;;    `icicle-bookmark-autofile', `icicle-bookmark-autofile-all-tags',
;;    `icicle-bookmark-autofile-all-tags-other-window',
;;    `icicle-bookmark-autofile-all-tags-regexp',
;;    `icicle-bookmark-autofile-all-tags-regexp-other-window',
;;    `icicle-bookmark-autofile-other-window',
;;    `icicle-bookmark-autofile-some-tags',
;;    `icicle-bookmark-autofile-some-tags-other-window',
;;    `icicle-bookmark-autofile-some-tags-regexp',
;;    `icicle-bookmark-autofile-some-tags-regexp-other-window',
;;    `icicle-bookmark-autonamed',
;;    `icicle-bookmark-autonamed-other-window',
;;    `icicle-bookmark-autonamed-this-buffer',
;;    `icicle-bookmark-autonamed-this-buffer-other-window',
;;    `icicle-bookmark-bookmark-file',
;;    `icicle-bookmark-bookmark-list', `icicle-bookmark-cmd',
;;    `icicle-bookmark-desktop', `icicle-bookmark-dired',
;;    `icicle-bookmark-dired-other-window',
;;    `icicle-bookmarked-buffer-list', `icicle-bookmarked-file-list',
;;    `icicle-bookmark-file', `icicle-bookmark-file-all-tags',
;;    `icicle-bookmark-file-all-tags-other-window',
;;    `icicle-bookmark-file-all-tags-regexp',
;;    `icicle-bookmark-file-all-tags-regexp-other-window',
;;    `icicle-bookmark-file-other-window',
;;    `icicle-bookmark-file-some-tags',
;;    `icicle-bookmark-file-some-tags-other-window',
;;    `icicle-bookmark-file-some-tags-regexp',
;;    `icicle-bookmark-file-some-tags-regexp-other-window',
;;    `icicle-bookmark-file-this-dir',
;;    `icicle-bookmark-file-this-dir-other-window',
;;    `icicle-bookmark-file-this-dir-all-tags',
;;    `icicle-bookmark-file-this-dir-all-tags-other-window',
;;    `icicle-bookmark-file-this-dir-all-tags-regexp',
;;    `icicle-bookmark-file-this-dir-all-tags-regexp-other-window',
;;    `icicle-bookmark-file-this-dir-some-tags',
;;    `icicle-bookmark-file-this-dir-some-tags-other-window',
;;    `icicle-bookmark-file-this-dir-some-tags-regexp',
;;    `icicle-bookmark-file-this-dir-some-tags-regexp-other-window',
;;    `icicle-bookmark-gnus', `icicle-bookmark-gnus-other-window',
;;    `icicle-bookmark-image', `icicle-bookmark-image-other-window',
;;    `icicle-bookmark-info', `icicle-bookmark-info-other-window',
;;    `icicle-bookmark-jump', `icicle-bookmark-jump-other-window',
;;    `icicle-bookmark-list', `icicle-bookmark-local-file',
;;    `icicle-bookmark-local-file-other-window',
;;    `icicle-bookmark-man', `icicle-bookmark-man-other-window',
;;    `icicle-bookmark-non-file',
;;    `icicle-bookmark-non-file-other-window',
;;    `icicle-bookmark-other-window', `icicle-bookmark-region',
;;    `icicle-bookmark-region-other-window',
;;    `icicle-bookmark-remote-file',
;;    `icicle-bookmark-remote-file-other-window',
;;    `icicle-bookmark-save-marked-files',
;;    `icicle-bookmark-save-marked-files-as-project',
;;    `icicle-bookmark-save-marked-files-more',
;;    `icicle-bookmark-save-marked-files-persistently',
;;    `icicle-bookmark-save-marked-files-to-variable',
;;    `icicle-bookmark-set', `icicle-bookmark-some-tags',
;;    `icicle-bookmark-some-tags-other-window',
;;    `icicle-bookmark-some-tags-regexp',
;;    `icicle-bookmark-some-tags-regexp-other-window',
;;    `icicle-bookmark-specific-buffers',
;;    `icicle-bookmark-specific-buffers-other-window',
;;    `icicle-bookmark-specific-files',
;;    `icicle-bookmark-specific-files-other-window',
;;    `icicle-bookmark-tagged', `icicle-bookmark-tagged-other-window',
;;    `icicle-bookmark-temporary',
;;    `icicle-bookmark-temporary-other-window',
;;    `icicle-bookmark-this-buffer',
;;    `icicle-bookmark-this-buffer-other-window',
;;    `icicle-bookmark-url', `icicle-bookmark-url-other-window'
;;    `icicle-bookmark-w3m-other-window', `icicle-buffer',
;;    `icicle-buffer-config', `icicle-buffer-list',
;;    `icicle-buffer-narrowing', `icicle-buffer-no-search',
;;    `icicle-buffer-no-search-other-window',
;;    `icicle-buffer-other-window',
;;    `icicle-change-alternative-sort-order',
;;    `icicle-choose-completion-style-set', `icicle-choose-faces',
;;    `icicle-choose-invisible-faces', `icicle-choose-visible-faces',
;;    `icicle-choose-window-for-buffer-display',
;;    `icicle-clear-history', `icicle-clear-current-history',
;;    `icicle-color-theme', `icicle-comint-command',
;;    `icicle-comint-dynamic-complete',
;;    `icicle-comint-dynamic-complete-filename',
;;    `icicle-comint-replace-by-expanded-filename',
;;    `icicle-comint-search', `icicle-command-abbrev',
;;    `icicle-compilation-search', `icicle-complete-keys',
;;    `icicle-complete-menu-bar', `icicle-complete-thesaurus-entry',
;;    `icicle-completing-yank', `icicle-customize-apropos',
;;    `icicle-customize-apropos-faces',
;;    `icicle-customize-apropos-groups',
;;    `icicle-customize-apropos-options',
;;    `icicle-customize-apropos-options-of-type',
;;    `icicle-customize-apropos-opts-w-val-satisfying',
;;    `icicle-customize-face', `icicle-customize-icicles-group',
;;    `icicle-custom-theme', `icicle-cycle-expand-to-common-match',
;;    `icicle-cycle-image-file-thumbnail',
;;    `icicle-cycle-incremental-completion',
;;    `icicle-dabbrev-completion', `icicle-delete-file',
;;    `icicle-delete-window', `icicle-delete-windows',
;;    `icicle-delete-windows-on', `icicle-describe-file',
;;    `icicle-describe-option-of-type', `icicle-describe-package',
;;    `icicle-describe-process',
;;    `icicle-describe-var-w-val-satisfying', `icicle-directory-list',
;;    `icicle-dired', `icicle-dired-chosen-files',
;;    `icicle-dired-chosen-files-other-window',
;;    `icicle-dired-insert-as-subdir', `icicle-dired-other-window',
;;    `icicle-dired-project', `icicle-dired-project-other-window',
;;    `icicle-dired-saved-file-candidates',
;;    `icicle-dired-saved-file-candidates-other-window',
;;    `icicle-dired-save-marked',
;;    `icicle-dired-save-marked-as-project',
;;    `icicle-dired-save-marked-more',
;;    `icicle-dired-save-marked-more-recursive',
;;    `icicle-dired-save-marked-persistently',
;;    `icicle-dired-save-marked-recursive',
;;    `icicle-dired-save-marked-to-cache-file-recursive',
;;    `icicle-dired-save-marked-to-fileset-recursive',
;;    `icicle-dired-save-marked-to-variable',
;;    `icicle-dired-save-marked-to-variable-recursive',
;;    `icicle-dired-smart-shell-command', `icicle-doc',
;;    `icicle-doremi-increment-variable+',
;;    `icicle-exchange-point-and-mark',
;;    `icicle-execute-extended-command',
;;    `icicle-execute-named-keyboard-macro', `icicle-face-list',
;;    `icicle-file', `icicle-file-list', `icicle-file-other-window',
;;    `icicle-find-file', `icicle-find-file-abs-no-search',
;;    `icicle-find-file-abs-no-search-other-window',
;;    `icicle-find-file-abs-of-content',
;;    `icicle-find-file-abs-of-content-other-window',
;;    `icicle-find-file-absolute',
;;    `icicle-find-file-absolute-other-window',
;;    `icicle-find-file-abs-read-only',
;;    `icicle-find-file-abs-read-only-other-window',
;;    `icicle-find-file-all-tags',
;;    `icicle-find-file-all-tags-other-window',
;;    `icicle-find-file-all-tags-regexp',
;;    `icicle-find-file-all-tags-regexp-other-window',
;;    `icicle-find-file-handle-bookmark',
;;    `icicle-find-file-handle-bookmark-other-window',
;;    `icicle-find-file-in-tags-table',
;;    `icicle-find-file-in-tags-table-other-window',
;;    `icicle-find-file-of-content',
;;    `icicle-find-file-of-content-other-window',
;;    `icicle-find-file-other-window', `icicle-find-file-read-only',
;;    `icicle-find-file-read-only-other-window',
;;    `icicle-find-file-some-tags',
;;    `icicle-find-file-some-tags-other-window',
;;    `icicle-find-file-some-tags-regexp',
;;    `icicle-find-file-some-tags-regexp-other-window',
;;    `icicle-find-file-tagged',
;;    `icicle-find-file-tagged-other-window', `icicle-find-first-tag',
;;    `icicle-find-first-tag-other-window', `icicle-find-tag',
;;    `icicle-font', `icicle-font-lock-keyword', `icicle-frame-bg',
;;    `icicle-frame-fg', `icicle-fundoc', `icicle-goto-any-marker',
;;    `icicle-goto-global-marker',
;;    `icicle-goto-global-marker-or-pop-global-mark',
;;    `icicle-goto-marker', `icicle-goto-marker-or-set-mark-command',
;;    `icicle-grep-saved-file-candidates',
;;    `icicle-gud-gdb-complete-command', `icicle-handle-switch-frame',
;;    `icicle-hide-faces', `icicle-hide-only-faces',
;;    `icicle-hide/show-comments', `icicle-ido-like-mode',
;;    `icicle-imenu', `icicle-imenu-command',
;;    `icicle-imenu-command-full', `icicle-imenu-face',
;;    `icicle-imenu-face-full', `icicle-imenu-full',
;;    `icicle-imenu-key-explicit-map',
;;    `icicle-imenu-key-explicit-map-full',
;;    `icicle-imenu-key-implicit-map',
;;    `icicle-imenu-key-implicit-map-full', `icicle-imenu-macro',
;;    `icicle-imenu-macro-full',
;;    `icicle-imenu-non-interactive-function',
;;    `icicle-imenu-non-interactive-function-full',
;;    `icicle-imenu-user-option', `icicle-imenu-user-option-full',
;;    `icicle-imenu-variable', `icicle-imenu-variable-full',
;;    `icicle-increment-option', `icicle-increment-variable',
;;    `icicle-Info-goto-node', `icicle-Info-goto-node-no-search',
;;    `icicle-Info-goto-node-of-content', `icicle-Info-index',
;;    `icicle-Info-index-20', `icicle-Info-menu',
;;    `icicle-Info-menu-cmd', `icicle-Info-virtual-book',
;;    `icicle-insert-buffer', `icicle-insert-thesaurus-entry',
;;    `icicle-keyword-list', `icicle-kill-buffer', `icicle-kmacro',
;;    `icicle-lisp-complete-symbol', `icicle-locate',
;;    `icicle-locate-file', `icicle-locate-file-no-search',
;;    `icicle-locate-file-no-search-no-symlinks',
;;    `icicle-locate-file-no-search-no-symlinks-other-window',
;;    `icicle-locate-file-no-search-other-window',
;;    `icicle-locate-file-no-symlinks',
;;    `icicle-locate-file-no-symlinks-other-window',
;;    `icicle-locate-file-of-content',
;;    `icicle-locate-file-of-content-no-symlinks',
;;    `icicle-locate-file-of-content-no-symlinks-other-window',
;;    `icicle-locate-file-of-content-other-window',
;;    `icicle-locate-file-other-window', `icicle-locate-no-search',
;;    `icicle-locate-no-search-other-window',
;;    `icicle-locate-of-content',
;;    `icicle-locate-of-content-other-window',
;;    `icicle-locate-other-window',
;;    `icicle-minibuffer-default-add-dired-shell-commands',
;;    `icicle-minibuffer-help', `icicle-mode', `icy-mode',
;;    `icicle-next-font-lock-keywords',
;;    `icicle-next-font-lock-keywords-repeat',
;;    `icicle-next-visible-thing', `icicle-object-action',
;;    `icicle-occur', `icicle-occur-dired-marked',
;;    `icicle-occur-dired-marked-recursive',
;;    `icicle-ORIG-bbdb-complete-mail',
;;    `icicle-ORIG-bbdb-complete-name',
;;    `icicle-ORIG-comint-dynamic-complete',
;;    `icicle-ORIG-comint-dynamic-complete-filename',
;;    `icicle-ORIG-comint-replace-by-expanded-filename',
;;    `icicle-ORIG-dired-read-shell-command',
;;    `icicle-ORIG-ess-complete-object-name',
;;    `icicle-ORIG-gud-gdb-complete-command',
;;    `icicle-ORIG-read-buffer', `icicle-ORIG-read-file-name',
;;    `icicle-ORIG-read-shell-command',
;;    `icicle-other-window-or-frame', `icicle-pick-color-by-name',
;;    `icicle-plist', `icicle-pop-tag-mark',
;;    `icicle-pp-eval-expression', `icicle-previous-visible-thing',
;;    `icicle-read-buffer', `icicle-read-color',
;;    `icicle-read-color-WYSIWYG', `icicle-read-kbd-macro',
;;    `icicle-recent-file', `icicle-recent-file-no-search',
;;    `icicle-recent-file-no-search-other-window',
;;    `icicle-recent-file-of-content',
;;    `icicle-recent-file-of-content-other-window',
;;    `icicle-recent-file-other-window',
;;    `icicle-recompute-shell-command-candidates',
;;    `icicle-regexp-list', `icicle-remove-buffer-candidate',
;;    `icicle-remove-buffer-config',
;;    `icicle-remove-entry-from-saved-completion-set',
;;    `icicle-remove-file-from-recentf-list',
;;    `icicle-remove-saved-completion-set',
;;    `icicle-repeat-complex-command', `icicle-reset-option-to-nil',
;;    `icicle-resolve-file-name', `icicle-save-string-to-variable',
;;    `icicle-search', `icicle-search-all-tags-bookmark',
;;    `icicle-search-all-tags-regexp-bookmark',
;;    `icicle-search-autofile-bookmark',
;;    `icicle-search-autonamed-bookmark', `icicle-search-bookmark',
;;    `icicle-search-bookmark-list-bookmark',
;;    `icicle-search-bookmark-list-marked',
;;    `icicle-search-bookmarks-together', `icicle-search-buffer',
;;    `icicle-search-buff-menu-marked', `icicle-search-char-property',
;;    `icicle-search-defs', `icicle-search-defs-full',
;;    `icicle-search-dired-bookmark', `icicle-search-dired-marked',
;;    `icicle-search-dired-marked-recursive', `icicle-search-file',
;;    `icicle-search-file-bookmark', `icicle-search-generic',
;;    `icicle-search-gnus-bookmark',
;;    `icicle-search-highlight-cleanup',
;;    `icicle-search-ibuffer-marked', `icicle-search-info-bookmark',
;;    `icicle-search-keywords', `icicle-search-lines',
;;    `icicle-search-local-file-bookmark',
;;    `icicle-search-man-bookmark', `icicle-search-non-file-bookmark',
;;    `icicle-search-overlay-property', `icicle-search-pages',
;;    `icicle-search-paragraphs', `icicle-search-region-bookmark',
;;    `icicle-search-remote-file-bookmark', `icicle-search-sentences',
;;    `icicle-search-some-tags-bookmark',
;;    `icicle-search-some-tags-regexp-bookmark',
;;    `icicle-search-specific-buffers-bookmark',
;;    `icicle-search-specific-files-bookmark',
;;    `icicle-search-temporary-bookmark',
;;    `icicle-search-text-property', `icicle-search-thing',
;;    `icicle-search-this-buffer-bookmark',
;;    `icicle-search-url-bookmark', `icicle-search-w3m-bookmark',
;;    `icicle-search-w-isearch-string', `icicle-search-word',
;;    `icicle-search-xml-element',
;;    `icicle-search-xml-element-text-node',
;;    `icicle-select-bookmarked-region', `icicle-select-frame',
;;    `icicle-select-frame-by-name', `icicle-select-text-at-point',
;;    `icicle-select-window', `icicle-select-window-by-name',
;;    `icicle-select-zone', `icicle-send-bug-report',
;;    `icicle-send-signal-to-process', `icicle-set-option-to-t',
;;    `icicle-set-S-TAB-methods-for-command',
;;    `icicle-set-TAB-methods-for-command', `icicle-sexp-list',
;;    `icicle-shell-command', `icicle-shell-command-on-region',
;;    `icicle-shell-dynamic-complete-command',
;;    `icicle-shell-dynamic-complete-environment-variable',
;;    `icicle-shell-dynamic-complete-filename', `icicle-show-faces',
;;    `icicle-show-only-faces', `icicle-skip-this-command',
;;    `icicle-string-list', `icicle-synonyms', `icicle-tag-a-file',
;;    `icicle-tags-search', `icicle-switch-to/from-minibuffer',
;;    `icicle-toggle-.', `icicle-toggle-~-for-home-dir',
;;    `icicle-toggle-alternative-sorting',
;;    `icicle-toggle-angle-brackets', `icicle-toggle-annotation',
;;    `icicle-toggle-case-sensitivity', `icicle-toggle-C-for-actions',
;;    `icicle-toggle-completions-format', `icicle-toggle-dot',
;;    `icicle-toggle-expand-directory',
;;    `icicle-toggle-expand-to-common-match',
;;    `icicle-toggle-hiding-common-match',
;;    `icicle-toggle-hiding-non-matching-lines',
;;    `icicle-toggle-highlight-all-current',
;;    `icicle-toggle-highlight-historical-candidates',
;;    `icicle-toggle-highlight-saved-candidates',
;;    `icicle-toggle-icomplete-mode',
;;    `icicle-toggle-ignored-extensions',
;;    `icicle-toggle-ignored-space-prefix',
;;    `icicle-toggle-ignoring-comments',
;;    `icicle-toggle-include-cached-files',
;;    `icicle-toggle-include-recent-files',
;;    `icicle-toggle-literal-replacement',
;;    `icicle-toggle-network-drives-as-remote',
;;    `icicle-toggle-option', `icicle-toggle-proxy-candidates',
;;    `icicle-toggle-regexp-quote',
;;    `icicle-toggle-remote-file-testing',
;;    `icicle-toggle-search-cleanup',
;;    `icicle-toggle-search-complementing-domain',
;;    `icicle-toggle-search-replace-common-match',
;;    `icicle-toggle-search-replace-whole',
;;    `icicle-toggle-search-whole-word',
;;    `icicle-toggle-show-multi-completion', `icicle-toggle-sorting',
;;    `icicle-toggle-transforming',
;;    `icicle-toggle-WYSIWYG-Completions', `icicle-top-level',
;;    `icicle-untag-a-file', `icicle-vardoc',
;;    `icicle-visit-marked-file-of-content',
;;    `icicle-visit-marked-file-of-content-other-window',
;;    `icicle-visit-marked-file-of-content-recursive',
;;    `icicle-visit-marked-file-of-content-recursive-other-window',
;;    `icicle-where-is', `icicle-widget-file-complete',
;;    `icicle-yank-maybe-completing', `icicle-yank-pop-commands',
;;    `icicle-zap-to-char' (Emacs 23-25), `toggle', `synonyms',
;;    `toggle-icicle-~-for-home-dir',
;;    `toggle-icicle-alternative-sorting',
;;    `toggle-icicle-angle-brackets', `toggle-icicle-annotation',
;;    `toggle-icicle-case-sensitivity', `toggle-icicle-C-for-actions',
;;    `toggle-icicle-completions-format', `toggle-icicle-dot',
;;    `toggle-icicle-expand-directory',
;;    `toggle-icicle-expand-to-common-match',
;;    `toggle-icicle-hiding-common-match',
;;    `toggle-icicle-hiding-non-matching-lines',
;;    `toggle-icicle-highlight-all-current',
;;    `toggle-icicle-highlight-historical-candidates',
;;    `toggle-icicle-highlight-saved-candidates',
;;    `toggle-icicle-icomplete-mode',
;;    `toggle-icicle-ignored-extensions',
;;    `toggle-icicle-ignored-space-prefix',
;;    `toggle-icicle-include-cached-files',
;;    `toggle-icicle-include-recent-files',
;;    `toggle-icicle-incremental-completion',
;;    `toggle-icicle-literal-replacement',
;;    `toggle-icicle-network-drives-as-remote',
;;    `toggle-icicle-proxy-candidates', `toggle-icicle-regexp-quote',
;;    `toggle-icicle-remote-file-testing',
;;    `toggle-icicle-search-cleanup',
;;    `toggle-icicle-search-complementing-domain',
;;    `toggle-icicle-search-replace-common-match',
;;    `toggle-icicle-search-replace-whole',
;;    `toggle-icicle-search-whole-word',
;;    `toggle-icicle-show-multi-completion', `toggle-icicle-sorting',
;;    `toggle-icicle-transforming',
;;    `toggle-icicle-WYSIWYG-Completions', `what-which-how'.
;;
;;   Commands to be used mainly in the minibuffer or `*Completions*':
;;
;;    `cycle-icicle-completion-style-set',
;;    `cycle-icicle-expand-to-common-match',
;;    `cycle-icicle-image-file-thumbnail',
;;    `icicle-abort-recursive-edit', `icicle-all-candidates-action',
;;    `icicle-all-candidates-alt-action',
;;    `icicle-all-candidates-list-action',
;;    `icicle-all-candidates-list-alt-action',
;;    `icicle-apropos-complete', `icicle-apropos-complete-and-exit',
;;    `icicle-apropos-complete-and-narrow',
;;    `icicle-apropos-complete-and-widen',
;;    `icicle-apropos-complete-no-display',
;;    `icicle-bookmark-annotated-narrow',
;;    `icicle-bookmark-autofile-narrow',
;;    `icicle-bookmark-autonamed-narrow',
;;    `icicle-bookmark-autonamed-this-buffer-narrow',
;;    `icicle-backward-char-magic',
;;    `icicle-backward-delete-char-untabify',
;;    `icicle-backward-kill-paragraph',
;;    `icicle-backward-kill-sentence', `icicle-backward-kill-sexp',
;;    `icicle-backward-kill-word', `icicle-beginning-of-line+',
;;    `icicle-bookmark-bookmark-file-narrow',
;;    `icicle-bookmark-bookmark-list-narrow',
;;    `icicle-bookmark-desktop-narrow',
;;    `icicle-bookmark-dired-narrow',`icicle-bookmark-file-narrow',
;;    `icicle-bookmark-file-this-dir-narrow',
;;    `icicle-bookmark-gnus-narrow', `icicle-bookmark-image-narrow',
;;    `icicle-bookmark-info-narrow',
;;    `icicle-bookmark-local-file-narrow',
;;    `icicle-bookmark-man-narrow', `icicle-bookmark-navlist-narrow',
;;    `icicle-bookmark-non-file-narrow',
;;    `icicle-bookmark-region-narrow',
;;    `icicle-bookmark-remote-file-narrow',
;;    `icicle-bookmark-specific-buffers-narrow',
;;    `icicle-bookmark-specific-files-narrow',
;;    `icicle-bookmark-temporary-narrow',
;;    `icicle-bookmark-this-buffer-narrow',
;;    `icicle-bookmark-url-narrow', `icicle-bookmark-w3m-narrow',
;;    `icicle-candidate-action', `icicle-candidate-alt-action',
;;    `icicle-candidate-read-fn-invoke',
;;    `icicle-candidate-set-complement',
;;    `icicle-candidate-set-define',
;;    `icicle-candidate-set-difference',
;;    `icicle-candidate-set-intersection',
;;    `icicle-candidate-set-retrieve',
;;    `icicle-candidate-set-retrieve-from-variable',
;;    `icicle-candidate-set-retrieve-more',
;;    `icicle-candidate-set-retrieve-persistent',
;;    `icicle-candidate-set-save', `icicle-candidate-set-save-more',
;;    `icicle-candidate-set-save-more-selected',
;;    `icicle-candidate-set-save-persistently',
;;    `icicle-candidate-set-save-selected',
;;    `icicle-candidate-set-save-to-variable',
;;    `icicle-candidate-set-swap', `icicle-candidate-set-truncate',
;;    `icicle-candidate-set-union', `icicle-cand-preds',
;;    `icicle-cd-for-abs-files', `icicle-cd-for-loc-files',
;;    `icicle-change-alternative-sort-order',
;;    `icicle-change-history-variable', `icicle-change-sort-order',
;;    `icicle-change-sort-order', `icicle-choose-completion',
;;    `icicle-choose-window-by-name', `icicle-clear-current-history',
;;    `icicle-complete-current-candidate-as-input',
;;    `icicle-completing-read+insert',
;;    `icicle-Completions-mouse-3-menu',
;;    `icicle-cycle-expand-to-common-match',
;;    `icicle-cycle-image-file-thumbnail',
;;    `icicle-cycle-incremental-completion',
;;    `icicle-search-define-replacement',
;;    `icicle-delete-backward-char', `icicle-delete-candidate-object',
;;    `icicle-delete-char', `icicle-digit-argument',
;;    `icicle-dispatch-C-^', `icicle-dispatch-C-.',
;;    `icicle-dispatch-C-x.', `icicle-dispatch-M-_',
;;    `icicle-dispatch-M-comma', `icicle-dispatch-M-q',
;;    `icicle-display-candidates-in-Completions',
;;    `icicle-doremi-candidate-width-factor+',
;;    `icicle-doremi-increment-max-candidates+',
;;    `icicle-doremi-increment-swank-prefix-length+',
;;    `icicle-doremi-increment-swank-timeout+',
;;    `icicle-doremi-inter-candidates-min-spaces',
;;    `icicle-doremi-zoom-Completions+', `icicle-end-of-line+',
;;    `icicle-erase-minibuffer',
;;    `icicle-erase-minibuffer-or-history-element',
;;    `icicle-exit-minibuffer', `icicle-file-all-tags-narrow',
;;    `icicle-file-all-tags-regexp-narrow',
;;    `icicle-file-some-tags-narrow',
;;    `icicle-file-some-tags-regexp-narrow',
;;    `icicle-forward-char-magic', `icicle-goto/kill-failed-input',
;;    `icicle-help-on-candidate',
;;    `icicle-help-on-next-apropos-candidate',
;;    `icicle-help-on-next-prefix-candidate',
;;    `icicle-help-on-previous-apropos-candidate',
;;    `icicle-help-on-previous-prefix-candidate',
;;    `icicle-help-string-non-completion', `icicle-history',
;;    `icicle-insert-completion', `icicle-insert-dot-command',
;;    `icicle-insert-history-element',
;;    `icicle-insert-key-description',
;;    `icicle-insert-list-join-string',
;;    `icicle-insert-newline-in-minibuffer',
;;    `icicle-insert-string-at-point',
;;    `icicle-insert-string-from-variable', `icicle-isearch-complete',
;;    `icicle-isearch-history-complete',
;;    `icicle-isearch-history-insert',
;;    `icicle-keep-only-buffer-cands-for-derived-mode',
;;    `icicle-keep-only-buffer-cands-for-mode',
;;    `icicle-keep-only-buffer-cands-for-visible',
;;    `icicle-keep-only-past-inputs', `icicle-kill-line',
;;    `icicle-kill-paragraph', `icicle-kill-region',
;;    `icicle-kill-region-wimpy', `icicle-kill-sentence',
;;    `icicle-kill-sexp', `icicle-kill-word', `icicle-make-directory',
;;    `icicle-minibuffer-complete-and-exit', `icicle-minibuffer-help',
;;    `icicle-mouse-candidate-action',
;;    `icicle-mouse-candidate-alt-action',
;;    `icicle-mouse-candidate-read-fn-invoke',
;;    `icicle-mouse-candidate-set-save',
;;    `icicle-mouse-candidate-set-save-more',
;;    `icicle-mouse-choose-completion',
;;    `icicle-mouse-help-on-candidate',
;;    `icicle-mouse-remove-candidate',
;;    `icicle-mouse-save/unsave-candidate',
;;    `icicle-mouse-save-then-kill', `icicle-mouse-yank-secondary',
;;    `icicle-move-to-next-completion',
;;    `icicle-move-to-previous-completion', `icicle-multi-inputs-act',
;;    `icicle-multi-inputs-save', `icicle-narrow-candidates',
;;    `icicle-narrow-candidates-with-predicate',
;;    `icicle-negative-argument', `icicle-next-apropos-candidate',
;;    `icicle-next-apropos-candidate-action',
;;    `icicle-next-apropos-candidate-alt-action',
;;    `icicle-next-candidate-per-mode',
;;    `icicle-next-candidate-per-mode-action',
;;    `icicle-next-candidate-per-mode-alt-action',
;;    `icicle-next-candidate-per-mode-help',
;;    `icicle-next-completion-style-set',
;;    `icicle-next-history-element', `icicle-next-line',
;;    `icicle-next-prefix-candidate',
;;    `icicle-next-prefix-candidate-action',
;;    `icicle-next-prefix-candidate-alt-action',
;;    `icicle-next-S-TAB-completion-method',
;;    `icicle-ORIG-choose-completion', `icicle-ORIG-complete',
;;    `icicle-ORIG-exit-minibuffer',
;;    `icicle-ORIG-minibuffer-complete-and-exit',
;;    `icicle-ORIG-mouse-choose-completion',
;;    `icicle-ORIG-next-history-element', `icicle-ORIG-sit-for',
;;    `icicle-ORIG-switch-to-completions', `icicle-other-history',
;;    `icicle-plus-saved-sort',
;;    `icicle-pp-eval-expression-in-minibuffer',
;;    `icicle-prefix-complete', `icicle-prefix-complete-no-display',
;;    `icicle-prefix-word-complete',
;;    `icicle-previous-apropos-candidate',
;;    `icicle-previous-apropos-candidate-action',
;;    `icicle-previous-apropos-candidate-alt-action',
;;    `icicle-previous-candidate-per-mode',
;;    `icicle-previous-candidate-per-mode-action',
;;    `icicle-previous-candidate-per-mode-alt-action',
;;    `icicle-previous-candidate-per-mode-help',
;;    `icicle-previous-line', `icicle-previous-prefix-candidate',
;;    `icicle-previous-prefix-candidate-action',
;;    `icicle-previous-prefix-candidate-alt-action',
;;    `icicle-read+insert-file-name',
;;    `icicle-recomplete-from-original-domain',
;;    `icicle-regexp-quote-input',
;;    `icicle-remove-buffer-cands-for-derived-mode',
;;    `icicle-remove-buffer-cands-for-mode',
;;    `icicle-remove-buffer-cands-for-visible',
;;    `icicle-remove-candidate', `icicle-remove-Completions-window',
;;    `icicle-resolve-file-name', `icicle-retrieve-last-input',
;;    `icicle-retrieve-next-input', `icicle-retrieve-previous-input',
;;    `icicle-reverse-sort-order', `icicle-roundup',
;;    `icicle-save-predicate-to-variable',
;;    `icicle-save/unsave-candidate',
;;    `icicle-scroll-Completions-backward',
;;    `icicle-scroll-Completions-forward', `icicle-scroll-backward',
;;    `icicle-scroll-forward', `icicle-search-define-replacement',
;;    `icicle-self-insert', `icicle-sort-alphabetical',
;;    `icicle-sort-by-abbrev-frequency',
;;    `icicle-sort-by-directories-first',
;;    `icicle-sort-by-directories-last', `icicle-sort-by-file-type.',
;;    `icicle-sort-by-flx-score',
;;    `icicle-sort-by-last-file-access-time',
;;    `icicle-sort-by-last-file-modification-time',
;;    `icicle-sort-by-last-use', `icicle-sort-by-last-use-as-input',
;;    `icicle-sort-by-last-use\,-dirs-first',
;;    `icicle-sort-by-previous-use-alphabetically',
;;    `icicle-sort-by-2nd-parts-alphabetically',
;;    `icicle-sort-case-insensitive',
;;    `icicle-sort-extra-candidates-first',
;;    `icicle-sort-proxy-candidates-first',
;;    `icicle-sort-special-candidates-first',
;;    `icicle-sort-special-candidates-first',
;;    `icicle-sort-turned-OFF', `icicle-switch-to-Completions-buf',
;;    `icicle-switch-to-completions',
;;    `icicle-switch-to/from-minibuffer', `icicle-toggle-.',
;;    `icicle-toggle-~-for-home-dir',
;;    `icicle-toggle-alternative-sorting',
;;    `icicle-toggle-angle-brackets',
;;    `icicle-toggle-case-sensitivity', `icicle-toggle-C-for-actions',
;;    `icicle-toggle-completions-format', `icicle-toggle-dot',
;;    `icicle-toggle-expand-to-common-match',
;;    `icicle-toggle-hiding-common-match',
;;    `icicle-toggle-hiding-non-matching-lines',
;;    `icicle-toggle-highlight-all-current',
;;    `icicle-toggle-highlight-historical-candidates',
;;    `icicle-toggle-highlight-saved-candidates',
;;    `icicle-toggle-ignored-extensions',
;;    `icicle-toggle-ignored-space-prefix',
;;    `icicle-toggle-ignoring-comments',
;;    `icicle-toggle-literal-replacement',
;;    `icicle-toggle-proxy-candidates', `icicle-toggle-regexp-quote',
;;    `icicle-toggle-search-cleanup',
;;    `icicle-toggle-search-complementing-domain',
;;    `icicle-toggle-search-replace-common-match',
;;    `icicle-toggle-search-replace-whole',
;;    `icicle-toggle-search-whole-word',
;;    `icicle-toggle-show-multi-completion', `icicle-toggle-sorting',
;;    `icicle-toggle-transforming', `icicle-top-level',
;;    `icicle-transpose-chars', `icicle-transpose-sexps',
;;    `icicle-transpose-words', `icicle-universal-argument',
;;    `icicle-universal-argument-minus',
;;    `icicle-universal-argument-more',
;;    `icicle-universal-argument-other-key', `icicle-up-directory',
;;    `icicle-use-interactive-command-history',
;;    `icicle-widen-candidates', `icicle-yank', `icicle-yank-pop',
;;    `icicle-yank-secondary', `toggle-icicle-.',
;;    `toggle-icicle-~-for-home-dir',
;;    `toggle-icicle-alternative-sorting',
;;    `toggle-icicle-angle-brackets',
;;    `toggle-icicle-case-sensitivity', `toggle-icicle-C-for-actions',
;;    `toggle-icicle-completions-format', `toggle-icicle-dot',
;;    `toggle-icicle-expand-to-common-match',
;;    `toggle-icicle-hiding-common-match',
;;    `toggle-icicle-hiding-non-matching-lines',
;;    `toggle-icicle-highlight-all-current',
;;    `toggle-icicle-highlight-historical-candidates',
;;    `toggle-icicle-ignored-extensions',
;;    `toggle-icicle-ignored-space-prefix',
;;    `toggle-icicle-incremental-completion',
;;    `toggle-icicle-literal-replacement',
;;    `toggle-icicle-network-drives-as-remote',
;;    `toggle-icicle-proxy-candidates', `toggle-icicle-regexp-quote',
;;    `toggle-icicle-search-cleanup',
;;    `toggle-icicle-search-complementing-domain',
;;    `toggle-icicle-search-replace-common-match',
;;    `toggle-icicle-search-replace-whole',
;;    `toggle-icicle-search-whole-word', `toggle-icicle-sorting',
;;    `toggle-icicle-transforming'.
;;
;;  Faces defined in Icicles (in Custom group `icicles'):
;;
;;    `icicle-annotation', `icicle-candidate-part',
;;    `icicle-common-match-highlight-Completions',
;;    `icicle-complete-input', `icicle-completion',
;;    `icicle-Completions-instruction-1',
;;    `icicle-Completions-instruction-2',
;;    `icicle-current-candidate-highlight', `icicle-extra-candidate',
;;    `icicle-historical-candidate',
;;    `icicle-historical-candidate-other',
;;    `icicle-input-completion-fail',
;;    `icicle-input-completion-fail-lax', `icicle-key-complete-menu',
;;    `icicle-key-complete-menu-local',
;;    `icicle-match-highlight-Completions',
;;    `icicle-match-highlight-minibuffer', `icicle-mode-line-help',
;;    `icicle-msg-emphasis', `icicle-multi-command-completion',
;;    `icicle-mustmatch-completion', `icicle-proxy-candidate',
;;    `icicle-saved-candidate', `icicle-search-context-level-1',
;;    `icicle-search-context-level-2',
;;    `icicle-search-context-level-3',
;;    `icicle-search-context-level-4',
;;    `icicle-search-context-level-5',
;;    `icicle-search-context-level-6',
;;    `icicle-search-context-level-7',
;;    `icicle-search-context-level-8', `icicle-search-current-input',
;;    `icicle-search-main-regexp-current',
;;    `icicle-search-main-regexp-others', `icicle-special-candidate',
;;    `icicle-whitespace-highlight', `minibuffer-prompt'.
;;
;;  Widgets defined in Icicles:
;;
;;    `icicle-color', `icicle-file', `icicle-ORIG-color',
;;    `icicle-ORIG-file'.
;;
;;  User options defined in Icicles:
;;
;;    `icicle-act-before-cycle-flag',
;;    `icicle-add-proxy-candidates-flag',
;;    `icicle-alternative-actions-alist',
;;    `icicle-alternative-sort-comparer',
;;    `icicle-anything-transform-candidates-flag',
;;    `icicle-apropos-complete-keys',
;;    `icicle-apropos-complete-no-display-keys',
;;    `icicle-apropos-cycle-next-keys',
;;    `icicle-apropos-cycle-next-action-keys',
;;    `icicle-apropos-cycle-next-alt-action-keys',
;;    `icicle-apropos-cycle-next-help-keys',
;;    `icicle-apropos-cycle-previous-keys',
;;    `icicle-apropos-cycle-previous-action-keys',
;;    `icicle-apropos-cycle-previous-alt-action-keys',
;;    `icicle-apropos-cycle-previous-help-keys',
;;    `icicle-auto-complete-key-delay',
;;    `icicle-bookmark-name-length-max',
;;    `icicle-bookmark-refresh-cache-flag',
;;    `icicle-buffer-candidate-key-bindings', `icicle-buffer-configs',
;;    `icicle-buffer-extras',
;;    `icicle-buffer-ignore-space-prefix-flag',
;;    `icicle-buffer-include-cached-files-nflag',
;;    `icicle-buffer-include-recent-files-nflag',
;;    `icicle-buffer-match-regexp', `icicle-buffer-no-match-regexp',
;;    `icicle-buffer-predicate', `icicle-buffer-prefix-arg-filtering',
;;    `icicle-buffer-require-match-flag'
;;    `icicle-buffer-skip-functions', `icicle-buffer-sort',
;;    `icicle-buffers-ido-like-flag', `icicle-candidate-action-keys',
;;    `icicle-candidate-help-keys', `icicle-candidate-width-factor',
;;    `icicle-cand-preds-all', `icicle-cand-preds-for-bookmark',
;;    `icicle-cand-preds-for-buffer', `icicle-cand-preds-for-color',
;;    `icicle-cand-preds-for-face', `icicle-cand-preds-for-file',
;;    `icicle-cand-preds-for-frame', `icicle-cand-preds-for-misc',
;;    `icicle-cand-preds-for-package', `icicle-cand-preds-for-symbol',
;;    `icicle-cand-preds-for-variable',
;;    `icicle-cand-preds-for-window',
;;    `icicle-change-region-background-flag',
;;    `icicle-change-sort-order-completion',
;;    `icicle-C-l-uses-completion-flag',
;;    `icicle-cmpl-include-cdabbrev-flag',
;;    `icicle-cmpl-max-candidates-to-cycle', `icicle-color-themes',
;;    `icicle-comint-dynamic-complete-replacements',
;;    `icicle-command-abbrev-alist',
;;    `icicle-command-abbrev-match-all-parts-flag',
;;    `icicle-command-abbrev-priority-flag',
;;    `icicle-complete-key-anyway-flag',
;;    `icicle-complete-keys-ignored-prefix-keys',
;;    `icicle-complete-keys-self-insert-ranges',
;;    `icicle-completing-read+insert-keys',
;;    `icicle-completion-history-max-length',
;;    `icicle-completion-key-bindings',
;;    `icicle-completion-list-key-bindings',
;;    `icicle-completion-style-sets',
;;    `icicle-Completions-display-min-input-chars',
;;    `icicle-completions-format',
;;    `icicle-Completions-mouse-3-menu-entries',
;;    `icicle-Completions-max-columns',
;;    `icicle-Completions-text-scale-decrease',
;;    `icicle-Completions-window-max-height',
;;    `icicle-customize-save-flag',
;;    `icicle-customize-save-variable-function',
;;    `icicle-custom-themes', `icicle-custom-themes-accumulate-flag',
;;    `icicle-custom-themes-update-flag',
;;    `icicle-default-cycling-mode',
;;    `icicle-default-in-prompt-format-function',
;;    `icicle-default-thing-insertion', `icicle-default-value',
;;    `icicle-define-alias-commands-flag',
;;    `icicle-deletion-action-flag', `icicle-dot-show-regexp-flag',
;;    `icicle-dot-string', `icicle-expand-input-to-common-match',
;;    `icicle-expand-input-to-common-match-alt', `icicle-file-extras',
;;    `icicle-file-match-regexp', `icicle-file-no-match-regexp',
;;    `icicle-file-predicate', `icicle-file-require-match-flag',
;;    `icicle-file-skip-functions', `icicle-file-sort',
;;    `icicle-files-ido-like-flag',
;;    `icicle-filesets-as-saved-completion-sets-flag',
;;    `icicle-find-file-expand-directory-flag',
;;    `icicle-functions-to-redefine', `icicle-guess-commands-in-path',
;;    `icicle-help-in-mode-line-delay',
;;    `icicle-hide-common-match-in-Completions-flag',
;;    `icicle-hide-non-matching-lines-flag',
;;    `icicle-hide-whitespace-before-comment-flag',
;;    `icicle-highlight-historical-candidates-flag',
;;    `icicle-highlight-input-completion-failure',
;;    `icicle-highlight-input-completion-failure-delay',
;;    `icicle-highlight-input-completion-failure-threshold',
;;    `icicle-highlight-input-initial-whitespace-flag',
;;    `icicle-highlight-lighter-flag',
;;    `icicle-highlight-saved-candidates-flag',
;;    `icicle-icomplete-mode-max-candidates',
;;    `icicle-ignore-comments-flag', `icicle-ignored-directories',
;;    `icicle-image-files-in-Completions',
;;    `icicle-image-preview-in-tooltip',
;;    `icicle-incremental-completion',
;;    `icicle-incremental-completion-delay',
;;    `icicle-incremental-completion-threshold',
;;    `icicle-Info-highlight-visited-nodes',
;;    `icicle-inhibit-advice-functions', `icicle-inhibit-ding-flag',
;;    `icicle-input-string', `icicle-inter-candidates-min-spaces',
;;    `icicle-isearch-complete-keys',
;;    `icicle-isearch-history-insert-keys',
;;    `icicle-keep-Completions-for-sole-dir',
;;    `icicle-key-complete-keys',
;;    `icicle-key-complete-keys-for-minibuffer',
;;    `icicle-key-descriptions-use-<>-flag',
;;    `icicle-key-descriptions-use-angle-brackets-flag',
;;    `icicle-keymaps-for-key-completion',
;;    `icicle-kill-visited-buffers-flag', `icicle-kmacro-ring-max',
;;    `icicle-levenshtein-distance', `icicle-list-join-string',
;;    `icicle-list-nth-parts-join-string',
;;    `icicle-mark-position-in-candidate', `icicle-max-candidates',
;;    `icicle-menu-items-to-history-flag',
;;    `icicle-minibuffer-key-bindings',
;;    `icicle-minibuffer-setup-hook', `icicle-modal-cycle-down-keys',
;;    `icicle-modal-cycle-down-action-keys',
;;    `icicle-modal-cycle-down-alt-action-keys',
;;    `icicle-modal-cycle-down-help-keys',
;;    `icicle-modal-cycle-up-keys',
;;    `icicle-modal-cycle-up-action-keys',
;;    `icicle-modal-cycle-up-alt-action-keys',
;;    `icicle-modal-cycle-up-help-keys', `icicle-mode',
;;    `icicle-mode-hook', `icicle-move-Completions-frame',
;;    `icicle-network-drive-means-remote-flag',
;;    `icicle-no-match-hook', `icicle-option-type-prefix-arg-list',
;;    `icicle-point-position-in-candidate',
;;    `icicle-populate-interactive-history-flag',
;;    `icicle-pp-eval-expression-print-length',
;;    `icicle-pp-eval-expression-print-level',
;;    `icicle-prefix-complete-keys',
;;    `icicle-prefix-complete-no-display-keys',
;;    `icicle-prefix-cycle-next-keys',
;;    `icicle-prefix-cycle-next-action-keys',
;;    `icicle-prefix-cycle-next-alt-action-keys',
;;    `icicle-prefix-cycle-next-help-keys',
;;    `icicle-prefix-cycle-previous-keys',
;;    `icicle-prefix-cycle-previous-action-keys',
;;    `icicle-prefix-cycle-previous-alt-action-keys',
;;    `icicle-prefix-cycle-previous-help-keys',
;;    `icicle-quote-shell-file-name-flag',
;;    `icicle-read-char-by-name-multi-completion-flag' (Emacs 23-25),
;;    `icicle-read+insert-file-name-keys', `icicle-recenter',
;;    `icicle-regexp-quote-flag', `icicle-regexp-search-ring-max',
;;    `icicle-region-background', `icicle-require-match-flag',
;;    `icicle-saved-completion-sets', `icicle-search-cleanup-flag',
;;    `icicle-search-from-isearch-keys',
;;    `icicle-search-highlight-all-current-flag',
;;    `icicle-search-highlight-context-levels-flag',
;;    `icicle-search-highlight-threshold', `icicle-search-hook',
;;    `icicle-search-key-prefix',
;;    `icicle-search-replace-common-match-flag',
;;    `icicle-search-replace-literally-flag',
;;    `icicle-search-replace-whole-candidate-flag',
;;    `icicle-search-ring-max', `icicle-search-whole-word-flag',
;;    `icicle-shell-command-candidates-cache',
;;    `icicle-show-annotations-flag',
;;    `icicle-show-Completions-help-flag',
;;    `icicle-show-Completions-initially-flag',
;;    `icicle-show-multi-completion-flag', `icicle-sort-comparer',
;;    `icicle-sorting-max-candidates', `icicle-sort-orders-alist',
;;    `icicle-special-candidate-regexp',
;;    `icicle-S-TAB-completion-methods-alist',
;;    `icicle-S-TAB-completion-methods-per-command',
;;    `icicle-swank-prefix-length', `icicle-swank-timeout',
;;    `icicle-TAB-completion-methods',
;;    `icicle-TAB-completion-methods-per-command',
;;    `icicle-TAB-shows-candidates-flag',
;;    `icicle-TAB/S-TAB-only-completes-flag',
;;    `icicle-test-for-remote-files-flag',
;;    `icicle-thing-at-point-functions',
;;    `icicle-top-level-key-bindings',
;;    `icicle-top-level-when-sole-completion-delay',
;;    `icicle-top-level-when-sole-completion-flag',
;;    `icicle-touche-pas-aux-menus-flag', `icicle-type-actions-alist',
;;    `icicle-unpropertize-completion-result-flag',
;;    `icicle-update-input-hook', `icicle-use-~-for-home-dir-flag',
;;    `icicle-use-C-for-actions-flag',
;;    `icicle-use-anything-candidates-flag',
;;    `icicle-use-candidates-only-once-flag',
;;    `icicle-widgets-to-redefine', `icicle-word-completion-keys',
;;    `icicle-WYSIWYG-Completions-flag', `icicle-yank-function',
;;    `icicle-zap-to-char-candidates' (Emacs 23-25).
;;
;;  Non-interactive functions in Icicles:
;;
;;    `custom-variable-p', `icicle-2nd-part-string-less-p',
;;    `icicle-abbreviate-or-expand-file-name', `icicle-activate-mark',
;;    `icicle-add-key+cmd', `icicle-add-menu-item-to-cmd-history',
;;    `icicle-alist-key-match', `icicle-all-candidates-action-1',
;;    `icicle-all-completions', `icicle-all-exif-data',
;;    `icicle-alpha-p', `icicle-alt-act-fn-for-type',
;;    `icicle-any-candidates-p', `icicle-anychar-regexp',
;;    `icicle-anything-candidate-value', `icicle-apply-action',
;;    `icicle-apply-list-action', `icicle-apply-to-saved-candidate',
;;    `icicle-apropos-any-candidates-p',
;;    `icicle-apropos-any-file-name-candidates-p',
;;    `icicle-apropos-candidates', `icicle-apropos-complete-1',
;;    `icicle-apropos-complete-2', `icicle-apropos-opt-action',
;;    `icicle-auto-complete-key', `icicle-autofile-action',
;;    `icicle-backward-delete-char-untabify-magic',
;;    `icicle-barf-if-outside-Completions',
;;    `icicle-barf-if-outside-Completions-and-minibuffer',
;;    `icicle-barf-if-outside-minibuffer', `icicle-binary-option-p',
;;    `icicle-bind-completion-keys',
;;    `icicle-bind-buffer-candidate-keys',
;;    `icicle-bind-custom-minibuffer-keys',
;;    `icicle-bind-file-candidate-keys', `icicle-bind-isearch-keys',
;;    `icicle-bind-key-completion-keys-for-map-var',
;;    `icicle-bind-key-completion-keys-in-keymaps-from',
;;    `icicle-bind-other-keymap-keys',
;;    `icicle-bind-top-level-commands', `icicle-bookmark-autofile-p',
;;    `icicle-bookmark-autonamed-p',
;;    `icicle-bookmark-autonamed-this-buffer-p',
;;    `icicle-bookmark-bind-narrow-commands',
;;    `icicle-bookmark-bookmark-file-p',
;;    `icicle-bookmark-bookmark-list-p', `icicle-bookmark-cleanup',
;;    `icicle-bookmark-cleanup-on-quit',
;;    `icicle-bookmark-delete-action', `icicle-bookmark-desktop-p',
;;    `icicle-bookmark-dired-p', `icicle-bookmark-dired-this-dir-p',
;;    `icicle-bookmark-dired-wildcards-p', `icicle-bookmark-file-p',
;;    `icicle-bookmark-file-this-dir-p', `icicle-bookmark-flagged-p',
;;    `icicle-bookmark-function-p', `icicle-bookmark-gnus-p',
;;    `icicle-bookmark-help-string',
;;    `icicle-bookmark-icicle-search-hits-p',
;;    `icicle-bookmark-image-p', `icicle-bookmark-info-p',
;;    `icicle-bookmark-jump-1',
;;    `icicle-bookmark-last-specific-buffer-p',
;;    `icicle-bookmark-last-specific-file-p',
;;    `icicle-bookmark-lighted-p',
;;    `icicle-bookmark-local-directory-p',
;;    `icicle-bookmark-local-file-p', `icicle-bookmark-man-p',
;;    `icicle-bookmark-marked-p', `icicle-bookmark-modified-p',
;;    `icicle-bookmark-navlist-p', `icicle-bookmark-non-file-p',
;;    `icicle-bookmark-omitted-p', `icicle-bookmark-orphaned-file-p',
;;    `icicle-bookmark-orphaned-local-file-p',
;;    `icicle-bookmark-orphaned-remote-file-p',
;;    `icicle-bookmark-region-p', `icicle-bookmark-remote-file-p',
;;    `icicle-bookmark-sequence-p', `icicle-bookmark-snippet-p',
;;    `icicle-bookmark-tagged-p', `icicle-bookmark-temporary-p',
;;    `icicle-bookmark-this-buffer-p', `icicle-bookmark-url-p',
;;    `icicle-bookmark-url-browse-p',
;;    `icicle-bookmark-variable-list-p', `icicle-bookmark-w3m-p',
;;    `icicle-bounds-of-thing-at-point',
;;    `icicle-buffer-file/process-name-less-p',
;;    `icicle-buffer-apropos-complete-match',
;;    `icicle-buffer-cand-help', `icicle-buffer-modified-p',
;;    `icicle-buffer-multi-complete', `icicle-buffer-name-prompt',
;;    `icicle-buffer-smaller-p', `icicle-buffer-sort-*...*-last',
;;    `icicle-cached-files-without-buffers',
;;    `icicle-call-then-update-Completions',
;;    `icicle-cancel-Help-redirection', `icicle-candidate-action-1',
;;    `icicle-candidate-set-1', `icicle-candidate-set-retrieve-1',
;;    `icicle-candidate-set-save-1',
;;    `icicle-candidate-set-save-selected-1',
;;    `icicle-candidate-short-help',
;;    `icicle-case-insensitive-string-less-p',
;;    `icicle-case-string-less-p', `icicle-cdr-lessp',
;;    `icicle-char-cands-from-charlist' (Emacs 23-25),
;;    `icicle-char-properties-in-buffer',
;;    `icicle-char-properties-in-buffers',
;;    `icicle-choose-anything-candidate',
;;    `icicle-choose-candidate-of-type',
;;    `icicle-choose-completion-string', `icicle-clear-history-1',
;;    `icicle-clear-history-entry', `icicle-clear-lighter',
;;    `icicle-clear-minibuffer',
;;    `icicle-color-from-multi-completion-input',
;;    `icicle-cmd2-after-load-bookmark+',
;;    `icicle-cmd2-after-load-hexrgb',
;;    `icicle-cmd2-after-load-highlight',
;;    `icicle-cmd2-after-load-palette',
;;    `icicle-cmd2-after-load-synonyms',
;;    `icicle-cmd2-after-load-wid-edit+', `icicle-color-defined-p',
;;    `icicle-color-blue-lessp', `icicle-color-completion-setup',
;;    `icicle-color-distance-hsv-lessp',
;;    `icicle-color-distance-rgb-lessp', `icicle-color-gray-p',
;;    `icicle-color-green-lessp', `icicle-color-help',
;;    `icicle-color-hsv-lessp', `icicle-color-hue-lessp',
;;    `icicle-color-name-w-bg', `icicle-color-red-lessp',
;;    `icicle-color-saturation-lessp', `icicle-color-supported-p',
;;    `icicle-color-value-lessp', `icicle-column-wise-cand-nb',
;;    `icicle-completion--embedded-envvar-table',
;;    `icicle-Completions-popup-choice',
;;    `icicle-Completions-popup-choice-1',
;;    `icicle-comint-completion-at-point',
;;    `icicle-comint-dynamic-complete-as-filename',
;;    `icicle-comint-dynamic-simple-complete',
;;    `icicle-comint-hook-fn',
;;    `icicle-comint-replace-orig-completion-fns',
;;    `icicle-comint-search-get-final-choice',
;;    `icicle-comint-search-get-minibuffer-input',
;;    `icicle-comint-search-send-input',
;;    `icicle-command-abbrev-action', `icicle-command-abbrev-command',
;;    `icicle-command-abbrev-matching-commands',
;;    `icicle-command-abbrev-record', `icicle-command-abbrev-regexp',
;;    `icicle-command-abbrev-save',
;;    `icicle-command-abbrev-used-more-p',
;;    `icicle-command-names-alphabetic-p',
;;    `icicle-compilation-buffer-p', `icicle-compilation-hook-fn',
;;    `icicle-compilation-search-in-context-fn',
;;    `icicle-complete-again-update', `icicle-complete-keys-1',
;;    `icicle-complete-keys-action', `icicle-completing-p',
;;    `icicle-completing-read', `icicle-completing-read-default',
;;    `icicle-completing-read-multiple',
;;    `icicle-completing-read-history',
;;    `icicle-completion-all-completions',
;;    `icicle-completion-setup-function',
;;    `icicle-completion-try-completion',
;;    `icicle-compute-shell-command-candidates',
;;    `icicle-convert-dots', `icicle-create-thumb',
;;    `icicle-current-completion-in-Completions',
;;    `icicle-current-sort-functions', `icicle-current-sort-order',
;;    `icicle-current-TAB-method',
;;    `icicle-customize-apropos-opt-action', `icicle-customize-faces',
;;    `icicle-custom-type', `icicle-custom-variable-p',
;;    `icicle-dabbrev--abbrev-at-point',
;;    `icicle-default-buffer-names', `icicle-defaults-at-point',
;;    `icicle-define-crm-completion-map', ,
;;    `icicle-define-cycling-keys', `icicle-defined-thing-p',
;;    `icicle-define-icicle-maps', `icicle-define-minibuffer-maps',
;;    `icicle-delete-alist-dups', `icicle-delete-backward-char-magic',
;;    `icicle-delete-candidate-object-1', `icicle-delete-char-magic',
;;    `icicle-delete-count', `icicle-delete-current-candidate-object',
;;    `icicle-delete-dups', `icicle-delete-file-or-directory',
;;    `icicle-delete-whitespace-from-string',
;;    `icicle-describe-opt-action',
;;    `icicle-describe-opt-of-type-complete', `icicle-ding',
;;    `icicle-dired-read-shell-command',
;;    `icicle-dir-prefix-wo-wildcards',
;;    `icicle-dirs-and-latest-use-first-p', `icicle-dirs-first-p',
;;    `icicle-dirs-last-p', `icicle-displayable-cand-from-saved-set',
;;    `icicle-display-cand-from-full-cand',
;;    `icicle-display-completion-list', `icicle-display-Completions',
;;    `icicle-doc-action', `icicle-edmacro-parse-keys',
;;    `icicle-ensure-overriding-map-is-bound',
;;    `icicle-execute-extended-command-1',
;;    `icicle-expanded-common-match',
;;    `icicle-expanded-common-match-1', `icicle-expand-file-name-20',
;;    `icicle-expand-file-or-dir-name',
;;    `icicle-explicit-saved-completion-candidates', `icicle-explore',
;;    `icicle-extra-candidates-first-p', `icicle-face-bold-p',
;;    `icicle-face-differs-from-default-p',
;;    `icicle-face-inverse-video-p', `icicle-face-italic-p',
;;    `icicle-face-nontrivial-p', `icicle-face-underline-p',
;;    `icicle-face-valid-attribute-values',
;;    `icicle-ffap-file-remote-p', `icicle-ffap-url-p',
;;    `icicle-file-accessible-directory-p',
;;    `icicle-file-compressed-p', `icicle-file-desktop-p',
;;    `icicle-file-directory-p', `icicle-file-elc-p',
;;    `icicle-file-executable-p', `icicle-file-exists-p',
;;    `icicle-file-locked-p', `icicle-file-name-absolute-p',
;;    `icicle-file-name-apropos-candidates',
;;    `icicle-file-name-directory',
;;    `icicle-file-name-directory-w-default',
;;    `icicle-file-name-input-p', `icicle-file-name-nondirectory',
;;    `icicle-file-name-prefix-candidates', `icicle-nondirectory-p',
;;    `icicle-file-of-content-apropos-complete-match',
;;    `icicle-file-readable-p', `icicle-file-regular-p',
;;    `icicle-file-remote-p', `icicle-file-symlink-p',
;;    `icicle-filesets-files-under', `icicle-file-type-less-p',
;;    `icicle-file-writable-p', `icicle-files-within',
;;    `icicle-files-within-1', `icicle-filter-alist',
;;    `icicle-filter-wo-input', `icicle-find-file-abs-no-search-1',
;;    `icicle-find-file-abs-no-search-action',
;;    `icicle-find-file-abs-no-search-other-window-action',
;;    `icicle-find-file-abs-no-search-ro-action',
;;    `icicle-find-file-abs-no-search-ro-ow-action',
;;    `icicle-find-file-abs-of-content-1',
;;    `icicle-find-file-abs-of-content-action',
;;    `icicle-find-file-abs-of-content-other-window-action',
;;    `icicle-find-file-abs-of-content-ro-action',
;;    `icicle-find-file-abs-of-content-ro-ow-action',
;;    `icicle-find-file-no-search-action',
;;    `icicle-find-file-no-search-other-window-action',
;;    `icicle-find-file-of-content-ro-action',
;;    `icicle-find-file-of-content-ro-ow-action',
;;    `icicle-find-file-or-expand-dir',
;;    `icicle-find-first-tag-action',
;;    `icicle-find-first-tag-other-window-action',
;;    `icicle-find-tag-action', `icicle-find-tag-default-as-regexp',
;;    `icicle-find-tag-define-candidates',
;;    `icicle-find-tag-define-candidates-1',
;;    `icicle-find-tag-final-act', `icicle-find-tag-help',
;;    `icicle-find-tag-quit-or-error',
;;    `icicle-first-matching-candidate', `icicle-first-N',
;;    `icicle-fit-completions-window', `icicle-fix-default-directory',
;;    `icicle-flat-list', `icicle-flx-score-greater-p',
;;    `icicle-fn-doc-minus-sig', `icicle-frame-iconified-p',
;;    `icicle-frame-invisible-p', `icicle-frame-name-history',
;;    `icicle-frames-on', `icicle-frame-splittable-p',
;;    `icicle-frame-thumbnail-p', `icicle-frame-unsplittable-p',
;;    `icicle-function-name-history', `icicle-fuzzy-candidates',
;;    `icicle-get-alist-candidate',
;;    `icicle-get-anything-actions-for-type',
;;    `icicle-get-anything-cached-candidates',
;;    `icicle-get-anything-candidates',
;;    `icicle-get-anything-candidates-of-type',
;;    `icicle-get-anything-default-actions-for-type',
;;    `icicle-get-anything-input-delay',
;;    `icicle-get-anything-req-pat-chars',
;;    `icicle-get-anything-types',
;;    `icicle-get-candidates-from-saved-set', `icicle-get-safe',
;;    `icicle-goto-marker-1', `icicle-goto-marker-1-action',
;;    `icicle-group-regexp', `icicle-dired-guess-shell-command',
;;    `icicle-handle-default-for-prompt',
;;    `icicle-help-on-candidate-symbol', `icicle-help-line-buffer',
;;    `icicle-help-line-file', `icicle-help-string-completion',
;;    `icicle-hide/show-comments-1',
;;    `icicle-highlight-candidate-in-Completions',
;;    `icicle-highlight-complete-input',
;;    `icicle-highlight-initial-whitespace',
;;    `icicle-highlight-input-noncompletion',
;;    `icicle-highlight-input-noncompletion-rest',
;;    `icicle-highlight-lighter', `icicle-historical-alphabetic-p',
;;    `icicle-image-file-p', `icicle-imenu-command-p',
;;    `icicle-imenu-help', `icicle-imenu-in-buffer-p',
;;    `icicle-imenu-macro-p',
;;    `icicle-imenu-non-interactive-function-p',
;;    `icicle-increment-cand-nb+signal-end',
;;    `icicle-Info-apropos-complete-match',
;;    `icicle-Info-build-node-completions',
;;    `icicle-Info-build-node-completions-1',
;;    `icicle-Info-content-match', `icicle-Info-goto-node-1',
;;    `icicle-Info-goto-node-action', `icicle-Info-index-action',
;;    `icicle-Info-multi-read-node-name',
;;    `icicle-Info-node-is-indexed-by-topic',
;;    `icicle-Info-read-node-name',
;;    `icicle-Info-read-node-of-content',
;;    `icicle-input-from-minibuffer',
;;    `icicle-input-is-a-completion-p', `icicle-insert-candidates',
;;    `icicle-insert-candidate-action',
;;    `icicle-insert-cand-in-minibuffer',
;;    `icicle-insert-Completions-help-string', `icicle-insert-dot',
;;    `icicle-insert-for-yank', `icicle-insert-input',
;;    `icicle-insert-thesaurus-entry-cand-fn', `icicle-insert-thing',
;;    `icicle-invisible-face-p', `icicle-invisible-p',
;;    `icicle-isearch-complete-past-string',
;;    `icicle-interesting-buffer-p', `icicle-join-nth-parts',
;;    `icicle-kbd', `icicle-keep/remove-buffer-cands-for-visible',
;;    `icicle-key-description', `icicle-keys+cmds-w-prefix',
;;    `icicle-kill-a-buffer',
;;    `icicle-kill-a-buffer-and-update-completions',
;;    `icicle-kmacro-action', `icicle-last-non-minibuffer-buffer',
;;    `icicle-latest-access-first-p', `icicle-latest-input-first-p',
;;    `icicle-latest-modification-first-p',
;;    `icicle-latest-use-first-p', `icicle-levenshtein-match',
;;    `icicle-levenshtein-one-match', `icicle-levenshtein-one-regexp',
;;    `icicle-levenshtein-strict-match',
;;    `icicle-lisp-completion-at-point', `icicle-list-position',
;;    `icicle-load-library', `icicle-local-keys-first-p',
;;    `icicle-locate-file-no-search-1',
;;    `icicle-locate-file-of-content-1', `icicle-looking-at-p',
;;    `icicle-looks-like-dir-name-p', `icicle-lru-window-for-buffer',
;;    `icicle-major-mode-name-less-p',
;;    `icicle-make-bookmark-candidate', `icicle-make-char-candidate'
;;    (Emacs 23-25), `icicle-make-color-candidate',
;;    `icicle-make-face-candidate', `icicle-make-frame-alist',
;;    `icicle-make-plain-predicate', `icicle-make-window-alist',
;;    `icicle-map', `icicle-markers', `icicle-markers-to-readable',
;;    `icicle-marker+text',
;;    `icicle-maybe-multi-completion-completing-p',
;;    `icicle-maybe-sort-and-strip-candidates',
;;    `icicle-maybe-sort-maybe-truncate', `icicle-mctize-all',
;;    `icicle-mctized-display-candidate',
;;    `icicle-mctized-full-candidate',
;;    `icicle-merge-saved-order-less-p',
;;    `icicle-minibuffer-default-add-completions',
;;    `icicle-minibuf-input', `icicle-minibuf-input-sans-dir',
;;    `icicle-minibuffer-prompt-end', `icicle-minibuffer-setup',
;;    `icicle-mode-line-name-less-p',
;;    `icicle-mouse-candidate-action-1', `icicle-mouseover-help',
;;    `icicle-mru-window-for-buffer',
;;    `icicle-msg-maybe-in-minibuffer', `icicle-ms-windows-NET-USE',
;;    `icicle-multi-comp-apropos-complete-match', `icicle-multi-sort',
;;    `icicle-buffer-narrowing-action', `icicle-nb-Completions-cols',
;;    `icicle-nb-of-cand-at-Completions-pos',
;;    `icicle-nb-of-cand-in-Completions-horiz',
;;    `icicle-next-candidate', `icicle-next-error-buffer-p',
;;    `icicle-next-single-char-property-change',
;;    `icicle-next-visible-thing-1', `icicle-next-visible-thing-2',
;;    `icicle-next-visible-thing-and-bounds',
;;    `icicle-next-window-for-display-buffer',
;;    `icicle-non-whitespace-string-p',
;;    `icicle-not-basic-prefix-completion-p',
;;    `icicle-not-special-candidate-p',
;;    `icicle-ORIG-choose-completion-string',
;;    `icicle-ORIG-completing-read',
;;    `icicle-ORIG-completing-read-multiple',
;;    `icicle-ORIG-completion-setup-function',
;;    `icicle-ORIG-dired-smart-shell-command',
;;    `icicle-ORIG-display-completion-list',
;;    `icicle-ORIG-face-valid-attribute-values',
;;    `icicle-ORIG-minibuffer-default-add-completions',
;;    `icicle-ORIG-read-char-by-name' (Emacs 23-25),
;;    `icicle-ORIG-read-color', `icicle-ORIG-read-face-name',
;;    `icicle-ORIG-read-from-minibuffer', `icicle-ORIG-read-number',
;;    `icicle-ORIG-read-string', `icicle-ORIG-shell-command',
;;    `icicle-ORIG-shell-command-on-region',
;;    `icicle-ORIG-widget-color-complete',
;;    `icicle-package-built-in-p', `icicle-package-disabled-p',
;;    `icicle-package-installed-p', `icicle-part-1-cdr-lessp',
;;    `icicle-part-1-lessp', `icicle-part-2-lessp',
;;    `icicle-part-3-lessp', `icicle-part-4-lessp',
;;    `icicle-part-N-lessp', `icicle-pick-color-by-name-1',
;;    `icicle-pick-color-by-name-action', `icicle-place-cursor',
;;    `icicle-place-overlay', `icicle-position',
;;    `icicle-prefix-any-candidates-p',
;;    `icicle-prefix-any-file-name-candidates-p',
;;    `icicle-prefix-candidates', `icicle-prefix-complete-1',
;;    `icicle-prefix-complete-2', `icicle-prefix-keys-first-p',
;;    `icicle-previous-single-char-property-change',
;;    `icicle-propertize', `icicle-proxy-candidate-first-p',
;;    `icicle-put-at-head', `icicle-put-whole-cand-prop',
;;    `icicle-quote-file-name-part-of-cmd',
;;    `icicle-raise-Completions-frame', `icicle-readable-to-markers',
;;    `icicle-read-args-w-val-satisfying', `icicle-read-char-by-name'
;;    (Emacs 23-25), `icicle-read-args-for-set-completion-methods',
;;    `icicle-read-char-exclusive',
;;    `icicle-read-char-maybe-completing' (Emacs 23-25),
;;    `icicle-read-choose-window-args', `icicle-read-face-name',
;;    `icicle-read-file-name', `icicle-read-file-name-default',
;;    `icicle-read-from-minibuffer',
;;    `icicle-read-from-minibuf-nil-default', `icicle-read-number',
;;    `icicle-read-regexp', `icicle-read-shell-command',
;;    `icicle-read-shell-command-completing', `icicle-read-string',
;;    `icicle-read-string-completing',
;;    `icicle-read-var-value-satisfying', `icicle-rebind-global',
;;    `icicle-recent-file-of-content-1',
;;    `icicle-recent-files-without-buffers.',
;;    `icicle-recentf-include-p', `icicle-recentf-keep-p',
;;    `icicle-recentf-make-menu-items', `icicle-recompute-candidates',
;;    `icicle-redefine-standard-functions',
;;    `icicle-redefine-standard-options',
;;    `icicle-redefine-std-completion-fns',
;;    `icicle-region-or-buffer-limits', `icicle-remap',
;;    `icicle-remove-buffer-candidate-action',
;;    `icicle-remove-buffer-config-action',
;;    `icicle-remove-cand-from-lists',
;;    `icicle-remove-candidate-display-others',
;;    `icicle-remove-color-duplicates', `icicle-remove-dots',
;;    `icicle-remove-duplicates', `icicle-remove-dups-if-extras',
;;    `icicle-remove-from-recentf-candidate-action',
;;    `icicle-remove-if', `icicle-remove-if-not',
;;    `icicle-remove-property', `icicle-replace-mct-cand-in-mct',
;;    `icicle-remove-saved-set-action', `icicle-repeat-command',
;;    `icicle-repeat-complex-command--called-interactively-skip',
;;    `icicle-replace-input-w-parent-dir', `icicle-require-match-p',
;;    `icicle-restore-completion-keys',
;;    `icicle-restore-custom-minibuffer-keys',
;;    `icicle-restore-other-keymap-keys',
;;    `icicle-restore-region-face',
;;    `icicle-restore-standard-commands',
;;    `icicle-restore-standard-options',
;;    `icicle-restore-std-completion-fns',
;;    `icicle-retrieve-candidates-from-set', `icicle-reversible-sort',
;;    `icicle-row-wise-cand-nb',
;;    `icicle-run-icicle-post-command-hook',
;;    `icicle-run-icicle-pre-command-hook',
;;    `icicle-same-vector-keyseq-p', `icicle-saved-fileset-p',
;;    `icicle-save-or-restore-input', `icicle-save-raw-input',
;;    `icicle-scatter', `icicle-scatter-match',
;;    `icicle-scroll-or-update-Completions', `icicle-search-action',
;;    `icicle-search-action-1', `icicle-search-bookmark-action',
;;    `icicle-search-char-property-scan',
;;    `icicle-search-char-prop-matches-p',
;;    `icicle-search-choose-buffers', `icicle-search-cleanup',
;;    `icicle-search-define-candidates',
;;    `icicle-search-define-candidates-1',
;;    `icicle-search-dired-marked-recursive-1',
;;    `icicle-search-file-found-p', `icicle-search-final-act',
;;    `icicle-search-help',
;;    `icicle-search-highlight-all-input-matches',
;;    `icicle-search-highlight-and-maybe-replace',
;;    `icicle-search-highlight-input-matches-here',
;;    `icicle-search-in-context-default-fn',
;;    `icicle-search-property-args',
;;    `icicle-search-property-default-match-fn',
;;    `icicle-search-quit-or-error',
;;    `icicle-search-read-context-regexp', `icicle-search-read-word',
;;    `icicle-search-regexp-scan',
;;    `icicle-search-replace-all-search-hits',
;;    `icicle-search-replace-cand-in-alist',
;;    `icicle-search-replace-cand-in-mct',
;;    `icicle-search-replace-fixed-case-p',
;;    `icicle-search-replace-match', `icicle-search-thing-args',
;;    `icicle-search-thing-scan', `icicle-search-where-arg',
;;    `icicle-select-minibuffer-contents' `icicle-select-zone-action',
;;    `icicle-set-calling-cmd',
;;    `icicle-set-completion-methods-for-command',
;;    `icicle-set-difference', `icicle-set-intersection',
;;    `icicle-set-union', `icicle-shell-command-on-file',
;;    `icicle-shell-dynamic-complete-as-command',
;;    `icicle-shell-dynamic-complete-as-environment-variable',
;;    `icicle-show-current-help-in-mode-line',
;;    `icicle-show-help-in-mode-line', `icicle-show-in-mode-line',
;;    `icicle-signum', `icicle-S-iso-lefttab-to-S-TAB',
;;    `icicle-sit-for', `icicle-some', `icicle-SPC-scatter-match',
;;    `icicle-SPC-scatter-re', `icicle-special-candidate-p',
;;    `icicle-special-candidates-first-p', `icicle-special-display-p',
;;    `icicle-special-variable-p', `icicle-split-input',
;;    `icicle-start-of-candidates-in-Completions',
;;    `icicle-string-after-p', `icicle-string-before-p',
;;    `icicle-string-match-p', `icicle-strip-ignored-files-and-sort',
;;    `icicle-subst-envvar-in-file-name',
;;    `icicle-substring-no-properties', `icicle-substrings-of-length',
;;    `icicle-substitute-keymap-vars', `icicle-successive-action',
;;    `icicle-take', `icicle-thing-at-point', `icicle-things-alist',
;;    `icicle-this-command-keys-prefix',
;;    `icicle-toggle-icicle-mode-twice', `icicle-top-level-prep',
;;    `icicle-transform-candidates',
;;    `icicle-transform-multi-completion',
;;    `icicle-transform-sole-candidate',
;;    `icicle-transpose-chars-magic', `icicle-try-switch-buffer',
;;    `icicle-ucs-names' (Emacs 23-25),
;;    `icicle-unbind-buffer-candidate-keys',
;;    `icicle-unbind-file-candidate-keys',
;;    `icicle-unbind-isearch-keys',
;;    `icicle-unbind-key-completion-keys-for-map-var',
;;    `icicle-unbind-key-completion-keys-in-keymaps-from',
;;    `icicle-undo-std-completion-faces',
;;    `icicle-unhighlight-lighter', `icicle-unlist', `icicle-unmap',
;;    `icicle-unpropertize-completion',
;;    `icicle-unsorted-apropos-candidates',
;;    `icicle-unsorted-file-name-apropos-candidates',
;;    `icicle-unsorted-file-name-prefix-candidates',
;;    `icicle-unsorted-prefix-candidates',
;;    `icicle-universal-argument--mode' (Emacs 24.4+),
;;    `icicle-upcase', `icicle-upcase-if-ignore-case',
;;    `icicle-update-and-next', `icicle-update-f-l-keywords',
;;    `icicle-update-ignored-extensions-regexp',
;;    `icicle-value-satisfies-type-p', `icicle-var-inherits-type-p',
;;    `icicle-var-is-of-type-p', `icicle-var-matches-type-p',
;;    `icicle-var-val-satisfies-type-p',
;;    `icicle-visit-marked-file-of-content-1',
;;    `icicle-widget-color-complete', `icicle-widgetp',
;;    `icicle-window-at-bottom-p', `icicle-window-at-left-p',
;;    `icicle-window-at-right-p', `icicle-window-at-top-p',
;;    `icicle-window-dedicated-p', `icicle-window-deletable-p',
;;    `icicle-window-invisible-p', `icicle-WYSIWYG-font'.
;;
;;  Internal variables and constants defined in Icicles:
;;
;;    `icicle-abs-file-candidates', `icicle-acting-on-next/prev',
;;    `icicle-active-map', `icicle-advice-info-list',
;;    `icicle-all-candidates-action',
;;    `icicle-all-candidates-list-action-fn',
;;    `icicle-all-candidates-list-alt-action-fn',
;;    `icicle-allowed-sort-predicate', `icicle-anychar-regexp',
;;    `icicle-apply-nomsg', `icicle-apropos-complete-match-fn',
;;    `icicle-apropos-value-last-initial-cand-set',
;;    `icicle-auto-complete-key-idle-timer',
;;    `icicle-auto-no-icomplete-mode-p', `icicle-auto-no-sort-p',
;;    `icicle-bookmark-history', `icicle-bookmark-list-names-only-p',
;;    `icicle-bookmark-menu-map', `icicle-bookmark-types',
;;    `icicle-buffer-config-history', `icicle-buffer-name-input-p',
;;    `icicle-bufflist', `icicle-candidate-action-fn',
;;    `icicle-candidate-alt-action-fn', `icicle-candidate-entry-fn',
;;    `icicle-candidate-help-fn', `icicle-candidate-nb',
;;    `icicle-candidate-properties-alist', `icicle-candidates-alist',
;;    `icicle-cands-to-narrow', `icicle-char-property-value-history',
;;    `icicle-cmd-calling-for-completion', `icicle-cmd-reading-input',
;;    `icicle-color-history', `icicle-color-theme-history',
;;    `icicle-command-abbrev-history', `icicle-commands-for-abbrev',
;;    `icicle-common-match-string',
;;    `icicle-comp-base-is-default-dir-p',
;;    `icicle-complete-input-overlay', `icicle-complete-keys-alist',
;;    `icicle-completing-p',
;;    `icicle-completing-read+insert-candidates',
;;    `icicle-completion-candidates', `icicle-completion-map-vars',
;;    `icicle-completion-prompt-overlay',
;;    `icicle-completion-set-history',
;;    `icicle-Completions-misc-submenu',
;;    `icicle-Completions-save/retrieve-submenu',
;;    `icicle-Completions-sets-submenu',
;;    `icicle-Completions-sorting-submenu',
;;    `icicle-completion-style-set',
;;    `icicle-Completions-this-candidate-submenu',
;;    `icicle-Completions-toggle-submenu',
;;    `icicle-compute-narrowing-regexp-p',
;;    `icicle-confirm-exit-commands',
;;    `icicle-crm-local-completion-map',
;;    `icicle-crm-local-must-match-map',
;;    `icicle-current-completion-candidate-overlay',
;;    `icicle-current-completion-mode',
;;    `icicle-current-font-lock-part', `icicle-current-input',
;;    `icicle-current-raw-input', `icicle-current-TAB-method',
;;    `icicle-custom-menu-map', `icicle-cycling-p',
;;    `icicle-default-thing-insertion-flipped-p',
;;    `icicle-delete-candidate-object', `icicle-describe-menu-map',
;;    `icicle-dictionary-history', `icicle-dir-candidate-can-exit-p',
;;    `icicle-dirs-done', `icicle-doc-last-initial-cand-set',
;;    `icicle-dot-string-internal', `icicle-edit-menu-map',
;;    `icicle-edit-update-p', `icicle-ess-use-ido',
;;    `icicle-exclude-default-proxies', `icicle-existing-bufs',
;;    `icicle-explore-final-choice',
;;    `icicle-explore-final-choice-full', `icicle-extra-candidates',
;;    `icicle-extra-candidates-dir-insert-p',
;;    `icicle-face-name-history', `icicle-face-remapping-Completions',
;;    `icicle-face-remapping-region', `icicle-fancy-candidates-p',
;;    `icicle-fancy-cands-internal-p', `icicle-ffap-max-region-size',
;;    `icicle-file-menu-map', `icicle-file-name-completion-table',
;;    `icicle-files', `icicle-filtered-default-value',
;;    `icicle-find-file-abs-action-fn', `icicle-find-file-action-fn',
;;    `icicle-font-name-history', `icicle-frame-alist',
;;    `icicle-frame-name-history', `icicle-frames-menu-map',
;;    `icicle-full-cand-fn', `icicle-function-name-history',
;;    `icicle-fundoc-last-initial-cand-set',
;;    `icicle-general-help-string',
;;    `icicle-get-alist-candidate-function',
;;    `icicle-goto-imenu-menu-map', `icicle-goto-menu-map',
;;    `icicle-hist-cands-no-highlight', `icicle-hist-var',
;;    `icicle-ignored-extensions', `icicle-ignored-extensions-regexp',
;;    `icicle-incremental-completion-p', `icicle-info-buff',
;;    `icicle-Info-index-cache', `icicle-info-menu-map',
;;    `icicle-Info-only-rest-of-book-p', `icicle-Info-tag-table-posn',
;;    `icicle-info-window', `icicle-inhibit-sort-p',
;;    `icicle-inhibit-try-switch-buffer', `icicle-initial-value',
;;    `icicle-input-completion-fail-overlay', `icicle-input-fail-pos',
;;    `icicle-insert-string-at-pt-end',
;;    `icicle-insert-string-at-pt-start',
;;    `icicle-interactive-history', `icicle-izones-var',
;;    `icicle-key-prefix', `icicle-key-prefix-2',
;;    `icicle-key-prefix-description', `icicle-kill-history',
;;    `icicle-kmacro-alist', `icicle-kmacro-history',
;;    `icicle-last-apropos-complete-match-fn',
;;    `icicle-last-completion-candidate',
;;    `icicle-last-completion-command',
;;    `icicle-last-icomplete-mode-value', `icicle-last-input',
;;    `icicle-last-sort-comparer', `icicle-last-top-level-command',
;;    `icicle-last-transform-function', `icicle-last-thing-type',
;;    `icicle-locate-file-no-symlinks-p',
;;    `icicle-locate-file-use-locate-p', `icicle-lighter-truncation',
;;    `icicle-list-use-nth-parts', `icicle-menu-map',
;;    `icicle-minibuf-act-on-all-menu-map',
;;    `icicle-minibuf-candidate-set-menu-map',
;;    `icicle-minibuf-edit-menu-map' `icicle-minibuffer-message-ok-p',
;;    `icicle-minibuf-history-menu-map',
;;    `icicle-minibuf-save-retrieve-menu-map',
;;    `icicle-minor-mode-map-entry', `icicle-mode-line-help',
;;    `icicle-mode-map', `icicle-ms-windows-drive-hash',
;;    `icicle-multi-completing-p', `icicle-multi-inputs-action-fn',
;;    `icicle-must-match-regexp', `icicle-must-not-match-regexp',
;;    `icicle-must-pass-after-match-predicate',
;;    `icicle-must-pass-predicate', `icicle-named-colors',
;;    `icicle-narrow-regexp',
;;    `icicle-nb-candidates-before-truncation',
;;    `icicle-nb-of-other-cycle-candidates',
;;    `icicle-new-bufs-to-keep', `icicle-new-bufs-to-kill',
;;    `icicle-new-last-cmd', `icicle-next-apropos-complete-cycles-p',
;;    `icicle-next-prefix-complete-cycles-p',
;;    `icicle-options-menu-map', `icicle-options-choose-menu-map',
;;    `icicle-options-toggle-menu-map', `icicle-orig-buff',
;;    `icicle-ORIG-crm-local-completion-map',
;;    `icicle-ORIG-crm-local-must-match-map',
;;    `icicle-orig-extra-cands', `icicle-orig-font',
;;    `icicle-orig-font-lock-keywords', `icicle-orig-frame',
;;    `icicle-orig-menu-bar',
;;    `icicle-orig-minibuffer-completion-pred',
;;    `icicle-orig-minibuffer-completion-table',
;;    `icicle-orig-must-match-regexp',
;;    `icicle-orig-must-not-match-regexp',
;;    `icicle-orig-must-pass-after-match-pred',
;;    `icicle-orig-must-pass-predicate', `icicle-orig-pixelsize',
;;    `icicle-orig-pointsize', `icicle-orig-pt-explore',
;;    `icicle-orig-read-file-name-fn',
;;    `icicle-orig-show-initially-flag',
;;    `icicle-orig-sort-orders-alist', `icicle-orig-window',
;;    `icicle-other-window', `icicle-path-variables',
;;    `icicle-plist-last-initial-cand-set',
;;    `icicle-pre-minibuffer-buffer', `icicle-post-command-hook',
;;    `icicle-pre-command-hook', `icicle-predicate-types-alist',
;;    `icicle-previous-raw-file-name-inputs',
;;    `icicle-previous-raw-non-file-name-inputs',
;;    `icicle-progressive-completing-p', `icicle-prompt',
;;    `icicle-proxy-candidate-regexp', `icicle-proxy-candidates',
;;    `icicle-read-expression-map', `icicle-read-char-history' (Emacs
;;    23-25), `icicle-remove-icicles-props-p', `icicle-re-no-dot',
;;    `icicle-require-match-p', `icicle-reverse-multi-sort-p',
;;    `icicle-reverse-sort-p', `icicle-saved-candidate-overlays',
;;    `icicle-saved-candidates-variables-obarray',
;;    `icicle-saved-completion-candidate',
;;    `icicle-saved-completion-candidates',
;;    `icicle-saved-completion-candidates-internal',
;;    `icicle-saved-ignored-extensions',
;;    `icicle-saved-kmacro-ring-max', `icicle-saved-proxy-candidates',
;;    `icicle-saved-regexp-search-ring-max',
;;    `icicle-saved-region-background',
;;    `icicle-saved-search-ring-max',
;;    `icicle-scroll-Completions-reverse-p', `icicle-search-command',
;;    `icicle-search-complement-domain-p',
;;    `icicle-search-context-level', `icicle-search-context-regexp',
;;    `icicle-search-current-overlay', `icicle-search-final-choice',
;;    `icicle-search-history', `icicle-search-in-context-fn',
;;    `icicle-searching-p', `icicle-search-regexp',
;;    `icicle-search-level-overlays', `icicle-search-map',
;;    `icicle-search-modes', `icicle-search-menu-map',
;;    `icicle-search-tags-menu-map', `icicle-search-overlays',
;;    `icicle-search-refined-overlays', `icicle-search-replacement',
;;    `icicle-search-replacement-history',
;;    `icicle-successive-grab-count',
;;    `icicle-text-property-value-history',
;;    `icicle-thing-at-pt-fns-pointer', `icicle-this-cmd-keys',
;;    `icicle-toggle-map', `icicle-toggle-transforming-message',
;;    `icicle-transform-before-sort-p', `icicle-transform-function',
;;    `icicle-universal-argument-map',
;;    `icicle-vardoc-last-initial-cand-set',
;;    `icicle-variable-name-history', `icicle-vmfoc-other-win-p',
;;    `icicle-vmfoc-recursive-p',
;;    `icicle-whole-candidate-as-text-prop-p',
;;    `lacarte-menu-items-alist'.

from orderless.

clemera avatar clemera commented on August 19, 2024

Ouch, right. But the issue can easily be avoided by the same approach as before - simply define derived completion styles for each category.

I don't really understand what that means? Usually checking for the category isn't a problem but I remember there was a problem with the preview feature as it does run outside the minibuffer right?

from orderless.

minad avatar minad commented on August 19, 2024

I don't really understand what that means? Usually checking for the category isn't a problem but I remember there was a problem with the preview feature as it does run outside the minibuffer right?

The completion style is not allowed to access the current completion category. This means we cannot dispatch within the completion style based on the completion category. The solution to this problem is to define multiple completion styles which are then dispatched to based on the category, e.g. orderless-file, orderless-buffer etc. These derived orderless styles can be registered in completion-category-overrides/defaults.

from orderless.

clemera avatar clemera commented on August 19, 2024

I think "it is not allowed" puts it a bit strongly, this is Emacs ;) Usually it would be reasonable to assume that you can check for it even though it isn't part of the interface. But I agree that it isn't technically correct and it is safer and robust to use the approach you suggested, so all good :) Thanks for the explanation!

from orderless.

oantolin avatar oantolin commented on August 19, 2024

Another option is to not dispatch here on anything. There could be a single orderless-extra-data variable pointing to a function, and callers of completing-read could just let-bind or setq-local it to the appropriate thing

We could allow the orderless-extra-data function to return a string or buffer to match against, or to return a predicate that can do whatever it wants.

Maybe we should treat matching against strings and buffers specially, and have separate orderless-extra-text and orderless-extra-predicate variables.

(All of these names are placeholders, I'd think more about good names before using these.)

from orderless.

clemera avatar clemera commented on August 19, 2024

Okay and one could then also add a function to minibuffer-setup-hook which could automatically set this orderless variable according to the current completion category.

from orderless.

minad avatar minad commented on August 19, 2024

@oantolin

Another option is to not dispatch here on anything. There could be a single orderless-extra-data variable pointing to a function, and callers of completing-read could just let-bind or setq-local it to the appropriate thing

Oh, no. Let's not do that. This way we introduce again a coupling. I want this feature to work for existing commands. It should work as well for consult-buffer as for switch-to-buffer etc.

The way of deriving completion styles specific to the category with the appropriate metadata matching functions/predicates is a good design. It fits well with how Emacs handles these completion styles itself. It is acceptable to have extra completion styles per category. And it also fits with the rest of the packages which do everything based on the category.

from orderless.

clemera avatar clemera commented on August 19, 2024

@minad If you let users add a function to their setup hook which sets this variable based on the category it would still work automatically.

from orderless.

minad avatar minad commented on August 19, 2024

Okay as long as we keep everything decoupled and add the metadata matching after the fact for existing commands I am fine with it. You propose that the user should sets a global minibuffer-setup-hook?

from orderless.

clemera avatar clemera commented on August 19, 2024

That is the idea, but using completion-category-overrides also sounds like a viable approach to me.

from orderless.

minad avatar minad commented on August 19, 2024

I wonder if some predefined matchers should be supplied then, similar to how Embark and Marginalia define their additions for the categories - as part of orderless or as part of another package?

from orderless.

minad avatar minad commented on August 19, 2024

See minad/consult#200, where @juliocc proposed a custom consult-buffer source for showing a subset of buffers. I assume for such use cases it would also be very valuable to have the filtering of buffer sets on the level of orderless/completion-style via a predicate as discussed in this issue.

from orderless.

minad avatar minad commented on August 19, 2024

I played a bit around with how such a feature should be implemented and I came to the conclusion that metadata filtering is out of scope for Orderless. Orderless is such a well-written and narrowly focused package, it should keep it focus.

Here is a small prototype. One can write for example @mode=emacs or @on. Maybe I should package that up at some point. But I am not yet entirely sure if I would actually want to use it. The feature to search through documentations has come up a few times in the context of Marginalia. And in combination with Embark completion is power up to a full file/buffer manager.

;; -*- lexical-binding: t -*-
;; completion query

(defun cq-buffer-content (x y _metadata)
  (or (string-blank-p y)
    (when-let (buf (get-buffer x))
      (with-current-buffer buf
        (save-excursion
          (save-restriction
            (widen)
            (goto-char (point-min))
            (ignore-errors (search-forward-regexp y nil 'noerror))))))))

(defun cq-buffer-mode (x y _metadata)
  (or (string-blank-p y)
    (when-let (buf (get-buffer x))
      (string-match-p y (symbol-name (buffer-local-value 'major-mode buf))))))

(defun cq-documentation (x y _metadata)
  (or (string-blank-p y)
    (ignore-errors (string-match-p y (documentation (intern-soft x))))))

(defun cq-annotation (x y metadata)
  (when-let* ((ann (completion-metadata-get metadata 'annotation-function))
              (str (funcall ann x)))
    (string-match-p y str)))

(defun cq-mode-on (x _ _metadata)
  (when-let (sym (intern-soft x))
    (and (boundp sym) (memq sym minor-mode-list)  (symbol-value sym))))

(defun cq-mode-off (x _ _metadata)
  (when-let (sym (intern-soft x))
    (and (boundp sym) (memq sym minor-mode-list)  (not (symbol-value sym)))))

(defun cq-command-key (x _ _metadata)
  (when-let (sym (intern-soft x))
    (and (fboundp sym) (where-is-internal sym))))

(defvar cq-queries
  '((buffer (mode . cq-buffer-mode)
            (content . cq-buffer-content)
            (ann . cq-annotation)
            (?* . cq-buffer-mode)
            (?@ . cq-buffer-content))
    (command (doc . cq-documentation)
            (ann . cq-annotation)
             (key . cq-command-key)
             (on . cq-mode-on)
             (off . cq-mode-on))))

(defun cq-completion-all-completions (orig str table pred _point &optional metadata)
  (let ((filter))
    (setq str
          (replace-regexp-in-string "@[^ ]*" (lambda (x)
                                               (setq x (substring x 1))
                                               (unless (string-blank-p x)
                                                 (push x filter))
                                               "")
                                    str))
    ;; TODO correct point computation
    (when-let* ((result (funcall orig str table pred (length str) metadata))
                (cat (completion-metadata-get metadata 'category)))
      (when-let (queries (and filter
                              (or (alist-get cat cq-queries)
                                  (and (eq cat 'consult-multi)
                                       (apply #'append (mapcar #'cdr cq-queries))))))
        (let* ((last (last result))
               (base (cdr last)))
          (setcdr last nil)
          (setq result (seq-filter (lambda (x)
                                     (when (eq cat 'consult-multi)
                                       (setq x (cdr (get-text-property 0 'consult-multi x))))
                                     (not (seq-find
                                           (lambda (f)
                                             (or
                                              (when-let* ((pos (or (string-match-p "=" f) (length f)))
                                                          (key (intern-soft (substring f 0 pos)))
                                                          (fun (alist-get key queries)))
                                                (not (funcall fun x (if (< pos (length f)) (substring f (1+ pos)) "") metadata)))
                                              (when-let (fun (alist-get (aref f 0) queries))
                                                (not (funcall fun x (substring f 1) metadata)))))
                                           filter)))
                                   result))
          (when result
            (setq result (nconc result base)))))
        result)))

(advice-add #'completion-all-completions :around #'cq-completion-all-completions)

from orderless.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.