Function: semantic-c-describe-environment

semantic-c-describe-environment is an interactive and byte-compiled function defined in c.el.gz.

Signature

(semantic-c-describe-environment)

Documentation

Describe the Semantic features of the current C environment.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/cedet/semantic/bovine/c.el.gz
;;; SETUP QUERY
;;
(defun semantic-c-describe-environment ()
  "Describe the Semantic features of the current C environment."
  (interactive)
  (if (not (derived-mode-p 'c-mode))
      (error "Not useful to query C mode in %s mode" major-mode))
  (let ((gcc (when (boundp 'semantic-gcc-setup-data)
	       semantic-gcc-setup-data))
	)
    (semantic-fetch-tags)

    (with-output-to-temp-buffer "*Semantic C Environment*"
      (when gcc
	(princ "Calculated GCC Parameters:")
	(dolist (P gcc)
	  (princ "\n  ")
	  (princ (car P))
	  (princ " = ")
	  (princ (cdr P))
	  )
	)

      (princ "\n\nInclude Path Summary:\n")
      (when (and (boundp 'ede-object) ede-object)
	(princ (substitute-command-keys
		"\n  This file's project include is handled by:\n"))
	(let ((objs (if (listp ede-object)
			ede-object
		      (list ede-object))))
	  (dolist (O objs)
	    (princ "    EDE : ")
	    (princ 0)
	    (let ((ipath (ede-system-include-path O)))
	      (if (not ipath)
		  (princ "\n     with NO specified system include path.\n")
		(princ "\n     with the system path:\n")
		(dolist (dir ipath)
		  (princ "    ")
		  (princ dir)
		  (princ "\n"))))))
	)

      (when semantic-dependency-include-path
	(princ (substitute-command-keys
		"\n  This file's generic include path is:\n"))
	(dolist (dir semantic-dependency-include-path)
	  (princ "    ")
	  (princ dir)
	  (princ "\n")))

      (when semantic-dependency-system-include-path
	(princ (substitute-command-keys
		"\n  This file's system include path is:\n"))
	(dolist (dir semantic-dependency-system-include-path)
	  (princ "    ")
	  (princ dir)
	  (princ "\n")))

      (princ "\n\nMacro Summary:\n")

      (when semantic-lex-c-preprocessor-symbol-file
	(princ "\n  Your CPP table is primed from these system files:\n")
	(dolist (file semantic-lex-c-preprocessor-symbol-file)
	  (princ "    ")
	  (princ file)
	  (princ "\n")
	  (princ "    in table: ")
	  (let ((fto (semanticdb-file-table-object file)))
	    (if fto
		(princ (cl-prin1-to-string fto))
	      (princ "No Table")))
	  (princ "\n")
	  ))

      (when semantic-lex-c-preprocessor-symbol-map-builtin
	(princ "\n  Built-in symbol map:\n")
	(dolist (S semantic-lex-c-preprocessor-symbol-map-builtin)
	  (princ "    ")
	  (princ (car S))
	  (princ " = ")
	  (princ (cdr S))
	  (princ "\n")
	  ))

      (when semantic-lex-c-preprocessor-symbol-map
	(princ "\n  User symbol map (primed from system files):\n")
	(dolist (S semantic-lex-c-preprocessor-symbol-map)
	  (princ "    ")
	  (princ (car S))
	  (princ " = ")
	  (princ (cdr S))
	  (princ "\n")
	  ))

      (when (and (boundp 'ede-object)
		 ede-object)
	(princ "\n  Project symbol map:\n")
	(when (and (boundp 'ede-object) ede-object)
	  (princ "      Your project symbol map is also derived from the EDE object:\n      ")
	  (princ (cl-prin1-to-string ede-object)))
	(princ "\n\n")
	(if (obarrayp semantic-lex-spp-project-macro-symbol-obarray)
	    (let ((macros nil))
	      (mapatoms
               (lambda (symbol)
                 (setq macros (cons symbol macros)))
	       semantic-lex-spp-project-macro-symbol-obarray)
	      (dolist (S macros)
		(princ "    ")
		(princ (symbol-name S))
		(princ " = ")
		(princ (symbol-value S))
		(princ "\n")
		))
	  ;; Else, not map
	  (princ "    No Symbols.\n")))

      (princ "\n\n  Use: M-x semantic-lex-spp-describe RET\n")
      (princ "\n  to see the complete macro table.\n")

      )))