GNU bug report logs - #19355
25.0.50; limit the popup window height

Previous Next

Package: emacs;

Reported by: Leo Liu <sdl.web <at> gmail.com>

Date: Fri, 12 Dec 2014 01:51:01 UTC

Severity: minor

Found in version 25.0.50

Done: martin rudalics <rudalics <at> gmx.at>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 19355 in the body.
You can then email your comments to 19355 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to juri <at> linkov.net, bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Fri, 12 Dec 2014 01:51:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Leo Liu <sdl.web <at> gmail.com>:
New bug report received and forwarded. Copy sent to juri <at> linkov.net, bug-gnu-emacs <at> gnu.org. (Fri, 12 Dec 2014 01:51:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Leo Liu <sdl.web <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 25.0.50; limit the popup window height
Date: Fri, 12 Dec 2014 09:49:57 +0800
The popup window from, for example, minibuffer-completion-help, can be
so tall that the main editing window is squeezed to a few lines which
has the unfortunate side-effect of moving point, pushing some buffer
text out of the window. This is quite an annoyance. To see this:

1. Find an elisp file, with the form under edit centred around the
window.

2. Try complete for `(s' and assume the window split will be done
vertically.

Leo




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Fri, 12 Dec 2014 12:46:01 GMT) Full text and rfc822 format available.

Message #8 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Leo Liu <sdl.web <at> gmail.com>, 19355 <at> debbugs.gnu.org
Cc: Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Fri, 12 Dec 2014 13:45:32 +0100
> The popup window from, for example, minibuffer-completion-help, can be
> so tall that the main editing window is squeezed to a few lines

This number of lines is specified by `window-min-height'.

> which
> has the unfortunate side-effect of moving point, pushing some buffer
> text out of the window. This is quite an annoyance. To see this:
>
> 1. Find an elisp file, with the form under edit centred around the
> window.
>
> 2. Try complete for `(s' and assume the window split will be done
> vertically.

We can add the MAX/MIN-HEIGHT/WIDTH arguments of `fit-window-to-buffer'
to the alist entries recognized by `display-buffer'.  Then
`minibuffer-completion-help' and friends could set them in a way we'd
have to choose yet.  Or we make these globally customizable.

I'm currently rewriting the code for *Completions* windows to make sure
they don't get obscured by an expanding minibuffer window.  If you have
a good proposal I can make the necessary changes right away.

martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Fri, 12 Dec 2014 13:07:01 GMT) Full text and rfc822 format available.

Message #11 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: Leo Liu <sdl.web <at> gmail.com>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Fri, 12 Dec 2014 21:05:47 +0800
On 2014-12-12 13:45 +0100, martin rudalics wrote:
> I'm currently rewriting the code for *Completions* windows to make sure
> they don't get obscured by an expanding minibuffer window.  If you have
> a good proposal I can make the necessary changes right away.

Are we talking about the same thing? I am worrying about *Completions*
buffer and the like obscuring my working buffer.

Leo




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Fri, 12 Dec 2014 17:20:02 GMT) Full text and rfc822 format available.

Message #14 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Leo Liu <sdl.web <at> gmail.com>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Fri, 12 Dec 2014 18:19:19 +0100
>> I'm currently rewriting the code for *Completions* windows to make sure
>> they don't get obscured by an expanding minibuffer window.  If you have
>> a good proposal I can make the necessary changes right away.
>
> Are we talking about the same thing? I am worrying about *Completions*
> buffer and the like obscuring my working buffer.

I'm fixing `with-displayed-buffer-window' and `fit-window-to-buffer' for
displaying *Completions* from `minibuffer-completion-help'.  So if you
have a proposal pertinent to the latter tell me so ASAP.  In that case I
can make a concerted change without having to reexamine code first.

martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Sat, 13 Dec 2014 00:18:01 GMT) Full text and rfc822 format available.

Message #17 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: Leo Liu <sdl.web <at> gmail.com>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Sat, 13 Dec 2014 08:17:40 +0800
On 2014-12-12 18:19 +0100, martin rudalics wrote:
> I'm fixing `with-displayed-buffer-window' and `fit-window-to-buffer' for
> displaying *Completions* from `minibuffer-completion-help'.  So if you
> have a proposal pertinent to the latter tell me so ASAP.  In that case I
> can make a concerted change without having to reexamine code first.

Thanks for the clarification. We are on the same page. I don't have
anything specific to add. Just want to point out that
fit-window-to-buffer is probably not the cause for this specific bug.
The contents of the elisp buffer can be a few windowful and I am still
seeing it being squeezed to 4 lines.

