youngs  committed 01c32ce

New package

  • Participants
  • Parent commits 4e29e79

Comments (0)

Files changed (17)

+2001-09-08  Steve Youngs  <>
+	* Initial XEmacs Package version.
+		       Version 2, June 1991
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+			    Preamble
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+  The precise terms and conditions for copying, distribution and
+modification follow.
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+	    How to Apply These Terms to Your New Programs
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    GNU General Public License for more details.
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+Also add information on how to contact you by electronic and paper mail.
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+# Makefile for dictionary code
+# This file is part of XEmacs.
+# XEmacs is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any
+# later version.
+# XEmacs is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# You should have received a copy of the GNU General Public License
+# along with XEmacs; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+VERSION = 1.00
+MAINTAINER = Torsten Hilbrich <>
+PACKAGE = dictionary
+PKG_TYPE = regular
+CATEGORY = standard
+ELCS = 
+GENERATED += custom-load.elc
+all:: $(ELCS) auto-autoloads.elc custom-load.elc
+srckit: srckit-std
+binkit: binkit-common

File Makefile.upstream

+SOURCES=dictionary.el connection.el link.el
+COMPILED=dictionary.elc connection.elc link.elc
+.SUFFIXES: .elc .el
+	$(EMACS) -q -no-site-file -no-init-file -batch -l lpath.el \
+	-f batch-byte-compile $<
+.PHONY: all
+all: $(COMPILED)
+.PHONY: debian
+	@if [ -x /usr/bin/fakeroot ]; then \
+	  dpkg-buildpackage -us -uc -rfakeroot; \
+	elif [ `id -u` -ne 0 ]; then \
+	  echo "You are not root and fakeroot is not installed, aborting"; \
+	  exit 1; \
+	else \
+	  dpkg-buildpackage -us -uc; \
+	fi
+	@echo "You can now install the debian package, the previous output tells"
+	@echo "you its location (probably stored in ..)"
+	@echo
+	@echo "Please note, this debian package is unofficial, report bugs"
+	@echo "to me only, not to the Debian Bugtracking System."
+.PHONY: package
+package: $(XEMACS-PACKAGE) 
+	@case $(EMACS) in emacs*) printf "\aNote, packages work with XEmacs 21 only, hope you know what you are doing\n\n";; esac
+	@mkdir -p lisp/$(PACKAGE)
+	@mkdir -p pkginfo
+	@printf ";;;###autoload\n(package-provide '$(PACKAGE)\n:version $(VERSION)\n:type '$(TYPE))\n" > lisp/$(PACKAGE)/_pkg.el
+	@rm -f lisp/$(PACKAGE)/auto-autoloads.el lisp/$(PACKAGE)/custom-load.el
+	@cp $(SOURCES) $(COMPILED) lisp/$(PACKAGE)
+	@cd lisp &&  \
+	$(EMACS) -vanilla -batch -l autoload -f batch-update-directory $(PACKAGE) && \
+	$(EMACS) -vanilla -batch -l cus-dep -f Custom-make-dependencies $(PACKAGE) && \
+	$(EMACS) -vanilla -batch -f batch-byte-compile $(PACKAGE)/auto-autoloads.el $(PACKAGE)/custom-load.el
+	@touch pkginfo/MANIFEST.$(PACKAGE)
+	@find lisp pkginfo -type f > pkginfo/MANIFEST.$(PACKAGE)
+	@tar cf - pkginfo lisp | gzip -c > $(XEMACS-PACKAGE)
+.PHONY: package-install
+package-install: package
+	@if [ `id -u` -ne 0 ]; then printf "\aWarning, you are not root; the installation might fail\n\n"; fi
+	@$(EMACS) -vanilla -batch -l install-package.el -f install-package `pwd`/$(XEMACS-PACKAGE)
+.PHONY: clean
+	rm -f $(XEMACS-PACKAGE) $(COMPILED) build
+	rm -rf debian/tmp lisp pkginfo
+               Emacs package for talking to a dictionary server
+                                 Introduction
+   In December 1998 I installed the [1]dictd server, which can be used to
+   access several dictionaries using a simple protocol as defined in
+   [2]RFC 2229 (Text Version).
+   As my primary working environment is [3]XEmacs 21, I decided to write
+   an Emacs-Lisp package for accessing this dictionary server. The older
+   webster.el didn't worked with the newer protocol. After starting the
+   implementation I was pointed to an already existing implementation,
+   but this was basically a wrapper to the dict client program and didn't
+   have all the features I wanted.
+   If you didn't received this file from its original location you can
+   visit it at [4]
+                                   Features
+   The dictionary mode provides the following features:
+     * looking up word definitions in all dictionaries
+     * search for matching word
+     * words/phrases marked with { } in the dictionary definitions are
+       recognized as hyper links and browseable
+     * easy selection of dictionary and search strategy
+     * backward moving through the visited definitions
+     * in the latest versions of GNU Emacs and XEmacs you get support for
+       popup menus
+     * in GNU Emacs 21 you can lookup words by simply pointing the mouse
+       cursor to them (tool-tips)
+   Here are three sample screenshot showing the dictionary mode in action
+   within an Emacs 21 buffer:
+   This buffer shows the result of searching the definition for Emacs.
+   Two entries have been found. The bold text on the top are buttons for
+   selecting action using the mouse or keyboard, the blue words are hyper
+   links that points to the definitions of these words.
+   This buffer shows the result of looking for matching words to
+   possible. You can now select one of the found entries or ignore the
+   search by pressing any mouse button outside the menu.
+   This screenshot shows the tool-tips supported in GNU Emacs 21.
+   Whenever the mouse cursor stands still for a certain time (about one
+   second) the word at cursor is looked up in the configured dictionary.
+   This example shows the german translation for originally, in this
+   context not the right one, urspr�nglich would be better.
+                           Download and Requirements
+   I have tested the package with a native GNU Emacs 19.34.1 and XEmacs
+   20.4. I implemented some hacks to work with the very very old
+   custom.el file in the above GNU Emacs. Please update to the current
+   version whenever possible. XEmacs 21 and Emacs 20 as well as Emacs 21
+   have been tested too.
+     * [5]Current version (1.5.1) of this package
+     * [6]Version 1.4.1 of this package
+     * [7]Version 1.3.3 of this package
+     * [8]Version 1.2.1 of this package
+     * [9]Version 1.1 of this package
+     * [10]Initial version (1.0) of this package
+   I you want to know more about the differences please look at the
+   [11]ChangeLog.
+   You will need the custom package to use this package. For full support
+   please check if your system knows the defface function, if not please
+   download the [12]current version.
+   For best usability I suggest using the mouse, but it provide good
+   keyboard support as well.
+                             Unpacking the archive
+   The package is distributed as tar.gz file. You unpack it using:
+gzip -dc dictionary-1.5.1.tar.gz | tar xf -
+   or
+tar -xzf dictionary-1.5.1.tar.gz
+   (with the version number subject to change) depending on whether you
+   are using GNU tar which support the z flag for compression. After
+   unpacking the archive a directory dictionary-1.5.1 has been created
+   containing the necessary files.
+                                 Installation
+   If you are using a current Debian distribution (one that support the
+   emacsen package system) and have the dpkg-dev installed (for running
+   dpkg-buildpackage) you can use the supplied debian support.
+make debian
+   This will create a package named dictionary-1.5.1-1_i386.deb or
+   similiar in the parent directory of dictionary-1.5.1. You can now
+   install this package as root, it will automatically byte-compile
+   itself for all installed emacs versions and provide a startup-file
+   which autoloads this package. In the configuration example given below
+   you can omit the autoload lines.
+   If you no longer want to use this package, you can remove it using:
+dpkg -r dictionary
+XEmacs 21
+   The XEmacs version 21 support so called xemacs packages. These
+   packages are also supported, you can create them using:
+make EMACS=xemacs package
+   The created package will be named dictionary-1.5-pkg.tar.gz and stored
+   within the current directory. If you don't want to install this
+   package manually, you can use the following command, provided you have
+   sufficient privileges (if unsure, login as super user):
+make EMACS=xemacs package-install
+   If you have more than one XEmacs versions installed make sure the
+   EMACS argument to make points to the current binary.
+  Byte compiling
+   For faster loading and executing of the package I strongly suggest
+   that you byte-compile the files. Emacs user please call make within
+   the create subdirectory, XEmacs user has to specify there favorite
+   tool using make EMACS=xemacs. If your custom package is not up-to-date
+   expect some warnings about free variables.
+  Installing the files
+   To install the files into your GNU Emacs/XEmacs installation please
+   copy the *.elc files into a directory being in your load-path
+   variable. On most installations /usr/lib/emacs/site-lisp or
+   /usr/local/lib/emacs/site-lisp are suitable locations.
+                              Loading the package
+   You have to insert some instructions into your .emacs file to load the
+   dictionary package whenever needed. If you installed this dictionary
+   package as Debian package or XEmacs package you don't need the
+   autoloads, they are already supplied. Other users I suggest using the
+   following lines:
+(autoload 'dictionary-search "dictionary"
+  "Ask for a word and search it in all dictionaries" t)
+(autoload 'dictionary-match-words "dictionary"
+  "Ask for a word and search all matching words in the dictionaries" t)
+(autoload 'dictionary-lookup-definition "dictionary"
+  "Unconditionally lookup the word at point." t)
+(autoload 'dictionary "dictionary"
+  "Create a new dictionary buffer" t)
+(autoload 'dictionary-mouse-popup-matching-words "dictionary"
+  "Display entries matching the word at the cursor" t)
+(autoload 'dictionary-popup-matching-words "dictionary"
+  "Display entries matching the word at the point" t)
+(autoload 'dictionary-tooltip-mode "dictionary"
+  "Display tooltips for the current word" t)
+(autoload 'global-dictionary-tooltip-mode "dictionary"
+  "Enable/disable dictionary-tooltip-mode for all buffers" t)
+   In addition, some key bindings for faster access can be useful. I use
+   the following ones in my installation:
+;; key bindings
+(global-set-key "\C-cs" 'dictionary-search)
+(global-set-key "\C-cm" 'dictionary-match-words)
+   I will describe the user-callable functions and the key bindings
+   within dictionary mode later in this document.
+                               Using the package
+   Before I start describing how you use this package, please let me
+   explain some words as they are used in this text:
+   word
+          This is a word you want to lookup in the dictionaries verbatim.
+   pattern
+          This is used for looking up matching words. A pattern can be as
+          simple as a single word but also as complex as a POSIX regular
+          expression. The meaning of a pattern depends on the strategy
+          used for matching words.
+   dictionary
+          The server can handle several distinct dictionaries. You can
+          select specific dictionaries or ask the server to search in all
+          dictionaries or until matches or definitions are found. To
+          search in all dictionaries the special name * is used, the
+          special name ! requests to search until definitions are found.
+          For more details please take a look at the standards
+          definition.
+   definition
+          A dictionary entry that can be the result of a word search.
+   search
+          The operation of looking up a word in the dictionaries.
+   match
+          The operation of comparing a pattern to all words in the
+          dictionary.
+   strategy
+          While matching in a dictionary serveral methods for comparing
+          words can be used. These methods are named strategies and
+          include exact match, regular expression match, and soundex
+          match. The available strategies depends on the server, but a
+          special name . can be used to denote a server-default strategy.
+   There are five different (documented) ways of invoking the package. By
+   calling dictionary you can start a new dictionary buffer waiting for
+   your commands. If you want to create multiple buffers for searching
+   the dictionary, you can run this function multiple times.
+   dictionary-search will ask for a word a search defaulting to the word
+   at point and present all definitions found.
+   If you want to lookup the word near the point without further
+   confirmation use the dictionary-lookup-definition function. The last
+   one is dictionary-match-words which will ask for a pattern and display
+   all matching words.
+   You can also display a popup menu showing the definition for a certain
+   word. You just place the mouse cursor above the word you want to
+   lookup and press the assigned mouse button. The sample definition in
+   section [13]Customizing binds this command to the right mouse button
+   in GNU Emacs and to ctrl + right mouse button in XEmacs. For mouse
+   invocation use dictionary-mouse-popup-matching-words, for assigning to
+   a key combination use the dictionary-popup-matching-words function.
+   The latter function search for the word located at point.
+   I have tested this feature in Emacs 21 and XEmacs 21. Emacs 20 do not
+   support this kind of popup menus (you will get an error message if you
+   try anyway), XEmacs 20 or prior has not been tested yet.
+   A new feature of version 1.5 is the tool-tip support. This will only
+   work in GNU Emacs 21, XEmacs uses a different mechanism (called
+   balloon help) which can not easily be adapted. Please note, the
+   tool-tip mode may slow down your Emacs, especially if you prefer using
+   the mouse.
+   First you have to define the dictionary for looking up words to
+   display in the tool-tip window. You could use * to search in all
+   dictionaries, however tool-tip window should be rather small. I use an
+   english to german dictionary for myself, which is called eng-deu (you
+   can find out the name if you look into contents of the square brackets
+   within the dictionary buffer; for example, the line From WordNet (r)
+   1.6[wn]: tells you the name of this dictionary is wn).
+(setq dictionary-tooltip-dictionary "eng-deu")
+   Next you have to decide if you want tool-tip support in the current
+   buffer only or in all buffers. For the first use the
+   dictionary-tooltip-mode command, for the latter
+   global-dictionary-tooltip-mode.
+;; choose on of the following lines
+(global-dictionary-tooltip-mode 1)
+(dictionary-tooltip-mode 1)
+   To turn the tool-tip support off, call these functions with a numeric
+   argument of 0.
+   If you get an error message that the server could not be contacted,
+   please check the values of the variables dictionary-server and
+   dictionary-port. The port should usually be 2628, the default server
+   as distributed is
+   You can have multiple independent dictionary buffer. If the above
+   functions are called from within dictionary mode they reuse the
+   existing buffer. Otherwise they create a new buffer.
+   Once a dictionary buffer is created you can close it by simply typing
+   q (dictionary-close) or pressing the [Quit] button on the top.
+   Another, more cruel, way is to use the kill-buffer function which is
+   handled correctly.
+   The dictionary mode save the window configuration on startup and try
+   to reestablish it when the buffer is being closed.
+Using the buffer
+   After a successful search the buffer is divided into two sections. The
+   first one is the button area at the top, the other one is the text
+   buffer displaying the result. By pressing the buttons you can select
+   some functions that are otherwise inaccessible with the mouse.
+   In the text are each definition is introduced by the name of the
+   database that contains it. In the default configuration this text is
+   in italic face. The definition itself can contains hyper links that
+   are marked using blue foreground and both sensitive to clicking with
+   the mouse and pressing return while being within the link.
+   Each link selection or otherwise selected new search or match will
+   create a new buffer showing the new result. You can use the [Back]
+   button on the top or the l key (dictionary-previous) to return the
+   previous buffer contents.
+   Pressing Meta while clicking on a link to start the search will extent
+   the search to all dictionaries (dictionary-default-dictionary to be
+   more precisely).
+   If you prefer using the keyboard it can be very frustrating to use the
+   cursor key to position the point before pressing return to visit the
+   link is possible. Therefore, I defined the Tab and the n keys to jump
+   to the next link (dictionary-next-link) and the Shift-Tab and p keys
+   to jump to the previous one (dictionary-prev-link). Please note that
+   the Shift-Tab key may be the same as the Tab key when running Emacs
+   within a tty (in contrast to a windowing system like X11). There is no
+   way for a application to differ Shift-Tab from Tab in this case,
+   please use the p key to visit the previous link if you run into this
+   problem.
+   The search operation can be invoked by using the [Search Definition]
+   button on the top or by pressing s (dictionary-search). It will ask
+   for a word to search and will default to the word near point. This
+   allows you to edit the word before starting the search. The found
+   definitions will be displayed inside the buffer. If no entries could
+   not be found an error message will be displayed.
+   If you want to quickly lookup the word at the point without further
+   confirmation use the d key (dictionary-lookup-definition). Except for
+   not allowing to edit the search word before asking the server it
+   behaves the same way as the normal search operation.
+   The match operation is started upon pressing the [Matching Words]
+   button or pressing the m key (dictionary-match-words). It will use the
+   current database and the current strategy and list matching words for
+   the one you entered at the prompt. The output is grouped by dictionary
+   and each found word can be looked up by clicking the word or pressing
+   return. Please note that in some cases not only the requested
+   definition but some similiar definitions are shown. This behaviour is
+   caused by the keyword lookup in the server. E.g., when you ask for the
+   definition of from in Webster you will presented with the definitions
+   of from and Thrust, the latter includes the phrase To thrust away or
+   from which causes the display.
+Selecting dictionary
+   By default all dictionaries (special name is "*") are searched for a
+   word definition or for matching words. You can select a specific word
+   for both modi by pressing the [Select Default Dictionary] button or
+   the D key (dictionary-select-dictionary). You will get a message about
+   successful selection.
+   If you hold Meta while selecting a dictionary you will get more
+   information displayed instead.
+   If you want to restore the original behaviour select All dictionaries.
+   The first matching dictionary is a special dictionary (named "!")
+   where the search will stop at the first dictionary with found
+   definitions or matching words.
+Selection search strategy
+   While searching matching words to the pattern you entered the server
+   can use different comparison algorithm (aka search strategy). Every
+   server provides a default strategy which is internally known as ".".
+   After pressing the [Select Match Strategy] button or pressing the M
+   key (dictionary-select-strategy) all available strategies on this
+   server are presented. As in the "select dictionary" mode you can
+   select it by pressing the mouse button 2 or typing return.
+Going backward
+   If you visited a link and want to go back to the previous definition,
+   simply choose the [Back] button or press the l key
+   (dictionary-previous). The buffer contents and cursor position will be
+   restored. If you intented to go beyond the first definition an error
+   message will appear.
+Getting Help
+   If you are totally confused what all the keys do in your dictionary
+   buffer some help will displayed by pressing the h key. Within XEmacs
+   you can exit the help screen by pressing q, in GNU Emacs you have to
+   switch to the help window using C-x o (other-window) first. This help
+   buffer will display the default key bindings only as I had problems
+   with displaying multiple bindings for a single function (e.g., both
+   button2 and return select a link). Any suggestions are welcome.
+                                  Customizing
+   If you have an sufficient recent custom version installed (e.g., the
+   one provided in XEmacs 20.4) you can use the customize-group with the
+   dictionary group to customize this package. For using the customize
+   buffer please refer to its online help.
+   Of course you can set all the variables and hooks you want in the
+   startup file. Here is a little example that I use for selecting the
+   server on my local machine and for binding some function to the
+   user-reserved keys starting from C-c a to C-c z. It also shows how to
+   invoke popup menus (using the right button in GNU Emacs or ctrl+right
+   button in XEmacs) and installs the global tooltip-mode.
+(global-set-key "\C-cs" 'dictionary-search)
+(global-set-key "\C-cm" 'dictionary-match-words)
+(setq dictionary-server "localhost")
+;; Popup menu for GNU Emacs 21, and XEmacs 21
+(if (boundp 'running-xemacs)
+    (global-set-key [(control button3)] 'dictionary-mouse-popup-matching-words)
+   (global-set-key [mouse-3] 'dictionary-mouse-popup-matching-words))
+;; Tool-tip support for GNU Emacs 21
+(setq dictionary-tooltip-dictionary "eng-deu")
+(global-dictionary-tooltip-mode 1)
+                                    Thanks
+   I want to thank Sam Steingold, Baoqiu Cui, Bruce Ravel, Pavel Jan�k,
+   Sergei Pokrovsky, Jeff Mincy, Serge Boiko, Enrico Scholz, Reuben
+   Thomas, and Rui Zhu for their valuable suggestions (including patches)
+   for improving this package.
+                                    License
+   This file is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+   This file is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   General Public License for more details.
+   You should have received a copy of the GNU General Public License
+   version 2 along with this package; see the file GPL.
+                                  ChangeLogs
+Version 1.5 - 1.5.1
+     * fixed bug with non-working dictionary-previous (found by Rui Zhu)
+     * fixed key bindings in link.el
+Version 1.4.1 - 1.5
+     * tool-tip support for GNU Emacs 21
+Version 1.4 - 1.4.1
+     * changed recognition of utf-8 support (suggested by Enrico Scholz)
+Version 1.3.3 - 1.4
+     * added popup menu for easier lookup of words
+Version 1.3.2 - 1.3.3
+     * added support for XEmacs 21 packages to ease installation for
+       those users (suggested and reviewed by Enrico Scholz)
+Version 1.3.1 - 1.3.2
+     * replaced set-text-properties by remove-text-properties and
+       add-text-properties because this function is not recommended
+       within XEmacs (reported by Serge Boiko)
+Version 1.3 - 1.3.1
+     * small fix in dictionary function to check for availability of the
+       utf-8 encoding to prevent problems in certain xemacs versions
+       (reported by Jeff Mincy)
+     * added debian support (use dpkg-buildpackage to build a package)
+Version 1.2.1 - 1.3
+     * Implemented an automatic detection for line ends CR/LF and LF. The
+       variable connection-broken-end-of-line is no longer necessary and
+       its value ignored.
+     * Added utf-8 support, the native character set of the dictionary
+       protocol. Using ISO-8859-1 (aka latin-1) was just a necessary
+       work-around.
+Version 1.2 - 1.2.1
+     * Corrected dictionary command to draw the button bar.
+     * Improved documentation on dictionary to explicitly mention the use
+       of multiple buffers.
+Version 1.1.1 - 1.2
+     * Some users reported problems with GNU Emacs 20.3 and MULE. So I
+       introduced a new variable connection-broken-end-of-line which
+       controls whether a line is ended by \n or by \r\n. You can use the
+       customize-group command on dictionary to change the setting of the
+       variable.
+Version 1.1 - 1.1.1
+     * dictionary-search now allows editing the word to search for
+     * dictionary-search-word-near-point has been removed, you can use
+       dictionary-lookup-definition instead. It behaves like
+       dictionary-search but don't allow the search word to be edited (to
+       speed up looking up words).
+Version 1.0 - 1.1
+     * all dictionary buffers now share a single connection
+     * added kill-all-local-variables
+     * use cons instead of list where possible
+     * dictionary-search now:
+          + use word as point as default (implementing
+            dictionary-search-word-near-point too)
+          + asks for dictionary with prefix argument
+     * added help-echo tags which are used in XEmacs
+     * mark has been replaced by generic marker
+     * added messages for communications to the dictionary server that
+       may take a while
+     * fixed bug with going to the previous link
+     * replaced word-at-point by current-word
+     _________________________________________________________________
+    [14]Torsten Hilbrich
+   Last modified: Tue Jul 17 21:22:58 CEST 2001
+   Visible links
+   1.
+   2.
+   3.
+   4.
+   5. http://localhost/~torsten/dictionary-1.5.1.tar.gz
+   6. http://localhost/~torsten/dictionary-1.4.1.tar.gz
+   7. http://localhost/~torsten/dictionary-1.3.3.tar.gz
+   8. http://localhost/~torsten/dictionary-1.2.1.tar.gz
+   9. http://localhost/~torsten/dictionary-1.1.tar.gz
+  10. http://localhost/~torsten/dictionary-1.0.tar.gz
+  11. http://localhost/~torsten/dictionary.html#changelog
+  12.
+  13. http://localhost/~torsten/dictionary.html#Customizing
+  14.
+   Hidden links:
+  15. http://localhost/~torsten/dictionary-1.png
+  16. http://localhost/~torsten/dictionary-2.png
+  17. http://localhost/~torsten/dictionary-3.png

File debian/README.debian

+dictionary for Debian
+This is an unofficial debian package for the dictionary client found
+Instructions on using this package can be found in the
+/usr/share/doc/dictionary/README.gz file or in the above location.
+Torsten Hilbrich <>, Sun, 13 May 2001 09:55:20 +0200

File debian/changelog

+dictionary (1.5.1-1) unstable; urgency=low
+  * corrected bug with dictionary-previous (found by Rui Zhu)
+  * corrected key bindings in link.el
+ -- Torsten Hilbrich <>  Tue, 17 Jul 2001 20:47:58 +0200
+dictionary (1.5-1) unstable; urgency=low
+  * added tooltip support for emacs
+ -- Torsten Hilbrich <>  Sun,  8 Jul 2001 21:01:12 +0200
+dictionary (1.4.1-1) unstable; urgency=low
+  * changed recognition of utf-8 support (suggested by Enrico Scholz)
+ -- Torsten Hilbrich <>  Fri,  6 Jul 2001 23:08:48 +0200
+dictionary (1.4-1) unstable; urgency=low
+  * support for popup menus
+ -- Torsten Hilbrich <>  Fri,  6 Jul 2001 19:54:54 +0200
+dictionary (1.3.3-1) unstable; urgency=low
+  * added support for xemacs 21 packages (no changes for debian)
+ -- Torsten Hilbrich <>  Wed, 27 Jun 2001 17:56:44 +0200
+dictionary (1.3.2-1) unstable; urgency=low
+  * removed use of set-text-properties in link.el
+ -- Torsten Hilbrich <>  Fri, 22 Jun 2001 21:39:47 +0200
+dictionary (1.3.1-1) unstable; urgency=low
+  * Initial release.
+ -- Torsten Hilbrich <>  Sun, 13 May 2001 09:55:20 +0200

File debian/control

+Source: dictionary
+Section: unknown
+Priority: optional
+Maintainer: Torsten Hilbrich <>
+Standards-Version: 3.2.1
+Package: dictionary
+Architecture: any
+Depends: emacsen
+Description: dictionary client for emacs 
+ This dictionary client provides access to a dictionary server
+ (as defined in RFC 2229) from within Emacs or XEmacs.
+ .
+ It supports utf-8 (currently available in Emacs 21) and allows
+ to follow links (marked by {braces}) within the definitions.
+ .
+ This is an unofficial debian package.

File debian/copyright

+This package was debianized by Torsten Hilbrich on
+Sun, 13 May 2001 09:55:20 +0200.
+It was downloaded from
+dictionary is licensed under the GNU General Public License version 2 or
+On Debian systems the full text of this licence can be found
+in /usr/share/common-licenses/GPL.

File debian/files

+dictionary_1.5.1-1_i386.deb unknown optional

File debian/install.debian

+EFLAGS="-batch -q -l lpath.el -f batch-byte-compile"
+SOURCES="dictionary.el connection.el link.el"
+case "$FLAVOUR" in
+  emacs) echo "install/$PACKAGE: Ignoring emacs";;
+      *) echo -n "install/$PACKAGE: Byte-compiling for $FLAVOUR..."
+         install -m 755 -d $ELCDIR
+         for i in $SOURCES; do cp $ELDIR/$i $ELCDIR; done
+         (cd $ELCDIR && \
+	   echo '(setq load-path (cons "." load-path))' > lpath.el
+           $FLAVOUR $EFLAGS $SOURCES 2>/dev/null
+           rm lpath.el )
+         cp ${CONFFILE} ${CONFDIR}/50${PACKAGE}.el
+         cd $ELCDIR
+         for i in $SOURCES; do rm -f $ELCDIR/*.el; done
+         echo " done."
+	 ;;

File debian/postinst

+/usr/lib/emacsen-common/emacs-package-install $PACKAGE

File debian/prerm

+/usr/lib/emacsen-common/emacs-package-remove $PACKAGE

File debian/remove.debian

+SOURCE="connection.el dictionary.el link.el"
+case "$FLAVOUR" in
+  emacs) echo "install/$PACKAGE: Ignoring emacs";;
+      *) echo -n "remove/$PACKAGE: Removing for $FLAVOUR..."
+         cd $ELCDIR
+         for i in $SOURCE; do rm -f ${i}c; done
+         rm ${CONFFILE}
+         echo " done."
+	 ;;

File debian/rules

+#!/usr/bin/make -f
+# Made with the aid of debmake, by Christoph Lameter,
+# based on the sample debian/rules file for GNU hello by Ian Jackson.
+	$(checkdir)
+	touch build
+	$(checkdir)
+	-rm -f build
+	-rm -f `find . -name "*~"`
+	-rm -rf debian/tmp debian/files* core debian/substvars
+binary-indep: checkroot build
+	$(checkdir)
+# There are no architecture-independent files to be uploaded
+# generated by this package.  If there were any they would be
+# made here.
+binary-arch: checkroot build
+	$(checkdir)
+	-rm -rf debian/tmp
+	install -d debian/tmp
+	cd debian/tmp && install -d `cat ../dirs`
+	cp dictionary.el connection.el link.el dictionary-init.el \
+		debian/tmp/usr/share/emacs/site-lisp
+	cp debian/install.debian debian/tmp/usr/lib/emacsen-common/packages/install/dictionary
+	chmod 755 debian/tmp/usr/lib/emacsen-common/packages/install/dictionary
+	cp debian/remove.debian debian/tmp/usr/lib/emacsen-common/packages/remove/dictionary
+	chmod 755 debian/tmp/usr/lib/emacsen-common/packages/remove/dictionary
+	debstd README 
+	dpkg-gencontrol -isp
+	chown -R root.root debian/tmp
+	chmod -R go=rX debian/tmp
+	dpkg --build debian/tmp ..
+define checkdir
+	test -f debian/rules
+binary: binary-indep binary-arch
+	$(checkdir)
+	test root = "`whoami`"
+.PHONY: binary binary-arch binary-indep clean checkroot


+  (standards-version 1.1
+   version VERSION
+   author-version AUTHOR_VERSION
+   date DATE
+   build-date BUILD_DATE
+   maintainer MAINTAINER
+   distribution xemacs
+   priority low
+   category CATEGORY
+   dump nil
+   description "Interface to web-based dictionary servers."
+   filename FILENAME
+   md5sum MD5SUM
+   size SIZE
+   provides ()
+   requires (REQUIRES)
+   type regular