Created
March 16, 2017 20:58
-
-
Save dfeich/1bcb09b0e2fc5f55fecec8f498862683 to your computer and use it in GitHub Desktop.
Emacs function to open an ansi-term at a local or remote location
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun dfeich/ansi-terminal (&optional path name) | |
"Opens an ansi terminal at PATH. If no PATH is given, it uses | |
the value of `default-directory'. PATH may be a tramp remote path. | |
The ansi-term buffer is named based on `name' " | |
(interactive) | |
(unless path (setq path default-directory)) | |
(unless name (setq name "ansi-term")) | |
(ansi-term "/bin/bash" name) | |
(let ((path (replace-regexp-in-string "^file:" "" path)) | |
(cd-str | |
"fn=%s; if test ! -d $fn; then fn=$(dirname $fn); fi; cd $fn;") | |
(bufname (concat "*" name "*" ))) | |
(if (tramp-tramp-file-p path) | |
(let ((tstruct (tramp-dissect-file-name path))) | |
(cond | |
((equal (tramp-file-name-method tstruct) "ssh") | |
(process-send-string bufname (format | |
(concat "ssh -t %s '" | |
cd-str | |
"exec bash'; exec bash; clear\n") | |
(tramp-file-name-host tstruct) | |
(tramp-file-name-localname tstruct)))) | |
(t (error "not implemented for method %s" | |
(tramp-file-name-method tstruct))))) | |
(process-send-string bufname (format (concat cd-str " exec bash;clear\n") | |
path))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment