Skip to content

Commit

Permalink
Don't inherit between edts project types
Browse files Browse the repository at this point in the history
  • Loading branch information
tjarvstrand committed Aug 19, 2013
1 parent 2226f53 commit fed315f
Showing 1 changed file with 59 additions and 33 deletions.
92 changes: 59 additions & 33 deletions elisp/edts/edts-project.el
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ Example:
"\\.app$"
"\\.app.src$"
"\\.config$"
"\\.erl$"
\ "\\.erl$"
"\\.es$"
"\\.escript$"
"\\.eterm$"
Expand All @@ -109,9 +109,22 @@ Example:
(edts-log-debug "edts-project-selector result: %s" bestroot)
bestroot))

(define-project-type edts-otp (edts)
(define-project-type edts-otp (generic)
(edts-project-otp-selector file)
:config-file nil
:relevant-files ("^\\.erlang$"
"\\.app$"
"\\.app.src$"
"\\.config$"
"\\.erl$"
"\\.es$"
"\\.escript$"
"\\.eterm$"
"\\.script$"
"\\.yaws$")
:irrelevant-files ("^\\.edts$"
"^\\.gitignore$"
"^\\.gitmodules$")
:lib-dirs ("lib/erlang/lib"))

(defun edts-project-otp-selector (file)
Expand All @@ -132,21 +145,33 @@ Example:
;; Do nothing if we're in an otp-repository.
path))))

(define-project-type edts-temp (edts)
(define-project-type edts-temp (generic)
(edts-project-temp-selector file)
:config-file nil
:relevant-files ("^\\.erlang$"
"\\.app$"
"\\.app.src$"
"\\.config$"
"\\.erl$"
"\\.es$"
"\\.escript$"
"\\.eterm$"
"\\.script$"
"\\.yaws$")
:irrelevant-files ("^\\.edts$"
"^\\.gitignore$"
"^\\.gitmodules$")
:lib-dirs nil)

(defun edts-project-temp-selector (file)
"Try to figure out if FILE should be part of a temp-project."
(let ((res (when (and
;; otp-selector also checks that the normal project selector
;; returns nil
(not (edts-project-selector file))
(not (edts-project-otp-selector file))
(string-match "\\.[eh]rl$" file))
(edts-project--temp-root file))))
(edts-log-debug "edts-project-otp-selector result: %s" res)
(edts-log-debug "edts-project-temp-selector result: %s" res)
res))


Expand Down Expand Up @@ -225,37 +250,39 @@ Example:

(defun edts-project-init-temp ()
"Sets up values for a temporary project when visiting a non-project module."
(edts-log-debug "Initializing temporary project for %s" (current-buffer))
(edts-ensure-server-started)
(let* ((file (buffer-file-name))
(root-dir (edts-project--temp-root file))
(node-name (path-util-base-name root-dir)))
(unless (edts-shell-find-by-path root-dir)
(edts-shell-make-comint-buffer
(format "*%s*" node-name) ; buffer-name
node-name ; node-name
root-dir ; pwd
(list "erl" "-sname" node-name))) ; command
(edts-init-node-when-ready node-name node-name root-dir nil)
(edts-project-set-attribute root-dir :node-sname node-name)))
(when (and (buffer-file-name) (eproject-classify-file (buffer-file-name)))
(edts-log-debug "Initializing temporary project for %s" (current-buffer))
(edts-ensure-server-started)
(let* ((file (buffer-file-name))
(root-dir (edts-project--temp-root file))
(node-name (path-util-base-name root-dir)))
(unless (edts-shell-find-by-path root-dir)
(edts-shell-make-comint-buffer
(format "*%s*" node-name) ; buffer-name
node-name ; node-name
root-dir ; pwd
(list "erl" "-sname" node-name))) ; command
(edts-init-node-when-ready node-name node-name root-dir nil)
(edts-project-set-attribute root-dir :node-sname node-name))))
(add-hook 'edts-temp-project-file-visit-hook 'edts-project-init-temp)

(defun edts-project-init-otp ()
"Sets up values for a temporary project when visiting an otp-module."
(edts-log-debug "Initializing otp project for %s" (current-buffer))
(edts-ensure-server-started)
(let* ((file (buffer-file-name))
(root-dir (eproject-root))
(node-name (format "otp-%s" (eproject-name)))
(erl (path-util-join (eproject-root) "bin/erl")))
(unless (edts-shell-find-by-path root-dir)
(edts-shell-make-comint-buffer
(format "*%s*" node-name) ; buffer-name
node-name ; node-name
root-dir ; pwd
(list erl "-sname" node-name))) ; command
(edts-init-node-when-ready node-name node-name root-dir nil)
(edts-project-set-attribute root-dir :node-sname node-name)))
(when (and (buffer-file-name) (eproject-classify-file (buffer-file-name)))
(edts-log-debug "Initializing otp project for %s" (current-buffer))
(edts-ensure-server-started)
(let* ((file (buffer-file-name))
(root-dir (eproject-root))
(node-name (format "otp-%s" (eproject-name)))
(erl (path-util-join (eproject-root) "bin/erl")))
(unless (edts-shell-find-by-path root-dir)
(edts-shell-make-comint-buffer
(format "*%s*" node-name) ; buffer-name
node-name ; node-name
root-dir ; pwd
(list erl "-sname" node-name))) ; command
(edts-init-node-when-ready node-name node-name root-dir nil)
(edts-project-set-attribute root-dir :node-sname node-name))))
(add-hook 'edts-otp-project-file-visit-hook 'edts-project-init-otp)


Expand Down Expand Up @@ -506,6 +533,5 @@ are not considered for erl-files."
;; `edts-test-project1-directory'/lib/one/src/one.erl, we choose
;; `edts-test-project1-directory' as the project root.
(find-file (car (edts-test-project1-modules)))
(message "current-buffer %s %s" (current-buffer) (eproject-root))
(should (string= (path-util-normalize edts-test-project1-directory)
(path-util-normalize (eproject-root))))))

0 comments on commit fed315f

Please sign in to comment.