Function: vhdl-export-project

vhdl-export-project is an interactive and byte-compiled function defined in vhdl-mode.el.gz.

Signature

(vhdl-export-project FILE-NAME)

Documentation

Write project setup for current project.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/vhdl-mode.el.gz
(defun vhdl-export-project (file-name)
  "Write project setup for current project."
  (interactive
   (let ((name (vhdl-resolve-env-variable
		(vhdl-replace-string
		 (cons "\\(.*\\) \\(.*\\)" (car vhdl-project-file-name))
		 (concat (subst-char-in-string
			  ?  ?_ (or (vhdl-project-p)
				    (error "ERROR:  No current project")))
			 " " (user-login-name))))))
     (list (read-file-name
	    "Write project file: "
	    (when (file-name-absolute-p name) "") nil nil name))))
  (setq file-name (abbreviate-file-name file-name))
  (let ((orig-buffer (current-buffer)))
    (unless (file-exists-p (file-name-directory file-name))
      (make-directory (file-name-directory file-name) t))
    (if (not (file-writable-p file-name))
	(error "ERROR:  File not writable: \"%s\"" file-name)
      (set-buffer (find-file-noselect file-name t t))
      (erase-buffer)
      (insert ";; -*- Emacs-Lisp -*-\n\n"
	      ";;; " (file-name-nondirectory file-name)
	      " - project setup file for Emacs VHDL Mode " vhdl-version "\n\n"
	      ";; Project : " vhdl-project "\n"
	      ";; Saved   : " (format-time-string "%Y-%m-%d %T ")
	      (user-login-name) "\n\n\n"
	      ";; project name\n"
	      "(setq vhdl-project \"" vhdl-project "\")\n\n"
	      ";; project setup\n"
	      "(vhdl-aput 'vhdl-project-alist vhdl-project\n'")
      (pp (vhdl-aget vhdl-project-alist vhdl-project) (current-buffer))
      (insert ")\n")
      (save-buffer)
      (kill-buffer (current-buffer))
      (set-buffer orig-buffer))))