emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-26 cb0403d: Fix octave-mode ElDoc support


From: Leo Liu
Subject: [Emacs-diffs] emacs-26 cb0403d: Fix octave-mode ElDoc support
Date: Thu, 8 Aug 2019 11:27:36 -0400 (EDT)

branch: emacs-26
commit cb0403d7467502a1a9ef2699ccce826aac2ace7a
Author: Mauro Aranda <address@hidden>
Commit: Leo Liu <address@hidden>

    Fix octave-mode ElDoc support
    
    * lisp/progmodes/octave.el (octave-eldoc-function-signatures): Fix the
    regexp used, so no match happens when there is no defined function FN.
    Also, tweak the regexp to support GNU Octave 4.2.x and newer.  (Bug#36459)
---
 lisp/progmodes/octave.el | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el
index 6caf8d9..7618189 100644
--- a/lisp/progmodes/octave.el
+++ b/lisp/progmodes/octave.el
@@ -1591,8 +1591,23 @@ code line."
      (list (format "print_usage ('%s');\n" fn)))
     (let (result)
       (dolist (line inferior-octave-output-list)
+        ;; The help output has changed a few times in GNU Octave.
+        ;; Earlier versions output "usage: " before the function signature.
+        ;; After deprecating the usage function, and up until GNU Octave 4.0.3,
+        ;; the output looks like this:
+        ;; -- Mapping Function: abs (Z).
+        ;; After GNU Octave 4.2.0, the output is less verbose and it looks like
+        ;; this:
+        ;; -- abs (Z)
+        ;; The following regexp matches these three formats.
+        ;; The "usage: " alternative matches the symbol, because a call to
+        ;; print_usage with a non-existent function (e.g., print_usage ('A'))
+        ;; would output:
+        ;; error: print_usage: 'A' not found
+        ;; and we wouldn't like to match anything in this case.
+        ;; See bug #36459.
         (when (string-match
-               "\\s-*\\(?:--[^:]+\\|usage\\):\\s-*\\(.*\\)$"
+               "\\s-*\\(?:--[^:]+:\\|\\_<usage:\\|--\\)\\s-*\\(.*\\)$"
                line)
           (push (match-string 1 line) result)))
       (setq octave-eldoc-cache



reply via email to

[Prev in Thread] Current Thread [Next in Thread]