Mercurial > emacs
changeset 54284:78ded7186c4e
(sort-columns): Don't use external 'sort' on ms-windows. Otherwise,
do use it if the region only contains font-lock text properties.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 05 Mar 2004 11:31:28 +0000 |
parents | d0c3cadb7e21 |
children | 73cd5983fdb9 |
files | lisp/sort.el |
diffstat | 1 files changed, 17 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/sort.el Fri Mar 05 04:42:46 2004 +0000 +++ b/lisp/sort.el Fri Mar 05 11:31:28 2004 +0000 @@ -480,19 +480,30 @@ (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 (eq system-type 'vax-vms) - (text-properties-at beg1) - (< (next-property-change beg1 nil end1) end1))) + (if (not (or (memq system-type '(vax-vms windows-nt ms-dos)) + (let ((pos beg1) plist fontified) + (catch 'found + (while (< pos end1) + (setq plist (text-properties-at pos)) + (setq fontified (plist-get plist 'fontified)) + (while (consp plist) + (unless (or (eq (car plist) 'fontified) + (and (eq (car plist) 'face) + fontified)) + (throw 'found t)) + (setq plist (cddr plist))) + (setq pos (next-property-change pos nil end1))))))) ;; Use the sort utility if we can; it is 4 times as fast. - ;; Do not use it if there are any properties in the region, - ;; since the sort utility would lose the properties. + ;; Do not use it if there are any non-font-lock properties + ;; in the region, since the sort utility would lose the + ;; properties. (let ((sort-args (list (if reverse "-rt\n" "-t\n") (concat "+0." (int-to-string col-start)) (concat "-0." (int-to-string col-end))))) (when sort-fold-case (push "-f" sort-args)) (apply #'call-process-region beg1 end1 "sort" t t nil sort-args)) - ;; On VMS, use Emacs's own facilities. + ;; On VMS and ms-windows, use Emacs's own facilities. (save-excursion (save-restriction (narrow-to-region beg1 end1)