;;; x-win.el --- parse relevant switches and set up for X -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 1993, 1994, 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004,
+;; 2005 Free Software Foundation, Inc.
;; Author: FSF
;; Keywords: terminals, i18n
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; -font *font
;; -foreground *foreground
;; -geometry .geometry
-;; -i .iconType
-;; -itype .iconType
;; -iconic .iconic
;; -name .name
;; -reverse *reverseVideo
(require 'server)
(defvar x-invocation-args)
+(defvar x-keysym-table)
+(defvar x-selection-timeout)
+(defvar x-session-id)
+(defvar x-session-previous-id)
(defvar x-command-line-resources nil)
(let ((param (nth 3 aelt)))
(setq default-frame-alist
(cons (cons param
- (string-to-int (car x-invocation-args)))
+ (string-to-number (car x-invocation-args)))
default-frame-alist)
x-invocation-args
(cdr x-invocation-args))))))
\f
;;;; Function keys
-;; Map certain keypad keys into ASCII characters
-;; that people usually expect.
-(define-key function-key-map [backspace] [127])
-(define-key function-key-map [delete] [127])
-(define-key function-key-map [tab] [?\t])
-(define-key function-key-map [linefeed] [?\n])
-(define-key function-key-map [clear] [?\C-l])
-(define-key function-key-map [return] [?\C-m])
-(define-key function-key-map [escape] [?\e])
-(define-key function-key-map [M-backspace] [?\M-\d])
-(define-key function-key-map [M-delete] [?\M-\d])
-(define-key function-key-map [M-tab] [?\M-\t])
-(define-key function-key-map [M-linefeed] [?\M-\n])
-(define-key function-key-map [M-clear] [?\M-\C-l])
-(define-key function-key-map [M-return] [?\M-\C-m])
-(define-key function-key-map [M-escape] [?\M-\e])
-(define-key function-key-map [iso-lefttab] [backtab])
-(define-key function-key-map [S-iso-lefttab] [backtab])
+(defun x-setup-function-keys (frame)
+ "Set up `function-key-map' on FRAME for the X window system."
+ ;; Map certain keypad keys into ASCII characters that people usually expect.
+ (with-selected-frame frame
+ (define-key local-function-key-map [backspace] [127])
+ (define-key local-function-key-map [delete] [127])
+ (define-key local-function-key-map [tab] [?\t])
+ (define-key local-function-key-map [linefeed] [?\n])
+ (define-key local-function-key-map [clear] [?\C-l])
+ (define-key local-function-key-map [return] [?\C-m])
+ (define-key local-function-key-map [escape] [?\e])
+ (define-key local-function-key-map [M-backspace] [?\M-\d])
+ (define-key local-function-key-map [M-delete] [?\M-\d])
+ (define-key local-function-key-map [M-tab] [?\M-\t])
+ (define-key local-function-key-map [M-linefeed] [?\M-\n])
+ (define-key local-function-key-map [M-clear] [?\M-\C-l])
+ (define-key local-function-key-map [M-return] [?\M-\C-m])
+ (define-key local-function-key-map [M-escape] [?\M-\e])
+ (define-key local-function-key-map [iso-lefttab] [backtab])
+ (define-key local-function-key-map [S-iso-lefttab] [backtab])))
;; These tell read-char how to convert
;; these special chars to ASCII.
(#x5f1 . ?\e,Gq\e(B)
(#x5f2 . ?\e,Gr\e(B)
;; Cyrillic
+ (#x680 . ?\e$,1)R\e(B)
+ (#x681 . ?\e$,1)V\e(B)
+ (#x682 . ?\e$,1)Z\e(B)
+ (#x683 . ?\e$,1)\\e(B)
+ (#x684 . ?\e$,1)b\e(B)
+ (#x685 . ?\e$,1)n\e(B)
+ (#x686 . ?\e$,1)p\e(B)
+ (#x687 . ?\e$,1)r\e(B)
+ (#x688 . ?\e$,1)v\e(B)
+ (#x689 . ?\e$,1)x\e(B)
+ (#x68a . ?\e$,1)z\e(B)
+ (#x68c . ?\e$,1*8\e(B)
+ (#x68d . ?\e$,1*B\e(B)
+ (#x68e . ?\e$,1*H\e(B)
+ (#x68f . ?\e$,1*N\e(B)
+ (#x690 . ?\e$,1)S\e(B)
+ (#x691 . ?\e$,1)W\e(B)
+ (#x692 . ?\e$,1)[\e(B)
+ (#x693 . ?\e$,1)]\e(B)
+ (#x694 . ?\e$,1)c\e(B)
+ (#x695 . ?\e$,1)o\e(B)
+ (#x696 . ?\e$,1)q\e(B)
+ (#x697 . ?\e$,1)s\e(B)
+ (#x698 . ?\e$,1)w\e(B)
+ (#x699 . ?\e$,1)y\e(B)
+ (#x69a . ?\e$,1){\e(B)
+ (#x69c . ?\e$,1*9\e(B)
+ (#x69d . ?\e$,1*C\e(B)
+ (#x69e . ?\e$,1*I\e(B)
+ (#x69f . ?\e$,1*O\e(B)
(#x6a1 . ?\e,Lr\e(B)
(#x6a2 . ?\e,Ls\e(B)
(#x6a3 . ?\e,Lq\e(B)
ctext
utf8)))))
+;; Get a selection value of type TYPE by calling x-get-selection with
+;; an appropiate DATA-TYPE argument decidd by `x-select-request-type'.
+;; The return value is already decoded. If x-get-selection causes an
+;; error, this function return nil.
+
(defun x-selection-value (type)
(let (text)
(cond ((null x-select-request-type)
(if text
(remove-text-properties 0 (length text) '(foreign-selection nil) text))
text))
-
+
;;; Return the value of the current X selection.
;;; Consult the selection, and the cut buffer. Treat empty strings
;;; as if they were unset.
(defun x-clipboard-yank ()
"Insert the clipboard contents, or the last stretch of killed text."
(interactive)
- (let ((clipboard-text
- (condition-case nil
- (x-get-selection 'CLIPBOARD)
- (error nil)))
+ (let ((clipboard-text (x-selection-value 'CLIPBOARD))
(x-select-enable-clipboard t))
(if (and clipboard-text (> (length clipboard-text) 0))
(kill-new clipboard-text))