Leo




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Sat, 13 Dec 2014 10:22:01 GMT) Full text and rfc822 format available.

Message #20 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Leo Liu <sdl.web <at> gmail.com>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Sat, 13 Dec 2014 11:21:24 +0100
> Thanks for the clarification. We are on the same page. I don't have
> anything specific to add. Just want to point out that
> fit-window-to-buffer is probably not the cause for this specific bug.
> The contents of the elisp buffer can be a few windowful and I am still
> seeing it being squeezed to 4 lines.

There's no specific bug here.  What you report can be easily considered
a user error like choosing a too broad base for completions or failing
to appropriately customize the option `window-min-height'.

But even if we decide that Emacs made a bad choice when making the
*Completions* that large we'd have to decide which heuristics we want to
apply instead, like

- use `shrink-window-if-larger-than-buffer' instead of
  `fit-window-to-buffer',

- explicitly pass a hardocded maximum height/width argument to
  `fit-window-to-buffer' (requires some minor changes to
  `with-displayed-buffer-window')

- add some options that allow users to specify the minimum and maximum
  sizes of _any_ window resized by `fit-window-to-buffer',

- tell users that they should customize `display-buffer' appropriately
  (in this case `with-displayed-buffer-window' would have to do much
  more work than it does now).

In any case, if you want the present behavior to change, you have to
express what you want Emacs to do instead ;-)

As an aside, I observe that displaying the *Completions* window
currently induces three calls to `fit-window-to-buffer' which aren't
that cheap, especially when the buffer is large.

martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Sat, 13 Dec 2014 14:42:02 GMT) Full text and rfc822 format available.

Message #23 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: Leo Liu <sdl.web <at> gmail.com>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Sat, 13 Dec 2014 22:41:10 +0800
On 2014-12-13 11:21 +0100, martin rudalics wrote:
> There's no specific bug here.  What you report can be easily considered
> a user error like choosing a too broad base for completions or failing
> to appropriately customize the option `window-min-height'.

Try emacs 24.4 and compare. I think it is a bug.

Leo




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Sat, 13 Dec 2014 20:05:02 GMT) Full text and rfc822 format available.

Message #26 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Leo Liu <sdl.web <at> gmail.com>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Sat, 13 Dec 2014 21:03:45 +0100
> Try emacs 24.4 and compare. I think it is a bug.

You're right.  The behavior changed completely.  Could you try to
replace in `minibuffer-completion-help' the form

(window-height . fit-window-to-buffer)

with

,(when temp-buffer-resize-mode
   '(window-height . resize-temp-buffer-window))

and test whether it restores the old behavior (with
`temp-buffer-resize-mode' en- and disabled)?

Thanks, martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Sun, 14 Dec 2014 00:38:02 GMT) Full text and rfc822 format available.

