diff options
| -rw-r--r-- | elisp/geiser-autodoc.el | 16 | ||||
| -rw-r--r-- | elisp/geiser-repl.el | 4 | ||||
| -rw-r--r-- | elisp/geiser-syntax.el | 12 | 
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)))) | 
