Showing type of an identifier at point
Ignore-this: 40b69923375d0ccdf6b1a98891b1bca6 darcs-hash:20120801020653-33bd9-7e0a38b19718bfe0965d9570388f9f5cb74dda48
This commit is contained in:
parent
354b6d774a
commit
ee65d72abd
|
@ -328,6 +328,51 @@ it is started."
|
||||||
(setq lines (cdr lines)))
|
(setq lines (cdr lines)))
|
||||||
(utop-send-string "end:\n")))
|
(utop-send-string "end:\n")))
|
||||||
|
|
||||||
|
(defun utop-last-type ()
|
||||||
|
"Extract last inferred type from the uTop toplevel"
|
||||||
|
(with-current-buffer utop-buffer-name
|
||||||
|
(save-excursion
|
||||||
|
(goto-char utop-prompt-min)
|
||||||
|
(forward-line -1)
|
||||||
|
(let ((line (replace-in-string (thing-at-point 'line) "\n" "")))
|
||||||
|
(set-text-properties 0 (length line) nil line)
|
||||||
|
(message line)))))
|
||||||
|
|
||||||
|
;; Poor man's identifier at point
|
||||||
|
(defun utop-ident-looking (backward)
|
||||||
|
"Find limits of an OCaml identifier"
|
||||||
|
(save-excursion
|
||||||
|
(skip-chars-forward " \n\t")
|
||||||
|
(let ((iterating t)
|
||||||
|
(start-pos (point))
|
||||||
|
end-pos)
|
||||||
|
(while iterating
|
||||||
|
(setq end-pos (point))
|
||||||
|
(if (not backward)
|
||||||
|
(progn
|
||||||
|
(right-word 1)
|
||||||
|
(setq iterating (not (looking-back "[ \t\r\n].*" start-pos))))
|
||||||
|
(progn
|
||||||
|
(left-word 1)
|
||||||
|
(setq iterating (not (save-excursion
|
||||||
|
(search-forward-regexp "[ \t\r\n].*" start-pos t)))))))
|
||||||
|
end-pos)))
|
||||||
|
|
||||||
|
(defun utop-ident-at-point ()
|
||||||
|
"Identifier at point"
|
||||||
|
(let ((start-pos (utop-ident-looking t))
|
||||||
|
(end-pos (utop-ident-looking nil)))
|
||||||
|
(buffer-substring-no-properties start-pos end-pos)))
|
||||||
|
|
||||||
|
; Currently not working - the communication is asynchronous so how to
|
||||||
|
; make sure without implementing another state that the type
|
||||||
|
; information has been already printed?
|
||||||
|
(defun utop-type-at-point ()
|
||||||
|
"Find type of an identifier at point from uTop"
|
||||||
|
(utop-eval-string (utop-ident-at-point))
|
||||||
|
; (utop-last-type)
|
||||||
|
)
|
||||||
|
|
||||||
;; +-----------------------------------------------------------------+
|
;; +-----------------------------------------------------------------+
|
||||||
;; | Edition control |
|
;; | Edition control |
|
||||||
;; +-----------------------------------------------------------------+
|
;; +-----------------------------------------------------------------+
|
||||||
|
|
Loading…
Reference in New Issue