emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug 130397


From: Geoff Kuenning
Subject: Re: Bug 130397
Date: 18 Jan 2005 14:57:05 +0100
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3

> I agree that marking would help ispell.el to decide which dictionary
> to use on a word.  However, even without marking users might still prefer
> to check words simultaneously with multiple dictionaries

That's a good point.  Unfortunately, the current implementation of
ispell makes it impossible to use two dictionaries simultaneously.

I do recall hearing from one user who used a pipe something like this:

        ispell -d language-1 -l | ispell -d language-2 -l ... | sort -uf

but of course that only provides a list of misspelled words, and loses
all the correction capabilities.

Just brainstorming, it probably wouldn't be too hard to write a
postprocessing script for -a mode that turned the output of ispell -a
into something suitable for another ispell.  The idea would be that
you feed:

        I do not want to acept my bda lueck


and turn the output lines:

        @(#) International Ispell Version 3.2.06 08/01/01
        *
        *
        *
        *
        *
        & acept 2 17: accept, adept
        *
        & bda 9 26: Ada, baa, bad, bea, bida, boa, bra, FDA, Ida
        & lueck 1 30: luck

into a line of blanks and misspelled words:

                         acept    bda lueck

which can then be fed into another ispell -a instance.  The final
output would be returned to emacs.  The pipe would look like:

        ispell -a -d language-1 | fixispell-a | ispell -a -d language-2

In fact, this script is so easy I think I'll whip it up right now.
It's called fixispell-a, and it will be in the next ispell release.
Here it is:

#!/bin/sh
#
# $Id: fixispell-a,v 1.1 2005/01/18 13:48:52 geoff Exp geoff $
#
# Copyright 2005, Geoff Kuenning, Claremont, CA.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. All modifications to the source code must be clearly marked as
#    such.  Binary redistributions based on modified source code
#    must be clearly marked as modified versions in the documentation
#    and/or other materials provided with the distribution.
# 4. The code that causes the 'ispell -v' command to display a prominent
#    link to the official ispell Web site may not be removed.
# 5. The name of Geoff Kuenning may not be used to endorse or promote
#    products derived from this software without specific prior
#    written permission.
#
# THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# Take the output of "ispell -a" and turn it into a line that can be
# fed into another "ispell -a" instance.
#
# Usage:
#
USAGE='Usage: ispell -a <ispell-switches> | fixispell-a | ispell -a ...'
#
# BUGS:
#
# This script is probably not portable to older systems.
#
# $Log: fixispell-a,v $
# Revision 1.1  2005/01/18 13:48:52  geoff
# Initial revision
#

case "$#" in
    0)
        ;;
    *)
        echo "$USAGE" 1>&2
        exit 2
        ;;
esac

awk 'NR == 1 \
        {
        next
        }
    NF == 0 \
        {
        print line
        line = ""
        next
        }
    $1 == "*"  ||  $1 == "+"  ||  $1 == "-" \
        {
        next
        }
    $1 == "&"  ||  $1 == "?"  ||  $1 == "#" \
        {
        if ($1 == "#")
            offset = $3 + 0
        else
            offset = substr($4, 1, length($4) - 1) + 0
        if (length(line) < offset)
            line = sprintf("%s%*s", line, offset - length(line), "")
        line = line $2
        next
        }
        {
        print "fixispell-a: unrecognized ispell input line" $0 > "/dev/stderr"
        exit(2)
        }'
-- 
    Geoff Kuenning   address@hidden   http://www.cs.hmc.edu/~geoff/

If a person is obviously mentally disabled, such as having Down's
syndrome or Alzheimer's, decent people exercise sympathy and
understanding in their interactions.  So why, if someone merely has a
low IQ, is he treated with ridicule and contempt?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]