diff options
| author | Daniel Colascione | 2012-09-17 03:57:03 -0800 |
|---|---|---|
| committer | Daniel Colascione | 2012-09-17 03:57:03 -0800 |
| commit | f701ab72dd55460d23c8b029550aa4d7ecef3cfa (patch) | |
| tree | 102096ca8ca013f1f90f35154c78e78f9b40cc6c /lisp | |
| parent | efc3dd3ccceae28db0a3fde54ed00478ff77c2e2 (diff) | |
| download | emacs-f701ab72dd55460d23c8b029550aa4d7ecef3cfa.tar.gz emacs-f701ab72dd55460d23c8b029550aa4d7ecef3cfa.zip | |
Add files somehow forgotten by bzr git-apply.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/w32-common-fns.el | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/lisp/w32-common-fns.el b/lisp/w32-common-fns.el new file mode 100644 index 00000000000..fc045683394 --- /dev/null +++ b/lisp/w32-common-fns.el | |||
| @@ -0,0 +1,130 @@ | |||
| 1 | ;;; w32-common-fns.el --- Lisp routines for Windows and Cygwin-w32 | ||
| 2 | |||
| 3 | ;; Copyright (C) 1994, 2001-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | ||
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 10 | ;; (at your option) any later version. | ||
| 11 | |||
| 12 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | ;; GNU General Public License for more details. | ||
| 16 | |||
| 17 | ;; You should have received a copy of the GNU General Public License | ||
| 18 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | |||
| 20 | ;;; Commentary: | ||
| 21 | ;;; | ||
| 22 | ;;; This file contains functions that are used by both native NT Emacs | ||
| 23 | ;;; and Cygwin Emacs compiled to use the native Windows widget | ||
| 24 | ;;; library. | ||
| 25 | |||
| 26 | (defun w32-version () | ||
| 27 | "Return the MS-Windows version numbers. | ||
| 28 | The value is a list of three integers: the major and minor version | ||
| 29 | numbers, and the build number." | ||
| 30 | (x-server-version)) | ||
| 31 | |||
| 32 | (defun w32-using-nt () | ||
| 33 | "Return non-nil if running on a Windows NT descendant. | ||
| 34 | That includes all Windows systems except for 9X/Me." | ||
| 35 | (getenv "SystemRoot")) | ||
| 36 | |||
| 37 | (declare-function w32-get-clipboard-data "w32select.c") | ||
| 38 | (declare-function w32-set-clipboard-data "w32select.c") | ||
| 39 | (declare-function x-server-version "w32fns.c" (&optional display)) | ||
| 40 | |||
| 41 | ;;; Fix interface to (X-specific) mouse.el | ||
| 42 | (defun x-set-selection (type data) | ||
| 43 | "Make an X selection of type TYPE and value DATA. | ||
| 44 | The argument TYPE (nil means `PRIMARY') says which selection, and | ||
| 45 | DATA specifies the contents. TYPE must be a symbol. \(It can also | ||
| 46 | be a string, which stands for the symbol with that name, but this | ||
| 47 | is considered obsolete.) DATA may be a string, a symbol, an | ||
| 48 | integer (or a cons of two integers or list of two integers). | ||
| 49 | |||
| 50 | The selection may also be a cons of two markers pointing to the same buffer, | ||
| 51 | or an overlay. In these cases, the selection is considered to be the text | ||
| 52 | between the markers *at whatever time the selection is examined*. | ||
| 53 | Thus, editing done in the buffer after you specify the selection | ||
| 54 | can alter the effective value of the selection. | ||
| 55 | |||
| 56 | The data may also be a vector of valid non-vector selection values. | ||
| 57 | |||
| 58 | The return value is DATA. | ||
| 59 | |||
| 60 | Interactively, this command sets the primary selection. Without | ||
| 61 | prefix argument, it reads the selection in the minibuffer. With | ||
| 62 | prefix argument, it uses the text of the region as the selection value. | ||
| 63 | |||
| 64 | Note that on MS-Windows, primary and secondary selections set by Emacs | ||
| 65 | are not available to other programs." | ||
| 66 | (put 'x-selections (or type 'PRIMARY) data)) | ||
| 67 | |||
| 68 | (defun x-get-selection (&optional type _data-type) | ||
| 69 | "Return the value of an X Windows selection. | ||
| 70 | The argument TYPE (default `PRIMARY') says which selection, | ||
| 71 | and the argument DATA-TYPE (default `STRING') says | ||
| 72 | how to convert the data. | ||
| 73 | |||
| 74 | TYPE may be any symbol \(but nil stands for `PRIMARY'). However, | ||
| 75 | only a few symbols are commonly used. They conventionally have | ||
| 76 | all upper-case names. The most often used ones, in addition to | ||
| 77 | `PRIMARY', are `SECONDARY' and `CLIPBOARD'. | ||
| 78 | |||
| 79 | DATA-TYPE is usually `STRING', but can also be one of the symbols | ||
| 80 | in `selection-converter-alist', which see." | ||
| 81 | (get 'x-selections (or type 'PRIMARY))) | ||
| 82 | |||
| 83 | ;; x-selection-owner-p is used in simple.el | ||
| 84 | (defun x-selection-owner-p (&optional type) | ||
| 85 | (and (memq type '(nil PRIMARY SECONDARY)) | ||
| 86 | (get 'x-selections (or type 'PRIMARY)))) | ||
| 87 | |||
| 88 | ;; The "Windows" keys on newer keyboards bring up the Start menu | ||
| 89 | ;; whether you want it or not - make Emacs ignore these keystrokes | ||
| 90 | ;; rather than beep. | ||
| 91 | (global-set-key [lwindow] 'ignore) | ||
| 92 | (global-set-key [rwindow] 'ignore) | ||
| 93 | |||
| 94 | (defvar w32-charset-info-alist) ; w32font.c | ||
| 95 | |||
| 96 | |||
| 97 | ;;;; Selections | ||
| 98 | |||
| 99 | ;; We keep track of the last text selected here, so we can check the | ||
| 100 | ;; current selection against it, and avoid passing back our own text | ||
| 101 | ;; from x-selection-value. | ||
| 102 | (defvar x-last-selected-text nil) | ||
| 103 | |||
| 104 | (defun x-get-selection-value () | ||
| 105 | "Return the value of the current selection. | ||
| 106 | Consult the selection. Treat empty strings as if they were unset." | ||
| 107 | (if x-select-enable-clipboard | ||
| 108 | (let (text) | ||
| 109 | ;; Don't die if x-get-selection signals an error. | ||
| 110 | (condition-case c | ||
| 111 | (setq text (w32-get-clipboard-data)) | ||
| 112 | (error (message "w32-get-clipboard-data:%s" c))) | ||
| 113 | (if (string= text "") (setq text nil)) | ||
| 114 | (cond | ||
| 115 | ((not text) nil) | ||
| 116 | ((eq text x-last-selected-text) nil) | ||
| 117 | ((string= text x-last-selected-text) | ||
| 118 | ;; Record the newer string, so subsequent calls can use the 'eq' test. | ||
| 119 | (setq x-last-selected-text text) | ||
| 120 | nil) | ||
| 121 | (t | ||
| 122 | (setq x-last-selected-text text)))))) | ||
| 123 | |||
| 124 | (defalias 'x-selection-value 'x-get-selection-value) | ||
| 125 | |||
| 126 | ;; Arrange for the kill and yank functions to set and check the clipboard. | ||
| 127 | (setq interprogram-cut-function 'x-select-text) | ||
| 128 | (setq interprogram-paste-function 'x-get-selection-value) | ||
| 129 | |||
| 130 | (provide 'w32-common-fns) | ||