Skip to content

Commit

Permalink
Merge branch 'support_default_directory'
Browse files Browse the repository at this point in the history
  • Loading branch information
syohex committed Jul 22, 2012
2 parents 9c4e830 + 80447f4 commit 52acea3
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 3 deletions.
27 changes: 24 additions & 3 deletions quickrun.el
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,16 @@ if you set your own language configuration.
(set-process-sentinel process
(quickrun/make-sentinel rest-cmds outputter))))))

(defun quickrun/default-directory ()
(or quickrun-option-default-directory default-directory))

(defun quickrun/set-default-directory (dir)
(let ((formatted-dir (file-name-as-directory dir)))
(if (file-directory-p formatted-dir)
(setq quickrun-option-default-directory formatted-dir)
(throw 'quickrun
(format "'%s' is not existed directory" dir)))))

(defun quickrun/exec-cmd (cmd)
(and quickrun-debug (message "Quickrun Execute: %s" cmd))
(let ((program (car (split-string cmd)))
Expand All @@ -453,7 +463,8 @@ if you set your own language configuration.
(with-current-buffer buf
(erase-buffer))
(let ((proc-name (format "quickrun-process-%s" program))
(process-connection-type nil))
(process-connection-type nil)
(default-directory (quickrun/default-directory)))
(lexical-let ((process (start-process-shell-command proc-name buf cmd)))
(if (>= quickrun-timeout-seconds 0)
(setq quickrun/timeout-timer
Expand All @@ -480,11 +491,13 @@ if you set your own language configuration.

(defun quickrun/popup-output-buffer ()
(let ((buf (get-buffer quickrun/buffer-name))
(outputter quickrun-option-outputter))
(outputter quickrun-option-outputter)
(default-dir (quickrun/default-directory)))
(unless (quickrun/defined-outputter-p outputter)
(pop-to-buffer buf)
;; Copy buffer local variable
(setq quickrun-option-outputter outputter))))
(setq quickrun-option-outputter outputter
quickrun-option-default-directory default-dir))))

;;
;; Predefined outputter
Expand Down Expand Up @@ -707,6 +720,10 @@ Place holders are beginning with '%' and replaced by:
(let ((func (assoc-default :outputter cmd-info)))
(if (and func (or (functionp func) (symbolp func)))
(puthash key func info))))
;; setting new default-directory if ':default-directory' is specified
(let ((dir (assoc-default :default-directory cmd-info)))
(if dir
(quickrun/set-default-directory dir)))
info))

(defun quickrun/fill-template (tmpl info)
Expand Down Expand Up @@ -999,5 +1016,9 @@ by quickrun.el. But you can register your own command for some languages")
nil integerp
"Timeout seconds as file local variable")

(quickrun/defvar quickrun-option-default-directory
nil file-directory-p
"Default directory where command is executed")

(provide 'quickrun)
;;; quickrun.el ends here
13 changes: 13 additions & 0 deletions sample/sample_set_default_directory.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!perl
use strict;
use warnings;

print "hello\n";

#
# Local Variables:
# quickrun-option-cmd-alist: ((:command . "sh")
# (:exec . ("ls -l" "pwd"))
# (:default-directory . "/usr/local/bin"))
# End:
#

0 comments on commit 52acea3

Please sign in to comment.