X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/cce7d53002e8abc346b67ea4100507b0e7c4d68e..4cddca3070934602b0156a5cc260c633f210599c:/lisp/sort.el diff --git a/lisp/sort.el b/lisp/sort.el index 8ea3decb76..5c4bc41896 100644 --- a/lisp/sort.el +++ b/lisp/sort.el @@ -1,6 +1,6 @@ ;;; sort.el --- commands to sort text in an Emacs buffer -;; Copyright (C) 1986-1987, 1994-1995, 2001-2011 +;; Copyright (C) 1986-1987, 1994-1995, 2001-2012 ;; Free Software Foundation, Inc. ;; Author: Howie Kaye @@ -77,8 +77,13 @@ ENDKEYFUN moves from the start of the sort key to the end of the sort key. ENDKEYFUN may be nil if STARTKEYFUN returns a value or if it would be the same as ENDRECFUN. -PREDICATE is the function to use to compare keys. If keys are numbers, -it defaults to `<', otherwise it defaults to `string<'." +PREDICATE, if non-nil, is the predicate function for comparing +keys; it is called with two arguments, the keys to compare, and +should return non-nil if the first key should sort before the +second key. If PREDICATE is nil, comparison is done with `<' if +the keys are numbers, with `compare-buffer-substrings' if the +keys are cons cells (the car and cdr of each cons cell are taken +as start and end positions), and with `string<' otherwise." ;; Heuristically try to avoid messages if sorting a small amt of text. (let ((messages (> (- (point-max) (point-min)) 50000))) (save-excursion @@ -401,18 +406,23 @@ the sort order." ;;;###autoload (defun sort-regexp-fields (reverse record-regexp key-regexp beg end) - "Sort the region lexicographically as specified by RECORD-REGEXP and KEY. -RECORD-REGEXP specifies the textual units which should be sorted. - For example, to sort lines RECORD-REGEXP would be \"^.*$\" -KEY specifies the part of each record (ie each match for RECORD-REGEXP) - is to be used for sorting. - If it is \"\\\\digit\" then the digit'th \"\\\\(...\\\\)\" match field from - RECORD-REGEXP is used. - If it is \"\\\\&\" then the whole record is used. - Otherwise, it is a regular-expression for which to search within the record. -If a match for KEY is not found within a record then that record is ignored. - -With a negative prefix arg sorts in reverse order. + "Sort the text in the region region lexicographically. +If called interactively, prompt for two regular expressions, +RECORD-REGEXP and KEY-REGEXP. + +RECORD-REGEXP specifies the textual units to be sorted. + For example, to sort lines, RECORD-REGEXP would be \"^.*$\". + +KEY-REGEXP specifies the part of each record (i.e. each match for + RECORD-REGEXP) to be used for sorting. + If it is \"\\\\digit\", use the digit'th \"\\\\(...\\\\)\" + match field specified by RECORD-REGEXP. + If it is \"\\\\&\", use the whole record. + Otherwise, KEY-REGEXP should be a regular expression with which + to search within the record. If a match for KEY-REGEXP is not + found within a record, that record is ignored. + +With a negative prefix arg, sort in reverse order. The variable `sort-fold-case' determines whether alphabetic case affects the sort order. @@ -423,7 +433,7 @@ For example: to sort lines in the region by the first word on each line ;; using negative prefix arg to mean "reverse" is now inconsistent with ;; other sort-.*fields functions but then again this was before, since it ;; didn't use the magnitude of the arg to specify anything. - (interactive "P\nsRegexp specifying records to sort: + (interactive "P\nsRegexp specifying records to sort: \n\ sRegexp specifying key within record: \nr") (cond ((or (equal key-regexp "") (equal key-regexp "\\&")) (setq key-regexp 0))