aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/term
diff options
context:
space:
mode:
authorPaul Eggert2018-08-21 13:44:03 -0700
committerPaul Eggert2018-08-21 13:44:32 -0700
commitf18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd (patch)
tree5f42e48e12a0ec77bd5cd5f32255a534635e89bf /lisp/term
parent81e7eef8224c8a99a207b7a7b9dae1d598392ef7 (diff)
downloademacs-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.el28
-rw-r--r--lisp/term/tty-colors.el20
-rw-r--r--lisp/term/xterm.el2
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
830selected frame's display. 830selected frame's display.
831If DISPLAY is not on a 24-but TTY terminal, return nil." 831If 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.