diff options
author | Leo Liu <sdl.web@gmail.com> | 2015-06-23 09:19:36 +0800 |
---|---|---|
committer | Leo Liu <sdl.web@gmail.com> | 2015-06-23 09:19:36 +0800 |
commit | eccfc0a487787a7c1c2465c469becad983fc2810 (patch) | |
tree | cb3711c836c21c41c0b5cb88c852b0d617b8fd4e /lisp/shell.el | |
parent | 1b1b6644c8cb27539ca99e97ef2f352f411c06d8 (diff) | |
download | emacs-eccfc0a487787a7c1c2465c469becad983fc2810.tar.gz |
Fix shell-for/backward-command to exclude spaces
* lisp/shell.el (shell-forward-command, shell-backward-command):
Handle the 'move case from re-search-forward/backward.
fixes debbugs:20873
Diffstat (limited to 'lisp/shell.el')
-rw-r--r-- | lisp/shell.el | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/lisp/shell.el b/lisp/shell.el index f71d1407a49..f5cb3215a0a 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -83,8 +83,8 @@ ;; tab completion-at-point Complete filename/command/history ;; m-? comint-dynamic-list-filename-completions ;; List completions in help buffer -;; m-c-f shell-forward-command Forward a shell command -;; m-c-b shell-backward-command Backward a shell command +;; c-c c-f shell-forward-command Forward a shell command +;; c-c c-b shell-backward-command Backward a shell command ;; dirs Resync the buffer's dir stack ;; shell-dirtrack-mode Turn dir tracking on/off ;; comint-strip-ctrl-m Remove trailing ^Ms from output @@ -1092,10 +1092,12 @@ Copy Shell environment variable to Emacs: "))) "Move forward across ARG shell command(s). Does not cross lines. See `shell-command-regexp'." (interactive "p") - (let ((limit (line-end-position))) - (if (re-search-forward (concat shell-command-regexp "\\([;&|][\t ]*\\)+") - limit 'move arg) - (skip-syntax-backward " ")))) + (let ((limit (line-end-position)) + (pt (point))) + (re-search-forward (concat shell-command-regexp "\\([;&|][\t ]*\\)+") + limit 'move arg) + (and (/= pt (point)) + (skip-syntax-backward " " pt)))) (defun shell-backward-command (&optional arg) @@ -1106,10 +1108,13 @@ See `shell-command-regexp'." (when (> limit (point)) (setq limit (line-beginning-position))) (skip-syntax-backward " " limit) - (if (re-search-backward - (format "[;&|]+[\t ]*\\(%s\\)" shell-command-regexp) limit 'move arg) - (progn (goto-char (match-beginning 1)) - (skip-chars-forward ";&|"))))) + (let ((pt (point))) + (if (re-search-backward + (format "[;&|]+[\t ]*\\(%s\\)" shell-command-regexp) limit 'move arg) + (progn (goto-char (match-beginning 1)) + (skip-chars-forward ";&|"))) + (and (/= pt (point)) + (skip-syntax-forward " " pt))))) (defun shell-dynamic-complete-command () "Dynamically complete the command at point. |