* Icicles @ 2023-01-29 12:46 Gottfried 2023-01-29 16:04 ` [External] : Icicles Drew Adams 0 siblings, 1 reply; 5+ messages in thread From: Gottfried @ 2023-01-29 12:46 UTC (permalink / raw) To: help-gnu-emacs@gnu.org, Drew Adams [-- Attachment #1.1.1: Type: text/plain, Size: 690 bytes --] Hi Drew, I installed Icicles in Emacs and Emacs put it in the home/gfp/.config/emacs/elpa directory but when I want to run it, it said: did not find file/directory (in German language: Datei oder Verzeichnis nicht gefunden, icicles-mac) message: Leaving directory ‘/home/gfp/.config/emacs/elpa/icicles-2022.1.26’ \f Compiling file /home/gfp/.config/emacs/elpa/icicles-2022.1.26/icicles.el at Sun Jan 29 13:31:14 2023 Entering directory ‘/home/gfp/.config/emacs/elpa/icicles-2022.1.26/’ icicles.el:1695:16: Error: Cannot open load file: Datei oder Verzeichnis nicht gefunden, icicles-mac How can I solve the problem? -- Kind regards Gottfried [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3191 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [External] : Icicles 2023-01-29 12:46 Icicles Gottfried @ 2023-01-29 16:04 ` Drew Adams 0 siblings, 0 replies; 5+ messages in thread From: Drew Adams @ 2023-01-29 16:04 UTC (permalink / raw) To: Gottfried, help-gnu-emacs@gnu.org > I installed Icicles in Emacs and Emacs put it in the > home/gfp/.config/emacs/elpa directory > but when I want to run it, it said: > did not find file/directory > message: > Leaving directory ‘/home/gfp/.config/emacs/elpa/icicles-2022.1.26’ > Compiling file /home/gfp/.config/emacs/elpa/icicles-2022.1.26/icicles.el > at Sun Jan 29 13:31:14 2023 > Entering directory ‘/home/gfp/.config/emacs/elpa/icicles-2022.1.26/’ > icicles.el:1695:16: Error: Cannot open load file: Datei oder Verzeichnis > nicht gefunden, icicles-mac > > How can I solve the problem? You don't say exactly what you did. Or what Emacs version you have. A guess is that you just didn't add the directory where you have the source files to your value of variable `load-path'. Emacs can't know where to find libraries if you don't tell it. [ Caveat: I don't have or use Emacs 29, which includes native compilation, so I can't help you there - except to say that you can, I expect, still follow the regular directions (see below). If it for some reason needs the macros file (`icicles-mac.el') loaded first, then do that. ] ___ Normally all you need to do is add the directory where you have the Icicles files to the value of your `load-path' variable: (add-to-list 'load-path "/wherever/you/have/Icicles/files/") Then (require 'icicles) or `M-x load-library icicles'. This is described here: https://www.emacswiki.org/emacs/Icicles#ObtainingAndInstalling ___ Of course, it's better to byte-compile the files, if you want to do more than just give Icicles a quick try. You can byte-compile Icicles after you've loaded it (source files). Or you can do it anytime. But you must always have loaded `icicles-mac.el', to be able to byte-compile any of the source files (including `icicles-mac.el' itself). This is described here: https://www.emacswiki.org/emacs/Icicles_-_Libraries#byte-compile E.g., just Dired the directory with the files, mark them, and `B' to byte-compile them. (After having loaded `icicles-mac.el'.) You can see other reminders of the need to first load `icicles-mac.el' in the source files. E.g.: ;; ****************** ;; NOTE: Whenever you update Icicles (i.e., download ;; new versions of Icicles source files), I recommend ;; that you do the following: ;; ;; 1. Delete all existing byte-compiled Icicles ;; files (icicles*.elc). ;; 2. Load Icicles (`load-library' or `require'). ;; 3. Byte-compile the source files. ;; ;; In particular, always load `icicles-mac.el' (not ;; `icicles-mac.elc') before you byte-compile new ;; versions of the files, in case there have been any ;; changes to Lisp macros (in `icicles-mac.el'). ;; ****************** (This isn't special to Icicles; it's just standard Lisp practice.) ___ FYI: This is the code in `icicles.el' that loads the other files when you load it: ;;; Load other Icicles files (eval-when-compile (or (condition-case nil ;; Use load-library to ensure latest .elc. (load-library "icicles-mac") (error nil)) ;; Require, so can load separately if not on `load-path'. (require 'icicles-mac))) (require 'icicles-face) (require 'icicles-opt) ;; Requires face (require 'icicles-var) ;; Requires opt (require 'icicles-fn) ;; Requires mac, opt, var (require 'icicles-mcmd) ;; Requires mac, opt, var, fn (require 'icicles-cmd1) ;; Requires mac, opt, var, fn, mcmd (require 'icicles-cmd2) ;; Requires mac, opt, var, fn, mcmd, cmd1 (require 'icicles-mode) ;; Requires mac, face, opt, cmd1, cmd2 ___ HTH. If you have some follow-up, I think you can drop the ccing of help-gnu-emacs@gnu.org. ^ permalink raw reply [flat|nested] 5+ messages in thread
* icicles
@ 2023-01-30 16:24 Gottfried
0 siblings, 0 replies; 5+ messages in thread
From: Gottfried @ 2023-01-30 16:24 UTC (permalink / raw)
To: Drew Adams, help-gnu-emacs@gnu.org
[-- Attachment #1.1.1: Type: text/plain, Size: 9148 bytes --]
Hi Drew,
thanks very much for your exact description.
I have Emacs 28.2
> A guess is that you just didn't add the directory
> where you have the source files to your value of
> variable `load-path'. Emacs can't know where to
> find libraries if you don't tell it.
and as an Emacs newbie I didn't know that I have to add it to my
load-path. (I thought it will do it by itself).
I am learning.
So when I started emacs it loads icicles
but it gives me some missing dependencies
and I installed all of them through your given wiki page.
Now Icicles is running, every time I start emacs, but those given
messages I don't know what to do with them
Loading /home/gfp/.config/emacs/custom.el (source)...done
Loading /home/gfp/.config/emacs/elpa/icicles-2022.1.26/icicles-mac.el
(source)...done
.config/emacs/elpa/icicles-2022.1.26/hexrgb.el: Warning: ‘case’ is an
obsolete alias (as of 27.1); use ‘cl-case’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-opt.el: Warning: ‘incf’ is
an obsolete alias (as of 27.1); use ‘cl-incf’ instead. [2 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-opt.el: Warning: ‘callf’ is
an obsolete alias (as of 27.1); use ‘cl-callf’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-opt.el: Warning: ‘incf’ is
an obsolete alias (as of 27.1); use ‘cl-incf’ instead. [2 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-opt.el: Warning: ‘callf’ is
an obsolete alias (as of 27.1); use ‘cl-callf’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-opt.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead. [3 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-opt.el: Warning: ‘callf’ is
an obsolete alias (as of 27.1); use ‘cl-callf’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-opt.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead. [2 times]
Loading /home/gfp/.config/emacs/elpa/icicles-2022.1.26/icicles-mac.el
(source)...done
.config/emacs/elpa/icicles-2022.1.26/icicles-fn.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead. [5 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-fn.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-fn.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead. [5 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-fn.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead. [2 times]
Loading /home/gfp/.config/emacs/elpa/icicles-2022.1.26/icicles-mac.el
(source)...done
.config/emacs/elpa/icicles-2022.1.26/icicles-mcmd.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead. [4 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-mcmd.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-mcmd.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead. [8 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-mcmd.el: Warning: ‘flet’ is
an obsolete macro (as of 24.3); use either ‘cl-flet’ or ‘cl-letf’.
.config/emacs/elpa/icicles-2022.1.26/icicles-mcmd.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead. [6 times]
Loading /home/gfp/.config/emacs/elpa/icicles-2022.1.26/icicles-mac.el
(source)...done
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd1.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd1.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd1.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd1.el: Warning: ‘pushnew’
is an obsolete alias (as of 27.1); use ‘cl-pushnew’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd1.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead. [2 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd1.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead. [2 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd1.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead.
Loading /home/gfp/.config/emacs/elpa/icicles-2022.1.26/icicles-mac.el
(source)...done
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd2.el: Warning: ‘pushnew’
is an obsolete alias (as of 27.1); use ‘cl-pushnew’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd2.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead. [4 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd2.el: Warning: ‘incf’ is
an obsolete alias (as of 27.1); use ‘cl-incf’ instead. [3 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd2.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead. [2 times]
.config/emacs/elpa/icicles-2022.1.26/icicles-cmd2.el: Warning: ‘loop’ is
an obsolete alias (as of 27.1); use ‘cl-loop’ instead. [2 times]
Loading /home/gfp/.config/emacs/elpa/icicles-2022.1.26/icicles-mac.el
(source)...done
.config/emacs/elpa/icicles-2022.1.26/icicles-mode.el: Warning: ‘pushnew’
is an obsolete alias (as of 27.1); use ‘cl-pushnew’ instead.
.config/emacs/elpa/icicles-2022.1.26/icicles-mode.el: Warning: ‘case’ is
an obsolete alias (as of 27.1); use ‘cl-case’ instead. [2 times]
For information about GNU Emacs and the GNU system, type C-h C-a.
Package yow is deprecated
Package cl is deprecated
Beginning of buffer [2 times]
--
Kind regards
Gottfried
You don't say exactly what you did. Or what Emacs
version you have.
A guess is that you just didn't add the directory
where you have the source files to your value of
variable `load-path'. Emacs can't know where to
find libraries if you don't tell it.
[ Caveat: I don't have or use Emacs 29, which includes
native compilation, so I can't help you there -
except to say that you can, I expect, still follow
the regular directions (see below). If it for some
reason needs the macros file (`icicles-mac.el')
loaded first, then do that. ]
___
Normally all you need to do is add the directory
where you have the Icicles files to the value of
your `load-path' variable:
(add-to-list 'load-path
"/wherever/you/have/Icicles/files/")
Then (require 'icicles) or `M-x load-library icicles'.
This is described here:
https://www.emacswiki.org/emacs/Icicles#ObtainingAndInstalling
___
Of course, it's better to byte-compile the files,
if you want to do more than just give Icicles a
quick try.
You can byte-compile Icicles after you've loaded
it (source files).
Or you can do it anytime. But you must always
have loaded `icicles-mac.el', to be able to
byte-compile any of the source files (including
`icicles-mac.el' itself).
This is described here:
https://www.emacswiki.org/emacs/Icicles_-_Libraries#byte-compile
E.g., just Dired the directory with the files,
mark them, and `B' to byte-compile them.
(After having loaded `icicles-mac.el'.)
You can see other reminders of the need to first
load `icicles-mac.el' in the source files. E.g.:
;; ******************
;; NOTE: Whenever you update Icicles (i.e., download
;; new versions of Icicles source files), I recommend
;; that you do the following:
;;
;; 1. Delete all existing byte-compiled Icicles
;; files (icicles*.elc).
;; 2. Load Icicles (`load-library' or `require').
;; 3. Byte-compile the source files.
;;
;; In particular, always load `icicles-mac.el' (not
;; `icicles-mac.elc') before you byte-compile new
;; versions of the files, in case there have been any
;; changes to Lisp macros (in `icicles-mac.el').
;; ******************
(This isn't special to Icicles; it's just standard
Lisp practice.)
___
FYI: This is the code in `icicles.el' that loads
the other files when you load it:
;;; Load other Icicles files
(eval-when-compile
(or (condition-case nil
;; Use load-library to ensure latest .elc.
(load-library "icicles-mac")
(error nil))
;; Require, so can load separately if not on `load-path'.
(require 'icicles-mac)))
(require 'icicles-face)
(require 'icicles-opt) ;; Requires face
(require 'icicles-var) ;; Requires opt
(require 'icicles-fn) ;; Requires mac, opt, var
(require 'icicles-mcmd) ;; Requires mac, opt, var, fn
(require 'icicles-cmd1) ;; Requires mac, opt, var, fn, mcmd
(require 'icicles-cmd2) ;; Requires mac, opt, var, fn, mcmd, cmd1
(require 'icicles-mode) ;; Requires mac, face, opt, cmd1, cmd2
___
HTH. If you have some follow-up, I think you
can drop the ccing of help-gnu-emacs@gnu.org.
[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 3191 bytes --]
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* shell command completion gone @ 2011-01-07 6:45 prad 2011-01-07 16:14 ` Drew Adams 0 siblings, 1 reply; 5+ messages in thread From: prad @ 2011-01-07 6:45 UTC (permalink / raw) To: help-gnu-emacs when i do M-!, type a few characters and then press tab it used to complete. suddenly it doesn't anymore. the only thing i can think of having done is that i reinstalled icicles from the site (not my arch distribution), but i don't see what that would have to do with it, because it doesn't use icicles afaik. if i go into a shell, everything completes just fine. what does completion depend upon for the shell command? -- in friendship, prad ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: shell command completion gone 2011-01-07 6:45 shell command completion gone prad @ 2011-01-07 16:14 ` Drew Adams [not found] ` <mailman.0.1294459339.1472.help-gnu-emacs@gnu.org> 0 siblings, 1 reply; 5+ messages in thread From: Drew Adams @ 2011-01-07 16:14 UTC (permalink / raw) To: 'prad', help-gnu-emacs > when i do M-!, type a few characters and then press tab it used to > complete. suddenly it doesn't anymore. the only thing i can think of > having done is that i reinstalled icicles from the site (not my arch > distribution), but i don't see what that would have to do with it, > because it doesn't use icicles afaik. > > if i go into a shell, everything completes just fine. > what does completion depend upon for the shell command? Yes, it is because by default Icicles provides a different kind of completion for shell commands. Admittedly, this has confused more than one person. You can customize option `icicle-redefine-standard-commands-flag' to `nil' to restore the vanilla Emacs behavior here, if that's what you prefer. For info about this completion: http://www.emacswiki.org/emacs/Icicles_-_Shell-Command_Enhancements There are 3 possible sources of completion candidates here: 1. Programs on your $PATH (if `icicle-guess-commands-in-path' is non-nil), as proxy candidates. (nil is the default value.) 2. Programs deemed appropriate for the target file types, as proxy candidates. E.g., in Dired, `gunzip -qc * | tar xvf -' might be a candidate command for target file `foo.tgz'. 3. Programs anywhere - file names. To make #1 and #2 available, you must turn on proxy candidates (if off). Use `C-M-_' during completion to do that (once). (You can customize option `icicle-add-proxy-candidates-flag' to turn it on by default.) Wrt #3: Icicles completion here is file-name completion, to let you complete against command files anywhere, not just those on your $PATH. It is this that is particularly confusing at first (unexpected). The idea is that not every program/command you might want to use is on your PATH or preconfigured by a file-type association. The former is especially true on Windows, I think - PATH is not used as much on Windows, especially by users who do not program on Windows (which means most Windows users). For #2, there are in turn two sources of "appropriate" programs: 2a. Whatever `dired-guess-default' guesses for the target files. This is determined by variable `dired-guess-shell-alist-default' and user option `dired-guess-shell-alist-user'. This is available only if you load `dired-x.el'. 2b. Whatever `mailcap-file-default-commands' returns for the target files (based on MIME types of the target files). This is only for Emacs 23 and later. Note that #2 is true in Dired for `!' and outside Dired for `M-!' (provided you load `dired-x.el'). These candidates are available whenever a shell command is read in Icicles. File-name completion is very different from command completion, so in order to allow completion of arbitrary program files I opted for file-name completion and then brought in proxy candidates for the known commands (those on $PATH and the others mentioned above). When you complete, the proxy candidates are sorted first, and they are highlighted specially in *Completions* for easy recognition. If `icicle-guess-commands-in-path' is nil (the default), then the only proxy candidates are those from #2: programs that are known to be appropriate candidates for the file type in question. This takes effect in contexts such as Dired where the files that are the targets of the command you will choose are already known. E.g., for a PDF file in Dired, `!' will include commands such as `gv -safer', `xpdf', and `pdftotext ? -'. Sorry for any confusion. HTH. ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <mailman.0.1294459339.1472.help-gnu-emacs@gnu.org>]
* Re: shell command completion gone [not found] ` <mailman.0.1294459339.1472.help-gnu-emacs@gnu.org> @ 2011-01-08 17:37 ` rusi 2011-01-08 22:11 ` prad 0 siblings, 1 reply; 5+ messages in thread From: rusi @ 2011-01-08 17:37 UTC (permalink / raw) To: help-gnu-emacs On Jan 8, 9:02 am, prad <p...@towardsfreedom.com> wrote: > "Drew Adams" <drew.ad...@oracle.com> writes: > > Sorry for any confusion. > > drew thank you very much for that detailed explanation. > i have things working fine now using M-/ > icicles is a wonderful addition! > > -- > in friendship, > prad Hi Prad. Do you think you could spell out some (say 5-10) typical use-cases of icicles? Reason I ask: Ive tried a couple of times to use icicles but could not get into it ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: shell command completion gone 2011-01-08 17:37 ` rusi @ 2011-01-08 22:11 ` prad 2011-01-11 4:54 ` Le Wang 0 siblings, 1 reply; 5+ messages in thread From: prad @ 2011-01-08 22:11 UTC (permalink / raw) To: help-gnu-emacs rusi <rustompmody@gmail.com> writes: > Hi Prad. > Do you think you could spell out some (say 5-10) typical use-cases of > icicles? > Reason I ask: Ive tried a couple of times to use icicles but could not > get into it > certainly rusi and i appreciate your asking this since i tend to just use it very passively being effectively a newbie. exploring the package further gets you to really appreciate the wonderful work it really is! * ideas on icicles these are just some basic explorations of what you can do with drew adam's enormously helpful icicles package. ** cycling completions ref: http://www.emacswiki.org/emacs/Icicles_-_Cycling_Completions use <home>,<end> keys to cycle through all possibilities in minibuffer use <tab> to cycle as well and see possibilities in a separate buffer too ex: C-x C-f and use those keys to cycle through available files ex: C-h C-i m and cycles through topics in info ex: C-x b and cycle through your buffer choices ex: C-h v, type gnu and cycle through all variable which begin with "gnu" ** apropos completion via regexp ref: http://www.emacswiki.org/emacs/Icicles_-_Apropos_Completions use <page up>,<page down> for matching regexp anywhere (instead of just prefix as with gnu ex above) use S-<tab> to see all items which have regexp in them in separate buffer ex: M-x line and use those keys to cycle through all commands which has "line" ex: M-x tran.*line and use those keys to find "transpose-lines" right away ex: M-x line S-<tab> to see all commands which have "line" in them ex: C-x b at and use those keys to cycle through all buffers with "at" in them ** input history completion if you want to see what you have actually done yourself instead of what is available, just use M-n, M-p which let you traverse your own input history ex: visit some buffers then C-x b and M-n, M-p will show you where you have been ** progressive completion ref: http://www.emacswiki.org/emacs/Icicles_-_Progressive_Completion analogous to sequential piping, this let's you narrow a search through repeated internal matching using S-<spc> (or S-<tab> and repeated M-*) ex: say you can't quite remember that the gnus-save-article-folder command or may be it's gnus-save-folder-article or something with "save" and "folder" anyway. so type C-h f gnus S-<spc> then S-<spc> save then S-<spc> folder and this way you'll keep narrowing your search without having to worry about the order of the components. how's that for starters? my uses are presently limited to command, help, buffer and file issues but i'm wondering if i can make better use of it for ordinary text completions too - sort of as a non-verbal speech recognition mechanism. i think company.el may facilitate this idea, but i haven't explored it yet. -- in friendship, prad ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: shell command completion gone 2011-01-08 22:11 ` prad @ 2011-01-11 4:54 ` Le Wang 2011-01-11 23:21 ` Icicles [was: shell command completion gone] Drew Adams 0 siblings, 1 reply; 5+ messages in thread From: Le Wang @ 2011-01-11 4:54 UTC (permalink / raw) To: prad; +Cc: help-gnu-emacs [-- Attachment #1: Type: text/plain, Size: 2027 bytes --] On Sun, Jan 9, 2011 at 6:11 AM, prad <prad@towardsfreedom.com> wrote: > certainly rusi and i appreciate your asking this since i tend to just > use it very passively being effectively a newbie. exploring the package > further gets you to really appreciate the wonderful work it really is! > Considering everything in the package, it's difficult for anyone to not use it "very passively". I'm just getting reacquainted with it myself. I think Drew's approach in designing the package was to put everything under the sun completion related in there and enable most of it by default. The advantage of this approach is people can discover features "by accident". The downside is the dramatic behavior changes can scare away people just testing the waters. Rest assured, though, *the behaviors you do not want can be disabled*. And if you notice something that could be a bug Drew is a super responsible and responsive maintainer. Here is the use-case I find useful above all else icicles offers: I want help with the function that searches regexps backwards. I know that the keywords "backward" "regex" and "search" occurs in its name, but I don't know in what order. Normally I would have to apropos several possible orders before finding the exact name. With icicles, I can just use the `* icicle-narrow-candidates*' to interactively filter the completion list, to wit: 1. <C-h>fregex<shift-tab> 2. <M-*>back<shift-tab> 3. <M-*>search<shift-tab> After each step, the completion candidates are narrowed, and whenever the list is short enough, I can pop into the completion list window and select it myself. Drew's analogy for this is shell piping into successive greps. I often find functions that I didn't know existed and are in fact better suited to my purpose by using this narrowing tool. The wiki is a great place to get more info on icicles. Drew is very active there. Researching my little example above, I just found out that the <S-tab><M-*> can be shortened to just <S-spc>. hth. -- Le [-- Attachment #2: Type: text/html, Size: 2765 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Icicles [was: shell command completion gone] 2011-01-11 4:54 ` Le Wang @ 2011-01-11 23:21 ` Drew Adams 2011-01-12 7:17 ` Icicles prad 0 siblings, 1 reply; 5+ messages in thread From: Drew Adams @ 2011-01-11 23:21 UTC (permalink / raw) To: 'Le Wang', 'prad'; +Cc: help-gnu-emacs Thanks for your kind words, Le and Prad. I have a few comments, FWIW. > > i tend to just use it very passively being effectively a > > newbie. exploring the package further gets you to really > > appreciate the wonderful work it really is! > > Considering everything in the package, it's difficult for > anyone to not use it "very passively". I'm just getting > reacquainted with it myself. I think Drew's approach in > designing the package was to put everything under the sun > completion related in there and enable most of it by default. > The advantage of this approach is people can discover > features "by accident". The downside is the dramatic > behavior changes can scare away people just testing the > waters. Actually, no, that's not the intention. My approach is not to turn everything on and hope that people "discover features by accident". That the default Icicles behavior is different in some respects from vanilla Emacs might sometimes give that impression, but that is not my approach. 1. If you use only TAB to complete minibuffer input, and you do not do anything that you wouldn't do anyway in the vanilla Emacs minibuffer, then you should hardly notice being in Icicle mode. That's modulo any bugs that might exist, of course. And "hardly" is not "never". The point here is that Icicles features come primarily from binding additional keys in the minibuffer. In general, if you don't use those keys in the minibuffer then you won't get special behavior. And the keys in question are typically keys that you would not use for editing text. In Icicles it is especially important that you be able to edit normally in the minibuffer. Minibuffer text editing can be more important in Icicles than in vanilla Emacs for several reasons, including because Icicles does not avoid or prevent the use of completion candidates that contain spaces, newlines, and so on. You can enter such characters in the minibuffer just as you would in any other buffer (hit `SPC', `C-j'). Likewise `?' characters. No need to quote such chars using `C-q'. Is this a case of non-vanilla behavior that might be surprising? Yes. Is it objectionable? IMO, no. (And you can easily turn it off.) FWIW, vanilla Emacs itself finally came around (in version 22) to letting `SPC' be self-inserting for file-name completion. Perhaps someday it will loosen up further in this regard. ;-) In a text-editing context, sacrificing a printable char such as `?' as a help-command key is silly, IMO. Anyway, if you're not used to such keys self-inserting in the minibuffer then you might be surprised, but probably not too disoriented. Admittedly, a few of the keys that Icicles binds in the minibuffer for special purposes are keys that you might normally use for editing, but they are not so useful for editing in the minibuffer. And they are really the exception. For example, `M-k' is normally `kill-sentence', but in the minibuffer sentences are not very significant, so `M-k' in the Icicles minibuffer empties the minibuffer completely. Another example is `M-o': In the Icicles minibuffer `M-o' invokes a recursive minibuffer to let you complete against past inputs and insert them at the minibuffer cursor. I figure that in the minibuffer you won't miss `M-o' as a facemenu prefix key (`facemenu-keymap'). This is analogous to Dired mode co-opting `M-o' for `dired-omit-mode'. Again, such keys are the exception; Icicles has respect for keys that edit. 2. It is not unusual that someone who might be attracted to Icicles for some of its features comes not from vanilla Emacs but from some other package that also provides enhanced completion or cycling - Ido or Iswitchb, for instance. That makes sense: they've already been looking for something On Beyond Vanilla. In that case they may already be used to a different minibuffer UI from the vanilla one. They can thus have particular expectations that conflict with the Icicles UI. Things like incremental completion and cycling among candidates are different in Icicles. In general, Icicles minibuffer behavior is closer to the vanilla Emacs behavior: you type and edit, hit TAB to complete if you want, and then hit RET to accept/commit your input. When you cycle, the current candidate takes the place of your minibuffer input, so you can edit it normally. Icicles is not Ido. 3. My approach to default behavior is to aim for a good overall experience, where the various features fit together well. At the same time, I aim for what I expect to be the average Icicles user, typically based on what I expect are pretty average preferences and uses of vanilla Emacs. For example, I do not set Icicles default values to the values that I myself use. I set them to what I expect will be most useful for most people. You would (or perhaps would not) be surprised at the number of people who have different preferences and think that a default behavior should be changed. Users sometimes do not think, like maintainers do, in terms of other users - they sometimes think that what is most natural and most useful is what _they_ happen to prefer. As users we are probably all guilty of that. So there is always someone who thinks that some default behavior is a bad choice. I aim to have the default settings provide a good combination overall for using Icicles. Things are designed to fit together and take good advantage of what Icicles has to offer (synergy). Think of this approach to defaults as being "what is best for using Icicles" - for most use cases. That's the aim, anyway. That's not the same as throwing everything at you so you are forced to discover features by accident, as gotchas. The latter might appear to be the case, but it is not. I think a lot about the defaults, and I try to document things well, including how to turn things off and how to customize. 5. I recommend that new Icicles users at least try the default settings, in particular the default key bindings, for a little while before deciding to customize them. Because someone new to Icicles is not yet familiar with the features and how they fit together, it can be tempting to want to customize things immediately, to shoot for the keys you are used to, etc. That is like a VI user switching to Emacs and wanting to use a VI emulator to support the habit. You can do that - nothing wrong with it, but if you do you will not necessarily learn what Icicles or Emacs really has to offer, in terms of synergy: how one part can help another part do things better. Especially since, starting out, you likely will not use many of the Icicles features at first. If all you do is complete and cycle then you might not see why some of the defaults are as they are. They are as they are for use of Icicles as a whole. 5. Generally speaking, Icicles takes place in the minibuffer, and in general it does not affect top-level commands. But it is true that there are some exceptions. They are not there so that you fall into pit-holes or trip up by accident. They are called out in the doc. When top-level features are turned on by default it is because I think they offer the best Icicles experience. A typical example is an Icicles multi-command that replaces a standard command. For instance, `icicle-dired' is bound by default (in Icicle mode) to `C-x d'. It is just a multi-command version of `dired'. If you do nothing special it acts like `dired'. But if you use some additional keys in the minibuffer then you get additional behavior. I could have opted not to bind any top-level commands such as `icicle-dired', and just let users bind them if they want to. I chose to bind some by default - not so that users would accidentally come across land mines, but because (a) I think they are not so different that they should be found bothersome, (b) they are well documented, including how to turn them off, and (c) the original behavior is restored when you turn off Icicle mode. 6. That last point is important: I try to corral all of the Icicles weirdness within Icicle minor mode: turn it off and Icicles goes away. That's not so easy to do, BTW. Lots of hoops are jumped through to try to do that cleanly. I doubt that this is 100% perfect, but it is pretty good. Icicles adds Icicle-mode key bindings, and it changes some minibuffer key bindings when you are in Icicle mode. In general, it does not change key bindings in other key maps (`global-map', major-mode maps, or minor-mode maps), with the exceptions mentioned below (#7). 7. It is straightforward to tell Icicles not to change stuff. * Set option `icicle-touche-pas-aux-menus' to `t' if you do not want Icicles to add stuff to existing menu-bar menus. * Customize option `icicle-top-level-key-bindings' to remove or change any top-level bindings you want. If you set this option to `nil' then Icicles does not add or change any top-level keys. I created this option to make it easy for anyone, including non-Lispers, to customize keys or remap commands, even conditionally. Here's a picture and an explanation: http://www.emacswiki.org/emacs/Icicles_-_Key_Bindings#IcicleModeBindings * Set option `icicle-redefine-standard-commands-flag' to `nil' if you do not want Icicles to bind any keys in particular modes. E.g., by default, in `Info' mode Icicles rebinds `i', `g', and `m' to multi-command versions of the vanilla commands. > Rest assured, though, the behaviors you do not want can be disabled. > And if you notice something that could be a bug Drew is a super > responsible and responsive maintainer. > > Here is the use-case I find useful above all else icicles offers: ...[description of progressive completion to find a function name]... > The wiki is a great place to get more info on icicles. Drew is > very active there. Researching my little example above, I just > found out that the <S-tab><M-*> can be shortened to just <S-spc>. I recommend the following page for info about things like that. It gives a good idea how Icicles can help you _ask Emacs about itself_: http://www.emacswiki.org/emacs/EmacsNewbieWithIcicles Yes, there is a lot in Icicles - more than I use myself very often. (I don't develop software for a living anymore. I use Emacs just to fart around. ;-)) Besides being unaware of some Icicles features, it's of course easy to forget some of them - minibuffer key bindings, for instance. Just remember one: `C-?' in the minibuffer is your friend. It reminds you about key bindings and gives you an instant link to all of the Icicles doc. HTH. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Icicles 2011-01-11 23:21 ` Icicles [was: shell command completion gone] Drew Adams @ 2011-01-12 7:17 ` prad 2011-01-12 15:45 ` Icicles Drew Adams 0 siblings, 1 reply; 5+ messages in thread From: prad @ 2011-01-12 7:17 UTC (permalink / raw) To: help-gnu-emacs "Drew Adams" <drew.adams@oracle.com> writes: > Because someone new to Icicles is not yet familiar with the features > and how they fit together, it can be tempting to want to customize > things immediately, to shoot for the keys you are used to, etc. That > is like a VI user switching to Emacs and wanting to use a VI emulator > to support the habit. > > You can do that - nothing wrong with it, but if you do you will not > necessarily learn what Icicles or Emacs really has to offer, in terms > of synergy: how one part can help another part do things better. > thank you drew for the detailed explanations and ideas. i feel doubly fortunate that i get to use something as fine as icicles and have the author as coach. it can't get any better! for me, i think you have made a significant point through your explanations. i likely try to fiddle with too much too soon and should make more of an effort to understand the capabilities and intent of the software's defaults so as to get my bearings right first. i acknowledge this can be difficult to do when there is such a wealth of items available through something like emacs. while trying to learn gnus, i wanted to learn how to use icicles better and that led me somehow to org. so i've joined all the relevant groups and spend more time reading the posts (of people wanting to implement things and others coming up with neat solutions that i don't always understand) than working on learning the software. self-discipline is definitely what is required! imho, open source is the next best thing to sliced bread (thx to people like you who generously create things we all can use) ... and since i don't eat bread, it's pretty well number one on my list! -- in friendship, prad ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: Icicles 2011-01-12 7:17 ` Icicles prad @ 2011-01-12 15:45 ` Drew Adams 0 siblings, 0 replies; 5+ messages in thread From: Drew Adams @ 2011-01-12 15:45 UTC (permalink / raw) To: 'prad', help-gnu-emacs > while trying to learn gnus, i wanted to learn how to use > icicles better and that led me somehow to org. In such a situation, it might be a good idea to use Icicles only as an aid to learning gnus and org, for now. So you might want to turn off the following for the time being, while you learn gnus and org: (setq icicle-top-level-key-bindings nil icicle-redefine-standard-commands-flag nil) More variables means more confusion. Tiny bites swallowed finishes the slice of bread first (learned that in an elementary-school contest - lost). > imho, open source is the next best thing to sliced bread Free and open software is much better than sliced bread - or at least better than some sliced bread. ;-) ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-01-30 16:24 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-01-29 12:46 Icicles Gottfried 2023-01-29 16:04 ` [External] : Icicles Drew Adams -- strict thread matches above, loose matches on Subject: below -- 2023-01-30 16:24 icicles Gottfried 2011-01-07 6:45 shell command completion gone prad 2011-01-07 16:14 ` Drew Adams [not found] ` <mailman.0.1294459339.1472.help-gnu-emacs@gnu.org> 2011-01-08 17:37 ` rusi 2011-01-08 22:11 ` prad 2011-01-11 4:54 ` Le Wang 2011-01-11 23:21 ` Icicles [was: shell command completion gone] Drew Adams 2011-01-12 7:17 ` Icicles prad 2011-01-12 15:45 ` Icicles Drew Adams
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.