Mercurial > hg > xemacs-beta
changeset 5097:4a6b680a9577
merge
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Thu, 04 Mar 2010 07:26:05 -0600 |
parents | e0587c615e8b (current diff) 99f8ebc082d9 (diff) |
children | e402e3506a53 3d91f0b64469 |
files | man/ChangeLog src/ChangeLog src/bytecode.c src/lisp.h |
diffstat | 21 files changed, 104 insertions(+), 61 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Thu Mar 04 07:19:03 2010 -0600 +++ b/lisp/ChangeLog Thu Mar 04 07:26:05 2010 -0600 @@ -1,3 +1,13 @@ +2010-03-03 Aidan Kehoe <kehoea@parhasard.net> + + Move byte code #o117 to #'subseq, not #'substring. + Make #'substring available as an alias for #'subseq in Lisp. + * bytecomp.el (79, subseq, substring): + * bytecomp.el (byte-compile-subseq): New. + * update-elc.el (update-elc-chop-extension): Use #'subseq, not + #'substring, the latter is not yet available. + * subr.el (substring): New alias, to #'subseq. + 2010-03-02 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (delete-dups): New compiler macro for this function,
--- a/lisp/bytecomp.el Thu Mar 04 07:19:03 2010 -0600 +++ b/lisp/bytecomp.el Thu Mar 04 07:26:05 2010 -0600 @@ -609,7 +609,7 @@ (byte-defop 76 -1 byte-set) (byte-defop 77 -1 byte-fset) ; this was commented out (byte-defop 78 -1 byte-get) -(byte-defop 79 -2 byte-substring) +(byte-defop 79 -2 byte-subseq) (byte-defop 80 -1 byte-concat2) (byte-defop 81 -2 byte-concat3) (byte-defop 82 -3 byte-concat4) @@ -3111,7 +3111,8 @@ (byte-defop-compiler aref 2) (byte-defop-compiler get 2+1) (byte-defop-compiler nth 2) -(byte-defop-compiler substring 2-3) +(byte-defop-compiler subseq byte-compile-subseq) +(byte-defop-compiler (substring byte-subseq) 2-3) (byte-defop-compiler (move-marker byte-set-marker) 2-3) (byte-defop-compiler set-marker 2-3) (byte-defop-compiler match-beginning 1) @@ -3524,6 +3525,12 @@ the syntax (function (lambda (...) ...)) instead.")))) (byte-compile-two-args form)) +(defun byte-compile-subseq (form) + (byte-compile-two-or-three-args form) + ;; Check that XEmacs supports the substring-subseq equivalence. + (pushnew '(eq 'subseq (symbol-function 'substring)) + byte-compile-checks-on-load :test #'equal)) + (defmacro byte-compile-funarg-n (&rest n) `#'(lambda (form) ,@(loop
--- a/lisp/subr.el Thu Mar 04 07:19:03 2010 -0600 +++ b/lisp/subr.el Thu Mar 04 07:26:05 2010 -0600 @@ -220,6 +220,9 @@ (define-function 'send-string-to-terminal 'external-debugging-output) (define-function 'special-form-p 'special-operator-p) +;; XEmacs; this is in Lisp, its bytecode now taken by subseq. +(define-function 'substring 'subseq) + ;; XEmacs: (defun local-variable-if-set-p (sym buffer) "Return t if SYM would be local to BUFFER after it is set.
--- a/lisp/update-elc.el Thu Mar 04 07:19:03 2010 -0600 +++ b/lisp/update-elc.el Thu Mar 04 07:26:05 2010 -0600 @@ -137,7 +137,7 @@ (defun update-elc-chop-extension (file) (if (string-match "\\.elc?$" file) - (substring file 0 (match-beginning 0)) + (subseq file 0 (match-beginning 0)) file)) ;; we used to call packages-list-autoloads here, but it's false generality.
--- a/man/ChangeLog Thu Mar 04 07:19:03 2010 -0600 +++ b/man/ChangeLog Thu Mar 04 07:26:05 2010 -0600 @@ -64,6 +64,19 @@ lispref/customize.texi. * Makefile: Remove all rules relating to custom.texi. +2010-03-03 Aidan Kehoe <kehoea@parhasard.net> + + * lispref/tips.texi (Comment Tips): + * lispref/text.texi (Text Properties): + * lispref/strings.texi (Creating Strings): + * lispref/processes.texi (Input to Processes): + * lispref/functions.texi (Argument List): + * lispref/extents.texi (Duplicable Extents): + Move examples that used substring to using subseq; in + strings.texi, do not change the examples, but document that in + this XEmacs, it is an alias for subseq, and that there may be some + incompatibilities if you depend on that. + 2010-02-25 Didier Verna <didier@xemacs.org> The background-placement face property.
--- a/man/lispref/extents.texi Thu Mar 04 07:19:03 2010 -0600 +++ b/man/lispref/extents.texi Thu Mar 04 07:26:05 2010 -0600 @@ -850,8 +850,8 @@ copied into the resulting string. @item -When @code{substring} is called on a string, the relevant extents -are copied into the resulting string. +When @code{subseq} (or its alias, @code{substring}) is called on a +string, the relevant extents are copied into the resulting string. @item When a duplicable extent is detached by @code{detach-extent} or string
--- a/man/lispref/functions.texi Thu Mar 04 07:19:03 2010 -0600 +++ b/man/lispref/functions.texi Thu Mar 04 07:26:05 2010 -0600 @@ -290,10 +290,10 @@ arguments, you get a @code{wrong-number-of-arguments} error. It is often convenient to write a function that allows certain -arguments to be omitted. For example, the function @code{substring} -accepts three arguments---a string, the start index and the end +arguments to be omitted. For example, the function @code{subseq} +accepts three arguments---a sequence, the start index and the end index---but the third argument defaults to the @var{length} of the -string if you omit it. It is also convenient for certain functions to +sequence if you omit it. It is also convenient for certain functions to accept an indefinite number of arguments, as the functions @code{list} and @code{+} do. @@ -331,8 +331,8 @@ function to distinguish between an explicit argument of @code{nil} and an omitted argument. However, the body of the function is free to consider @code{nil} an abbreviation for some other meaningful value. -This is what @code{substring} does; @code{nil} as the third argument to -@code{substring} means to use the length of the string supplied. +This is what @code{subseq} does; @code{nil} as the third argument to +@code{subseq} means to use the length of the sequence supplied. @cindex CL note---default optional arg @quotation
--- a/man/lispref/processes.texi Thu Mar 04 07:19:03 2010 -0600 +++ b/man/lispref/processes.texi Thu Mar 04 07:26:05 2010 -0600 @@ -650,7 +650,7 @@ used. If it is @code{nil}, the current buffer's process is used. Optional arguments @var{start} and @var{end} specify part of @var{string}; -see @code{substring}. +see @code{subseq}. The function returns @code{nil}.
--- a/man/lispref/strings.texi Thu Mar 04 07:19:03 2010 -0600 +++ b/man/lispref/strings.texi Thu Mar 04 07:26:05 2010 -0600 @@ -165,6 +165,10 @@ index @var{start} up to (but excluding) the character at the index @var{end}. The first character is at index zero. +In this implementation, @code{substring} is an alias for @code{subseq}, +so @var{string} can be any sequence. In GNU Emacs, @var{string} can be +a string or a vector, and in older XEmacs it can only be a string. + @example @group (substring "abcdefg" 0 3)
--- a/man/lispref/text.texi Thu Mar 04 07:19:03 2010 -0600 +++ b/man/lispref/text.texi Thu Mar 04 07:26:05 2010 -0600 @@ -2118,7 +2118,7 @@ Copying text between strings and buffers preserves the properties along with the characters; this includes such diverse functions as -@code{substring}, @code{insert}, and @code{buffer-substring}. +@code{subseq}, @code{insert}, and @code{buffer-substring}. @menu * Examining Properties:: Looking at the properties of one character.
--- a/man/lispref/tips.texi Thu Mar 04 07:19:03 2010 -0600 +++ b/man/lispref/tips.texi Thu Mar 04 07:26:05 2010 -0600 @@ -466,7 +466,7 @@ @smallexample @group (setq base-version-list ; there was a base - (assoc (substring fn 0 start-vn) ; version to which + (assoc (subseq fn 0 start-vn) ; version to which file-version-assoc-list)) ; this looks like ; a subversion @end group
--- a/src/ChangeLog Thu Mar 04 07:19:03 2010 -0600 +++ b/src/ChangeLog Thu Mar 04 07:26:05 2010 -0600 @@ -102,6 +102,24 @@ * lread.c (read_atom): Signal a read error upon encountering a ratio constant with a zero denominator. +2010-03-03 Aidan Kehoe <kehoea@parhasard.net> + + * fns.c (Fsubstring): Removed. + * search.c (Freplace_match): + * minibuf.c (Ftry_completion): + * lisp.h: + * keymap.c (ensure_meta_prefix_char_keymapp): + * dired.c (user_name_completion, file_name_completion): + * console-x.c (x_canonicalize_console_connection): + * bytecode.c (Bsubseq): + * bytecode-ops.h (subseq): + Move #'substring to Lisp, as an alias for #'subseq; change all + C Fsubstring() calls to Fsubseq(), change the Bsubstring bytecode + to Bsubseq. + + Motivation; not accepting vectors in #'substring is incompatible + with GNU, and Common Lisp prefers #'subseq, it has no #'substring. + 2010-03-02 Aidan Kehoe <kehoea@parhasard.net> * eval.c (print_multiple_value):
--- a/src/bytecode-ops.h Thu Mar 04 07:19:03 2010 -0600 +++ b/src/bytecode-ops.h Thu Mar 04 07:26:05 2010 -0600 @@ -57,7 +57,7 @@ OPCODE (set, 0114) OPCODE (fset, 0115) OPCODE (get, 0116) - OPCODE (substring, 0117) + OPCODE (subseq, 0117) OPCODE (concat2, 0120) OPCODE (concat3, 0121) OPCODE (concat4, 0122)
--- a/src/bytecode.c Thu Mar 04 07:19:03 2010 -0600 +++ b/src/bytecode.c Thu Mar 04 07:26:05 2010 -0600 @@ -1573,11 +1573,11 @@ break; } - case Bsubstring: + case Bsubseq: { Lisp_Object arg2 = POP; Lisp_Object arg1 = POP; - TOP_LVALUE = Fsubstring (TOP, arg1, arg2); + TOP_LVALUE = Fsubseq (TOP, arg1, arg2); break; }
--- a/src/console-x.c Thu Mar 04 07:19:03 2010 -0600 +++ b/src/console-x.c Thu Mar 04 07:26:05 2010 -0600 @@ -240,7 +240,7 @@ split_up_display_spec (connection, &hostname_length, &display_length, &screen_length); - hostname = Fsubstring (connection, Qzero, make_int (hostname_length)); + hostname = Fsubseq (connection, Qzero, make_int (hostname_length)); hostname = canonicalize_host_name (hostname); connection = concat2 (hostname, make_string (XSTRING_DATA (connection)
--- a/src/dired.c Thu Mar 04 07:19:03 2010 -0600 +++ b/src/dired.c Thu Mar 04 07:26:05 2010 -0600 @@ -508,7 +508,7 @@ return bestmatch; if (matchcount == 1 && bestmatchsize == file_name_length) return Qt; - return Fsubstring (bestmatch, Qzero, make_int (bestmatchsize)); + return Fsubseq (bestmatch, Qzero, make_int (bestmatchsize)); } @@ -772,7 +772,7 @@ return bestmatch; if (matchcount == 1 && bestmatchsize == user_name_length) return Qt; - return Fsubstring (bestmatch, Qzero, make_int (bestmatchsize)); + return Fsubseq (bestmatch, Qzero, make_int (bestmatchsize)); }
--- a/src/fns.c Thu Mar 04 07:19:03 2010 -0600 +++ b/src/fns.c Thu Mar 04 07:26:05 2010 -0600 @@ -947,30 +947,6 @@ return arg; } -DEFUN ("substring", Fsubstring, 2, 3, 0, /* -Return the substring of STRING starting at START and ending before END. -END may be nil or omitted; then the substring runs to the end of STRING. -If START or END is negative, it counts from the end. -Relevant parts of the string-extent-data are copied to the new string. -*/ - (string, start, end)) -{ - Charcount ccstart, ccend; - Bytecount bstart, blen; - Lisp_Object val; - - CHECK_STRING (string); - CHECK_INT (start); - get_string_range_char (string, start, end, &ccstart, &ccend, - GB_HISTORICAL_STRING_BEHAVIOR); - bstart = string_index_char_to_byte (string, ccstart); - blen = string_offset_char_to_byte_len (string, bstart, ccend - ccstart); - val = make_string (XSTRING_DATA (string) + bstart, blen); - /* Copy any applicable extent information into the new string. */ - copy_string_extents (val, string, 0, bstart, blen); - return val; -} - DEFUN ("subseq", Fsubseq, 2, 3, 0, /* Return the subsequence of SEQUENCE starting at START and ending before END. END may be omitted; then the subsequence runs to the end of SEQUENCE. @@ -983,11 +959,25 @@ { EMACS_INT len, s, e; + if (STRINGP (sequence)) + { + Charcount ccstart, ccend; + Bytecount bstart, blen; + Lisp_Object val; + + CHECK_INT (start); + get_string_range_char (sequence, start, end, &ccstart, &ccend, + GB_HISTORICAL_STRING_BEHAVIOR); + bstart = string_index_char_to_byte (sequence, ccstart); + blen = string_offset_char_to_byte_len (sequence, bstart, ccend - ccstart); + val = make_string (XSTRING_DATA (sequence) + bstart, blen); + /* Copy any applicable extent information into the new string. */ + copy_string_extents (val, sequence, 0, bstart, blen); + return val; + } + CHECK_SEQUENCE (sequence); - if (STRINGP (sequence)) - return Fsubstring (sequence, start, end); - len = XINT (Flength (sequence)); CHECK_INT (start); @@ -4796,7 +4786,6 @@ DEFSUBR (Fcopy_sequence); DEFSUBR (Fcopy_alist); DEFSUBR (Fcopy_tree); - DEFSUBR (Fsubstring); DEFSUBR (Fsubseq); DEFSUBR (Fnthcdr); DEFSUBR (Fnth);
--- a/src/keymap.c Thu Mar 04 07:19:03 2010 -0600 +++ b/src/keymap.c Thu Mar 04 07:26:05 2010 -0600 @@ -1731,7 +1731,7 @@ if (indx == 0) new_keys = keys; else if (STRINGP (keys)) - new_keys = Fsubstring (keys, Qzero, make_int (indx)); + new_keys = Fsubseq (keys, Qzero, make_int (indx)); else if (VECTORP (keys)) { new_keys = make_vector (indx, Qnil);
--- a/src/lisp.h Thu Mar 04 07:19:03 2010 -0600 +++ b/src/lisp.h Thu Mar 04 07:26:05 2010 -0600 @@ -5624,7 +5624,7 @@ EXFUN (Fsort, 2); EXFUN (Fstring_equal, 2); EXFUN (Fstring_lessp, 2); -EXFUN (Fsubstring, 3); +EXFUN (Fsubseq, 3); EXFUN (Fvalid_plist_p, 1); Lisp_Object list_sort (Lisp_Object, Lisp_Object,
--- a/src/minibuf.c Thu Mar 04 07:19:03 2010 -0600 +++ b/src/minibuf.c Thu Mar 04 07:26:05 2010 -0600 @@ -513,7 +513,7 @@ return Qt; /* Else extract the part in which all completions agree */ - return Fsubstring (bestmatch, Qzero, make_int (bestmatchsize)); + return Fsubseq (bestmatch, Qzero, make_int (bestmatchsize)); }
--- a/src/search.c Thu Mar 04 07:19:03 2010 -0600 +++ b/src/search.c Thu Mar 04 07:26:05 2010 -0600 @@ -2801,8 +2801,8 @@ Lisp_Object before, after; speccount = specpdl_depth (); - before = Fsubstring (string, Qzero, make_int (search_regs.start[sub])); - after = Fsubstring (string, make_int (search_regs.end[sub]), Qnil); + before = Fsubseq (string, Qzero, make_int (search_regs.start[sub])); + after = Fsubseq (string, make_int (search_regs.end[sub]), Qnil); /* Do case substitution into REPLACEMENT if desired. */ if (NILP (literal)) @@ -2888,13 +2888,12 @@ Lisp_Object literal_text = Qnil; Lisp_Object substring = Qnil; if (literal_end != literal_start) - literal_text = Fsubstring (replacement, - make_int (literal_start), - make_int (literal_end)); + literal_text = Fsubseq (replacement, + make_int (literal_start), + make_int (literal_end)); if (substart >= 0 && subend != substart) - substring = Fsubstring (string, - make_int (substart), - make_int (subend)); + substring = Fsubseq (string, make_int (substart), + make_int (subend)); if (!NILP (literal_text) || !NILP (substring)) accum = concat3 (accum, literal_text, substring); literal_start = strpos + 1; @@ -2903,9 +2902,9 @@ if (strpos != literal_start) /* some literal text at end to be inserted */ - replacement = concat2 (accum, Fsubstring (replacement, - make_int (literal_start), - make_int (strpos))); + replacement = concat2 (accum, Fsubseq (replacement, + make_int (literal_start), + make_int (strpos))); else replacement = accum; }