]> git.eshelyaron.com Git - emacs.git/commitdiff
Add info-lookup help for gdb-script-mode
authorTom Tromey <tom@tromey.com>
Mon, 16 Jan 2017 22:59:06 +0000 (15:59 -0700)
committerTom Tromey <tom@tromey.com>
Tue, 17 Jan 2017 22:40:16 +0000 (15:40 -0700)
Bug#25464:
* lisp/info-look.el (info-lookup-guess-gdb-script-symbol): New
function.
Add help for gdb-script-mode.

lisp/info-look.el

index 1f3c50870e0f18622e31633474c1a7cf414f5934..694bcb462ce291d5647e93e1d75b0e9b8efe883a 100644 (file)
@@ -43,6 +43,7 @@
 ;;; Code:
 
 (require 'info)
+(require 'subr-x)
 
 (defgroup info-lookup nil
   "Major mode sensitive help agent."
@@ -648,6 +649,26 @@ Return nil if there is nothing appropriate in the buffer near point."
            (buffer-substring-no-properties beg end)))))
     (error nil)))
 
+(defun info-lookup-guess-gdb-script-symbol ()
+  "Get symbol at point in GDB script buffers."
+  (condition-case nil
+      (save-excursion
+        (back-to-indentation)
+        ;; Try to find the current line's full command in the index;
+        ;; and default to the longest subset that is found.
+        (when (looking-at "[-a-z]+\\(\\s-[-a-z]+\\)*")
+          (let ((str-list (split-string (match-string-no-properties 0)
+                                        "\\s-+" t))
+                (completions (info-lookup->completions 'symbol
+                                                       'gdb-script-mode)))
+            (catch 'result
+              (while str-list
+                (let ((str (string-join str-list " ")))
+                  (when (assoc str completions)
+                    (throw 'result str))
+                  (nbutlast str-list)))))))
+    (error nil)))
+
 ;;;###autoload
 (defun info-complete-symbol (&optional mode)
   "Perform completion on symbol preceding point."
@@ -1051,6 +1072,14 @@ Return nil if there is nothing appropriate in the buffer near point."
  :mode 'help-mode
  :regexp "[^][()`'‘’,:\" \t\n]+"
  :other-modes '(emacs-lisp-mode))
+
+(info-lookup-maybe-add-help
+ :mode 'gdb-script-mode
+ :ignore-case nil
+ :regexp "\\([-a-z]+\\(\\s-+[-a-z]+\\)*\\)"
+ :doc-spec '(("(gdb)Command and Variable Index" nil
+              nil nil))
+ :parse-rule 'info-lookup-guess-gdb-script-symbol)
 \f
 (provide 'info-look)