GNU bug report logs -
#36459
27.0.50; octave-mode ElDoc support bug
Previous Next
Reported by: Mauro Aranda <maurooaranda <at> gmail.com>
Date: Mon, 1 Jul 2019 15:00:02 UTC
Severity: normal
Tags: patch
Found in version 27.0.50
Fixed in version 26.3
Done: Leo Liu <sdl.web <at> gmail.com>
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 36459 in the body.
You can then email your comments to 36459 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#36459
; Package
emacs
.
(Mon, 01 Jul 2019 15:00:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Mauro Aranda <maurooaranda <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Mon, 01 Jul 2019 15:00:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hello
Recipe to reproduce the bug:
1) emacs -Q
2) M-x run-octave
3) Type something that doesn't involve a octave function call, like the
following matrix. Type it slowly, to give octave-eldoc-function time to run:
A = [10 1;2 3]
(Of course, if you don't want to type slowly, set eldoc-idle-delay to 0).
4) When point is past a whitespace, such as in:
A |=
(with | being where point is)
the echo area displays: 'A' not found
Similar situation when point is at:
A = [10 |1;2 3]
Echo area here displays: '10' not found.
So, for every symbol that is not a function, 'not found' might be
displayed. I think it is a bug, since as a a user I would expect that
if I'm not about to call a function, ElDoc shouldn't be displaying
anything.
Best regards,
Mauro.
In GNU Emacs 27.0.50 (build 1, i686-pc-linux-gnu, GTK+ Version 3.18.9)
of 2019-06-30 built on the-blackbeard
Repository revision: fd9ea1e511ba3b1f5d338c3fc8faf0b85df951f9
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Ubuntu 16.04.6 LTS
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
delete-backward-char: Text is read-only [2 times]
Quit
You can run the command ‘run-octave’ with M-x ru-o RET
Configured using:
'configure CFLAGS=-O3'
Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND GPM DBUS GSETTINGS GLIB NOTIFY INOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM THREADS PDUMPER LCMS2 GMP
Important settings:
value of $LANG: en_US.utf8
value of $XMODIFIERS:
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Load-path shadows:
None found.
Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml mml-sec password-cache epa derived epg epg-config
gnus-util rmail rmail-loaddefs text-property-search seq byte-opt gv
bytecomp byte-compile cconv mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils thingatpt
compile octave smie easymenu comint ansi-color ring time-date elec-pair
mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)
Memory information:
((conses 8 53509 7386)
(symbols 24 6753 1)
(strings 16 18539 2692)
(string-bytes 1 611047)
(vectors 8 11206)
(vector-slots 4 137069 15278)
(floats 8 17 36)
(intervals 28 230 0)
(buffers 564 12)
(heap 1024 7670 759))
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Wed, 03 Jul 2019 14:44:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 36459 <at> debbugs.gnu.org (full text, mbox):
Paging the original author.
Leo, are you still using Octave? What do you think about the issue?
On 01.07.2019 17:58, Mauro Aranda wrote:
> Hello
>
> Recipe to reproduce the bug:
> 1) emacs -Q
> 2) M-x run-octave
> 3) Type something that doesn't involve a octave function call, like the
> following matrix. Type it slowly, to give octave-eldoc-function time to run:
> A = [10 1;2 3]
>
> (Of course, if you don't want to type slowly, set eldoc-idle-delay to 0).
>
> 4) When point is past a whitespace, such as in:
> A |=
> (with | being where point is)
> the echo area displays: 'A' not found
> Similar situation when point is at:
> A = [10 |1;2 3]
> Echo area here displays: '10' not found.
>
> So, for every symbol that is not a function, 'not found' might be
> displayed. I think it is a bug, since as a a user I would expect that
> if I'm not about to call a function, ElDoc shouldn't be displaying
> anything.
>
> Best regards,
> Mauro.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Thu, 04 Jul 2019 16:16:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 36459 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
I forgot to say that my version of GNU Octave is 4.0.0
The problem is with the regexp used in
octave-eldoc-function-signatures. It matches the signatures of the
function, that are output with a call to the GNU Octave function
print_usage. It also matches an old-style of outputting these function
signatures, which was:
usage: bar = foo ()
This output was also generated by calling the GNU Octave function usage,
like this:
usage ("bar = foo ()")
But usage has been deprecated in GNU Octave, I think in major version 4.
It's still present in my version, but I don't know about latest releases
(there's a recent GNU Octave 5.1.0)
I don't know why the author chose print_usage over the GNU Octave
function help, but when print_usage fails, due to being called with a
nonexistent function in his argument, like this:
print_usage ('A')
An error message like this one is output:
error: print_usage: 'A' not found
The regexp used is wrongly matching this line and therefore
octave-eldoc-function-signatures is not returning nil, as it should in
this case.
Best regards,
Mauro.
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Sat, 06 Jul 2019 13:03:01 GMT)
Full text and
rfc822 format available.
Message #14 received at 36459 <at> debbugs.gnu.org (full text, mbox):
On 2019-07-03 17:43 +0300, Dmitry Gutov wrote:
> Paging the original author.
>
> Leo, are you still using Octave? What do you think about the issue?
Sadly I never become a serious octave user. It is possible these
functions stop working given octave seems to evolve fast these days.
On 2019-07-04 13:15 -0300, Mauro Aranda wrote:
> I forgot to say that my version of GNU Octave is 4.0.0
>
> The problem is with the regexp used in
> octave-eldoc-function-signatures. It matches the signatures of the
> function, that are output with a call to the GNU Octave function
> print_usage. It also matches an old-style of outputting these function
> signatures, which was:
> usage: bar = foo ()
>
> This output was also generated by calling the GNU Octave function usage,
> like this:
> usage ("bar = foo ()")
> But usage has been deprecated in GNU Octave, I think in major version 4.
> It's still present in my version, but I don't know about latest releases
> (there's a recent GNU Octave 5.1.0)
>
> I don't know why the author chose print_usage over the GNU Octave
> function help, but when print_usage fails, due to being called with a
> nonexistent function in his argument, like this:
> print_usage ('A')
> An error message like this one is output:
> error: print_usage: 'A' not found
>
> The regexp used is wrongly matching this line and therefore
> octave-eldoc-function-signatures is not returning nil, as it should in
> this case.
Can this bug be fixed by changing the regexp in
`octave-eldoc-function-signatures' from
"\\s-*\\(?:--[^:]+\\|usage\\):\\s-*\\(.*\\)$"
to
"\\s-*\\(?:--[^:]+\\|\\_<usage\\):\\s-*\\(.*\\)$"
?
BTW I can't remember why print_usage was chosen. It could be it was the
one I found that worked.
>
> Best regards,
> Mauro.
Thanks for the report.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Mon, 08 Jul 2019 22:30:03 GMT)
Full text and
rfc822 format available.
Message #17 received at 36459 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Leo Liu <sdl.web <at> gmail.com> writes:
Hello Leo. Thanks for your answer.
> Can this bug be fixed by changing the regexp in
> `octave-eldoc-function-signatures' from
>
> "\\s-*\\(?:--[^:]+\\|usage\\):\\s-*\\(.*\\)$"
>
> to
>
> "\\s-*\\(?:--[^:]+\\|\\_<usage\\):\\s-*\\(.*\\)$"
> ?
Yes, indeed, this change fixes it. Will you push the fix?
Best regards,
Mauro.
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Tue, 30 Jul 2019 14:38:01 GMT)
Full text and
rfc822 format available.
Message #20 received at 36459 <at> debbugs.gnu.org (full text, mbox):
On 09.07.2019 1:28, Mauro Aranda wrote:
> Leo Liu <sdl.web <at> gmail.com <mailto:sdl.web <at> gmail.com>> writes:
>
> Hello Leo. Thanks for your answer.
>
> > Can this bug be fixed by changing the regexp in
> > `octave-eldoc-function-signatures' from
> >
> > "\\s-*\\(?:--[^:]+\\|usage\\):\\s-*\\(.*\\)$"
> >
> > to
> >
> > "\\s-*\\(?:--[^:]+\\|\\_<usage\\):\\s-*\\(.*\\)$"
> > ?
>
> Yes, indeed, this change fixes it. Will you push the fix?
I've tried to verify the fix myself, and foremost to see whether the
cases where ElDoc should be displayed still work.
But I haven't managed to find working ones, with either version of the
regexp. My Octave version is 4.2.2.
The output of e.g. print_usage ('abs') is:
error: Invalid call to abs. Correct usage is:
-- abs (Z)
Additional help for built-in functions and operators is
available in the online version of the manual. Use the command
'doc <topic>' to search the manual index.
Neither regexp seems to match the second line.
Ideas? Are there help outputs that do match? Is 4.2.2 too new/too old?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Tue, 30 Jul 2019 17:54:01 GMT)
Full text and
rfc822 format available.
Message #23 received at 36459 <at> debbugs.gnu.org (full text, mbox):
On 2019-07-30 17:37 +0300, Dmitry Gutov wrote:
> I've tried to verify the fix myself, and foremost to see whether the
> cases where ElDoc should be displayed still work.
>
> But I haven't managed to find working ones, with either version of the
> regexp. My Octave version is 4.2.2.
>
> The output of e.g. print_usage ('abs') is:
>
> error: Invalid call to abs. Correct usage is:
>
> -- abs (Z)
I just tried this on a few octaves >= 4.0 and they all had this problem.
If I remember correctly the function used to work with octave 3.8. It
seems that is the new output format i.e. they all start with this
useless "error: Invalid call to XXX". The regexp might need change.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Wed, 31 Jul 2019 14:12:01 GMT)
Full text and
rfc822 format available.
Message #26 received at 36459 <at> debbugs.gnu.org (full text, mbox):
On 30.07.2019 20:53, Leo Liu wrote:
> It
> seems that is the new output format i.e. they all start with this
> useless "error: Invalid call to XXX".
I wouldn't say this is a problem exactly, because the code tries to
match the regexp against every line, not just the first one.
> The regexp might need change.
Do you have an example of the output from other versions of Octave, to
make sure any change in regexp will keep them working? Not sure if we
still need to support Octave 3, but 3.8 is only 6 years old. :-)
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Wed, 31 Jul 2019 14:44:01 GMT)
Full text and
rfc822 format available.
Message #29 received at 36459 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
My GNU Octave version is 4.0.0
In 4.0.x versions, the output of print_usage is like this:
-- Mapping Function: abs (Z)
That's why the regexp works. You can see an example in:
https://octave.org/doc/v4.0.0/Raising-Errors.html#Raising-Errors
Looking at the doc sources, it looks like the output was the same in GNU
Octave 3.
Now, after 4.0.x, namely 4.2.x, it seems that the output has changed to
what you see, and an example can be seen here:
https://octave.org/doc/v4.2.0/Raising-Errors.html#Raising-Errors
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Tue, 06 Aug 2019 16:09:02 GMT)
Full text and
rfc822 format available.
Message #32 received at 36459 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
tags 36459 patch
quit
I attach a patch, which I think tackles the problems presented. It
stops matching incorrectly when there is no function defined, with the
change suggested by Leo Liu.
Also, the regexp used now matches the newer help output (GNU Octave
4.2.x and newer), while still supporting older GNU Octave versions.
I've tested with GNU Octave 4.0.0 and GNU Octave 5.1.0.
Best regards,
Mauro.
[Message part 2 (text/html, inline)]
[0001-Fix-octave-mode-ElDoc-support.patch (text/x-patch, attachment)]
Added tag(s) patch.
Request was from
Mauro Aranda <maurooaranda <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Tue, 06 Aug 2019 19:02:01 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Thu, 08 Aug 2019 09:55:01 GMT)
Full text and
rfc822 format available.
Message #37 received at 36459 <at> debbugs.gnu.org (full text, mbox):
On 2019-08-06 13:07 -0300, Mauro Aranda wrote:
> Also, the regexp used now matches the newer help output (GNU Octave
> 4.2.x and newer), while still supporting older GNU Octave versions.
>
> I've tested with GNU Octave 4.0.0 and GNU Octave 5.1.0.
Thank you for the patch. What is the recommended way to get function
signatures these days if print_usage is deprecated?
Leo
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Thu, 08 Aug 2019 11:11:02 GMT)
Full text and
rfc822 format available.
Message #40 received at 36459 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
> Thank you for the patch. What is the recommended way to get function
> signatures these days if print_usage is deprecated?
>
> Leo
Hello Leo.
The deprecated function is usage, not print_usage. The usage function
was deprecated in GNU Octave 4.0, and in the 4.4 version it
has been removed.
Here is the NEWS file that says usage is deprecated, and that its
replacement is print_usage:
https://www.gnu.org/software/octave/NEWS-4.0.html
Since it says print_usage is the replacement function, I think calling
print_usage is reliable.
Here is the NEWS file that says usage has been removed:
https://www.gnu.org/software/octave/NEWS-4.4.html
Best regards,
Mauro.
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Thu, 08 Aug 2019 12:41:01 GMT)
Full text and
rfc822 format available.
Message #43 received at 36459 <at> debbugs.gnu.org (full text, mbox):
On 2019-08-08 08:09 -0300, Mauro Aranda wrote:
> Hello Leo.
Hi Mauro,
> The deprecated function is usage, not print_usage. The usage function
> was deprecated in GNU Octave 4.0, and in the 4.4 version it
> has been removed.
Thanks for the clarification. I misread the comment in the patch to mean
print_usage is deprecated.
Hi Eli,
octave-eldoc-function-signatures is broken for too long. I wonder if it
is possible to merge Mauro's patch for the upcoming 26.3 release so that
there is at least one working version in 26.x releases? Thanks.
Leo
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#36459
; Package
emacs
.
(Thu, 08 Aug 2019 13:53:02 GMT)
Full text and
rfc822 format available.
Message #46 received at 36459 <at> debbugs.gnu.org (full text, mbox):
> From: Leo Liu <sdl.web <at> gmail.com>
> Cc: Eli Zaretskii <eliz <at> gnu.org>, 36459 <at> debbugs.gnu.org, Dmitry Gutov <dgutov <at> yandex.ru>
> Date: Thu, 08 Aug 2019 20:39:49 +0800
>
> octave-eldoc-function-signatures is broken for too long. I wonder if it
> is possible to merge Mauro's patch for the upcoming 26.3 release so that
> there is at least one working version in 26.x releases?
Yes, please go ahead.
Reply sent
to
Leo Liu <sdl.web <at> gmail.com>
:
You have taken responsibility.
(Thu, 08 Aug 2019 15:37:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Mauro Aranda <maurooaranda <at> gmail.com>
:
bug acknowledged by developer.
(Thu, 08 Aug 2019 15:37:02 GMT)
Full text and
rfc822 format available.
Message #51 received at 36459-done <at> debbugs.gnu.org (full text, mbox):
version: 26.3
On 2019-08-08 16:50 +0300, Eli Zaretskii wrote:
> Yes, please go ahead.
Excellent. Thanks to everyone for help and testing.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Fri, 06 Sep 2019 11:24:05 GMT)
Full text and
rfc822 format available.
This bug report was last modified 4 years and 232 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.