From 595ef4ad76fb75db4a0adb2baf117ef6d68a2e41 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Fri, 8 Jun 2012 14:24:27 +0200 Subject: [PATCH] lisp/textmodes/texinfmt.el: Fix bug#11640 (reverts part of 2008-07-31T05:33:56Z!dann@ics.uci.edu). (texinfo-format-printindex): Use `texinfo-sort-region' in all platforms, instead of calling external sort utility. (texinfo-sort-region, texinfo-sort-startkeyfun): Restore functions. --- lisp/ChangeLog | 7 +++++++ lisp/textmodes/texinfmt.el | 24 +++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2698374ed8a..655dcf184db 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-06-08 Juanma Barranquero + + * textmodes/texinfmt.el: Fix bug#11640 (reverts part of 2008-07-31T05:33:56Z!dann@ics.uci.edu). + (texinfo-format-printindex): Use `texinfo-sort-region' in all platforms, + instead of calling external sort utility. + (texinfo-sort-region, texinfo-sort-startkeyfun): Restore functions. + 2012-06-08 Eli Zaretskii * descr-text.el (describe-char): Mention how to insert the diff --git a/lisp/textmodes/texinfmt.el b/lisp/textmodes/texinfmt.el index d318a97d377..cb87c1198f9 100644 --- a/lisp/textmodes/texinfmt.el +++ b/lisp/textmodes/texinfmt.el @@ -2957,6 +2957,28 @@ Default is to leave paragraph indentation as is." ("pg" . texinfo-format-pindex) ("ky" . texinfo-format-kindex))) + +;;; Sort and index + +;; Sort an index which is in the current buffer between START and END. +(defun texinfo-sort-region (start end) + (require 'sort) + (save-restriction + (narrow-to-region start end) + (goto-char (point-min)) + (sort-subr nil 'forward-line 'end-of-line 'texinfo-sort-startkeyfun))) + +;; Subroutine for sorting an index. +;; At start of a line, return a string to sort the line under. +(defun texinfo-sort-startkeyfun () + (let ((line (buffer-substring-no-properties (point) (line-end-position)))) + ;; Canonicalize whitespace and eliminate funny chars. + (while (string-match "[ \t][ \t]+\\|[^a-z0-9 ]+" line) + (setq line (concat (substring line 0 (match-beginning 0)) + " " + (substring line (match-end 0))))) + line)) + ;;; @printindex @@ -2974,7 +2996,7 @@ Default is to leave paragraph indentation as is." (insert "\n* Menu:\n\n") (setq opoint (point)) (texinfo-print-index nil indexelts) - (shell-command-on-region opoint (point) "sort -fd" 1))) + (texinfo-sort-region opoint (point)))) (defun texinfo-print-index (file indexelts) (while indexelts -- 2.39.5