@@ -158,6 +158,8 @@ the executable."
158158(require 'color )
159159(require 'compile )
160160(require 'face-remap )
161+ (require 'dabbrev )
162+ (require 'thingatpt )
161163
162164; ;; Options
163165
@@ -515,6 +517,7 @@ Exceptions are defined by `vterm-keymap-exceptions'."
515517 (define-key map (kbd " S-SPC" ) #'vterm-send-space )
516518 (define-key map (kbd " C-_" ) #'vterm--self-insert )
517519 (define-key map (kbd " C-/" ) #'vterm-undo )
520+ (define-key map (kbd " M-/" ) #'vterm-dabbrev-expand )
518521 (define-key map (kbd " M-." ) #'vterm-send-meta-dot )
519522 (define-key map (kbd " M-," ) #'vterm-send-meta-comma )
520523 (define-key map (kbd " C-c C-y" ) #'vterm--self-insert )
@@ -1259,5 +1262,23 @@ can find them and remove them."
12591262 (vterm--remove-fake-newlines)
12601263 (buffer-string )))
12611264
1265+ (defun vterm-dabbrev-expand-wrapper ()
1266+ " Return `dabbrev-expand' result."
1267+ (save-current-buffer
1268+ (setq-local buffer-read-only nil )
1269+ (call-interactively #'dabbrev-expand )
1270+ (thing-at-point 'symbol )))
1271+
1272+ ;;;### autoload
1273+ (defun vterm-dabbrev-expand ()
1274+ " Provide similar behavior as `dabbrev-expand' ."
1275+ (interactive )
1276+ (let ((symbol (thing-at-point 'symbol )))
1277+ (if symbol
1278+ (progn (dotimes (i (length symbol))
1279+ (vterm-send-backspace))
1280+ (vterm-send-string (vterm-dabbrev-expand-wrapper) t ))
1281+ (vterm-send-string (vterm-dabbrev-expand-wrapper) t ))))
1282+
12621283(provide 'vterm )
12631284; ;; vterm.el ends here
0 commit comments