Message #29 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: Leo Liu <sdl.web <at> gmail.com>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Sun, 14 Dec 2014 08:37:45 +0800
On 2014-12-13 21:03 +0100, martin rudalics wrote:
> ,(when temp-buffer-resize-mode
>    '(window-height . resize-temp-buffer-window))
>
> and test whether it restores the old behavior (with
> `temp-buffer-resize-mode' en- and disabled)?

No.

I think they all use fit-window-to-buffer underneath so it will take up
as much height as possible.

Leo




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Sun, 14 Dec 2014 09:04:01 GMT) Full text and rfc822 format available.

Message #32 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Leo Liu <sdl.web <at> gmail.com>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Sun, 14 Dec 2014 10:03:40 +0100
>> ,(when temp-buffer-resize-mode
>>     '(window-height . resize-temp-buffer-window))
>>
>> and test whether it restores the old behavior (with
>> `temp-buffer-resize-mode' en- and disabled)?
>
> No.

Interesting.  Suppose with (my not so up-to-date version of trunk's)
emacs -Q I do

C-h f set- RET

my *scratch* window is split into two equally sized windows and the
lowest line of the lower window ends with set-charset-priority.  If I do

C-h f set-window- RET

I get an empty last line in the lower window with set-window-vscroll on
the line before and with

C-h f set-window-d RET

I get lots of empty lines with set-window-dot as last displayed entry.

Now if with emacs -Q I evaluate

(setq temp-buffer-resize-mode t)

first and do the same steps as above, the first one is identical and in
the other two cases the empty lines get removed and the window shrinks.

Please have another look.

> I think they all use fit-window-to-buffer underneath so it will take up
> as much height as possible.

`resize-temp-buffer-window' limits this to `temp-buffer-max-height'
lines.

martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Wed, 17 Dec 2014 00:44:01 GMT) Full text and rfc822 format available.

Message #35 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: Leo Liu <sdl.web <at> gmail.com>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Wed, 17 Dec 2014 08:43:03 +0800
On 2014-12-14 10:03 +0100, martin rudalics wrote:
> first and do the same steps as above, the first one is identical and in
> the other two cases the empty lines get removed and the window shrinks.
>
> Please have another look.

I got the same thing with or without temp-buffer-resize-mode.

My concern is with something similar to the first experiment i.e. C-h f
set- TAB. What we see in C-h f set- TAB is not problematic because point
is in the minibuffer and the popup doesn't move it around.

The problematic case is when I am developing an elisp program in a
window and do a completion-at-point for `(set-'. The popup takes up so
much height that it often changes view in my editing buffer, i.e. move
point to close to the top of the frame, push some buffer contents out of
view etc.

I.e. Change

+--------
|
|
|_
|
|
|
+--------

to

+--------
|_
+--------
|
|
|
|
+--------

where _ is point. When the popup goes away (*Completions* goes away
after some command.), my window view now looks like:

+--------
|_
|
|
|
|
|
+--------

Leo




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Wed, 17 Dec 2014 07:09:01 GMT) Full text and rfc822 format available.

Message #38 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Leo Liu <sdl.web <at> gmail.com>
Cc: 19355 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Wed, 17 Dec 2014 08:08:47 +0100
> I got the same thing with or without temp-buffer-resize-mode.
[...]
> The problematic case is when I am developing an elisp program in a
> window and do a completion-at-point for `(set-'. The popup takes up so
> much height that it often changes view in my editing buffer, i.e. move
> point to close to the top of the frame, push some buffer contents out of
> view etc.
[...]

I think I understand your problem but I don't understand how you can
still see it after the change I proposed.  Are you sure you applied it
and recompiled the associated functions?  If so, and the problem
persists, then please try to find out (1) why `fit-window-to-buffer'
apparently still gets called even if `temp-buffer-resize-mode' is off
and (2) why apparently `temp-buffer-max-width' is not observed when
`temp-buffer-resize-mode' is on.  (In both cases I usually find it best
to re-evaluate the involved files, edebug `fit-window-to-buffer' /
`resize-temp-buffer-window' and get a backtrace to find out how they got
called.)

martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Fri, 19 Dec 2014 23:11:02 GMT) Full text and rfc822 format available.

Message #41 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: Leo Liu <sdl.web <at> gmail.com>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 19355 <at> debbugs.gnu.org
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Sat, 20 Dec 2014 07:10:41 +0800
On 2014-12-17 15:08 +0800, martin rudalics wrote:
> I think I understand your problem but I don't understand how you can
> still see it after the change I proposed.  Are you sure you applied it
> and recompiled the associated functions?  If so, and the problem
> persists, then please try to find out (1) why `fit-window-to-buffer'
> apparently still gets called even if `temp-buffer-resize-mode' is off
> and (2) why apparently `temp-buffer-max-width' is not observed when
> `temp-buffer-resize-mode' is on.  (In both cases I usually find it best
> to re-evaluate the involved files, edebug `fit-window-to-buffer' /
> `resize-temp-buffer-window' and get a backtrace to find out how they got
> called.)

Thanks. the harddisk of my workstation faulted, so I was moving to a new
iMac. Re-built trunk without GUI and the problem seemed to be gone.

Leo




Reply sent to martin rudalics <rudalics <at> gmx.at>:
You have taken responsibility. (Thu, 25 Dec 2014 10:36:02 GMT) Full text and rfc822 format available.

Notification sent to Leo Liu <sdl.web <at> gmail.com>:
bug acknowledged by developer. (Thu, 25 Dec 2014 10:36:03 GMT) Full text and rfc822 format available.

Message #46 received at 19355-done <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Leo Liu <sdl.web <at> gmail.com>
Cc: 19355-done <at> debbugs.gnu.org
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Thu, 25 Dec 2014 11:35:28 +0100
> Thanks. the harddisk of my workstation faulted, so I was moving to a new
> iMac. Re-built trunk without GUI and the problem seemed to be gone.

OK.  Closing.

Thanks, martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Thu, 25 Dec 2014 20:03:02 GMT) Full text and rfc822 format available.

