summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2009-03-02 23:01:17 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2009-03-02 23:01:17 +0100
commita4358aa381d45b1c05bea5c8545a108a7bc20123 (patch)
tree37aed4c0f492d70300426f0210cd163763da3e07 /elisp
parent0085c16dc3add5722e86c738c0ff1fa969183d86 (diff)
downloadgeiser-a4358aa381d45b1c05bea5c8545a108a7bc20123.tar.gz
geiser-a4358aa381d45b1c05bea5c8545a108a7bc20123.tar.bz2
Autodoc enhancements:
* Use argument names from guile-procedures.txt when available. * Highlihgt #:opt with a face of its own.
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-autodoc.el16
-rw-r--r--elisp/geiser-repl.el4
-rw-r--r--elisp/geiser-syntax.el12
3 files changed, 21 insertions, 11 deletions
diff --git a/elisp/geiser-autodoc.el b/elisp/geiser-autodoc.el
index 4e8a5bf..d6424b4 100644
--- a/elisp/geiser-autodoc.el
+++ b/elisp/geiser-autodoc.el
@@ -46,6 +46,10 @@
'font-lock-function-name-face
geiser-autodoc "highlighting procedure name in autodoc messages")
+(geiser-custom--defface autodoc-optional-arg-marker
+ 'font-lock-keyword-face
+ geiser-autodoc "highlighting #:opt marker in autodoc messages")
+
(defcustom geiser-autodoc-delay 0.2
"Delay before autodoc messages are fetched and displayed, in seconds."
:type 'number
@@ -75,7 +79,8 @@ when `geiser-autodoc-display-module-p' is on."
(if (equal (car geiser-autodoc--last) form) (cdr geiser-autodoc--last)
(when form
(let ((res (geiser-eval--send/result
- `(:eval ((:ge autodoc) (quote (:scm ,form)))))))
+ `(:eval ((:ge autodoc) (quote (:scm ,form))))
+ 500)))
(when (and res (listp res))
(setq geiser-autodoc--last
(cons form
@@ -86,14 +91,17 @@ when `geiser-autodoc-display-module-p' is on."
(defun geiser-autodoc--insert-arg (arg current pos)
(let ((p (point))
- (str (format "%s" (if (eq arg '\#:rest) "." arg))))
+ (str (format "%s" (if (eq arg '\#:rest) "." arg)))
+ (face (or (and (eq '\#:opt arg)
+ 'geiser-font-lock-autodoc-optional-arg-marker)
+ (and (= current pos)
+ 'geiser-font-lock-autodoc-current-arg))))
(insert str)
(when (listp arg)
(save-excursion
(replace-regexp "(quote \\(.*\\))" "'\\1" nil p (point))
(replace-string "nil" "()" t p (point))))
- (when (= current pos)
- (put-text-property p (point) 'face 'geiser-font-lock-autodoc-current-arg))))
+ (when face (put-text-property p (point) 'face face))))
(defsubst geiser-autodoc--proc-name (proc module)
(let ((str (if module
diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el
index 9d01835..c542a66 100644
--- a/elisp/geiser-repl.el
+++ b/elisp/geiser-repl.el
@@ -132,7 +132,7 @@ REPL buffer."
(apply 'make-comint-in-buffer `("Geiser REPL" ,(current-buffer) ,guile nil ,@args))
(geiser-repl--wait-for-prompt 10000)
(geiser-repl--history-setup)
- (geiser-con--setup-connection (current-buffer) geiser-repl--prompt-regex)))
+ (geiser-con--setup-connection (current-buffer) geiser-repl--prompt-regex)))
(defun geiser-repl--process (&optional start)
(or (and (buffer-live-p (geiser-repl--buffer))
@@ -175,7 +175,7 @@ REPL buffer."
(goto-char (point-max))
(comint-kill-region comint-last-input-start (point))
(comint-redirect-cleanup)
- (geiser-con--setup-connection geiser-repl--buffer))
+ (geiser-con--setup-connection geiser-repl--buffer geiser-repl--prompt-regex))
;;; geiser-repl mode:
diff --git a/elisp/geiser-syntax.el b/elisp/geiser-syntax.el
index e050503..01dd151 100644
--- a/elisp/geiser-syntax.el
+++ b/elisp/geiser-syntax.el
@@ -83,12 +83,14 @@
(when (not (eq (char-after (point)) ?\())
(skip-syntax-backward "-<>")
(delete-region (point) (point-max)))
- (let ((pps (parse-partial-sexp (point-min) (point))))
- (when (nth 8 pps) ;; inside a comment or string
- (delete-region (nth 8 pps) (point-max))))
+ (let ((p (nth 8 (syntax-ppss))))
+ (when p ;; inside a comment or string
+ (let ((str (nth 3 (syntax-ppss))))
+ (delete-region p (point-max))
+ (when str (insert "XXXpointXXX")))))
(when (cond ((eq (char-after (1- (point))) ?\)) (geiser-syntax--del-sexp -1) t)
((eq (char-after (point)) ?\() (delete-region (point) (point-max)) t)
- ((memq (char-after (1- (point))) (list ?. ?@ ?, ?\' ?\` ?\#))
+ ((memq (char-after (1- (point))) (list ?. ?@ ?, ?\' ?\` ?\# ?\\))
(skip-syntax-backward "^-(")
(delete-region (point) (point-max))
t))
@@ -101,7 +103,7 @@
(defsubst geiser-syntax--get-partial-sexp ()
(unless (zerop (nth 0 (syntax-ppss)))
(let* ((end (if (eq (char-after (point)) ?\() (1+ (point))
- (save-excursion (skip-syntax-forward "^-()") (point))))
+ (save-excursion (skip-syntax-forward "^-\"<>()") (point))))
(begin (save-excursion (beginning-of-defun) (point))))
(geiser-syntax--complete-partial-sexp (current-buffer) begin end))))