Function: idlwave-attach-classes
idlwave-attach-classes is a byte-compiled function defined in
idlwave.el.gz.
Signature
(idlwave-attach-classes LIST TYPE SHOW-CLASSES)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/idlwave.el.gz
(defun idlwave-attach-classes (list type show-classes)
;; Attach the proper class list to a LIST of completion items.
;; TYPE, when 'kwd, shows classes for method keywords, when
;; 'class-tag, for class tags, and otherwise for methods.
;; SHOW-CLASSES is the value of `idlwave-completion-show-classes'.
(if (or (null show-classes) ; don't want to see classes
(null idlwave--class-selector) ; not a method call
(and
(stringp idlwave--class-selector) ; the class is already known
(not idlwave--super-classes))) ; no possibilities for inheritance
;; In these cases, we do not have to do anything
list
(let* ((do-prop (>= show-classes 0))
(do-buf (not (= show-classes 0)))
;; (do-dots t)
(inherit (if (and (not (eq type 'class-tag)) idlwave--super-classes)
(cons idlwave--class-selector idlwave--super-classes)))
(max (abs show-classes))
(lmax ;; (if do-dots
(apply #'max (mapcar #'length list))) ;;)
classes nclasses class-info space)
(mapcar
(lambda (x)
;; get the classes
(if (eq type 'class-tag)
;; Just one class for tags
(setq classes
(list
(idlwave-class-or-superclass-with-tag
idlwave--class-selector x)))
;; Multiple classes for method or method-keyword
(setq classes
(if (eq type 'kwd)
(idlwave-all-method-keyword-classes
idlwave--method-selector x idlwave--type-selector)
(idlwave-all-method-classes x idlwave--type-selector)))
(if inherit
(setq classes
(delq nil
(mapcar (lambda (x) (if (memq x inherit) x nil))
classes)))))
(setq nclasses (length classes))
;; Make the separator between item and class-info
;; (if do-dots
(setq space (concat " " (make-string (- lmax (length x)) ?.)))
;; (setq space " "))
(if do-buf
;; We do want info in the buffer
(if (<= nclasses max)
(setq class-info (concat
space
"<" (mapconcat #'identity classes ",") ">"))
(setq class-info (format "%s<%d classes>" space nclasses)))
(setq class-info nil))
(when do-prop
;; We do want properties
(setq x (copy-sequence x))
(put-text-property 0 (length x)
'help-echo (mapconcat #'identity classes " ")
x))
(if class-info
(list x class-info)
x))
list))))