Subject: Add more S-SPC key bindings
From: Juri Linkov <[email-masked]>
To: [email-masked]
Date: Fri, 12 Jun 2015 02:36:21 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

After adding S-SPC to some modes in bug#2145
it's natural to expect S-SPC to be the reverse of SPC
to move in opposite direction, but in modes where SPC
moves point by one line, S-SPC unexpectedly moves back
a full screen (because it uses the default binding
scroll-down-command in special-mode).  This patch
binds S-SPC to line-oriented commands.

diff --git a/lisp/dired.el b/lisp/dired.el
index 02946e0..babdf35 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1541,7 +1541,8 @@ (defvar dired-mode-map
     (define-key map "<" 'dired-prev-dirline)
     (define-key map ">" 'dired-next-dirline)
     (define-key map "^" 'dired-up-directory)
-    (define-key map " "  'dired-next-line)
+    (define-key map " " 'dired-next-line)
+    (define-key map [?\S-\ ] 'dired-previous-line)
     (define-key map [remap next-line] 'dired-next-line)
     (define-key map [remap previous-line] 'dired-previous-line)
     ;; hiding
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index eb03a8b..87f1e05 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -271,6 +271,7 @@ (defvar vc-dir-mode-map
     (define-key map " " 'vc-dir-next-line)
     (define-key map "\t" 'vc-dir-next-directory)
     (define-key map "p" 'vc-dir-previous-line)
+    (define-key map [?\S-\ ] 'vc-dir-previous-line)
     (define-key map [backtab] 'vc-dir-previous-directory)
     ;;; Rebind paragraph-movement commands.
     (define-key map "\M-}" 'vc-dir-next-directory)
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 4df41b5..44d9a21 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -395,6 +395,7 @@ (defvar archive-mode-map
     (define-key map "o" 'archive-extract-other-window)
     (define-key map "p" 'archive-previous-line)
     (define-key map "\C-p" 'archive-previous-line)
+    (define-key map [?\S-\ ] 'archive-previous-line)
     (define-key map [up] 'archive-previous-line)
     (define-key map "r" 'archive-rename-entry)
     (define-key map "u" 'archive-unflag)
diff --git a/lisp/proced.el b/lisp/proced.el
index 69355ab..65bd243 100644
--- a/lisp/proced.el
+++ b/lisp/proced.el
@@ -463,6 +463,7 @@ (defvar proced-mode-map
     (define-key km "\C-n" 'next-line)
     (define-key km "\C-p" 'previous-line)
     (define-key km "\C-?" 'previous-line)
+    (define-key km [?\S-\ ] 'previous-line)
     (define-key km [down] 'next-line)
     (define-key km [up] 'previous-line)
     ;; marking