Better eldoc messages.

This commit is contained in:
Paul Onions 2014-04-27 18:01:46 +01:00
parent 6faec172f8
commit bc6a6d07fa
5 changed files with 6055 additions and 36700 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -67,7 +67,7 @@ description. Move point to the start of the next line."
(setq desc (cons (rpl-edb-get-line) desc)))
(list name (rpl-trim-stack-effect-description (reverse desc)))))
(t
(list "" "")))))
(list nil nil)))))
;;; Parsing keyword lines
;;;
@ -175,8 +175,7 @@ flags for this calculator."
(setq entry-description (cons (rpl-edb-consume-description-line) entry-description)))
((eql (char-after) ?.)
;; A keyword line
(cl-destructuring-bind (keyword &rest params)
(rpl-edb-consume-keyword-line)
(cl-destructuring-bind (keyword &rest params) (rpl-edb-consume-keyword-line)
(cond ((eql keyword :AKA)
(dolist (name params)
(push name entry-names)))
@ -189,10 +188,13 @@ flags for this calculator."
;; An identifier/stack-effect line
(when entry-names
(push (list entry-names entry-stack-effect (reverse entry-description) entry-calc-infos) entries))
(cl-destructuring-bind (name stack-effect)
(rpl-edb-consume-ident-line)
(setq entry-names (list name))
(setq entry-stack-effect stack-effect)
(cl-destructuring-bind (name stack-effect) (rpl-edb-consume-ident-line)
(cond (name
(setq entry-names (list name))
(setq entry-stack-effect stack-effect))
(t
(setq entry-names nil)
(setq entry-stack-effect nil)))
(setq entry-calc-infos nil)
(setq entry-description nil)))))
(when entry-names
@ -219,8 +221,12 @@ Assumes `rpl-edb-entries' has been set by calling
(let* ((addr-str (cadr calc-info))
(fmt-str (if (caddr calc-info) (caddr calc-info) "%s"))
(flags (cdddr calc-info))
(stack-str (apply 'concat (mapcar (lambda (s) (concat s "\n")) stack-effect)))
(descrip-str (apply 'concat (mapcar (lambda (s) (concat s "\n")) description)))
(stack-str (concat (car stack-effect)
(apply 'concat (mapcar (lambda (s) (concat "\n" s))
(cdr stack-effect)))))
(descrip-str (concat (car description)
(apply 'concat (mapcar (lambda (s) (concat "\n" s))
(cdr description)))))
(data (cons stack-str (cons descrip-str (cons addr-str flags)))))
(dolist (name names)
(puthash (format fmt-str name) data table)))))))
@ -245,7 +251,7 @@ calculator model, e.g. :48G, :49G etc."
(unless rpl-edb-entries
(rpl-edb-parse-buffer))
(dolist (calculator '(:38G :39G :48G :49G))
(rpl-edb-make-calculator-data-file rpl-edb-entries calculator)))
(rpl-edb-make-calculator-data-file calculator)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Functions to read and query calculator data files