Markus Triska <markus.triska at gmx.at>:
(byte-compile-char-before): Improve numeric argument case. (byte-compile-backward-char, byte-compile-backward-word): New functions, performing rewriting previously done in byte-opt.el. Fix their "Fixme" item (restriction to numeric arguments).
This commit is contained in:
parent
6f7e29f1d2
commit
a746fb658b
1 changed files with 27 additions and 4 deletions
|
@ -3149,6 +3149,8 @@ That command is designed for interactive use only" fn))
|
|||
;; more complicated compiler macros
|
||||
|
||||
(byte-defop-compiler char-before)
|
||||
(byte-defop-compiler backward-char)
|
||||
(byte-defop-compiler backward-word)
|
||||
(byte-defop-compiler list)
|
||||
(byte-defop-compiler concat)
|
||||
(byte-defop-compiler fset)
|
||||
|
@ -3162,10 +3164,31 @@ That command is designed for interactive use only" fn))
|
|||
|
||||
(defun byte-compile-char-before (form)
|
||||
(cond ((= 2 (length form))
|
||||
(byte-compile-form `(char-after (1- ,(nth 1 form)))))
|
||||
((= 1 (length form))
|
||||
(byte-compile-form '(char-after (1- (point)))))
|
||||
(t (byte-compile-subr-wrong-args form "0-1"))))
|
||||
(byte-compile-form (list 'char-after (if (numberp (nth 1 form))
|
||||
(1- (nth 1 form))
|
||||
`(1- ,(nth 1 form))))))
|
||||
((= 1 (length form))
|
||||
(byte-compile-form '(char-after (1- (point)))))
|
||||
(t (byte-compile-subr-wrong-args form "0-1"))))
|
||||
|
||||
;; backward-... ==> forward-... with negated argument.
|
||||
(defun byte-compile-backward-char (form)
|
||||
(cond ((= 2 (length form))
|
||||
(byte-compile-form (list 'forward-char (if (numberp (nth 1 form))
|
||||
(- (nth 1 form))
|
||||
`(- ,(nth 1 form))))))
|
||||
((= 1 (length form))
|
||||
(byte-compile-form '(forward-char -1)))
|
||||
(t (byte-compile-subr-wrong-args form "0-1"))))
|
||||
|
||||
(defun byte-compile-backward-word (form)
|
||||
(cond ((= 2 (length form))
|
||||
(byte-compile-form (list 'forward-word (if (numberp (nth 1 form))
|
||||
(- (nth 1 form))
|
||||
`(- ,(nth 1 form))))))
|
||||
((= 1 (length form))
|
||||
(byte-compile-form '(forward-word -1)))
|
||||
(t (byte-compile-subr-wrong-args form "0-1"))))
|
||||
|
||||
(defun byte-compile-list (form)
|
||||
(let ((count (length (cdr form))))
|
||||
|
|
Loading…
Add table
Reference in a new issue