aboutsummaryrefslogtreecommitdiff
path: root/vterm.el
diff options
context:
space:
mode:
authorjixiuf <jixiuf@qq.com>2020-11-28 11:55:08 +0800
committerjixiuf <jixiuf@qq.com>2020-12-04 23:15:08 +0800
commit4afb7d0681ea79c9224b26976e545bb3a4a16370 (patch)
tree26fc874aab687c0e618c02647eccce414b843fa3 /vterm.el
parent0b8be604f7f8971e42aa13e5404a450edb5bc36d (diff)
do not call insert/delete-char/delete-region directly.
add function vterm--insert/vterm--delete-char/vterm--delete-region, add variables vterm--delete-region-function/vterm--insert-function/vterm--delete-char-function we can easily let bind these variables to change the behaviour of these functions
Diffstat (limited to 'vterm.el')
-rw-r--r--vterm.el27
1 files changed, 22 insertions, 5 deletions
diff --git a/vterm.el b/vterm.el
index b541bb6..64d81cc 100644
--- a/vterm.el
+++ b/vterm.el
@@ -454,6 +454,10 @@ Only background is used."
(defvar-local vterm--redraw-immididately nil)
(defvar-local vterm--linenum-remapping nil)
(defvar-local vterm--prompt-tracking-enabled-p nil)
+(defvar-local vterm--insert-function (symbol-function #'insert))
+(defvar-local vterm--delete-char-function (symbol-function #'delete-char))
+(defvar-local vterm--delete-region-function (symbol-function #'delete-region))
+
(defvar vterm-timer-delay 0.1
"Delay for refreshing the buffer after receiving updates from libvterm.
@@ -645,7 +649,7 @@ Exceptions are defined by `vterm-keymap-exceptions'."
:command
`("/bin/sh" "-c"
,(format
- "stty -nl sane %s erase ^? rows %d columns %d >/dev/null && exec %s"
+ "stty -nl sane %s erase ^? rows %d columns %d >/dev/null && exec %s"
;; Some stty implementations (i.e. that of *BSD) do not
;; support the iutf8 option. to handle that, we run some
;; heuristics to work out if the system supports that
@@ -954,6 +958,18 @@ Optional argument PASTE-P paste-p."
;;; Internal
+(defun vterm--delete-region(start end)
+ "A wrapper for `delete-region'."
+ (funcall vterm--delete-region-function start end))
+
+(defun vterm--insert(&rest content)
+ "A wrapper for `insert'."
+ (apply vterm--insert-function content))
+
+(defun vterm--delete-char(n &optional killflag)
+ "A wrapper for `delete-char'."
+ (funcall vterm--delete-char-function n killflag))
+
(defun vterm--invalidate ()
"The terminal buffer is invalidated, the buffer needs redrawing."
(if (and (not vterm--redraw-immididately)
@@ -1123,10 +1139,10 @@ If option DELETE-WHOLE-LINE is non-nil, then this command kills
the whole line including its terminating newline"
(save-excursion
(when (vterm--goto-line line-num)
- (delete-region (point) (point-at-eol count))
+ (vterm--delete-region (point) (point-at-eol count))
(when (and delete-whole-line
(looking-at "\n"))
- (delete-char 1)))))
+ (vterm--delete-char 1)))))
(defun vterm--goto-line (n)
"Go to line N and return true on success.
@@ -1346,12 +1362,13 @@ can find them and remove them."
(goto-char fake-newline)
(cl-assert (eq ?\n (char-after)))
(let ((inhibit-read-only t))
- (delete-char 1)))))
+ (vterm--delete-char 1)))))
+
(defun vterm--filter-buffer-substring (content)
"Filter string CONTENT of fake/injected newlines."
(with-temp-buffer
- (insert content)
+ (vterm--insert content)
(vterm--remove-fake-newlines)
(buffer-string)))