X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/c1473b4cfeb477ced05d457868c5e1eb97a58eb0..43bf5e8e4de7e2e45069f3fe591c658a61126378:/lisp/sort.el diff --git a/lisp/sort.el b/lisp/sort.el index d08e07dc4b..44f90fff37 100644 --- a/lisp/sort.el +++ b/lisp/sort.el @@ -1,7 +1,7 @@ ;;; sort.el --- commands to sort text in an Emacs buffer -;; Copyright (C) 1986, 1987, 1994, 1995, 2001, 2002, 2003, -;; 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 1986-1987, 1994-1995, 2001-2012 +;; Free Software Foundation, Inc. ;; Author: Howie Kaye ;; Maintainer: FSF @@ -34,7 +34,7 @@ :group 'data) (defcustom sort-fold-case nil - "*Non-nil if the buffer sort functions should ignore case." + "Non-nil if the buffer sort functions should ignore case." :group 'sort :type 'boolean) ;;;###autoload(put 'sort-fold-case 'safe-local-variable 'booleanp) @@ -256,7 +256,7 @@ the sort order." (setq sort-fields-syntax-table table))) (defcustom sort-numeric-base 10 - "*The default base used by `sort-numeric-fields'." + "The default base used by `sort-numeric-fields'." :group 'sort :type 'integer) ;;;###autoload(put 'sort-numeric-base 'safe-local-variable 'integerp) @@ -361,8 +361,8 @@ the sort order." (if (eolp) (error "Line has too few fields: %s" (buffer-substring - (save-excursion (beginning-of-line) (point)) - (save-excursion (end-of-line) (point)))))) + (line-beginning-position) + (line-end-position))))) (end-of-line) ;; Skip back across - N - 1 fields. (let ((i (1- (- n)))) @@ -374,8 +374,8 @@ the sort order." (if (bolp) (error "Line has too few fields: %s" (buffer-substring - (save-excursion (beginning-of-line) (point)) - (save-excursion (end-of-line) (point))))) + (line-beginning-position) + (line-end-position)))) ;; Position at the front of the field ;; even if moving backwards. (skip-chars-backward "^ \t\n"))) @@ -401,18 +401,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 +428,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)) @@ -491,7 +496,7 @@ Use \\[untabify] to convert tabs to spaces before sorting." (setq col-end (max col-beg1 col-end1)) (if (search-backward "\t" beg1 t) (error "sort-columns does not work with tabs -- use M-x untabify")) - (if (not (or (memq system-type '(vax-vms windows-nt)) + (if (not (or (memq system-type '(windows-nt)) (let ((pos beg1) plist fontified) (catch 'found (while (< pos end1) @@ -516,7 +521,7 @@ Use \\[untabify] to convert tabs to spaces before sorting." (when sort-fold-case (push "-f" sort-args)) (apply #'call-process-region beg1 end1 "sort" t t nil sort-args)) - ;; On VMS and ms-windows, use Emacs's own facilities. + ;; On ms-windows, use Emacs's own facilities. (save-excursion (save-restriction (narrow-to-region beg1 end1) @@ -559,5 +564,4 @@ From a program takes two point or marker arguments, BEG and END." (provide 'sort) -;; arch-tag: fbac12be-2a7b-4c8a-9665-264d61f70bd9 ;;; sort.el ends here