[gnu.bash.bug] 1.04 bugs

bfox%vision@HUB.UCSB.EDU (Brian Fox) (11/11/89)

   Posted-Date: Thu, 09 Nov 89 13:54:56 +1300
   Date: Thu, 09 Nov 89 13:54:56 +1300
   From: Ray Nickson <Ray.Nickson@comp.vuw.ac.nz>

   Initial difficulties:

   - readline.texinfo won't texinfo-format-buffer (because
     inc-readline.texinfo lacks a @setfilename(?)).

   How is the readline texinfo stuff supposed to work?  Even if I add
   @setfilename inc-readline.info in inc-readline.texinfo, the `Readline
   Top' entry can't find it (emacs 18.55).
   While I'm at it, does 1.03's bash.texinfo file work?  18.55's info
   complains about the @result symbol - is this added to a later
   unreleased emacs?
   [ BTW - `help' implies that there might exist a standalone info
     program - is such a thing in the pipeline??? ]

There is a standalone Info program, and in addition there is a program
for making info files from texinfo source, called Makeinfo.

I guess that Makeinfo does something different with @include than
M-x texinfo-format-buffer.  This difference will go away.

Bash's bash.texinfo file does not work, and is poorly written, and is
only there because without it, there is no documentation for the shell
at all.  We now have someone actively writing documentation so
hopefully we will have a Bash manual soon!

The standalone Info program works, but has no bells and whistles (e.g.
it doesn't understand about window systems, so no mousing, etc.), the
standalone Makeinfo program is working, and in fact, is the program
that we use to format our documentation (we = FSF).

I don't know when an official release will be made, but I believe it
will be very soon.

   General:
   - readline should export a readline_version function or variable, so
     (for example) bashcan set a READLINE_VERSION shell variable. 

Good idea.  New variable readline_version now exists.

   - there should also be a way of finding out readline bindings - either
     a function that returns some well-defined representation of the
     top-level keymap structure, or explicit `describe-key', `where-is',
     `list-all-bindings' functions.  (I prefer the latter).

So do I.  I guess I'll write them.

   - readline initialization.  Should there be a single advertised
     function that programs must call to initialize readline, or should
     every exported readline function check to see whether initialization
     has been does (as it sort of does at present).  I prefer the former.

I don't know what you mean.  Who has to initialize readline?  And
there are a very large number of exported functions in readline; every
function beginning with `rl_' for example.  Here is the output from
M-x list matching lines "initialize" in readline.c:

    Lines matching "initialized" in buffer readline.c.
    175:static int rl_initialized = 0;
    957:  if (!rl_initialized)
    960:      rl_initialized++;

   - there are still a few #ifdef SHELL sections in readline.  These must
     go - if it's appropriate for readline to call out to bash, then it's
     possible that it will be appropriate to make corresponding callouts
     to other programs, so there should be a variable controlling this
     behaviour.  The same libreadline.a should be usable from any program.

Lines matching "ifdef SHELL" in buffer readline.c.
4614:#ifdef SHELL

That doesn't look like a "few" to me.  Hmmm.

I cannot remove that "ifdef SHELL" block.  When we have the GNU
kernel, all programs will benifit from the symbolic link following
that is explicitly done in the shell.

   - other: . we need M-x (with completion!).

I don't think that will happen.  If you really want full M-x, then you
probably want emacs-lisp as well.  We already have a program that has
both of those features.

	    . bash should allow interactive binding (via rl_macro_bind (),
	       rl_named_function (), rl_bind_key (), all of which should
	       be advertised).

I am still thinking about this one.  If you do it through Bash, there
are problems.  The biggest problem is that Bash gets to evaluate the
words that are to be passed to Readline.  This could lead to syntax
like:

bash$ readline_bind \"\\C-xf\" \"\\C-a\\C-kemacs\ -f\ find-file\ \\C-y\\C-j\"

Yeechh!

	    . the syntax of .inputrc is getting painful - forget backward
	       compatability!

Please explain in which way it is painful.  I thought it was rather
straight-forward and obvious.

Brian