GNU bug report logs - #11640
24.1.50; texinfo-format-printindex fails on Windows with Windows's sort

Previous Next

Package: emacs;

Reported by: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>

Date: Wed, 6 Jun 2012 17:00:03 UTC

Severity: normal

Found in version 24.1.50

Done: Juanma Barranquero <lekktu <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
Cc: 11640 <at> debbugs.gnu.org
Subject: bug#11640: 24.1.50; texinfo-format-printindex fails on Windows with Windows's sort
Date: Thu, 7 Jun 2012 13:04:48 +0200
On Wed, Jun 6, 2012 at 6:56 PM, Kazuhiro Ito <kzhr <at> d1.dion.ne.jp> wrote:

> To avoid this problem, Emacs22 does not call sort program on Windows.
> But this workaround seems to have been dropped when VMS support
> have been removed (*1).
>
> (*1) http://bzr.savannah.gnu.org/lh/emacs/trunk/revision/89810

Does the following patch work for you?

    Juanma


=== modified file 'lisp/textmodes/texinfmt.el'
--- lisp/textmodes/texinfmt.el	2012-04-09 13:05:48 +0000
+++ lisp/textmodes/texinfmt.el	2012-06-07 11:02:59 +0000
@@ -2958,6 +2958,29 @@
     ("ky" . texinfo-format-kindex)))

 
+;;; Sort and index (for MS-DOS and Windows)
+
+;; Sort an index which is in the current buffer between START and END.
+;; Used on Microsoft OSes, which have a non-POSIX `sort'.
+(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

 (put 'printindex 'texinfo-format 'texinfo-format-printindex)
@@ -2974,7 +2997,9 @@
     (insert "\n* Menu:\n\n")
     (setq opoint (point))
     (texinfo-print-index nil indexelts)
-    (shell-command-on-region opoint (point) "sort -fd" 1)))
+    (if (memq system-type '(windows-nt ms-dos))
+        (texinfo-sort-region opoint (point))
+      (shell-command-on-region opoint (point) "sort -fd" 1))))

 (defun texinfo-print-index (file indexelts)
   (while indexelts




This bug report was last modified 12 years and 345 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.