From: Richard M. Stallman Date: Fri, 5 Mar 2004 11:31:58 +0000 (+0000) Subject: (sort-columns): Don't use external 'sort' on ms-windows. Otherwise, X-Git-Tag: ttn-vms-21-2-B4~7339 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2e8d40a1da9d5c70720920103276440f80d9345e;p=emacs.git (sort-columns): Don't use external 'sort' on ms-windows. Otherwise, do use it if the region only contains font-lock text properties. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e8353eeea21..57a01d9f081 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2004-03-04 Jesper Harder + + * sort.el (sort-columns): Don't use external 'sort' on ms-windows. + Otherwise, do use it if the region only contains font-lock text + properties. + 2004-03-04 Masatake YAMATO * hexl.el (hexl-mode): Set `hexl-print-current-point-info' diff --git a/lisp/sort.el b/lisp/sort.el index 541f598e7a5..76559f17288 100644 --- a/lisp/sort.el +++ b/lisp/sort.el @@ -480,19 +480,30 @@ 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 (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)