GNU bug report logs -
#74235
[PATCH] ; Remove 'nil' from some 'lua-ts-mode' options
Previous Next
Reported by: john muhl <jm <at> pub.pink>
Date: Wed, 6 Nov 2024 21:21:01 UTC
Severity: normal
Tags: patch
Done: Eli Zaretskii <eliz <at> gnu.org>
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 74235 in the body.
You can then email your comments to 74235 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Wed, 06 Nov 2024 21:21:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
john muhl <jm <at> pub.pink>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Wed, 06 Nov 2024 21:21:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Tags: patch
For some silly reason the lua-ts-{inferior,luacheck}-program
options ended up with an option for “None”. Obviously setting your
Lua interpreter or linter program to nil is not going to work.
Any chance it could make it into emacs-30?
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Wed, 06 Nov 2024 21:23:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 74235 <at> debbugs.gnu.org (full text, mbox):
[0001-Remove-nil-from-some-lua-ts-mode-options.patch (text/x-patch, attachment)]
[Message part 2 (text/plain, inline)]
john muhl <jm <at> pub.pink> writes:
> Tags: patch
>
> For some silly reason the lua-ts-{inferior,luacheck}-program
> options ended up with an option for “None”. Obviously setting your
> Lua interpreter or linter program to nil is not going to work.
>
> Any chance it could make it into emacs-30?
>
> Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Thu, 07 Nov 2024 06:02:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 74235 <at> debbugs.gnu.org (full text, mbox):
> From: john muhl <jm <at> pub.pink>
> Date: Wed, 06 Nov 2024 15:22:34 -0600
>
> * lisp/progmodes/lua-ts-mode.el (lua-ts-luacheck-program):
> (lua-ts-inferior-program): Remove 'nil' as it is never a valid
> choice. (Bug#74235)
IMO, the use of these options in the code is not clean: if these
programs are not installed, the commands which reference these options
will signal errors whose diagnostic might not clearly indicate the
root cause. I would like to see a cleaner handling of such
contingencies by this mode. Does this make sense, and if so, would
you like to suggest changes to that effect?
> (defcustom lua-ts-luacheck-program "luacheck"
> "Location of the Luacheck program."
> - :type '(choice (const :tag "None" nil) string)
> + :type 'string
> :version "30.1")
I think if we require this to be the name of a program, 'file' is a
better value for :type, because it allows completion if the user types
an absolute file name.
> (defcustom lua-ts-inferior-buffer "*Lua*"
> @@ -83,7 +83,7 @@ lua-ts-inferior-buffer
>
> (defcustom lua-ts-inferior-program "lua"
> "Program to run in the inferior Lua process."
> - :type '(choice (const :tag "None" nil) string)
> + :type 'string
> :version "30.1")
>
> (defcustom lua-ts-inferior-options '("-i")
> --
> 2.47.0
>
> john muhl <jm <at> pub.pink> writes:
>
> > Tags: patch
> >
> > For some silly reason the lua-ts-{inferior,luacheck}-program
> > options ended up with an option for “None”. Obviously setting your
> > Lua interpreter or linter program to nil is not going to work.
> >
> > Any chance it could make it into emacs-30?
lua-ts-mode is new in Emacs 30, so we can install these changes on the
release branch, as a stopgap. But I'd like to see a cleaner solution
installed later, even if we decide to install that on master due to
its complexity.
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Thu, 07 Nov 2024 15:05:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 74235 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: john muhl <jm <at> pub.pink>
>> Date: Wed, 06 Nov 2024 15:22:34 -0600
>>
>> * lisp/progmodes/lua-ts-mode.el (lua-ts-luacheck-program):
>> (lua-ts-inferior-program): Remove 'nil' as it is never a valid
>> choice. (Bug#74235)
>
> IMO, the use of these options in the code is not clean: if these
> programs are not installed, the commands which reference these options
> will signal errors whose diagnostic might not clearly indicate the
> root cause. I would like to see a cleaner handling of such
> contingencies by this mode. Does this make sense, and if so, would
> you like to suggest changes to that effect?
Good point. I’ll work on that very soon.
>> (defcustom lua-ts-luacheck-program "luacheck"
>> "Location of the Luacheck program."
>> - :type '(choice (const :tag "None" nil) string)
>> + :type 'string
>> :version "30.1")
>
> I think if we require this to be the name of a program, 'file' is a
> better value for :type, because it allows completion if the user types
> an absolute file name.
Makes sense.
>> (defcustom lua-ts-inferior-buffer "*Lua*"
>> @@ -83,7 +83,7 @@ lua-ts-inferior-buffer
>>
>> (defcustom lua-ts-inferior-program "lua"
>> "Program to run in the inferior Lua process."
>> - :type '(choice (const :tag "None" nil) string)
>> + :type 'string
>> :version "30.1")
>>
>> (defcustom lua-ts-inferior-options '("-i")
>> --
>> 2.47.0
>>
>> john muhl <jm <at> pub.pink> writes:
>>
>> > Tags: patch
>> >
>> > For some silly reason the lua-ts-{inferior,luacheck}-program
>> > options ended up with an option for “None”. Obviously setting your
>> > Lua interpreter or linter program to nil is not going to work.
>> >
>> > Any chance it could make it into emacs-30?
>
> lua-ts-mode is new in Emacs 30, so we can install these changes on the
> release branch, as a stopgap. But I'd like to see a cleaner solution
> installed later, even if we decide to install that on master due to
> its complexity.
>
> Thanks.
Then let’s put this one on hold and I’ll work on the improvements
you suggest. Hopefully it doesn’t require significant changes and
we can skip the stopgap and get it all into 30.
Thanks for the help.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Fri, 08 Nov 2024 14:58:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 74235 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: john muhl <jm <at> pub.pink>
>> Date: Wed, 06 Nov 2024 15:22:34 -0600
>>
>> * lisp/progmodes/lua-ts-mode.el (lua-ts-luacheck-program):
>> (lua-ts-inferior-program): Remove 'nil' as it is never a valid
>> choice. (Bug#74235)
>
> IMO, the use of these options in the code is not clean: if these
> programs are not installed, the commands which reference these options
> will signal errors whose diagnostic might not clearly indicate the
> root cause. I would like to see a cleaner handling of such
> contingencies by this mode. Does this make sense, and if so, would
> you like to suggest changes to that effect?
The only idea I’ve come up with so far is showing a warning that
mentions the incorrectly set option. Does that sound like what you
have in mind? If not I’d appreciate some more explicit guidance.
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Fri, 08 Nov 2024 15:27:03 GMT)
Full text and
rfc822 format available.
Message #20 received at 74235 <at> debbugs.gnu.org (full text, mbox):
> From: john muhl <jm <at> pub.pink>
> Cc: 74235 <at> debbugs.gnu.org
> Date: Fri, 08 Nov 2024 08:57:37 -0600
>
> Eli Zaretskii <eliz <at> gnu.org> writes:
>
> >> From: john muhl <jm <at> pub.pink>
> >> Date: Wed, 06 Nov 2024 15:22:34 -0600
> >>
> >> * lisp/progmodes/lua-ts-mode.el (lua-ts-luacheck-program):
> >> (lua-ts-inferior-program): Remove 'nil' as it is never a valid
> >> choice. (Bug#74235)
> >
> > IMO, the use of these options in the code is not clean: if these
> > programs are not installed, the commands which reference these options
> > will signal errors whose diagnostic might not clearly indicate the
> > root cause. I would like to see a cleaner handling of such
> > contingencies by this mode. Does this make sense, and if so, would
> > you like to suggest changes to that effect?
>
> The only idea I’ve come up with so far is showing a warning that
> mentions the incorrectly set option. Does that sound like what you
> have in mind? If not I’d appreciate some more explicit guidance.
How about signaling user-error from the commands that invoke those
programs, when they are missing?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Sat, 09 Nov 2024 20:55:02 GMT)
Full text and
rfc822 format available.
Message #23 received at 74235 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: john muhl <jm <at> pub.pink>
>> Cc: 74235 <at> debbugs.gnu.org
>> Date: Fri, 08 Nov 2024 08:57:37 -0600
>>
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>
>> >> From: john muhl <jm <at> pub.pink>
>> >> Date: Wed, 06 Nov 2024 15:22:34 -0600
>> >>
>> >> * lisp/progmodes/lua-ts-mode.el (lua-ts-luacheck-program):
>> >> (lua-ts-inferior-program): Remove 'nil' as it is never a valid
>> >> choice. (Bug#74235)
>> >
>> > IMO, the use of these options in the code is not clean: if these
>> > programs are not installed, the commands which reference these options
>> > will signal errors whose diagnostic might not clearly indicate the
>> > root cause. I would like to see a cleaner handling of such
>> > contingencies by this mode. Does this make sense, and if so, would
>> > you like to suggest changes to that effect?
>>
>> The only idea I’ve come up with so far is showing a warning that
>> mentions the incorrectly set option. Does that sound like what you
>> have in mind? If not I’d appreciate some more explicit guidance.
>
> How about signaling user-error from the commands that invoke those
> programs, when they are missing?
Agree that’s better than a warning. It seems flymake already
handles the case where it can’t find the requested program so I
left that part as is.
[0001-Fix-some-lua-ts-mode-options-Bug-74235.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Sun, 10 Nov 2024 05:44:02 GMT)
Full text and
rfc822 format available.
Message #26 received at 74235 <at> debbugs.gnu.org (full text, mbox):
> From: john muhl <jm <at> pub.pink>
> Cc: 74235 <at> debbugs.gnu.org
> Date: Sat, 09 Nov 2024 14:54:47 -0600
>
> + (if (or (not lua-ts-inferior-program)
> + (not (executable-find lua-ts-inferior-program)))
> + (user-error "You must set `lua-ts-inferior-program' to use this command")
The text of user-error should say something about being unable to find
the program, not just about the variable being nil, since you use
executable-find.
Otherwise, LGTM, thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Sun, 10 Nov 2024 05:46:02 GMT)
Full text and
rfc822 format available.
Message #29 received at 74235 <at> debbugs.gnu.org (full text, mbox):
john muhl <jm <at> pub.pink> writes:
> Eli Zaretskii <eliz <at> gnu.org> writes:
>
>>> From: john muhl <jm <at> pub.pink>
>>> Cc: 74235 <at> debbugs.gnu.org
>>> Date: Fri, 08 Nov 2024 08:57:37 -0600
>>>
>>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>>
>>> >> From: john muhl <jm <at> pub.pink>
>>> >> Date: Wed, 06 Nov 2024 15:22:34 -0600
>>> >>
>>> >> * lisp/progmodes/lua-ts-mode.el (lua-ts-luacheck-program):
>>> >> (lua-ts-inferior-program): Remove 'nil' as it is never a valid
>>> >> choice. (Bug#74235)
>>> >
>>> > IMO, the use of these options in the code is not clean: if these
>>> > programs are not installed, the commands which reference these options
>>> > will signal errors whose diagnostic might not clearly indicate the
>>> > root cause. I would like to see a cleaner handling of such
>>> > contingencies by this mode. Does this make sense, and if so, would
>>> > you like to suggest changes to that effect?
>>>
>>> The only idea I’ve come up with so far is showing a warning that
>>> mentions the incorrectly set option. Does that sound like what you
>>> have in mind? If not I’d appreciate some more explicit guidance.
>>
>> How about signaling user-error from the commands that invoke those
>> programs, when they are missing?
>
> Agree that’s better than a warning. It seems flymake already
> handles the case where it can’t find the requested program so I
> left that part as is.
>
> From 3e49aa1086f2498ccbad396cf8c799c57919847e Mon Sep 17 00:00:00 2001
> From: john muhl <jm <at> pub.pink>
> Date: Sat, 9 Nov 2024 11:01:45 -0600
> Subject: [PATCH] ; Fix some 'lua-ts-mode' options (Bug#74235)
>
> * lisp/progmodes/lua-ts-mode.el (lua-ts-luacheck-program):
> (lua-ts-inferior-program): Switch to 'file' type and remove 'nil'
> as a choice.
> (lua-ts-inferior-lua): Ensure 'lua-ts-inferior-program' is a
> valid executable.
> ---
> lisp/progmodes/lua-ts-mode.el | 85 ++++++++++++++++++-----------------
> 1 file changed, 44 insertions(+), 41 deletions(-)
>
> diff --git a/lisp/progmodes/lua-ts-mode.el b/lisp/progmodes/lua-ts-mode.el
> index 4ea453c9b65..2323461ed4c 100644
> --- a/lisp/progmodes/lua-ts-mode.el
> +++ b/lisp/progmodes/lua-ts-mode.el
> @@ -72,7 +72,7 @@ lua-ts-indent-offset
>
> (defcustom lua-ts-luacheck-program "luacheck"
> "Location of the Luacheck program."
> - :type '(choice (const :tag "None" nil) string)
> + :type 'file
> :version "30.1")
>
> (defcustom lua-ts-inferior-buffer "*Lua*"
> @@ -83,7 +83,7 @@ lua-ts-inferior-buffer
>
> (defcustom lua-ts-inferior-program "lua"
> "Program to run in the inferior Lua process."
> - :type '(choice (const :tag "None" nil) string)
> + :type 'file
> :version "30.1")
>
> (defcustom lua-ts-inferior-options '("-i")
> @@ -632,47 +632,50 @@ lua-ts-flymake-luacheck
> (defun lua-ts-inferior-lua ()
> "Run a Lua interpreter in an inferior process."
> (interactive)
> - (unless (comint-check-proc lua-ts-inferior-buffer)
> - (apply #'make-comint-in-buffer
> - (string-replace "*" "" lua-ts-inferior-buffer)
> - lua-ts-inferior-buffer
> - lua-ts-inferior-program
> - lua-ts-inferior-startfile
> - lua-ts-inferior-options)
> - (when lua-ts-inferior-history
> + (if (or (not lua-ts-inferior-program)
> + (not (executable-find lua-ts-inferior-program)))
> + (user-error "You must set `lua-ts-inferior-program' to use this command")
Isn't this error message misleading as `lua-ts-inferior-program' can be
set (as it is by default), but the executable couldn't be located (which
isn't a mistake by the user, but just due to Lua not being installed)?
> + (unless (comint-check-proc lua-ts-inferior-buffer)
> + (apply #'make-comint-in-buffer
> + (string-replace "*" "" lua-ts-inferior-buffer)
> + lua-ts-inferior-buffer
> + lua-ts-inferior-program
> + lua-ts-inferior-startfile
> + lua-ts-inferior-options)
> + (when lua-ts-inferior-history
> (set-process-sentinel (get-buffer-process lua-ts-inferior-buffer)
> 'lua-ts-inferior--write-history))
> - (with-current-buffer lua-ts-inferior-buffer
> - (setq-local comint-input-ignoredups t
> - comint-input-ring-file-name lua-ts-inferior-history
> - comint-prompt-read-only t
> - comint-prompt-regexp (rx-to-string `(: bol
> - ,lua-ts-inferior-prompt
> - (1+ space))))
> - (comint-read-input-ring t)
> - (add-hook 'comint-preoutput-filter-functions
> - (lambda (string)
> - (if (equal string (concat lua-ts-inferior-prompt-continue " "))
> - string
> - (concat
> - ;; Filter out the extra prompt characters that
> - ;; accumulate in the output when sending regions
> - ;; to the inferior process.
> - (replace-regexp-in-string (rx-to-string
> - `(: bol
> - (* ,lua-ts-inferior-prompt
> - (? ,lua-ts-inferior-prompt)
> - (1+ space))
> - (group (* nonl))))
> - "\\1" string)
> - ;; Re-add the prompt for the next line.
> - lua-ts-inferior-prompt " ")))
> - nil t)))
> - (select-window (display-buffer lua-ts-inferior-buffer
> - '((display-buffer-reuse-window
> - display-buffer-pop-up-window)
> - (reusable-frames . t))))
> - (get-buffer-process (current-buffer)))
> + (with-current-buffer lua-ts-inferior-buffer
> + (setq-local comint-input-ignoredups t
> + comint-input-ring-file-name lua-ts-inferior-history
> + comint-prompt-read-only t
> + comint-prompt-regexp (rx-to-string `(: bol
> + ,lua-ts-inferior-prompt
> + (1+ space))))
This should be equivalent to
(rx bol (literal lua-ts-inferior-prompt) (1+ space))
that macroexpands to
(concat "^" (regexp-quote inferior-lisp-program) "[[:space:]]+")
without the need to load rx at run-time.
> + (comint-read-input-ring t)
> + (add-hook 'comint-preoutput-filter-functions
> + (lambda (string)
> + (if (equal string (concat lua-ts-inferior-prompt-continue " "))
> + string
> + (concat
> + ;; Filter out the extra prompt characters that
> + ;; accumulate in the output when sending regions
> + ;; to the inferior process.
> + (replace-regexp-in-string
> + (rx-to-string `(: bol
> + (* ,lua-ts-inferior-prompt
> + (? ,lua-ts-inferior-prompt)
> + (1+ space))
> + (group (* nonl))))
> + "\\1" string)
> + ;; Re-add the prompt for the next line.
> + lua-ts-inferior-prompt " ")))
> + nil t)))
> + (select-window (display-buffer lua-ts-inferior-buffer
> + '((display-buffer-reuse-window
> + display-buffer-pop-up-window)
> + (reusable-frames . t))))
> + (get-buffer-process (current-buffer))))
>
> (defun lua-ts-send-buffer ()
> "Send current buffer to the inferior Lua process."
--
Philip Kaludercic on siskin
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Sun, 10 Nov 2024 14:49:02 GMT)
Full text and
rfc822 format available.
Message #32 received at 74235 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: john muhl <jm <at> pub.pink>
>> Cc: 74235 <at> debbugs.gnu.org
>> Date: Sat, 09 Nov 2024 14:54:47 -0600
>>
>> + (if (or (not lua-ts-inferior-program)
>> + (not (executable-find lua-ts-inferior-program)))
>> + (user-error "You must set `lua-ts-inferior-program' to use this command")
>
> The text of user-error should say something about being unable to find
> the program, not just about the variable being nil, since you use
> executable-find.
>
> Otherwise, LGTM, thanks.
I guess the executable-find check is redundant anyway since
comint/process will tell you “Searching for program: No such file
or directory, luaz” if you get it wrong.
Thanks again.
[0001-Fix-some-lua-ts-mode-options-Bug-74235.patch (text/x-patch, attachment)]
Reply sent
to
Eli Zaretskii <eliz <at> gnu.org>
:
You have taken responsibility.
(Thu, 14 Nov 2024 08:27:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
john muhl <jm <at> pub.pink>
:
bug acknowledged by developer.
(Thu, 14 Nov 2024 08:27:02 GMT)
Full text and
rfc822 format available.
Message #37 received at 74235-done <at> debbugs.gnu.org (full text, mbox):
> From: john muhl <jm <at> pub.pink>
> Cc: 74235 <at> debbugs.gnu.org
> Date: Sun, 10 Nov 2024 08:48:39 -0600
>
> Eli Zaretskii <eliz <at> gnu.org> writes:
>
> >> From: john muhl <jm <at> pub.pink>
> >> Cc: 74235 <at> debbugs.gnu.org
> >> Date: Sat, 09 Nov 2024 14:54:47 -0600
> >>
> >> + (if (or (not lua-ts-inferior-program)
> >> + (not (executable-find lua-ts-inferior-program)))
> >> + (user-error "You must set `lua-ts-inferior-program' to use this command")
> >
> > The text of user-error should say something about being unable to find
> > the program, not just about the variable being nil, since you use
> > executable-find.
> >
> > Otherwise, LGTM, thanks.
>
> I guess the executable-find check is redundant anyway since
> comint/process will tell you “Searching for program: No such file
> or directory, luaz” if you get it wrong.
Thanks, installed on the emacs-30 branch, and closing the bug.
Btw, I noticed that you are marking with ";" the log entries of
changes which should definitely appear in the produced ChangeLog. Is
this on purpose, or did you misunderstand the meaning of the
semi-colon in the first line of the commit log messages?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#74235
; Package
emacs
.
(Fri, 15 Nov 2024 03:55:01 GMT)
Full text and
rfc822 format available.
Message #40 received at 74235-done <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: john muhl <jm <at> pub.pink>
>> Cc: 74235 <at> debbugs.gnu.org
>> Date: Sun, 10 Nov 2024 08:48:39 -0600
>>
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>
>> >> From: john muhl <jm <at> pub.pink>
>> >> Cc: 74235 <at> debbugs.gnu.org
>> >> Date: Sat, 09 Nov 2024 14:54:47 -0600
>> >>
>> >> + (if (or (not lua-ts-inferior-program)
>> >> + (not (executable-find lua-ts-inferior-program)))
>> >> + (user-error "You must set `lua-ts-inferior-program' to use this
>> >> command")
>> >
>> > The text of user-error should say something about being unable to find
>> > the program, not just about the variable being nil, since you use
>> > executable-find.
>> >
>> > Otherwise, LGTM, thanks.
>>
>> I guess the executable-find check is redundant anyway since
>> comint/process will tell you “Searching for program: No such file
>> or directory, luaz” if you get it wrong.
>
> Thanks, installed on the emacs-30 branch, and closing the bug.
>
> Btw, I noticed that you are marking with ";" the log entries of
> changes which should definitely appear in the produced ChangeLog. Is
> this on purpose, or did you misunderstand the meaning of the
> semi-colon in the first line of the commit log messages?
Temporary (hopefully) confusion. I think I had NEWS entries on my
mind and conflated the the semicolon with not needing an entry
there. I should probably re-read CONTRIBUTING since it’s been
awhile and I don’t contribute often enough to have it all
ingrained yet.
Thanks for your patience.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Fri, 13 Dec 2024 12:24:12 GMT)
Full text and
rfc822 format available.
This bug report was last modified 246 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.