diff --git a/ob-tmux.el b/ob-tmux.el index 14404cb..515b718 100644 --- a/ob-tmux.el +++ b/ob-tmux.el @@ -103,6 +103,13 @@ must be created." (apply 'start-process "ob-tmux" "*Messages*" org-babel-tmux-location args)) +(defun org-babel-tmux-execute-string (&rest args) + "Executes a tmux command with arguments as given. +Returns stdout as a string." + (shell-command-to-string + (concat org-babel-tmux-location " " + (s-join " " args)))) + (defun org-babel-tmux-start-terminal-window (session terminal) "Starts a terminal window with tmux attached to session." (let* ((process-name (concat "org-babel: terminal (" session ")"))) @@ -120,8 +127,7 @@ must be created." (defun org-babel-tmux-create-session (session) "Creates a tmux session if it does not yet exist." (unless (org-babel-tmux-session-alive-p session) - (org-babel-tmux-execute - "new-session" + (org-babel-tmux-execute "new-session" "-d" ;; just create the session, don't attach. "-c" (expand-file-name "~") ;; start in home directory "-s" (org-babel-tmux-session session) @@ -130,8 +136,7 @@ must be created." (defun org-babel-tmux-create-window (session) "Creates a tmux window in session if it does not yet exist." (unless (org-babel-tmux-window-alive-p session) - (org-babel-tmux-execute - "new-window" + (org-babel-tmux-execute "new-window" "-c" (expand-file-name "~") ;; start in home directory "-n" (org-babel-tmux-window-default session) "-t" (org-babel-tmux-session session)))) @@ -140,8 +145,7 @@ must be created." "If SESSION exists, set option for window." (let ((alive (org-babel-tmux-session-alive-p session))) (when alive - (org-babel-tmux-execute - "set-window-option" + (org-babel-tmux-execute "set-window-option" "-t" (org-babel-tmux-target-session session) option value)))) @@ -204,8 +208,7 @@ If no window is specified, use first window." (defun org-babel-tmux-session-alive-p (org-session) "Check if SESSION exists by parsing output of \"tmux ls\"." - (let* ((tmux-ls (shell-command-to-string - (concat org-babel-tmux-location " ls -F '#S'")) + (let* ((tmux-ls (org-babel-tmux-execute-string "ls -F '#S'")) (tmux-session (org-babel-tmux-session org-session))) (car (seq-filter (lambda (x) (string-equal tmux-session x)) @@ -217,13 +220,12 @@ If no window is specified, use first window." If no window is specified in org-session, returns 't." (let* ((tmux-window (org-babel-tmux-window org-session)) (tmux-target (org-babel-tmux-target-session org-session)) - (tmux-lws (shell-command-to-string - (concat org-babel-tmux-location - " list-panes -F 'yes_exists' -t '" - tmux-target "'")))) + (tmux-lws (org-babel-tmux-execute-string + "list-panes" + "-F 'yes_exists'" + "-t" (concat "'" tmux-target "'")))) (if tmux-window - (progn - (string-equal "yes_exists\n" tmux-lws)) + (string-equal "yes_exists\n" tmux-lws) 't))) (defun org-babel-tmux-open-file (path)