]> code.delx.au - gnu-emacs/blobdiff - lisp/bindings.el
Merge from emacs-23
[gnu-emacs] / lisp / bindings.el
index d6270c458f1d17e4eb045efe5f39dd940b7879d2..040b1afea835281144d8e0bbf6d90f7d8136b3dc 100644 (file)
@@ -6,6 +6,7 @@
 
 ;; Maintainer: FSF
 ;; Keywords: internal
+;; Package: emacs
 
 ;; This file is part of GNU Emacs.
 
@@ -62,24 +63,6 @@ corresponding to the mode line clicked."
     (force-mode-line-update)))
 
 
-(defun mode-line-abbrev-mode (event)
-  "Turn off `abbrev-mode' from the mode-line."
-  (interactive "e")
-  (save-selected-window
-    (select-window (posn-window (event-start event)))
-    (abbrev-mode)
-    (force-mode-line-update)))
-
-
-(defun mode-line-auto-fill-mode (event)
-  "Turn off `auto-fill-mode' from the mode-line."
-  (interactive "e")
-  (save-selected-window
-    (select-window (posn-window (event-start event)))
-    (auto-fill-mode)
-    (force-mode-line-update)))
-
-
 (defvar mode-line-input-method-map
   (let ((map (make-sparse-keymap)))
     (define-key map [mode-line mouse-2]
@@ -335,7 +318,7 @@ Keymap to display on column and line numbers.")
 mouse-2: Make current window occupy the whole frame\n\
 mouse-3: Remove current window from display")
        (recursive-edit-help-echo "Recursive edit, type C-M-c to get out")
-       (dashes (propertize "--" 'help-echo help-echo))
+       (spaces (propertize " " 'help-echo help-echo))
        (standard-mode-line-format
        (list
         "%e"
@@ -351,9 +334,10 @@ mouse-3: Remove current window from display")
         '(vc-mode vc-mode)
         (propertize "  " 'help-echo help-echo)
         'mode-line-modes
-        `(which-func-mode ("" which-func-format ,dashes))
-        `(global-mode-string ("" global-mode-string ,dashes))
-        (propertize "-%-" 'help-echo help-echo)))
+        `(which-func-mode ("" which-func-format ,spaces))
+        `(global-mode-string ("" global-mode-string ,spaces))
+        `(:eval (unless (display-graphic-p)
+                  ,(propertize "-%-" 'help-echo help-echo)))))
        (standard-mode-line-modes
        (list
         (propertize "%[" 'help-echo recursive-edit-help-echo)
@@ -379,7 +363,7 @@ mouse-3: Toggle minor modes"
                                 'mouse-2 #'mode-line-widen))
         (propertize ")" 'help-echo help-echo)
         (propertize "%]" 'help-echo recursive-edit-help-echo)
-        (propertize "--" 'help-echo help-echo)))
+        spaces))
 
        (standard-mode-line-position
        `((-3 ,(propertize
@@ -672,28 +656,14 @@ is okay.  See `mode-line-format'.")
 (define-key esc-map "\t" 'complete-symbol)
 
 (defun complete-symbol (arg)
-  "Perform tags completion on the text around point.
-If a tags table is loaded, call `complete-tag'.
-Otherwise, if Semantic is active, call `semantic-ia-complete-symbol'.
+  "Perform completion on the text around point.
+The completion method is determined by `completion-at-point-functions'.
 
 With a prefix argument, this command does completion within
 the collection of symbols listed in the index of the manual for the
 language you are using."
   (interactive "P")
-  (cond (arg
-        (info-complete-symbol))
-       ((or tags-table-list tags-file-name)
-        (complete-tag))
-       ((and (fboundp 'semantic-ia-complete-symbol)
-             (fboundp 'semantic-active-p)
-             (semantic-active-p))
-        (semantic-ia-complete-symbol))
-        (completion-at-point-functions (completion-at-point))
-       (t
-        (error "%s"
-               (substitute-command-keys
-                "No completions available; use \\[visit-tags-table] \
-or \\[semantic-mode]")))))
+  (if arg (info-complete-symbol) (completion-at-point)))
 
 ;; Reduce total amount of space we must allocate during this function
 ;; that we will not need to keep permanently.
@@ -720,6 +690,63 @@ or \\[semantic-mode]")))))
 ;but they are not assigned to keys there.
 (put 'narrow-to-region 'disabled t)
 
+;; Moving with arrows in bidi-sensitive direction.
+(defun right-char (&optional n)
+  "Move point N characters to the right (to the left if N is negative).
+On reaching beginning or end of buffer, stop and signal error.
+
+Depending on the bidirectional context, this may move either forward
+or backward in the buffer.  This is in contrast with \\[forward-char]
+and \\[backward-char], which see."
+  (interactive "^p")
+  (if (eq (current-bidi-paragraph-direction) 'left-to-right)
+      (forward-char n)
+    (backward-char n)))
+
+(defun left-char ( &optional n)
+  "Move point N characters to the left (to the right if N is negative).
+On reaching beginning or end of buffer, stop and signal error.
+
+Depending on the bidirectional context, this may move either backward
+or forward in the buffer.  This is in contrast with \\[backward-char]
+and \\[forward-char], which see."
+  (interactive "^p")
+  (if (eq (current-bidi-paragraph-direction) 'left-to-right)
+      (backward-char n)
+    (forward-char n)))
+
+(defun right-word (&optional n)
+  "Move point N words to the right (to the left if N is negative).
+
+Depending on the bidirectional context, this may move either forward
+or backward in the buffer.  This is in contrast with \\[forward-word]
+and \\[backward-word], which see.
+
+Value is normally t.
+If an edge of the buffer or a field boundary is reached, point is left there
+there and the function returns nil.  Field boundaries are not noticed
+if `inhibit-field-text-motion' is non-nil."
+  (interactive "^p")
+  (if (eq (current-bidi-paragraph-direction) 'left-to-right)
+      (forward-word n)
+    (backward-word n)))
+
+(defun left-word (&optional n)
+  "Move point N words to the left (to the right if N is negative).
+
+Depending on the bidirectional context, this may move either backward
+or forward in the buffer.  This is in contrast with \\[backward-word]
+and \\[forward-word], which see.
+
+Value is normally t.
+If an edge of the buffer or a field boundary is reached, point is left there
+there and the function returns nil.  Field boundaries are not noticed
+if `inhibit-field-text-motion' is non-nil."
+  (interactive "^p")
+  (if (eq (current-bidi-paragraph-direction) 'left-to-right)
+      (backward-word n)
+    (forward-word n)))
+
 (defvar narrow-map (make-sparse-keymap)
   "Keymap for narrowing commands.")
 (define-key ctl-x-map "n" narrow-map)
@@ -807,6 +834,9 @@ or \\[semantic-mode]")))))
     (setq i (1+ i))))
 (define-key global-map [?\C-\M--] 'negative-argument)
 
+(define-key global-map "\177" 'delete-backward-char)
+(define-key global-map "\C-d" 'delete-char)
+
 (define-key global-map "\C-k" 'kill-line)
 (define-key global-map "\C-w" 'kill-region)
 (define-key esc-map "w" 'kill-ring-save)
@@ -870,12 +900,12 @@ or \\[semantic-mode]")))))
 (define-key global-map [C-home]                'beginning-of-buffer)
 (define-key global-map [M-home]                'beginning-of-buffer-other-window)
 (define-key esc-map    [home]          'beginning-of-buffer-other-window)
-(define-key global-map [left]          'backward-char)
+(define-key global-map [left]          'left-char)
 (define-key global-map [up]            'previous-line)
-(define-key global-map [right]         'forward-char)
+(define-key global-map [right]         'right-char)
 (define-key global-map [down]          'next-line)
-(define-key global-map [prior]         'scroll-down)
-(define-key global-map [next]          'scroll-up)
+(define-key global-map [prior]         'scroll-down-command)
+(define-key global-map [next]          'scroll-up-command)
 (define-key global-map [C-up]          'backward-paragraph)
 (define-key global-map [C-down]                'forward-paragraph)
 (define-key global-map [C-prior]       'scroll-right)
@@ -914,7 +944,7 @@ or \\[semantic-mode]")))))
 ;; (define-key global-map [clearline]  'function-key-error)
 (define-key global-map [insertline]    'open-line)
 (define-key global-map [deleteline]    'kill-line)
-(define-key global-map [deletechar]    'delete-char)
+(define-key global-map [deletechar]    'delete-forward-char)
 ;; (define-key global-map [backtab]    'function-key-error)
 ;; (define-key global-map [f1]         'function-key-error)
 ;; (define-key global-map [f2]         'function-key-error)
@@ -1075,8 +1105,8 @@ or \\[semantic-mode]")))))
 (global-set-key [M-left]   'backward-word)
 (define-key esc-map [left] 'backward-word)
 ;; ilya@math.ohio-state.edu says these bindings are standard on PC editors.
-(global-set-key [C-right]  'forward-word)
-(global-set-key [C-left]   'backward-word)
+(global-set-key [C-right]  'right-word)
+(global-set-key [C-left]   'left-word)
 ;; This is not quite compatible, but at least is analogous
 (global-set-key [C-delete] 'kill-word)
 (global-set-key [C-backspace] 'backward-kill-word)