Function: idlwave-complete-class-structure-tag

idlwave-complete-class-structure-tag is an interactive and byte-compiled function defined in idlwave.el.gz.

Signature

(idlwave-complete-class-structure-tag)

Documentation

Complete a structure tag on a self argument in an object method.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/idlwave.el.gz
(defun idlwave-complete-class-structure-tag ()
  "Complete a structure tag on a `self' argument in an object method."
  (interactive)
  (let ((pos (point))
	(case-fold-search t))
    (if (save-excursion
	  ;; Check if the context is right
	  (skip-chars-backward "a-zA-Z0-9._$")
	  (and (< (point) (- pos 4))
	       (looking-at "self\\.")))
	(let* ((idlwave--class-selector (nth 2 (idlwave-current-routine)))
	       (idlwave--super-classes (idlwave-all-class-inherits
                                        idlwave--class-selector)))
	  ;; Check if we are in a class routine
	  (unless idlwave--class-selector
	    (error "Not in a method procedure or function"))
	  ;; Check if we need to update the "current" class
	  (if (not (equal idlwave--class-selector idlwave-current-tags-class))
	      (idlwave-prepare-class-tag-completion idlwave--class-selector))
	  (setq idlwave-completion-help-info
		(list 'idlwave-complete-class-structure-tag-help
		      (idlwave-sintern-routine
		       (concat idlwave--class-selector "__define"))
		      nil))
          ;; FIXME: idlwave-cpl-bold doesn't seem used anywhere.
	  (let  ((_idlwave-cpl-bold idlwave-current-native-class-tags))
	    (idlwave-complete-in-buffer
	     'class-tag 'class-tag
	     idlwave-current-class-tags nil
	     (format "Select a tag of class %s" idlwave--class-selector)
	     "class tag"
	     'idlwave-attach-class-tag-classes))
	  t) ; return t to skip other completions
      nil)))