emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: propose adding Icicles to Emacs


From: Richard Stallman
Subject: Re: propose adding Icicles to Emacs
Date: Sat, 16 Jun 2007 14:51:15 -0400

    Specific example: Some users like buffer-name completion to always be
    strict, a la Ibuffer, rather than lax, a la `switch-to-buffer'. Icicles has
    a user option that you can set to make REQUIRE-MATCH effectively strict for
    Icicles commands that use buffer names.

    Those buffer commands bind variable `icicle-require-match-flag' to the
    user's choice (which is the value of `icicle-buffer-require-match-flag'. My
    `completing-read' checks `icicle-require-match-flag' and overrides the
    REQUIRE-MATCH arg if appropriate. I mention buffer-name completion because
    it is a common example, but the same principle applies to any completion.

If we want such a feature, it should be a separate feature.

    Please see my reply to one of Stefan's emails on this topic. I am repeating
    myself. Anyway...

    1. `M-*' (`icicle-narrow-candidates') calls `completing-read' or
    `read-file-name' again, recursively, to match an additional pattern you
    provide. I call this "progressive completion", and it is akin to piping
    greps. In this recursive call, the same value of REQUIRE-MATCH should be
    used. Since this is in a different command, I need a global variable for
    this value.

I don't mind adding `minibuffer-completion-require-match' if we end up
needing it.

    2. Also, `icicle-candidate-action', which is `C-RET' (likewise, the
    alternative-action command, bound to `C-S-RET'), uses the recorded value of
    REQUIRE-MATCH to handle the action. When a match is required, the candidate
    must be one of those in `minibuffer-completion-table'. For lax completion,
    `C-RET' lets you act on any input you type.

If we implement this whole feature as I suggested, it will do the
right thing with REQUIRE-MATCH automatically.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]