unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Nic Ferrier <nferrier@tapsellferrier.co.uk>
Subject: a suggested solution for better external' completion in certain emacs modes
Date: Mon, 08 Nov 2004 23:30:14 +0000	[thread overview]
Message-ID: <87k6svzzp5.fsf_-_@tapsellferrier.co.uk> (raw)
In-Reply-To: <cm92rp$huc$1@sea.gmane.org> (Peter Heslin's message of "Tue, 2 Nov 2004 22:48:25 +0000 (UTC)")

As we are all aware, certain Emacs interactions are not as useful as
their shell like counterparts.

For example, using sql-mode to interact with PostgreSQL is not as
useful as doing it outside of Emacs.

The reason for this is that comint mode cannot effectively communicate
with certain programs to do things like completion.

I have a proposal for fixing that and this email describes it.

Most of the programs whose integration with Emacs we want to improve
use the GNU Readline library. This is why they have sophisticated
completion mechanisms.

GNU Readline works by defining an API for the things that a shell like
program will want to do and allowing keys to be bound to those API
functions.

So my suggestion for improving Emacs access to such programs is to add
an option to the GNU Readline library which allows Emacs to
call Readline API functions 'out of band'.

In effect this would work like this:

- Emacs starts a Readline program, eg: psql (the PostgreSQL client)
  with a special option specifying signifying this mode of operation.

- Readline somehow sees the option (maybe it is passed as an ENV var)
  and configures itself for this mode of operation

Readline and Emacs are now connected by some sort of stream (probably
just a standard comint/stdin scheme).

- Readline advertises to Emacs the functions the current program
  supports  by writing the information (a sexp?) to the stream

- Emacs reads the config from Readline and configures itself
  appropriately to bind Emacs keys to functions which send API calls
  to Readline over the stream.

- Readline communicates the status of the current line, and other
  status information (eg: completions) back over the stream for Emacs to
  display.


This seems like it wouldn't be that hard to add to Emacs and probably
not to Readline either.

Anyone have any thoughts?

-- 
Nic Ferrier
http://www.tapsellferrier.co.uk

  parent reply	other threads:[~2004-11-08 23:30 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E1Bgmxo-0006Bh-0o@monty-python.gnu.org>
2004-07-05 12:06 ` ECB Eric M. Ludlam
2004-07-05 12:53   ` ECB Stefan
     [not found]   ` <E1BhoWE-0004n3-7k@fencepost.gnu.org>
     [not found]     ` <200407061241.i66CfX1w016798@projectile.siege-engine.com>
2004-07-12 23:58       ` ECB Richard Stallman
2004-07-13  0:35         ` Re[2]: ECB Eric M. Ludlam
2004-08-06 23:10   ` transparent emacs Nic Ferrier
2004-08-07  0:12     ` Miles Bader
2004-08-07  1:15       ` Nic Ferrier
2004-08-07  2:27         ` Miles Bader
2004-08-17 17:44       ` Romain Francoise
2004-11-02 13:11         ` GTK emacs (and access to GTK) Nic Ferrier
2004-11-02 13:34           ` David Kastrup
2004-11-02 22:39             ` Jan D.
2004-11-02 22:53               ` David Kastrup
2004-11-02 23:17                 ` Jan D.
2004-11-02 22:28           ` Jan D.
2004-11-02 22:41             ` Nic Ferrier
2004-11-02 22:48           ` Peter Heslin
2004-11-03  9:13             ` Jan D.
2004-11-03  9:34             ` Nic Ferrier
2004-11-08 23:30             ` Nic Ferrier [this message]
2004-11-09  0:01               ` a suggested solution for better external' completion in certain emacs modes Stefan Monnier
2004-11-09  0:35                 ` Nic Ferrier
2004-11-09 21:30               ` Richard Stallman
2004-11-09 23:12                 ` Nic Ferrier
2004-11-11  3:14                   ` Richard Stallman
2004-11-11  9:37                     ` Nic Ferrier
2004-11-11 10:49                       ` Kai Grossjohann
2004-11-11 11:14                         ` Nic Ferrier
2004-11-11 12:18                           ` Kai Grossjohann
2004-11-11 12:51                             ` Nic Ferrier
2004-11-12  7:05                       ` Richard Stallman
2004-11-12 10:12                         ` Nic Ferrier
2004-11-12 13:20                           ` Kim F. Storm
2004-11-13 23:32                             ` Stefan
2004-11-12 21:25                           ` Richard Stallman
2004-11-12 22:16                             ` Nic Ferrier
2004-11-14  6:01                               ` Richard Stallman
2004-11-14 15:32                                 ` Nic Ferrier
2004-11-15 13:59                                   ` Richard Stallman
2004-11-13  8:42                             ` Alex Schroeder
2004-11-14  6:00                               ` Richard Stallman
2004-11-08 15:14           ` show-paren-mode stuffed in latest CVS Nic Ferrier
2004-11-09 16:12             ` Sam Steingold
2004-11-10 16:09               ` Richard Stallman
2004-11-10 16:22                 ` Nic Ferrier
2004-11-09 16:22             ` Kim F. Storm
2004-11-09 16:30               ` Nic Ferrier
2004-11-09 16:46                 ` Luc Teirlinck
2004-11-09 21:35                   ` Nic Ferrier
2004-11-10  0:16                   ` Nic Ferrier
2004-11-09 17:20                 ` Denis Bueno
2004-11-04  1:24   ` java and tag completion Nic Ferrier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k6svzzp5.fsf_-_@tapsellferrier.co.uk \
    --to=nferrier@tapsellferrier.co.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).