diff options
-rw-r--r-- | src/guile/skribilo/index.scm | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/guile/skribilo/index.scm b/src/guile/skribilo/index.scm index c6ee2d1..b537fb4 100644 --- a/src/guile/skribilo/index.scm +++ b/src/guile/skribilo/index.scm @@ -1,7 +1,7 @@ ;;; index.scm ;;; +;;; Copyright 2005, 2006, 2008 Ludovic Courtès <ludo@gnu.org> ;;; Copyright 2003, 2004 Manuel Serrano -;;; Copyright 2005, 2006 Ludovic Courtès <ludovic.courtes@laas.fr> ;;; ;;; ;;; This program is free software; you can redistribute it and/or modify @@ -24,6 +24,8 @@ :use-syntax (skribilo lib) :use-module (skribilo ast) + :autoload (srfi srfi-34) (raise) + :use-module (srfi srfi-35) :use-module (srfi srfi-39) ;; XXX: The use of `mark' here introduces a cross-dependency between @@ -31,6 +33,8 @@ ;; modules autoloads the other one. :autoload (skribilo package base) (mark) + :autoload (skribilo location) (location?) + :export (index? make-index-table *index-table* default-index resolve-the-index)) @@ -83,7 +87,17 @@ (define (index-ref n) (let ((name (markup-option n 'name))) (if (>= char-offset (string-length name)) - (skribe-error 'the-index "char-offset out of bound" char-offset) + (let ((loc (if (location? loc) + (format #f "~a:~a:~a: " + (location-file loc) + (location-line loc) + (location-column loc)) + "")) + (msg (format + #f (_ "the-index: char-offset `~A' out of bounds~%") + char-offset))) + (raise (condition (&message + (condition-message (string-append loc msg)))))) (string-ref name char-offset)))) ;; sort a bucket of entries (the entries in a bucket share there name) (define (sort-entries-bucket ie) |