home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / windows / x / motif / 8520 < prev    next >
Encoding:
Internet Message Format  |  1993-01-12  |  6.9 KB

  1. Path: sparky!uunet!pipex!doc.ic.ac.uk!uknet!axion!gssec.bt.co.uk!russell
  2. From: russell@gssec.bt.co.uk (Russell Ritchie)
  3. Newsgroups: comp.windows.x.motif
  4. Subject: Completion for XmText?
  5. Message-ID: <RUSSELL.93Jan12172004@glencoe.gssec.bt.co.uk>
  6. Date: 12 Jan 93 16:20:03 GMT
  7. Sender: usenet@gssec.bt.co.uk
  8. Organization: BT Glasgow Systems and Software Engineering Centre, Scotland.
  9. Lines: 139
  10.  
  11. I'm considering implementing Emacs-style `completing-read' functionality
  12. for the XmText widget.  For those who haven't experienced it before a much
  13. truncated excerpt from the Emacs manual is appended to this message (for
  14. minibuffer, read XmText widget).  Before I start, has anyone else attempted
  15. this, or am I putting my sanity at risk unnecessarily?  Does the style
  16. guide explicitly forbid this sort of user-friendly behaviour?
  17.  
  18. Thanks in advance, etc.
  19.  
  20.   Completion
  21.   ==========
  22.  
  23.      When appropriate, the minibuffer provides a "completion" facility. 
  24.   You type the beginning of an argument and one of the completion keys,
  25.   and Emacs visibly fills in the rest, depending on what you have already
  26.   typed.
  27.  
  28.      When completion is available, certain keys--TAB, RET, and SPC--are
  29.   redefined to complete an abbreviation present in the minibuffer into a
  30.   longer string that it stands for, by matching it against a set of
  31.   "completion alternatives" provided by the command reading the
  32.   argument.  `?' is defined to display a list of possible completions of
  33.   what you have inserted.
  34.  
  35.      For example, when the minibuffer is being used by `Meta-x' to read
  36.   the name of a command, it is given a list of all available Emacs
  37.   command names to complete against.  The completion keys match the text
  38.   in the minibuffer against all the command names, find any additional
  39.   characters of the name that are implied by the ones already present in
  40.   the minibuffer, and add those characters to the ones you have given.
  41.  
  42.      Case is normally significant in completion, because it is
  43.   significant in most of the names that you can complete (buffer names,
  44.   file names and command names).  Thus, `fo' will not complete to `Foo'.
  45.    When you are completing a name in which case does not matter, case
  46.   may be ignored for completion's sake if specified by program.
  47.  
  48.   Completion Example
  49.   ------------------
  50.  
  51.      Consider the following example.  If you type `Meta-x au TAB', TAB
  52.   looks for alternatives (in this case, command names) that start with
  53.   `au'.  There are only two commands: `auto-fill-mode' and
  54.   `auto-save-mode'.  They are the same as far as `auto-', so the `au' in
  55.   the minibuffer changes to `auto-'.
  56.  
  57.      If you type TAB again immediately, there are multiple possibilities
  58.   for the very next character--it could be `s' or `f'--so no more
  59.   characters are added; but a list of all possible completions is
  60.   displayed in another window.
  61.  
  62.      If you go on to type `f TAB', this TAB sees `auto-f'.  The only
  63.   command name starting this way is `auto-fill-mode', so completion
  64.   inserts the rest of that command.  You now have `auto-fill-mode' in
  65.   the minibuffer after typing just `au TAB f TAB'.  Note that TAB has
  66.   this effect because in the minibuffer it is bound to the function
  67.   `minibuffer-complete' when completion is supposed to be done.
  68.  
  69.   Completion Commands
  70.   -------------------
  71.  
  72.      Here is a list of all the completion commands defined in the
  73.   minibuffer when completion is available.
  74.  
  75.   `TAB'
  76.        Complete the text in the minibuffer as much as possible 
  77.     (`minibuffer-complete').
  78.  
  79.   `SPC'
  80.        Complete the text in the minibuffer but don't add or fill out more
  81.        than one word (`minibuffer-complete-word').
  82.  
  83.   `RET'
  84.        Submit the text in the minibuffer as the argument, possibly
  85.        completing first as described below
  86.        (`minibuffer-complete-and-exit').
  87.  
  88.   `?'
  89.        Print a list of all possible completions of the text in the
  90.        minibuffer (`minibuffer-list-completions').
  91.  
  92.      SPC completes similar to TAB, but never goes beyond the next hyphen
  93.   or space.  If you have `auto-f' in the minibuffer and type SPC, it
  94.   finds that the completion is `auto-fill-mode', but it stops completing
  95.   after `fill-'. The result is `auto-fill-'.  Another SPC at this point
  96.   completes all the way to `auto-fill-mode'.  SPC in the minibuffer runs
  97.   the function `minibuffer-complete-word' when completion is available.
  98.  
  99.      There are three different ways that RET can work in completing
  100.   minibuffers, depending on how the argument will be used.
  101.  
  102.      * "Strict" completion is used when it is meaningless to give any
  103.        argument except one of the known alternatives.  For example, when
  104.        `C-x k' reads the name of a buffer to kill, it is meaningless to
  105.        give anything but the name of an existing buffer.  In strict
  106.        completion, RET refuses to exit if the text in the minibuffer
  107.        does not complete to an exact match.
  108.  
  109.      * "Cautious" completion is similar to strict completion, except that
  110.        RET exits only if the text was an exact match already, not
  111.        needing completion.  If the text is not an exact match, RET does
  112.        not exit, but it does complete the text.  If it completes to an
  113.        exact match, a second RET will exit.
  114.  
  115.        Cautious completion is used for reading file names for files that
  116.        must already exist.
  117.  
  118.      * "Permissive" completion is used when any string is meaningful,
  119.        and the list of completion alternatives is just a guide.  For
  120.        example, when `C-x C-f' reads the name of a file to visit, any
  121.        file name is allowed, in case you want to create a file.  In
  122.        permissive completion, RET takes the text in the minibuffer
  123.        exactly as given, without completing it.
  124.  
  125.      The completion commands display a list of all possible completions
  126.   in a window whenever there is more than one possibility for the very
  127.   next character.  Typing `?' explicitly requests such a list.  The list
  128.   of completions counts as help text, so `C-M-v' typed in the minibuffer
  129.   scrolls the list.
  130.  
  131.      When completion is done on file names, certain file names are
  132.   usually ignored.  The variable `completion-ignored-extensions'
  133.   contains a list of strings; a file whose name ends in any of those
  134.   strings is ignored as a possible completion.  The standard value of
  135.   this variable has several elements including `".o"', `".elc"',
  136.   `".dvi"' and `"~"'.  The effect is that, for example, `foo' completes
  137.   to `foo.c' even though `foo.o' exists as well.  If the only possible
  138.   completions are files that end in "ignored" strings, they are not
  139.   ignored.
  140.  
  141.      If a completion command finds the next character is undetermined, it
  142.   automatically displays a list of all possible completions.  If the
  143.   variable `completion-auto-help' is set to `nil', this does not happen,
  144.   and you must type `?' to display the possible completions.
  145.  
  146.      If the variable `minibuffer-confirm-incomplete' is set to true,
  147.   then in contexts where `completing-read' allows answers that are not
  148.   valid completions, an extra RET must be typed to confirm the response.
  149.    This is helpful for catching typos, etc.
  150.