Message #49 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: Juri Linkov <juri <at> linkov.net>
To: 19355 <at> debbugs.gnu.org
Cc: rudalics <at> gmx.at, sdl.web <at> gmail.com
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Thu, 25 Dec 2014 22:01:18 +0200
>> Thanks. the harddisk of my workstation faulted, so I was moving to a new
>> iMac. Re-built trunk without GUI and the problem seemed to be gone.
>
> OK.  Closing.

I tried your fixes now, and I see all improvements, but there is one thing
that doesn't look good.  The *Completions* buffer doesn't shrink anymore
if the window is larger than the buffer, e.g. after `M-x z TAB' now
it leaves too much empty unused screen space instead of shrinking.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Fri, 26 Dec 2014 09:14:01 GMT) Full text and rfc822 format available.

Message #52 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Juri Linkov <juri <at> linkov.net>, 19355 <at> debbugs.gnu.org
Cc: sdl.web <at> gmail.com
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Fri, 26 Dec 2014 10:13:20 +0100
> I tried your fixes now, and I see all improvements, but there is one thing
> that doesn't look good.  The *Completions* buffer doesn't shrink anymore
> if the window is larger than the buffer, e.g. after `M-x z TAB' now
> it leaves too much empty unused screen space instead of shrinking.

Add (require 'zotelo) and (require 'zeal-at-point) to your .emacs to
make this look more behaved ;-)

In fact, the present behavior is that of Emacs 24.4 and that's what Leo
Liu asked for in this thread.  Unfortunately, nobody stepped forward to
say that the pure `fit-window-to-buffer' behavior you implemented was
better.  I think it was - but I hardly count since I practically always
use in-line completion.

So now people have to activate `temp-buffer-resize-mode' again in order
to make this work in your sense.  Unless you find a better solution.

martin

BTW: IIUC `with-displayed-buffer-window' may call `fit-window-to-buffer'
up to three times now.  Couldn't we cut that down a bit?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Sat, 27 Dec 2014 00:58:01 GMT) Full text and rfc822 format available.

Message #55 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: Juri Linkov <juri <at> linkov.net>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 19355 <at> debbugs.gnu.org, sdl.web <at> gmail.com
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Sat, 27 Dec 2014 02:57:27 +0200
> BTW: IIUC `with-displayed-buffer-window' may call `fit-window-to-buffer'
> up to three times now.  Couldn't we cut that down a bit?

I removed the duplicate calls now in the commit 162660c.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Tue, 30 Dec 2014 10:16:01 GMT) Full text and rfc822 format available.

Message #58 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Juri Linkov <juri <at> linkov.net>
Cc: 19355 <at> debbugs.gnu.org, sdl.web <at> gmail.com
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Tue, 30 Dec 2014 11:15:38 +0100
> I removed the duplicate calls now in the commit 162660c.

Thanks.  Would it make sense to select the window around BODY in
`with-displayed-buffer-window'?  Though I suppose this hardly makes
sense because (1) its buffer should never appear in two windows at the
same time (and so `get-buffer-window' should work anyway) and (2) BODY
might want to refer to the "real" selected window.

Note that I now documented `with-current-buffer-window' and
`with-displayed-buffer-window' in the Elisp manual together with
`temp-buffer-resize-mode'.  Please have a look.

Maybe we should enable `temp-buffer-resize-mode' by default.  But IIRC
some people didn't like it.

martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Wed, 31 Dec 2014 00:08:01 GMT) Full text and rfc822 format available.

Message #61 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: Juri Linkov <juri <at> linkov.net>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 19355 <at> debbugs.gnu.org, sdl.web <at> gmail.com
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Wed, 31 Dec 2014 02:03:33 +0200
> Note that I now documented `with-current-buffer-window' and
> `with-displayed-buffer-window' in the Elisp manual together with
> `temp-buffer-resize-mode'.  Please have a look.

Thank you!  I looked at your changes to confirm everything is all right.

> Maybe we should enable `temp-buffer-resize-mode' by default.  But IIRC
> some people didn't like it.

It seems this is a good idea to enable `temp-buffer-resize-mode'.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19355; Package emacs. (Wed, 31 Dec 2014 18:39:01 GMT) Full text and rfc822 format available.

Message #64 received at 19355 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Juri Linkov <juri <at> linkov.net>
Cc: 19355 <at> debbugs.gnu.org, sdl.web <at> gmail.com
Subject: Re: bug#19355: 25.0.50; limit the popup window height
Date: Wed, 31 Dec 2014 19:38:28 +0100
> It seems this is a good idea to enable `temp-buffer-resize-mode'.

I'll do that in a few days if no-one objects.

martin






bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 29 Jan 2015 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 10 years and 145 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.