summary refs log tree commit diff
path: root/new-term.el
diff options
context:
space:
mode:
authorErik Oosting2022-09-20 10:00:35 +0200
committerErik Oosting2022-09-20 10:10:46 +0200
commit812caeb3143a2c4e413c060425518a28df17b2ab (patch)
tree75892d73fa8756f2a8256c1e26756bf23d1b369d /new-term.el
initial commit HEAD master
Diffstat (limited to 'new-term.el')
-rw-r--r--new-term.el35
1 files changed, 35 insertions, 0 deletions
diff --git a/new-term.el b/new-term.el
new file mode 100644
index 0000000..53bb154
--- /dev/null
+++ b/new-term.el
@@ -0,0 +1,35 @@
+;;; new-term.el --- A way to spawn multiple emacs terminals -*- lexical-binding: t; -*-
+
+;; Copyright © 2022 Erik Oosting
+
+;; Author: Erik Oosting <crazazy@tilde.cafe>
+;; Keywords: application-launcher, misc
+;; URL: https://crazazy.tilde.cafe/emenu.git/log.html
+
+;;; License:
+;; This file comes with the MIT license, and without any warranty whatsoever
+;; You can do with this stuff whatever you want to, but just remember
+;; to put me in the footnote :D. Would be nice at least
+
+;;; Commentary:
+;; A simple way to have multiple terminals in emacs. just type "M-x new-term"
+;; to start a new session
+
+;;; Code:
+
+;;;###autoload
+(defun new-term (program)
+  "start a new terminal emulator in a new buffer"
+  (interactive (list (read-from-minibuffer "Run program: "
+                                           (or explicit-shell-file-name
+                                               (getenv "ESHELL")
+                                               shell-file-name))))
+  (let* ((term-list (seq-filter
+                    (lambda (s) (string-match-p "terminal" (buffer-name s)))
+                    (buffer-list)))
+         (term-num (number-to-string (length term-list))))
+    (set-buffer (make-term (concat "terminal-" term-num) program))
+    (term-mode)
+    (term-char-mode)
+    (switch-to-buffer (concat "*terminal-" term-num "*"))))
+;;; new-term.el ends here