diff options
| author | Paul Eggert | 2018-08-21 13:44:03 -0700 |
|---|---|---|
| committer | Paul Eggert | 2018-08-21 13:44:32 -0700 |
| commit | f18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd (patch) | |
| tree | 5f42e48e12a0ec77bd5cd5f32255a534635e89bf /lisp/term | |
| parent | 81e7eef8224c8a99a207b7a7b9dae1d598392ef7 (diff) | |
| download | emacs-f18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd.tar.gz emacs-f18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd.zip | |
Audit use of lsh and fix glitches
I audited use of lsh in the Lisp source code, and fixed the
glitches that I found. While I was at it, I replaced uses of lsh
with ash when either will do. Replacement is OK when either
argument is known to be nonnegative, or when only the low-order
bits of the result matter, and is a (minor) win since ash is a bit
more solid than lsh nowadays, and is a bit faster.
* lisp/calc/calc-ext.el (math-check-fixnum):
Prefer most-positive-fixnum to (lsh -1 -1).
* lisp/vc/vc-hg.el (vc-hg-state-fast): When testing fixnum width,
prefer (zerop (ash most-positive-fixnum -32)) to (zerop (lsh -1
32)) (Bug#32485#11).
* lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode):
Tighten sanity-check for bytecode overflow, by checking that the
result of (ash pc -8) is nonnegative. Formerly this check was not
needed since lsh was used and the number overflowed differently.
* lisp/net/dns.el (dns-write): Fix some obvious sign typos in
shift counts. Evidently this part of the code has never been
exercised.
* lisp/progmodes/hideif.el (hif-shiftleft, hif-shiftright):
* lisp/term/common-win.el (x-setup-function-keys):
Simplify.
* admin/unidata/unidata-gen.el, admin/unidata/uvs.el:
* doc/lispref/keymaps.texi, doc/lispref/syntax.texi:
* doc/misc/calc.texi, doc/misc/cl.texi, etc/NEWS.19:
* lisp/arc-mode.el, lisp/calc/calc-bin.el, lisp/calc/calc-comb.el:
* lisp/calc/calc-ext.el, lisp/calc/calc-math.el:
* lisp/cedet/semantic/wisent/comp.el, lisp/composite.el:
* lisp/disp-table.el, lisp/dos-fns.el, lisp/edmacro.el:
* lisp/emacs-lisp/bindat.el, lisp/emacs-lisp/byte-opt.el:
* lisp/emacs-lisp/bytecomp.el, lisp/emacs-lisp/cl-extra.el:
* lisp/erc/erc-dcc.el, lisp/facemenu.el, lisp/gnus/message.el:
* lisp/gnus/nndoc.el, lisp/gnus/nnmaildir.el, lisp/image.el:
* lisp/international/ccl.el, lisp/international/fontset.el:
* lisp/international/mule-cmds.el, lisp/international/mule.el:
* lisp/json.el, lisp/mail/binhex.el, lisp/mail/rmail.el:
* lisp/mail/uudecode.el, lisp/md4.el, lisp/net/dns.el:
* lisp/net/ntlm.el, lisp/net/sasl.el, lisp/net/socks.el:
* lisp/net/tramp.el, lisp/obsolete/levents.el:
* lisp/obsolete/pgg-parse.el, lisp/org/org.el:
* lisp/org/ox-publish.el, lisp/progmodes/cc-defs.el:
* lisp/progmodes/ebnf2ps.el, lisp/progmodes/hideif.el:
* lisp/ps-bdf.el, lisp/ps-print.el, lisp/simple.el:
* lisp/tar-mode.el, lisp/term/common-win.el:
* lisp/term/tty-colors.el, lisp/term/xterm.el, lisp/vc/vc-git.el:
* lisp/vc/vc-hg.el, lisp/x-dnd.el, test/src/data-tests.el:
Prefer ash to lsh when either will do.
Diffstat (limited to 'lisp/term')
| -rw-r--r-- | lisp/term/common-win.el | 28 | ||||
| -rw-r--r-- | lisp/term/tty-colors.el | 20 | ||||
| -rw-r--r-- | lisp/term/xterm.el | 2 |
3 files changed, 25 insertions, 25 deletions
diff --git a/lisp/term/common-win.el b/lisp/term/common-win.el index 6ef686a996f..a482067ef39 100644 --- a/lisp/term/common-win.el +++ b/lisp/term/common-win.el | |||
| @@ -59,20 +59,20 @@ | |||
| 59 | (setq system-key-alist | 59 | (setq system-key-alist |
| 60 | (list | 60 | (list |
| 61 | ;; These are special "keys" used to pass events from C to lisp. | 61 | ;; These are special "keys" used to pass events from C to lisp. |
| 62 | (cons (logior (lsh 0 16) 1) 'ns-power-off) | 62 | (cons 1 'ns-power-off) |
| 63 | (cons (logior (lsh 0 16) 2) 'ns-open-file) | 63 | (cons 2 'ns-open-file) |
| 64 | (cons (logior (lsh 0 16) 3) 'ns-open-temp-file) | 64 | (cons 3 'ns-open-temp-file) |
| 65 | (cons (logior (lsh 0 16) 4) 'ns-drag-file) | 65 | (cons 4 'ns-drag-file) |
| 66 | (cons (logior (lsh 0 16) 5) 'ns-drag-color) | 66 | (cons 5 'ns-drag-color) |
| 67 | (cons (logior (lsh 0 16) 6) 'ns-drag-text) | 67 | (cons 6 'ns-drag-text) |
| 68 | (cons (logior (lsh 0 16) 7) 'ns-change-font) | 68 | (cons 7 'ns-change-font) |
| 69 | (cons (logior (lsh 0 16) 8) 'ns-open-file-line) | 69 | (cons 8 'ns-open-file-line) |
| 70 | ;;; (cons (logior (lsh 0 16) 9) 'ns-insert-working-text) | 70 | ;;; (cons 9 'ns-insert-working-text) |
| 71 | ;;; (cons (logior (lsh 0 16) 10) 'ns-delete-working-text) | 71 | ;;; (cons 10 'ns-delete-working-text) |
| 72 | (cons (logior (lsh 0 16) 11) 'ns-spi-service-call) | 72 | (cons 11 'ns-spi-service-call) |
| 73 | (cons (logior (lsh 0 16) 12) 'ns-new-frame) | 73 | (cons 12 'ns-new-frame) |
| 74 | (cons (logior (lsh 0 16) 13) 'ns-toggle-toolbar) | 74 | (cons 13 'ns-toggle-toolbar) |
| 75 | (cons (logior (lsh 0 16) 14) 'ns-show-prefs) | 75 | (cons 14 'ns-show-prefs) |
| 76 | )))) | 76 | )))) |
| 77 | (set-terminal-parameter frame 'x-setup-function-keys t))) | 77 | (set-terminal-parameter frame 'x-setup-function-keys t))) |
| 78 | 78 | ||
diff --git a/lisp/term/tty-colors.el b/lisp/term/tty-colors.el index a776c830a25..d9b272693b0 100644 --- a/lisp/term/tty-colors.el +++ b/lisp/term/tty-colors.el | |||
| @@ -830,10 +830,10 @@ DISPLAY can be a display name or a frame, and defaults to the | |||
| 830 | selected frame's display. | 830 | selected frame's display. |
| 831 | If DISPLAY is not on a 24-but TTY terminal, return nil." | 831 | If DISPLAY is not on a 24-but TTY terminal, return nil." |
| 832 | (when (and rgb (= (display-color-cells display) 16777216)) | 832 | (when (and rgb (= (display-color-cells display) 16777216)) |
| 833 | (let ((r (lsh (car rgb) -8)) | 833 | (let ((r (ash (car rgb) -8)) |
| 834 | (g (lsh (cadr rgb) -8)) | 834 | (g (ash (cadr rgb) -8)) |
| 835 | (b (lsh (nth 2 rgb) -8))) | 835 | (b (ash (nth 2 rgb) -8))) |
| 836 | (logior (lsh r 16) (lsh g 8) b)))) | 836 | (logior (ash r 16) (ash g 8) b)))) |
| 837 | 837 | ||
| 838 | (defun tty-color-define (name index &optional rgb frame) | 838 | (defun tty-color-define (name index &optional rgb frame) |
| 839 | "Specify a tty color by its NAME, terminal INDEX and RGB values. | 839 | "Specify a tty color by its NAME, terminal INDEX and RGB values. |
| @@ -895,9 +895,9 @@ FRAME defaults to the selected frame." | |||
| 895 | ;; never consider it for approximating another color. | 895 | ;; never consider it for approximating another color. |
| 896 | (if try-rgb | 896 | (if try-rgb |
| 897 | (progn | 897 | (progn |
| 898 | (setq try-r (lsh (car try-rgb) -8) | 898 | (setq try-r (ash (car try-rgb) -8) |
| 899 | try-g (lsh (cadr try-rgb) -8) | 899 | try-g (ash (cadr try-rgb) -8) |
| 900 | try-b (lsh (nth 2 try-rgb) -8)) | 900 | try-b (ash (nth 2 try-rgb) -8)) |
| 901 | (setq dif-r (- r try-r) | 901 | (setq dif-r (- r try-r) |
| 902 | dif-g (- g try-g) | 902 | dif-g (- g try-g) |
| 903 | dif-b (- b try-b)) | 903 | dif-b (- b try-b)) |
| @@ -938,13 +938,13 @@ should be the same regardless of what display is being used." | |||
| 938 | (i2 (+ i1 ndig)) | 938 | (i2 (+ i1 ndig)) |
| 939 | (i3 (+ i2 ndig))) | 939 | (i3 (+ i2 ndig))) |
| 940 | (list | 940 | (list |
| 941 | (lsh | 941 | (ash |
| 942 | (string-to-number (substring color i1 i2) 16) | 942 | (string-to-number (substring color i1 i2) 16) |
| 943 | (* 4 (- 4 ndig))) | 943 | (* 4 (- 4 ndig))) |
| 944 | (lsh | 944 | (ash |
| 945 | (string-to-number (substring color i2 i3) 16) | 945 | (string-to-number (substring color i2 i3) 16) |
| 946 | (* 4 (- 4 ndig))) | 946 | (* 4 (- 4 ndig))) |
| 947 | (lsh | 947 | (ash |
| 948 | (string-to-number (substring color i3) 16) | 948 | (string-to-number (substring color i3) 16) |
| 949 | (* 4 (- 4 ndig)))))) | 949 | (* 4 (- 4 ndig)))))) |
| 950 | ((and (>= len 9) ;; X-style RGB:xx/yy/zz color spec | 950 | ((and (>= len 9) ;; X-style RGB:xx/yy/zz color spec |
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el index ce4e18efff8..00747afbdce 100644 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el | |||
| @@ -1009,7 +1009,7 @@ hitting screen's max DCS length." | |||
| 1009 | 1009 | ||
| 1010 | (defun xterm-rgb-convert-to-16bit (prim) | 1010 | (defun xterm-rgb-convert-to-16bit (prim) |
| 1011 | "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value." | 1011 | "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value." |
| 1012 | (logior prim (lsh prim 8))) | 1012 | (logior prim (ash prim 8))) |
| 1013 | 1013 | ||
| 1014 | (defun xterm-register-default-colors (colors) | 1014 | (defun xterm-register-default-colors (colors) |
| 1015 | "Register the default set of colors for xterm or compatible emulator. | 1015 | "Register the default set of colors for xterm or compatible emulator. |