--- /dev/null
+*.elc
+*.tar.gz
+Makefile
+config.log
+config.status
+elc-stamp
+autom4te.cache
--- /dev/null
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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
+rights.
+
+ 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.
+\f
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 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.)
+\f
+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.
+\f
+ 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
+circumstances.
+
+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.
+\f
+ 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
+Foundation.
+
+ 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.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ 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) <year> <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
+ 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 this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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) year 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.
--- /dev/null
+2016-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.ac: test version
+
+2016-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm.el: change the order of "require"s for correct dependencies
+
+ * action-lock.el: require howm-common for avoiding warning
+
+ * riffle.el: ditto.
+
+ * illusion.el: ditto.
+
+ * howm-lang-en.el: ditto.
+
+ * howm-lang-ja.el: ditto.
+
+ * howm-common.el (howm-insert-file-contents):
+ moved from howm-backend.el for yarot13-insert-file-contents
+
+ * howm-vars.el (howm-menu-action-arg): moved from howm-menu.el
+ for avoiding reference to free variable in howm-lang-*.el
+
+ * howm-backend.el (howm-exclude-p): moved from howm-common.el
+
+ * howm-mode.el (howm-history): moved from howm-common.el
+
+ * howm-common.el (howm-fontify): useless now
+
+2016-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * cheat-font-lock.el (cheat-font-lock-compiled-body):
+ avoid warning in byte-compilation
+ "... is not known to be defined."
+
+ * howm-date.el (howm-action-lock-date-search): ditto.
+ "function ... used to take 0+ arguments, now takes 1"
+
+ * howm-misc.el (howm-ime-fix): ditto.
+ delete obsolete fix for avoiding
+ "`howm-raise-in-minor-mode-map-alist' is not known to be defined."
+
+ * howm-vars.el (howm-dtime-format): ditto.
+ moved from howm-mode.el for avoiding
+ "... is not known to be defined." in `howm-write-log'.
+
+ * howm-common.el (howm-normalize-file-name): ditto.
+ moved from howm-misc.el for avoiding "not known to be defined."
+
+ * howm-vars.el (howm-excluded-file-regexp): ditto.
+
+2016-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm.el: update copyright years
+
+2015-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm.el: use cl-lib instead of cl for avoiding warnings
+
+ * howm-cl.el: howm-cl-* are now useless.
+
+2015-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el
+ (howm-real-grep-single): use cl-labels for avoiding warnings
+ (howm-real-grep-multi): ditto.
+
+ * howm-view.el (howm-item-list-rangeset, tests): ditto.
+
+ * howm-reminder.el (howm-modify-form): ditto.
+
+ * howm-mode.el (howm-normalize): ditto.
+
+ * howm-misc.el (howm-basic-save-buffer): ditto.
+
+ * howm-common.el (howm-with-need, howm-call-process*): ditto.
+
+2015-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.ac: version 1.4.3
+
+2015-12-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.ac: version 1.4.3rc1
+
+ * howm-mode.el (howm-list-around): fix. howm-list-title didn't work.
+
+2015-05-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.ac: test version
+
+ * howm-common.el (howm-subdirectory-p):
+ check "local/remote" for avoiding unnecessary password prompting
+ (cf. http://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?Recentf)
+ thx > Koie-san (hide at koie.org)
+
+ * howm-misc.el (howm-normalize-file-name): ditto.
+
+2015-01-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ update autotools
+
+2015-01-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-vars.el (howm-view-grep-default-option):
+ fix (void-function ed) error in git-head emacs (d5e3922)
+
+ * configure: use autoconf 2.69 instead of 2.67
+
+ * howm.el: update copyright years
+
+ * INSTALL: fix file mode
+
+ * COPYING: ditto.
+
+2013-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.4.2
+
+2013-12-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.4.2rc1
+
+2013-03-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-misc.el (howm-normalize-file-name): fix.
+ howm-mode was not set at C-c , c (howm-create)
+ if howm-directory is placed under symbolic links.
+ thx > dareka 2013-03-20
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste
+
+2013-03-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * gfunc.el (gfunc-with): fix an error in emacs 24.3.1 without byte-compilation.
+ "Can't detect type of ((:nest /home/.../) (%menu%) t) for howm-folder-grep-internal."
+ thx > dareka 2013-03-17
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste
+
+2013-01-03 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ test version
+ - update copyright years
+ - use "declare" instead of "lisp-indent-hook"
+
+2012-12-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ test version
+
+2012-12-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-auto-mode-interpreter-regexp): use howm-if-unbound macro
+
+ * howm-mode.el (howm-keyword-add): fix `save-excursion' defeated by `set-buffer'
+
+ * howm-misc.el (howm-random-walk-summary): avoid non-interactive next-line
+
+ * howm-common.el (howm-goto-line): avoid non-interactive goto-line
+
+ * riffle.el (riffle-contents-to-summary, riffle-set-place): ditto.
+
+ * howm-reminder.el (howm-reminder-goto-today): ditto.
+
+ * howm-view.el (howm-view-summary-shell-command): ditto.
+
+ * howm-mode.el (howm-keyword-add-items): fix reference to free variable `dir'
+
+ * howm-backend.el (howm-open-directory-independently): ditto.
+
+2012-12-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el
+ (howm-item-list-rangeset, howm-item-list-filter): cleaned
+ (howm-rangeset-belong-p): add "almighty" for the above cleaning
+ (howm-rangeset-hit-indicator): added for the above cleaning
+ (howm-rangeset-hit!, howm-rangeset-hit-p): ditto.
+
+2012-12-28 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el
+ (howm-entitle-items-style1): improve efficiency of howm-list-all
+ by avoiding redundant grep calls.
+ thx > dareka 2012-12-10, 2012-12-15, 2012-12-16, 2012-12-28
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste
+ (howm-item-list-filter): ditto
+
+2012-12-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el
+ (howm-entitle-items-style2): add features to summary buffer
+ when howm-view-list-title-type is 2.
+ - min/max length of titles
+ - independent title lines
+ - delete title header "="
+ thx > Albert-san (areiner at tph.tuwien.ac.at)
+ http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000107.html
+ http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000111.html
+ (howm-entitle-items-style2-max-length): ditto.
+ (howm-entitle-items-style2-format): ditto.
+ (howm-entitle-items-style2-title-line): ditto.
+ (howm-view-summary-font-lock-keywords): ditto.
+ (howm-item-titles): ditto.
+ (howm-entitle-items-style1): delete redundant code
+ (howm-view-list-title): ditto.
+ howm-view-list-title1 and howm-view-list-title2 are deleted.
+
+2012-12-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.4.1
+
+ * howm-common.el (howm-get-buffer-for-file):
+ add comment on "File XXX no longer exists!" message.
+ thx > Albert-san (areiner at tph.tuwien.ac.at)
+ http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000103.html
+ http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000106.html
+
+2012-09-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-misc.el (howm-keyword-file): re-generate the keyword list
+ if .howm-keys doesn't exist.
+ thx > Albert-san (areiner at tph.tuwien.ac.at)
+ http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000099.html
+
+ * howm-mode.el (howm-keyword-add-items): ditto.
+
+ * howm-backend.el (howm-open-directory-independently): ditto.
+
+ * howm-menu.el (howm-menu-copy-skel): fix.
+ scan keywords in the initial menu file.
+
+2012-09-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2012-09-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el
+ (howm-view-summary-format): fix.
+ keep the position of the field separator "|" in summary mode
+ even when *.txt and *.howm are mixed.
+ thx > http://toro.2ch.net/test/read.cgi/unix/1141892764/940
+ (howm-view-summary-font-lock-keywords): ditto.
+
+2012-08-16 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.4.0
+
+2012-02-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.4.0rc2
+
+ * howm-misc.el
+ (howm-auto-mode): fix.
+ inhibit-first-line-modes-regexps and inhibit-first-line-modes-suffixes
+ are obsolete in emacs-24.
+ thx > Sasaki Kan san (sasaki at fcc.ad.jp)
+ thx > dareka 2012-02-12, 2012-02-17
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste
+ (howm-if-unbound): ditto.
+
+2012-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm.el: update copyright years
+
+2011-12-28 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.4.0rc1
+
+ * howm.el: avoid warnings about mapcar during byte-compilation.
+
+ * howm-view.el (howm-entitle-items-style1): ditto.
+
+ * howm-misc.el (howm-bug-report): ditto.
+
+ * honest-report.el (honest-report): ditto.
+
+ * howm-cl.el (howm-cl-mapcar*): avoid warnings about cl package
+ during byte-compilation.
+
+ * howm-common.el (howm-call-process*): ditto.
+
+ * howm-date.el (howm-datestr-expand-general): ditto.
+
+ * howm-reminder.el (howm-define-reminder): ditto.
+
+2011-08-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * riffle.el (riffle-pop-to-buffer): fix.
+ windows were split recursively if frame size is large.
+ thx > dareka
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste
+
+2011-03-20 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2011-03-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: fix warning "suspicious cache-id" in autoconf.
+
+2011-03-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-vars.el (howm-view-grep-default-option):
+ check availability of "--exclude-dir".
+ It requires grep >= 2.5.3, whereas popular Macs are shipped with 2.5.1.
+ thx > http://hibari.2ch.net/test/read.cgi/unix/1141892764/787-790n
+ thx > http://hibari.2ch.net/test/read.cgi/unix/1141892764/898-901n
+
+2011-01-19 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-menu.el
+ (howm-menu-recent): change arguments for broader customization.
+ thx > http://hibari.2ch.net/test/read.cgi/unix/1141892764/890
+ (howm-menu-random): ditto.
+ (howm-recent-menu): ditto.
+
+ * howm-backend.el (howm-page-viewer:file):
+ howm-view-external-viewer-assoc works even for directories now.
+ thx > http://hibari.2ch.net/test/read.cgi/unix/1141892764/891
+
+2011-01-14 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2011-01-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-define-risky-command):
+ avoid old-style-backquotes warning when *.elc is loaded.
+ thx > dareka
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste
+
+2011-01-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-view-grep-option): cancel howm-efficiency group
+ because howm-grep group is already placed under it.
+
+2011-01-03 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-initialize-buffer): use howm-funcall-if-defined.
+
+ * riffle.el (riffle-summary-mode): ditto.
+
+2011-01-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el: delete rast.
+
+2011-01-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-mode.el (howm-initialize-buffer): fix.
+ make-local-hook does not exist in emacs-24.0.50.
+ thx > Yamamoto Munehiro san (munepi at vinelinux.org)
+
+ * riffle.el (riffle-summary-mode): ditto.
+
+2011-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el
+ (howm-list-buffers-exclude): officially supported now.
+ (howm-remember-first-line-to-title): ditto.
+ (howm-occur-force-fake-grep): ditto. change default value.
+
+ * howm-backend.el (howm-list-buffers,howm-list-mark-ring,howm-occur):
+ add docstring.
+
+ * howm-mode.el (howm-default-key-table): support new commands.
+
+ * howm-lang-en.el (howm-menu-command-table-en): ditto.
+
+ * howm-lang-ja.el (howm-menu-command-table-ja): ditto.
+
+ * howm-view.el (howm-view-directory,howm-ruby-mode-bug):
+ delete obsolete workaround
+
+ * howm-vars.el
+ (howm-action-lock-forward-fuzziness): update customize group
+ (howm-congrats-command): ditto.
+
+ * howm-reminder.el (howm-highlight-date-regexp-format): ditto.
+
+2011-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el (howm-view-change-title): fix error at howm-list-all
+
+ * howm.el: update copyright years
+
+2010-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el
+ (howm-menu-reminder-separators): officially supported now.
+ (howm-todo-separators,howm-reminder-menu-types): ditto.
+ (howm-schedule-sort-by-time,howm-action-lock-forward-fuzziness): ditto.
+ (howm-process-coding-system): ditto.
+
+ * howm-view.el (howm-view-search-in-result-correctly): ditto.
+
+2010-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-vars.el
+ (howm-compatible-to-1.3): new option
+ (howm-compatibility): new customize group
+ (howm-file-name-format): add switch for compatibility.
+ change *.howm to *.txt.
+
+ * howm-mode.el (howm-normalizer-pair): care for typically wrong setting.
+ thx > http://hibari.2ch.net/test/read.cgi/unix/1141892764/865-870n
+
+2010-12-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.9
+
+2010-12-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.9rc1
+
+2010-07-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-reminder.el (howm-list-schedule): fix.
+ contents buffer was not updated if this function was called
+ from menu.
+ thx > http://pc12.2ch.net/test/read.cgi/unix/1141892764/826
+
+2010-05-05 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm.el: update copyright years
+
+ * howm-menu.el
+ (howm-menu-search): add new options for formatter and regexp search.
+ thx > Morgan Veyret san (morgan.veyret at gmail.com)
+ http://sourceforge.jp/projects/howm/lists/archive/eng/2010/000097.html
+ (howm-menu-general): add a new formatter to show full text.
+ (howm-menu-format-full): ditto.
+ (howm-menu-invoke):
+ open item when RET is hit in menu if howm-menu-list-item
+ property is given at the current point.
+
+2009-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.8
+
+2009-08-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-excluded-dirs): add ".git".
+
+2009-07-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-mode.el (howm-keyword-search-subr): fix.
+ howm-list-title was ignored for come-from links.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/762
+
+2009-06-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-reminder.el (howm-reminder-font-lock-keywords):
+ highlight late deadlines.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/738
+
+2009-06-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-backend.el (howm-real-grep-multi): fix.
+ howm-list-recent caused error "Can't exec program" or
+ "Spawning child process: exec format error" if howm-view-use-grep
+ is set and there are too many recently-changed files.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/733
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Windows
+
+ * howm-vars.el (howm-command-length-limit): new option
+
+2009-05-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el
+ (howm-filter-items-by-contents):
+ splitted from howm-view-remove-by-contents for functional style.
+ it will be used in
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?HidePrivateReminder
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/731
+ (howm-entitle-items-style1): use howm-view-search-folder-fi.
+ (howm-item-list-filter): ditto.
+
+2009-05-22 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * riffle.el (riffle-line-number): widen before counting.
+
+2009-05-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+ update automake
+
+ * howm-vars.el
+ (howm-excluded-dirs): exclude _darcs/ etc. by default.
+ (howm-view-grep-default-option): ditto.
+
+2009-03-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2009-03-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el (howm-real-grep-multi, howm-real-grep-single):
+ remove final slash for compatibility with yagrep.
+ http://www.kt.rim.or.jp/~kbk/yagrep/index.html
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/685-686n
+
+ * howm-common.el (howm-expand-file-names): ditto.
+
+2009-02-05 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm.el: update copyright years
+
+ * howm-reminder.el (howm-extend-deadlines): new command.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/671
+
+ * howm-menu.el (howm-menu-refresh-background): fix.
+ The main function was erased wrongly on 2006-03-11.
+
+2008-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.7
+
+ * howm-misc.el (howm-basic-save-buffer): fix.
+ inhibit "Wrote ..." message.
+
+2008-11-05 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.7rc4
+
+ * howm-view.el (howm-view-summary-item): fix.
+ use full path for equivalence check
+ thx > dareka
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste
+
+2008-10-07 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.7rc3
+
+ * riffle.el (riffle-summary-update):
+ cancel fix on 2008-09-23, and remove corresponding feature itself.
+ This special feature was broken from howm-1.2 to 1.3.7rc2,
+ and I received no bug report.
+
+2008-09-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * riffle.el (riffle-summary-update): fix.
+ behavior was wrong when howm-view-split-horizontally is
+ neither t nor nil.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/591
+
+2008-09-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-configuration-for-major-mode):
+ modify sample for "defun*"
+
+2008-08-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.7rc2
+
+ * howm-menu.el (howm-recent-menu):
+ select only one item from each file in random selection.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/563-566n
+
+ * howm-misc.el (howm-bug-report): use howm-cl-mapcan instead of mapcan
+
+ * howm-view.el (howm-entitle-items-style2): ditto.
+
+2008-08-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.7rc1
+
+2008-08-09 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-normalizer):
+ use original names instead of aliases
+
+2008-08-05 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-reminder.el (howm-reminder-menu): fix.
+ first argument was not used, and some items were dropped
+ in howm-menu-categorized-reminder.
+ thx > taka-san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste
+
+2008-07-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2008-07-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-keyword-search-subr):
+ howm-view-item-list was remained wrongly
+
+ * howm-reminder.el (howm-list-todo-sub): ditto.
+
+ * configure.in: test version
+
+ * howm-view.el (howm-entitle-items-style1): fix.
+ titleless items were not shown
+
+ * howm-view.el (howm-entitle-items-style2): fix error.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/552
+
+ * howm-mode.el
+ (howm-call-view-summary): added for manipulation of titles
+ (howm-list-title-clear-previous): ditto.
+
+ * howm-backend.el (howm-item-dup): ditto.
+
+2008-07-16 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-mode.el
+ (howm-all-items): splitted and renamed from howm-list-all
+ (howm-list-around): rewritten in functional style
+
+2008-07-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-filter-items):
+ renamed from howm-view-filter-internal
+ (howm-filter-items-uniq, howm-filter-items-by-name)
+ (howm-filter-items-by-summary, howm-filter-items-by-name/summary)
+ (howm-filter-items-by-date, howm-filter-items-by-reminder)
+ (howm-filter-items-by-mtime): ditto.
+ (howm-entitle-items):
+ renamed from howm-view-list-title-internal
+ (howm-entitle-items-style1, howm-entitle-items-style2): ditto.
+ (howm-entitle-items-style1): return value is changed
+ (howm-sort-items):
+ renamed from howm-view-sort-internal
+ (howm-sort-items-by-random, howm-sort-items-by-name)
+ (howm-sort-items-by-numerical-name, howm-sort-items-by-date)
+ (howm-sort-items-by-reverse-date, howm-sort-items-by-summary)
+ (howm-sort-items-by-reminder, howm-sort-items-by-mtime)
+ (howm-sort-items-by-reverse): ditto.
+ (howm-view-lift-internal): avoid simple variable name for safety
+
+ * howm-backend.el (howm-view-directory-items):
+ use howm-folder-items insteadly.
+
+2008-07-14 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2008-07-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el
+ (howm-search): add argument
+ (howm-list-related): simplified
+
+ * howm-vars.el (howm-view-use-grep): fix docstring
+
+ * howm-mode.el (howm-call-view-search): removed
+
+2008-07-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-view-in-background): don't use it in principle
+
+ * howm-reminder.el (howm-reminder-add-font-lock): splitted
+
+ * howm-misc.el (howm-mode-add-font-lock): ditto.
+
+ * howm-view.el (howm-view-summary,howm-view-summary-rebuild):
+ add optional argument for font-lock
+
+ * howm-mode.el (howm-search,howm-keyword-search-subr):
+ don't use *howm-view-font-lock-keywords* outside howm-view.el
+
+ * action-lock.el: untabify
+
+ * howm-view.el (howm-view-search-folder): splitted
+
+ * howm-mode.el
+ (howm-list-normalize, howm-normalizer-pair, howm-normalize-oldp):
+ warn if howm-list-normalizer is set.
+ convert howm-list-normalizer to howm-normalizer if possible.
+ (howm-normalize-show): replace howm-list-normalize
+
+ * howm-mode.el (howm-list-all, howm-list-recent, howm-search):
+ use howm-normalize-show
+
+ * howm-backend.el (howm-open-directory-independently): ditto.
+
+2008-07-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el
+ (howm-normalizer): new option
+ (howm-list-normalizer): default is changed to nil
+
+ * howm-mode.el
+ (howm-list-normalize): switch new or old codes
+ (howm-normalize): rewrite howm-list-normalize in functional style
+ (howm-list-normalize-old): renamed from howm-list-normalize. use prog1.
+ (howm-list-title-put-previous): add optional argument
+
+ * howm-view.el
+ (howm-view-list-title-internal): split howm-view-list-title function
+ (howm-view-list-title1-internal): ditto.
+ (howm-view-list-title2-internal): ditto.
+
+ * howm-mode.el
+ (howm-default-key-table): update docstring
+ (howm-migemo-client): add docstring
+ (howm-mode): remove useless backquote
+
+ * howm.el: update copyright years
+
+2008-05-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-vars.el (howm-action-lock-forward-fuzziness): new option.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/519
+ * howm-reminder.el (howm-action-lock-forward-modify-current-line):
+ ditto.
+
+2008-05-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el (howm-view-filter-general): fix. predicate was reversed.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/514
+
+2008-05-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * riffle.el
+ (riffle-keep-window): new option.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/507
+ (riffle-summary-subr): check riffle-keep-window.
+ (riffle-post-command): ditto.
+ (riffle-summary-to-contents): ditto.
+ (riffle-pop-to-buffer): ditto.
+ (riffle-refresh-window-configuration): ditto.
+
+ * howm-date.el (howm-date-forward-ymd): don't call riffle directly.
+
+ * riffle.el (riffle-summary-update): use catch & throw.
+
+2008-05-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el (howm-view-filter-general): fix. revived for howmoney.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/503
+
+2008-05-14 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-backend.el
+ (howm-real-grep-single): use labels instead of flet.
+ (howm-real-grep-multi): ditto.
+
+ * howm-misc.el (howm-basic-save-buffer): ditto.
+
+ * howm-mode.el (howm-expand-aliases-recursively): ditto.
+
+ * howm-common.el (howm-with-exit): new macro for the below fix.
+
+ * howm-reminder.el
+ (howm-list-schedule): fix.
+ cancel postprocess if no-match.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/494
+ (howm-list-todo-sub): ditto.
+ (howm-list-reminder-final-setup): fix.
+ action-lock-mode was toggled unintentionally.
+
+ * howm-common.el
+ (howm-list-exclude): removed (unused)
+ (howm-item-exclude-p): ditto.
+ (howm-view-item-exclude-p): ditto.
+
+2008-05-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el
+ (howm-view-summary-mode): fix.
+ global value of font-lock-keywords-only was set wrongly
+ in CVS head emacs after 2008-02-24.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/484-487n
+ (howm-view-contents-mode): ditto.
+
+ * howm-menu.el (howm-menu-set-face): unify the style (no effect)
+
+2008-04-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-backend.el (howm-real-grep-multi):
+ split howm-view-grep-option.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/458
+
+2008-04-14 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-view-title-skip-regexp):
+ use howm-view-title-header.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/454
+
+2008-04-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-view-dired): call howm-view-dired-goto by default.
+
+ * howm-vars.el (howm-view-dired-keep-cursor): removed.
+
+2008-04-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-test): add docstring.
+ thx > dareka
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+2007-11-07 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2007-11-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-decode-time):
+ fix.
+ today's schedule didn't appear on menu on the last day of DST.
+ thx > Mielke-san (peter.mielke at gmail.com)
+ http://lists.sourceforge.jp/mailman/archives/howm-eng/2007/000034.html
+
+2007-07-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el (howm-view-sort/filter-doit): fix.
+ return list of items for backward compatibility.
+ thx > taku-san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?HidePrivateReminder
+
+2007-05-28 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el (howm-view-summary-next-section-sub):
+ stop at the first hit line of each file.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/360
+
+2007-05-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm.el: manage circular dependencies
+
+ * elisp-comp: cancel the fix on 2007-05-05
+
+ * honest-report.el
+ (honest-report-version-assoc): be independent of howm-*
+ (honest-report-emacs-build-time): ditto.
+ howm-emacs-build-time is moved and renamed.
+
+2007-05-05 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * mkinstalldirs: update to automake-1.10
+
+ * missing: ditto.
+
+ * install-sh: ditto.
+
+ * elisp-comp: ditto. & fix (keep the order of arguments)
+
+ * config.guess: update to autotools-dev_20060702
+
+ * config.sub: ditto.
+
+ * acinclude.m4: fix for aclocal 1.10
+
+ * Makefile.am: ditto.
+
+2007-05-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-menu.el
+ (howm-menu-reminder-format): new option.
+ (howm-menu-list-format): columnar formatting
+ thx > Mielke-san (peter.mielke at gmail.com)
+ http://lists.sourceforge.jp/mailman/archives/howm-eng/2007/000032.html
+
+2007-04-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2007-04-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-view-summary-mode): fix.
+ summary buffer was not highlighted in howm-occur.
+
+ * howm-backend.el (howm-occur-force-fake-grep): new option.
+
+ * howm-view.el (howm-view-search-folder):
+ check FIXED-P for highlighting
+
+ * configure.in: test version
+
+2007-04-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-read-aliases): fix.
+ RET on "BBB" in "<<< aaa <<< BBB" didn't search "aaa"
+ if howm-keyword-case-fold-search is non-nil.
+
+2007-04-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el
+ (howm-view-filter-by-mtime): fix. range was ignored.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/340
+ (howm-view-filter-by-time-range): ditto.
+
+2007-04-03 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-truncate-string): fix. correct docstring
+
+2007-04-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el (howm-view-sort-by-random-internal): fix.
+ wrong variable name
+
+ * configure.in: test version (canceled)
+
+ * howm-view.el (howm-view-defun-sort-by): use macro to define sort-by-X
+
+2007-04-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: private test version
+
+ * howm-reminder.el (howm-schedule-sort-items): wrongly interactive
+
+ * howm-view.el
+ (howm-view-mtime): remove howm-view-xtime
+ (howm-view-filter-by-mtime): ditto.
+ (howm-view-sort-by-mtime): ditto.
+ (howm-view-filter-general): remove with-index
+ (howm-view-filter-internal): ditto.
+ (howm-view-sort-by-name-match): renamed to howm-view-lift-by-*
+ (howm-view-sort-by-summary-match): ditto.
+ (howm-view-sort-by-summary-match-string): ditto.
+ (howm-view-filter-general): removed for more functional style
+ (howm-view-sort-general): ditto.
+ (howm-view-sort-by-general-match): ditto.
+ (howm-view-filter-by-date-internal): fix. limit date was wrong by one
+ (howm-view-filter-by-reminder-internal): ditto.
+ (howm-view-filter-by-mtime-internal): ditto.
+
+ * howm-reminder.el (howm-list-reminder-final-setup): fix.
+ schedule/todo list was not fontified.
+ (howm-list-schedule): defer setup of summary buffer for efficiency.
+ (howm-list-todo-sub): ditto.
+
+ * howm-view.el
+ (howm-view-filter-by-date-internal): fix.
+ 03-16 was listed when limit is "to 03-15".
+ (howm-view-filter-by-reminder-internal): ditto.
+ (howm-view-filter-by-xtime): ditto.
+
+ * configure.in: private test version
+
+2007-03-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-view-contents-limit): fix. not used.
+ also change its default from 10000 to nil for backward compatibility.
+
+ * howm-mode.el
+ (howm-list-toggle-title): fix.
+ internal calls to howm-list-title shouldn't perform toggle.
+ (howm-keyword-search-subr):
+ defer setup of summary buffer for efficiency.
+
+ * howm-cl.el (howm-cl-remove-duplicates*): fix.
+ "<<< foo" didn't appear at the top of the summary buffer
+ when howm-list-title is T.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/328
+
+ * howm-misc.el (howm-buffer-name-format): new option.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/333
+
+2007-03-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2007-03-22 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-view-contents-item):
+ don't insert separator "====>>> xxx.howm" in contents buffer
+ if just one item is displayed.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/314
+
+2007-02-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-vars.el (howm-check-word-break): new option.
+ thx > Mielke-san (peter.mielke at gmail.com)
+ http://lists.sourceforge.jp/mailman/archives/howm-eng/2007/000030.html
+
+ * howm-view.el (howm-view-summary-mode):
+ highlight today and tomorrow.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/275
+
+ * howm-menu.el (howm-menu-font-lock-rules): ditto.
+
+ * howm-reminder.el (howm-highlight-date-regexp-format):
+ change default.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/275
+
+ * howm-vars.el (howm-funcall-if-defined): fix docstring
+
+ * howm.el: update copyright years
+
+2007-02-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * honest-report.el (honest-report-version-assoc):
+ report environment variables "LANG" etc.
+
+2006-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-reminder.el (howm-reminder-summarizer):
+ show "late days" in addition to "day of week".
+ thx > Mielke-san (peter.mielke at gmail.com)
+ http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000028.html
+
+2006-12-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-keyword-search-open-menu):
+ show warning when two or more %menu% are found.
+
+ * howm-view.el (howm-view-sort-by-general-match):
+ return single/multi/nil instead of conventional t/nil.
+
+2006-12-16 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm.el: security fix.
+ put risky-local-variable property
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/207
+
+ * configure.in: version 1.3.4 is released from another branch
+
+2006-12-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: private test version
+
+ * howm-vars.el
+ (howm-define-risky-command): put risky-local-variable property
+
+ * riffle.el: ditto.
+
+ * illusion.el: ditto.
+
+ * gfunc.el: ditto.
+
+ * action-lock.el: ditto.
+
+ * howm-cl.el (howm-cl-gensym): added.
+
+ * howm-misc.el (howm-required-features): add honest-report
+
+ * riffle.el (riffle-set-mode-maybe): removed (not used anywhere)
+
+ * howm-mode.el
+ (howm-keyword-aliases): fix. check howm-keyword-case-fold-search.
+ (howm-template-string): fix. accept (lambda ...) as howm-template.
+
+2006-11-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-common.el
+ (howm-log-buffer-name-format): added
+ (howm-write-log): rename buffer according to howm-log-buffer-name-format
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/193-194n
+ (howm-history): raise error if history file doesn't exist.
+
+ * howm-backend.el
+ (howm-keyword-buffer):
+ force howm-keyword-buffer-name-format even for the normal case.
+ (howm-keyword-buffer-name): removed
+ (howm-get-keyword-buffer): removed
+
+ * howm-common.el (howm-get-buffer-for-file): added
+
+ * howm-misc.el (howm-basic-save-buffer):
+ doesn't show "Wrote..." message any more.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/193-194n
+
+2006-10-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-message-nolog): message without logging
+
+ * howm-view.el (riffle-post-update:howm): ditto.
+
+2006-10-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-backend.el
+ (howm-get-keyword-buffer): fix: argument is not optional any more.
+ (howm-keyword-buffer-name): new option.
+ (howm-keyword-buffer): buffer-name is now customizable.
+
+2006-10-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * cheat-font-lock.el (cheat-font-lock-20040624-format-p): fix.
+ font-lock-compile-keywords may add a help-echo
+ in CVS-head emacs, and its result can be longer than expected.
+ see 2005-10-21 in lisp/ChangeLog.
+ http://lists.gnu.org/archive/html/emacs-commit/2005-10/msg00635.html
+ http://cvs.savannah.gnu.org/viewcvs/emacs/emacs/lisp/font-lock.el.diff?tr1=1.276&tr2=1.277&r1=text&r2=text
+
+2006-10-03 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-backend.el (howm-page-open:file): fix. need widen.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/160-161n
+
+2006-09-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-reminder.el (howm-todo-priority-schedule-bottom): make it deeper
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/149
+
+ * howm-vars.el (howm-huge++): new parameter
+
+2006-09-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-version.el.in: remove howm-{en,ja}-dir
+
+ * howm-lang-ja.el (howm-day-of-week-ja): Use a list instead of a string.
+
+ * howm-lang-en.el (howm-day-of-week-en): ditto.
+ Use "Sun" instead of "S".
+
+ * howm-menu.el (howm-day-of-week-string):
+ howm-day-of-week-{en,ja} can be a list.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/147
+
+2006-07-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-menu.el (howm-menu-list-regexp): fix.
+ RET at "7" in "> 2006-07-26-015606 |" in menu buffer caused error.
+ thx > na-san
+
+2006-06-28 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-misc.el (howm-bayesian-set): new command.
+
+2006-06-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-expand-aliases-recursively):
+ CL function "copy-list" is replaced with built-in "copy-sequence".
+
+ * howm-menu.el (howm-menu-shortcut-sort): ditto.
+
+2006-06-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-reminder.el (howm-list-active-todo): new command.
+
+ * howm-view.el (howm-view-sort-by-summary-match-string): new feature.
+
+ * howm-misc.el (howm-mode-set-buffer-name): new tool.
+ thx > Mielke-san (peter at exegenix.com)
+ http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000020.html
+ http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000022.html
+ thx > anonymous
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ExternalTool
+
+ * howm-vars.el (howm-menu-reminder-separators): fix.
+ "Between schedule and todo" corresponds to nil.
+
+ * howm-reminder.el (howm-todo-separators): new option.
+
+ * howm-backend.el
+ (howm-page-type): page can be nil.
+ (howm-make-page:nil): ditto.
+ (howm-item-page): ditto.
+
+ * howm-reminder.el (howm-todo-insert-separators):
+ use nil-page item instead of string.
+
+ * howm-menu.el (howm-menu-format-todo): ditto.
+
+2006-06-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * COPYING: fix.
+ obsolete address of FSF is corrected.
+ thx > Fujimura Yuki san <ykfj@users.sourceforge.jp>
+
+2006-06-05 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.3
+
+2006-05-20 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.3rc1
+
+2006-05-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2006-05-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-with-coding-system):
+ accept a pair (for-read . for-write).
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/96
+
+ * howm-vars.el (howm-process-coding-system): ditto.
+
+2006-05-09 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-common.el (howm-with-coding-system): fix.
+ howm-process-coding-system should be checked at runtime.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/94-95n
+
+2006-05-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2006-05-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-remember-get-title): fix.
+ remove newline from title string.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/92
+
+2006-04-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-misc.el (howm-remember-first-line-to-title): new option.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/72-75n
+
+ * howm-common.el (howm-call-process): fix.
+ set coding-system for temporary buffer.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/63-83n
+
+2006-04-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-misc.el (howm-remember-submit): fix.
+ "%file" in howm-template now works even for howm-remember.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/61
+
+2006-03-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-misc.el (howm-remember): new command.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/24-25n
+
+2006-03-22 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-view.el (howm-view-list-title-type):
+ experimental code to show title before summary of each item.
+ thx > Highfly san
+ http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000025.html
+
+2006-03-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * illusion.el: require easy-mmode explicitly
+
+ * honest-report.el (honest-report-window-list):
+ support emacs20 (and meadow-1.15).
+
+2006-03-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2006-03-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-migemo-client-option): new option.
+ thx > http://pc11.2ch.net/test/read.cgi/unix/1141892764/9
+
+2006-02-04 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2006-02-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm.el: fix.
+ howmz needs both howm-menu-command-table-{en,ja}.
+
+ * configure.in: test version
+
+ * howm.el: fix.
+ require howm-lang-* before it is really needed.
+ this may be necessary for howmz.
+ thx > (TxT) san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus
+ http://noir.s7.xrea.com/archives/000136.html
+
+2006-01-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-menu.el (howm-menu-categorized-reminder):
+ howm-menu-categorized-todo is replaced with -reminder.
+ fix error when howm-menu-reminder-separators is not null.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/919
+
+2006-01-19 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2006-01-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el (howm-page-viewer:file):
+ list files in directory in contents buffer.
+
+2006-01-17 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-menu.el (howm-menu-categorized-todo):
+ misc. can be omitted.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/909
+
+2006-01-16 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-menu.el (howm-menu-categorized-todo): new feature (experimental).
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/885
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/890
+
+ * howm-cl.el (howm-cl-find-if): added
+
+ * howm-backend.el (howm-folder-grep-internal:pages): cleaned.
+
+ * howm-menu.el (howm-menu-general): cleaned.
+ you can make your own list in menu buffer more easily.
+ see howm-menu-schedule, howm-menu-todo, howm-menu-recent, and
+ howm-menu-search for example.
+
+2006-01-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-buffer-p): fix.
+ .howm-keys and its alternatives were overlooked.
+ thx > http://d.hatena.ne.jp/dasm/20060110
+
+2006-01-07 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2006-01-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm.el: update copyright years
+
+ * cheat-font-lock.el (cheat-font-lock-20040624-format-p): fix.
+ avoid "Font-lock trying to use keywords before setting them up" error
+ during 'make' for emacs-22.0.50.1 (CVS version).
+ thx > http://tty0.exblog.jp/2944244
+ thx > http://d.hatena.ne.jp/yoshk/20060102
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/867
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/873-874n
+
+2005-12-17 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-custom-reminder-get-types): fix.
+ treat unknown marks correctly.
+
+ * howm-reminder.el (howm-modify-reminder-types):
+ example is commented out.
+
+2005-12-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+ (packagedir): fix lispdir for xemacs with packagedir
+
+2005-12-09 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: endir and jadir are now obsolete.
+ --with-rel-datadir is canceled.
+ thx > HONJOH Eiji san. irodori@irodori.sakura.ne.jp
+ thx > ZENITANI Seiji san. zenitani@mac.com
+
+ * howm-menu.el (howm-menu-initialize-skel): ditto.
+ read howm-menu-*.el instead of {en,ja}/0000-00-00-000000.howm
+
+ * howm-mkmenu.el: ditto.
+ new script to make howm-menu-*.el from {en,ja}/0000-00-00-000000.howm
+
+ * Makefile.am: ditto.
+ add howm-menu-*.el. delete en/ and ja/.
+
+ * howm-lang-en.el: separate language-dependent variables
+
+ * howm-lang-ja.el: ditto.
+
+ * howm-menu.el (howm-lang-ref): ditto.
+
+ * howm-common.el (howm-get-symbol): ditto.
+
+ * Makefile.am (howm_LISP): ditto.
+
+2005-12-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: new option --with-howmdir
+ default lispdir is now .../site-lisp.
+ thx > HONJOH Eiji san. irodori@irodori.sakura.ne.jp
+
+ * Makefile.am (howm_LISP): ditto.
+
+ * acinclude.m4 (ac_output): ditto.
+
+ * bcomp.el.in (bcomp-files): ditto.
+
+2005-11-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * configure.in: new option --with-rel-datadir
+ previous --with-data-into-lispdir is canceled.
+ thx > ZENITANI Seiji san. zenitani@mac.com
+ thx > HONJOH Eiji san. irodori@irodori.sakura.ne.jp
+
+2005-11-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * configure.in: new option --with-data-into-lispdir
+ thx > HONJOH Eiji san. irodori@irodori.sakura.ne.jp
+
+2005-11-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-mode-off-hook): fix.
+ remove duplicated defcustom.
+ thx > TAKEMURA Masayuki san. ICG04984@nifty.com
+
+2005-11-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-menu.el (howm-menu-skel):
+ - use symbol-value instead of eval.
+ - howm-en-dir and howm-ja-dir can be relative paths from the directory
+ of howm.elc or howm.el. (for Carbon emacs package)
+ thx > ZENITANI Seiji san. zenitani@mac.com
+ thx > HONJOH Eiji san. irodori@irodori.sakura.ne.jp
+ thx > ARAI Ryotaro san. misty@...
+ http://lists.sourceforge.jp/mailman/archives/macemacsjp-users/2005-November/000756.html
+ http://lists.sourceforge.jp/mailman/archives/macemacsjp-users/2005-November/000760.html
+
+2005-11-22 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-menu-todo-priority): change default.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/75-77n
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/842-846n
+
+2005-11-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-misc.el (howm-open-named-file): new command.
+ thx > Eduardo Ochs san
+ http://lists.sourceforge.jp/mailman/archives/howm-eng/2005/000010.html
+
+2005-11-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-reminder.el (howm-action-lock-forward-open):
+ don't depend on magic-return.
+
+ * howm-date.el (howm-action-lock-date-search):
+ now it works even on menu buffer.
+ thx > Kaneko Kensuke san
+ http://d.hatena.ne.jp/a666666/20051110/1131621183
+
+ * howm-reminder.el (howm-action-lock-forward):
+ keep my text property for jump from menu.
+
+ * howm-menu.el (howm-menu-list-action):
+ keyword is now optional.
+
+ * howm-date.el (howm-action-lock-date-prompt):
+ misleading message is corrected.
+ thx > Kaneko Kensuke san
+ http://d.hatena.ne.jp/a666666/20051110/1131621183
+
+2005-11-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-menu.el (howm-menu-list-action): fix.
+ history list was broken.
+
+2005-11-05 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-menu.el (howm-menu-list-action):
+ get text property not from buffer but from argument.
+
+ * action-lock.el (action-lock-general):
+ keep text properties.
+
+ * howm-common.el (howm-history):
+ disable expansion of %schedule etc.
+
+ * configure.in: test version
+
+2005-11-04 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-replace-region):
+ `format' in xemacs doesn't keep text properties.
+
+ * howm-menu.el (howm-menu-list-format):
+ store item to text property so that we can open it directly
+ instead of searching text when RET is hit on ">" in menu buffer.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/823
+
+ * action-lock.el (action-lock-general): add docstring
+
+ * configure.in: version 1.3.2
+
+ * howm-mode.el (howm-keyword-search-subr):
+ cancel the below change. this problem should be fixed
+ more fundamentally.
+
+ * howm-mode.el (howm-keyword-search-subr):
+ search lines whose entire texts exactly match to the geven keyword
+ when open-unique-p is non-nil.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/823
+
+2005-10-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.2rc4
+
+2005-10-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-view-dired-keep-cursor): new option.
+ thx > 797 http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+2005-10-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.2rc3
+ something was wrong in 'cvs commit' of rc2.
+
+2005-10-20 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.2rc2
+
+ * howm-view.el
+ (howm-view-dired): fix.
+ require dired-vir for xemacs, and remove duplicates.
+ thx > 797 http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+2005-10-16 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.2rc1
+
+2005-10-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-read-event): fix.
+ error when RET is hit on date format [2005-10-15] in menu buffer
+ in xemacs.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/797-801n
+
+2005-10-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-common.el (howm-view-in-background): fix.
+ This macro is moved from howm-view.el because it is used across files.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/789-791n
+
+2005-09-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2005-09-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el (howm-occur): new command
+
+2005-09-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-view-contents-limit): default is changed to 10000
+
+2005-09-07 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * action-lock.el
+ (action-lock-open-regexp): include / at the end
+ (action-lock-browse-regexp): ditto
+
+2005-09-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * honest-report.el (honest-report-screenshot): fix.
+ window-end (without update) can be negative when completion window
+ is displayed temporally.
+
+2005-09-05 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-call-process-here): set coding system
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/784
+
+ * howm-vars.el (howm-process-coding-system): new option
+
+2005-09-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el (action-lock-find-file): expand-file-name
+ thx > hattori-san
+ http://www.tom.sfc.keio.ac.jp/~hattori/blog/setting/2005/08/howm.html
+
+2005-08-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-vars.el (howm-list-title): add howm-action-lock-date-search
+ so that title is shown for `howm-search-today' (C-c , , .) by default.
+ thx > nobu-san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+ * howm-date.el (howm-action-lock-date-search): add `howm-set-command'.
+
+2005-08-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el: add (require 'riffle)
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/782
+
+2005-08-17 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.1
+
+2005-08-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.1rc1
+
+ * howm-vars.el (howm-get-locale): fix. never return nil
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/780-781n
+
+2005-08-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-view-summary-omit-same-name): new option
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/779
+
+2005-08-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-view-title-skip-regexp): new option
+
+2005-08-09 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-bug-shot): new command for bug report
+
+2005-08-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-bug-report):
+ call bugshot-version-assoc internally
+
+ * honest-report.el: new tool for better bug report
+
+2005-08-03 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * riffle.el (riffle-define-derived-mode):
+ defined to avoid slow down in xemacs.
+
+2005-08-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * gfunc.el (gfunc-call): recursion is rewritten to loop.
+ recursion seems remarkably slow in xemacs.
+
+ * configure.in: version 1.3.0
+
+2005-07-28 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.0rc5
+
+2005-07-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el
+ (howm-view-summary-item):
+ don't show same name repeatedly.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/754
+ (howm-view-summary-stripe): canceled.
+ the above should be better.
+ (howm-view-contents-mode): fix.
+ howm-view-summary-font-lock-keywords must not work in contents buffer.
+ (howm-view-summary-font-lock-keywords): add default.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/754
+
+ * howm-reminder.el (howm-with-schedule-summary-format):
+ use this macro and never use howm-view-summary-format directly.
+
+2005-07-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-view-summary-stripe): new option.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/754
+
+ * configure.in: version 1.3.0rc4 again. mistake in packaging
+
+2005-07-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.0rc4
+
+ * howm-vars.el (howm-excluded-file-regexp-dir-char): fix.
+ Both "\" and "/" indicate directory in win.
+
+2005-07-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-message-time):
+ Don't hide "No match" message even when howm-message-time is set.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/751
+
+ * riffle.el (riffle-summary): cleaned.
+ global varibale *howm-view-summary-nop* is replaced with optional
+ argument.
+ "No match" message is moved to howm-view-summary.
+
+2005-07-16 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-call-process):
+ howm-call-process-last-command keeps all arguments
+ so that we can repeat the last call-process
+ by (apply #'howm-call-process howm-call-process-last-command).
+
+2005-07-14 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-content-from-region): fix. Labels are corrected.
+
+2005-07-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.0rc3
+
+2005-07-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-menu.el (howm-menu-dynamic-setup): fix.
+ canceled change in this function on 2005-05-10,
+ so that underlines appear on come-from keywords
+ in reminder lines in menu.
+
+2005-06-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.0rc2
+
+2005-06-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-menu-lang):
+ check locale to select default language.
+
+2005-06-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.3.0rc1
+
+2005-06-17 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * riffle.el (riffle-pop-to-buffer): fix.
+ howm-view-summary-window-size didn't work when it is greater than
+ half size.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/724
+
+2005-06-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-mode.el (howm-template-receive-buffer): new option.
+ By default, previous buffer is also passed to howm-template
+ when it is a function.
+ thx > http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Comment
+
+2005-06-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2005-06-09 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-cl.el: cl functions are collected to single file
+ and defalias-ed to inhibit warning during byte-compilation
+ in emacs-22.0.50.1 (CVS version).
+
+ * howm-misc.el (howm-auto-save-buffers-p):
+ Inhibit warning 'reference to free variable'
+ for auto-save-buffers-regexp during byte-compilation
+ in emacs-22.0.50.1 (CVS version).
+
+2005-06-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2005-06-07 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el
+ (howm-action-lock-forward-kill-buffer): new option.
+
+ * howm-reminder.el (howm-action-lock-forward-invoke):
+ call undo-boundary before modification.
+ howm-action-lock-forward-save-buffer shouldn't work when
+ the corresponding buffer is already modified before this action.
+
+2005-06-03 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-common.el (howm-time-difference-second): don't omit milliseconds.
+ I can't remember the reason of omission
+ and I cancel this change on 2005-03-09.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/709
+
+ * action-lock.el (action-lock-magic-return): fix.
+ snatched RET from pobox-newline in pobox-mode.
+ Indeed, old code snatched all RET wrongly from any modes.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/711
+
+2005-06-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2005-06-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el: fix.
+ write color condition in each defface
+ to avoid error on monochrome display.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/706
+
+2005-05-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2005-05-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-reminder.el
+ (howm-action-lock-forward): fix.
+ menu buffer was collapsed when one hits RET on "@"
+ in "[2005-05-30]@ foo" in menu buffer with below setting.
+ - (setq howm-menu-expiry-hours 2)
+ - (setq howm-action-lock-forward-save-buffer t)
+ - (setq howm-menu-refresh-after-save t) ;; this is default
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/705
+ (howm-action-lock-forward-invoke):
+ kill-buffer when current-buffer was newly opened for this procedure.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/705
+
+2005-05-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-vars.el (howm-funcall-if-defined):
+ cheat to avoid annoying "not known to be defined" warning
+ in byte-compilation.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1111816102/485
+
+ * howm-view.el (howm-view-sort-items):
+ defalias for compatibility. howmz needs it.
+ http://noir.s7.xrea.com/archives/000136.html
+ http://noir.s7.xrea.com/pub/zaurus/howmz.el
+ thx > (TxT) san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus
+
+2005-05-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-reminder.el (howm-todo-menu): fix.
+ Insertion of separators was wrong.
+ At least one item was placed between separators regardless of priority.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/703
+
+2005-05-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-action-lock-forward-save-buffer): 'defcustom'ed
+
+2005-05-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-mode.el: fix.
+ check direct requiring of howm-mode before loading howm-common.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/698
+
+2005-05-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-vars.el
+ (howm-menu-list-face): Its default is empty now
+ so that we can avoid troubles of reverse-video for emacs -nw.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/697
+ (howm-reminder-done-face): default is empty for light background
+
+ * howm-mode.el (howm-refresh): C-c , r on menu calls howm-menu-refresh
+ because howm-initialize-buffer on menu erases all underlines.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/696
+
+2005-05-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-keyword-aliases):
+ expand aliases of come-from keywords recursively
+
+ * howm-vars.el (howm-keyword-list-alias-sep):
+ enable aliases of come-from keywords by default
+
+2005-05-20 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+2005-05-19 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-experimental): moved to howm group
+
+ * howm-reminder.el (howm-highlight-date-regexp-format): new option.
+ Some people like to highlight 2005-05-19 rather than [2005-05-19]
+ as today, because they use [2005-05-19 20:52]@ for their schedule.
+
+ * configure.in: test version
+
+ * howm-backend.el (howm-folder-territory-p:dir): fix
+ wrongly returned nil for non-existing file name.
+
+2005-05-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-common.el (howm-first-n): fix.
+ avoid "Args out of range" error in xemacs.
+ It happened at %recent in menu when number of note files are small
+ or empty files exist.
+ thx > Nanashi-san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+2005-05-17 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-reminder.el (howm-todo-menu):
+ remove deep reminders before sorting
+
+ * howm-vars.el (howm-menu-reminder-separators): new option
+
+ * howm-menu.el (howm-menu-todo): item can be a separator string
+
+2005-05-16 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-mode.el (howm-keyword-search):
+ menu is searched only in howm-directory
+
+ * howm-menu.el (howm-menu): fix
+ todo and schedule were searched only in howm-directory
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/685
+
+ * howm-view.el (howm-view-directory):
+ set font-lock-keywords only when howm-ruby-mode-bug is non-nil
+
+ * howm-vars.el (howm-user-font-lock-keywords): new option
+ thx > taku-san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Idea
+
+2005-05-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-reminder.el
+ (howm-schedule-sort-converter):
+ aware of time part in "[2005-05-15 21:36]@"
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/683
+ (howm-schedule-menu): show future schedule one more day
+
+ * configure.in: test version
+
+ * howm-vars.el (howm-after-save-hook): new hook
+
+ * howm-misc.el (howm-set-mode-p): howm-directory can be rast folder
+
+ * howm-backend.el
+ (howm-create-file):
+ use howm-folder-get-page-create instead of direct mkdir
+ (howm-make-folder:rast): rast folder
+
+ * gfunc.el (gfunc-def): set lisp-indent-hook
+
+ * howm-menu.el (howm-menu):
+ mkdir only when howm-directory is dir folder
+ so that howm-directory can be any folder.
+ At now, howm-menu-file should be defined in that case;
+ howm-menu-initialize-skel assumes dir folder.
+
+2005-05-14 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: test version
+
+ * howm-misc.el (howm-prefix-names): renamed from howm-prex
+
+ * howm-vars.el (howm-prefix): renaming to howm-prefix-key is canceled
+
+2005-05-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-excluded-file-regexp): fix: wrong const values
+
+2005-05-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-item-list-rangeset): add doc-str around this func
+
+2005-05-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-vars.el (howm-prefix-key): renamed to distinguish from function.
+ use defvar instead of defcustom
+ since setting this variable after loading howm may cause confusion.
+
+ * configure.in: test version
+
+ * howm-mode.el (howm-default-key-table): update
+ some are added and some are now globally bound.
+
+ * howm-view.el
+ (howm-view-list-title):
+ - remove-duplicates
+ - toggle title/notitle
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/427
+ (howm-view-summary-rebuild): simplified code
+
+ * howm-misc.el
+ (howm-random-walk): list all memo first when called on non-howm buffer.
+ (howm-auto-narrow): variable howm-auto-narrow can be t.
+
+ * howm-vars.el: Some hidden features are moved to official sections.
+
+2005-05-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-menu.el
+ (howm-menu-shortcut-warn): show list of defined keys
+ (howm-menu-invisible):
+ tried to remove use of invisible property. but failed.
+
+ * howm-view.el
+ (howm-view-search-in-result): aware of paragraph
+ (howm-view-remove-by-contents): aware of paragraph
+ (howm-view-list-title): aware of paragraph
+ (howm-view-filter-uniq): aware of paragraph
+
+ * howm-vars.el (howm-file-name-format): added to howm-efficiency group
+
+2005-05-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * riffle.el (howm-view-summary-window-size):
+ moved to howm-experimental group
+
+ * howm-vars.el (howm-view-before-open-hook): fix.
+ used but not defined.
+
+ * configure.in: test version
+
+ * howm-vars.el: some variables are moved from howm-reminder.el.
+ (howm-todo-menu-types): "." (done) is included by default
+ so that one can easily customize several patterns by setting
+ howm-menu-todo-priority and howm-todo-priority-done-bottom.
+ Anyway, default value of howm-menu-todo-priority hides "." in menu.
+ Since it may cause slow response, I also added it into howm-efficiency
+ group.
+ (howm-viewer): new customize group
+
+ * howm-menu.el (howm-menu-invoke):
+ RET in menu-mode causes jump when the current line matches
+ to howm-menu-list-regexp. No need to type C-a now.
+
+ * howm-vars.el (howm-history-limit): 0 means 'no record'
+
+ * howm-common.el (howm-write-history): remove duplicated entries
+
+ * howm-view.el: follow the changes of riffle.el
+
+2005-05-07 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * riffle.el: use gfunc instead of riffle-controller
+
+ * howm.el: order of requires is modified; riffle.el requires gfunc.el.
+
+ * configure.in: test version
+
+ * howm-vars.el
+ (howm-view-grep-command):
+ use "grep -E" and "grep -F" instead of egrep and fgrep by default.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/670
+ (howm-view-grep-file-stdin-option):
+ use "-f -" by default.
+
+ * howm-backend.el (howm-real-grep-multi):
+ use howm-view-grep-command instead if howm-view-fgrep-command is nil.
+
+ * howm-mode.el (howm-list-title):
+ show title by default for list of all/recent/around notes.
+
+ * howm-vars.el: new file
+ begin to support defcustom
+ thx >
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?RoadMap
+ http://pc8.2ch.net/test/read.cgi/unix/1077881095/668
+
+ * configure.in: version 1.2.3
+
+2005-05-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.2.3rc1
+
+ * howm-common.el (howm-with-schedule-interval): fix.
+ moved from howm-reminder.el because that macro is used
+ in another file howm-menu.el.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/669
+
+ * howm-mode.el (howm-search): fix.
+ call howm-list-all for empty regexp.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/668
+
+2005-05-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * configure.in: version 1.2.2
+
+2005-04-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el
+ (*howm-view-font-lock-keywords*): Spelling is corrected, and
+ worthless function howm-view-font-lock-keywords is removed.
+ (howm-view-contents-mode): hilight of searched keyword is prior
+ to howm-view-contents-font-lock-keywords
+
+2005-04-28 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * cheat-font-lock.el: fix.
+ canceled the use of font-lock-add-keywords in
+ cheat-font-lock-merge-keywords because "compiled keywords" may be
+ passed from current implementation of riffle-contents-mode.
+ I guess this is also related to 2005-04-08 problem.
+
+ * howm-common.el (howm-write-history): new option, howm-history-limit
+
+2005-04-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-reminder.el (howm-todo-parse-string): avoid warning
+ "variable dummy bound but not referenced" in xemacs
+
+ * howm-common.el (howm-dont-warn-free-variable):
+ use macro for frequent trick to avoid warning
+
+ * howm-mode.el (howm-image-file-name-regexps): fix.
+ Meadow-1.15 doesn't have image-file-name-regexps.
+ thx > Touhi-san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+2005-04-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-exclude-p): fix.
+ No file was searched when howm-directory is a dot-directory
+ like "~/.howm".
+ My previous cleaning up on this function is canceled.
+ See the comment in the source code.
+ thx > taku-san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+2005-04-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-menu.el (howm-menu-copy-skel): fix.
+ When come-from keyword %menu% isn't found,
+ assume 0000-00-00-000000.howm as menu file if it exists.
+ This can happen when you write (setq howm-keyword-header "<==")
+ in sample/dot.emacs and then do 'make install && make test'.
+ thx > taku-san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+ * howm-mode.el (howm-image-file-name-regexps): fix.
+ (image-file-name-regexp) caused an error on Meadow 2.10
+ unless max-specpdl-size is increased from the default value 600.
+ thx > taku-san, Mo-san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?MaxSpecpdlSize
+
+ * Makefile.am (EXTRA_DIST): test.bat was not included in tar.gz
+
+2005-04-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-menu.el (howm-menu): swap priority of two variables
+ howm-menu-top and howm-menu-file.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/648
+
+2005-04-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * cheat-font-lock.el: use old code for emacs20
+ New code may make howm-view-summary-open too slow.
+
+2005-04-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el (howm-real-grep-multi): new option variables
+ howm-view-grep-extended-option and howm-view-grep-fixed-option.
+ Now, we can use grep -E and grep -F instead of egrep and fgrep.
+ This will help linux-zaurus users.
+
+2005-03-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-menu.el (howm-menu-search): embed search result into menu
+
+2005-03-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el
+ (howm-folder-grep-internal:pages): fix.
+ list order was reversed when howm-list-all-title is non-nil
+ (howm-real-grep-single): fix. accept list of single pattern
+ (howm-folder-files:namazu): variable r bound but not referenced
+
+2005-03-20 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-view-filter-by-contents): support C-u (= reject)
+
+2005-03-17 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-view.el (howm-view-contents-item): fix.
+ doubly displayed when matched to the last line of paragraph
+
+2005-03-09 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el (howm-time-difference-second): omit microsecond
+
+ * howm-misc.el (howm-elp): initialize profiler
+
+2005-03-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * test.bat: invoke test environment for win
+
+2005-03-03 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el
+ (howm-random-walk-text): clean
+ (howm-random-walk): kill old buffers after jump
+
+2005-03-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-random-walk): automatic random walk
+
+2005-02-28 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-list-normalize): fix.
+ error when '[hoge' is searched.
+
+2005-02-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-misc.el (howm-bug-report): C-u to dump variables
+
+ * howm-mode.el (howm-create-default-title-content): fix.
+ howm-title-from-search was ignored.
+
+ * howm-backend.el (howm-list-buffers-exclude): new option
+
+2005-02-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-keyword-list): never return ""
+
+2005-02-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-common.el: fix for xemacs and emacs20
+
+2005-02-22 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * gfunc.el (gfunc-with): replace gfunc-def-with
+
+ * howm-backend.el: howm-page-load is renamed to howm-page-open
+
+ * howm-view.el (howm-view-set-item-list): comeback for howmoney
+
+ * howm-backend.el (howm-folder-grep-internal:namazu): fix.
+ didn't work for 'or' patterns
+
+2005-02-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el
+ (howm-folder-grep-internal:pages): fix.
+ Specification of howm-page-type was changed.
+ (howm-folder-grep-internal:pages-buffers): fix.
+ must return list of items
+
+ * howm-common.el (howm-exclude-p): fast check only
+
+2005-02-20 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-backend.el (howm-files-in-directory): clean up
+
+ * howm-mode.el (howm-content-from-region): new option variable
+
+2005-02-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm-mode.el (howm-excluded-file-regexp): add (image-file-name-regexp)
+
+ * howm-backend.el (howm-fake-grep-file): check file name before search.
+ thx > Mocchan-san, Matsushita-san
+ http://www.bookshelf.jp/pukiwiki/pukiwiki.php?%BC%C1%CC%E4%BD%B8%2F42
+
+ * howm-mode.el (howm-exclude-p): fast check option
+
+ * gfunc.el (gfunc-def): Description string is supported.
+
+ * howm-backend.el: clean up
+
+ * howm-common.el (howm-sort): renamed from howm-view-sort-items
+
+ * illusion.el: renamed from proxy-buffer.el
+
+ * gfunc.el
+ (gfunc-def): args-declaration is added.
+ (gfunc-def-with): new func
+
+ * howm-backend.el:
+ (howm-search-path-folder): howm-search-path is list of 'folders'.
+ (howm-make-folder:namazu): namazu folder
+ (howm-make-folder:rot13dir): rot13 folder/page
+
+ * proxy-buffer.el: new file
--- /dev/null
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
--- /dev/null
+# shamelessly copied from navi2ch-cvs-0.0.20031209
+# $Id: Makefile.am,v 1.23 2010-12-31 12:12:48 hira Exp $
+
+howm_LISP = \
+ howm.el \
+ howm-menu.el \
+ howm-reminder.el \
+ howm-date.el \
+ howm-misc.el \
+ howm-mode.el \
+ howm-view.el \
+ howm-backend.el \
+ howm-common.el \
+ howm-vars.el \
+ howm-version.el \
+ howm-lang-en.el \
+ howm-lang-ja.el \
+ howm-menu-en.el \
+ howm-menu-ja.el \
+ honest-report.el \
+ action-lock.el \
+ riffle.el \
+ gfunc.el \
+ illusion.el \
+ cheat-font-lock.el
+
+EXTRA_DIST = Makefile.old bcomp.el howm-mkmenu.el $(howm_LISP) \
+ bcomp.el.in howm-version.el.in test.bat
+BUILT_SOURCES = $(srcdir)/howm-version.el $(srcdir)/bcomp.el
+SUBDIRS = doc ext en ja sample
+
+MENU_SRC = en/0000-00-00-000000.txt ja/0000-00-00-000000.txt
+MENU_EL = $(srcdir)/howm-menu-en.el $(srcdir)/howm-menu-ja.el
+TEST_INIT = sample/dot.emacs
+
+AM_MAKEFLAGS = HOWM_MAKE=t
+
+$(srcdir)/howm-version.el: $(srcdir)/howm-version.el.in $(srcdir)/configure.ac Makefile
+ rm -f $@.tmp && \
+ sed -e 's/~\(VERSION\)~/$(VERSION)/' \
+ $(srcdir)/howm-version.el.in > $@.tmp && \
+ mv $@.tmp $@
+
+$(MENU_EL): $(srcdir)/howm-mkmenu.el $(MENU_SRC)
+ $(EMACS) -q -batch -l $(srcdir)/howm-mkmenu.el
+
+# snap:
+# rm -f $(srcdir)/howm-version.el && \
+# $(MAKE) $(AM_MAKEFLAGS) VERSION=@VERSION@-`date +%y%m%d` dist elcdist && \
+# rm -f $(srcdir)/howm-version.el && \
+# $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/howm-version.el
+
+# recompile: $(howm_LISP)
+# rm -f $(ELCFILES) && \
+# HOWM_MAKE=t EMACS="$(EMACS)" $(SHELL) $(srcdir)/elisp-comp $(howm_LISP)
+
+# elcdist: $(ELCFILES)
+# rm -rf $(distdir) && \
+# mkdir $(distdir) && \
+# cp -p $(ELCFILES) $(distdir) && \
+# $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir)-elc.tar.gz && \
+# rm -rf $(distdir)
+
+$(srcdir)/bcomp.el: $(srcdir)/bcomp.el.in $(srcdir)/Makefile.am
+ rm -f $@ && \
+ list=`for file in $(howm_LISP); do echo -n "\"$$file\" "; done` && \
+ sed -e "s/@\(howm_LISP\)@/$$list/" < $(srcdir)/bcomp.el.in > $@
+
+# $(ELCFILES): $(howm_LISP)
+# $(MAKE) $(AM_MAKEFLAGS) recompile
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$@ $(SHELL) ./config.status
+
+Makefiles: $(top_builddir)/config.status
+ $(SHELL) $(top_builddir)/config.status
+
+update:
+ ( cd $(srcdir); $(CVS) update -P -d ) && \
+ $(MAKE) $(AM_MAKEFLAGS) Makefiles
+
+test:
+ HOWM_TEST=t $(EMACS) -q --no-site-file -l $(TEST_INIT)
--- /dev/null
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# shamelessly copied from navi2ch-cvs-0.0.20031209
+# $Id: Makefile.am,v 1.23 2010-12-31 12:12:48 hira Exp $
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
+ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/configure $(am__configure_deps) mkinstalldirs \
+ COPYING config.guess config.sub install-sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(howmdir)"
+howmLISP_INSTALL = $(INSTALL_DATA)
+LISP = $(howm_LISP)
+am__ELFILES = action-lock.el cheat-font-lock.el gfunc.el \
+ honest-report.el howm-backend.el howm-common.el howm-date.el \
+ howm-lang-en.el howm-lang-ja.el howm-menu-en.el \
+ howm-menu-ja.el howm-menu.el howm-misc.el howm-mode.el \
+ howm-reminder.el howm-vars.el howm-version.el howm-view.el \
+ howm.el illusion.el riffle.el
+am__ELCFILES = $(am__ELFILES:.el=.elc)
+ELCFILES = $(LISP:.el=.elc)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CVS = @CVS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EMACS = @EMACS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+extdir = @extdir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+howmdir = @howmdir@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+packagedir = @packagedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+howm_LISP = \
+ howm.el \
+ howm-menu.el \
+ howm-reminder.el \
+ howm-date.el \
+ howm-misc.el \
+ howm-mode.el \
+ howm-view.el \
+ howm-backend.el \
+ howm-common.el \
+ howm-vars.el \
+ howm-version.el \
+ howm-lang-en.el \
+ howm-lang-ja.el \
+ howm-menu-en.el \
+ howm-menu-ja.el \
+ honest-report.el \
+ action-lock.el \
+ riffle.el \
+ gfunc.el \
+ illusion.el \
+ cheat-font-lock.el
+
+EXTRA_DIST = Makefile.old bcomp.el howm-mkmenu.el $(howm_LISP) \
+ bcomp.el.in howm-version.el.in test.bat
+
+BUILT_SOURCES = $(srcdir)/howm-version.el $(srcdir)/bcomp.el
+SUBDIRS = doc ext en ja sample
+MENU_SRC = en/0000-00-00-000000.txt ja/0000-00-00-000000.txt
+MENU_EL = $(srcdir)/howm-menu-en.el $(srcdir)/howm-menu-ja.el
+TEST_INIT = sample/dot.emacs
+AM_MAKEFLAGS = HOWM_MAKE=t
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .el .elc
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+.el.elc:
+ if test "$(EMACS)" != "no"; then \
+ am__dir=. am__subdir_includes=''; \
+ case $@ in */*) \
+ am__dir=`echo '$@' | sed 's,/[^/]*$$,,'`; \
+ am__subdir_includes="-L $$am__dir -L $(srcdir)/$$am__dir"; \
+ esac; \
+ test -d "$$am__dir" || $(MKDIR_P) "$$am__dir" || exit 1; \
+ $(EMACS) --batch \
+ $(AM_ELCFLAGS) $(ELCFLAGS) \
+ $$am__subdir_includes -L $(builddir) -L $(srcdir) \
+ --eval "(defun byte-compile-dest-file (f) \"$@\")" \
+ --eval "(unless (byte-compile-file \"$<\") (kill-emacs 1))"; \
+ else :; fi
+
+install-howmLISP: $(howm_LISP) $(ELCFILES)
+ @$(NORMAL_INSTALL)
+ @if test "$(EMACS)" != no && test -n "$(howmdir)"; then \
+ list='$(howm_LISP)'; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(howmdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(howmdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ $(am__strip_dir) \
+ echo " $(howmLISP_INSTALL) '$$d$$p' '$(DESTDIR)$(howmdir)/$$f'"; \
+ $(howmLISP_INSTALL) "$$d$$p" "$(DESTDIR)$(howmdir)/$$f" || exit $$?; \
+ if test -f $${p}c; then \
+ echo " $(howmLISP_INSTALL) '$${p}c' '$(DESTDIR)$(howmdir)/$${f}c'"; \
+ $(howmLISP_INSTALL) "$${p}c" "$(DESTDIR)$(howmdir)/$${f}c" || exit $$?; \
+ else : ; fi; \
+ done; \
+ else : ; fi
+
+uninstall-howmLISP:
+ @$(NORMAL_UNINSTALL)
+ @test "$(EMACS)" != no && test -n "$(howmdir)" || exit 0; \
+ list='$(howm_LISP)'; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ files="$$files "`echo "$$files" | sed 's|$$|c|'`; \
+ dir='$(DESTDIR)$(howmdir)'; $(am__uninstall_files_from_dir)
+
+clean-lisp:
+ -rm -f $(ELCFILES)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LISP) $(ELCFILES)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(howmdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-lisp mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-howmLISP
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-howmLISP
+
+.MAKE: $(am__recursive_targets) all check install install-am \
+ install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-cscope clean-generic \
+ clean-lisp cscope cscopelist-am ctags ctags-am dist dist-all \
+ dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \
+ dist-zip distcheck distclean distclean-generic distclean-tags \
+ distcleancheck distdir distuninstallcheck dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-howmLISP install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-howmLISP
+
+
+$(srcdir)/howm-version.el: $(srcdir)/howm-version.el.in $(srcdir)/configure.ac Makefile
+ rm -f $@.tmp && \
+ sed -e 's/~\(VERSION\)~/$(VERSION)/' \
+ $(srcdir)/howm-version.el.in > $@.tmp && \
+ mv $@.tmp $@
+
+$(MENU_EL): $(srcdir)/howm-mkmenu.el $(MENU_SRC)
+ $(EMACS) -q -batch -l $(srcdir)/howm-mkmenu.el
+
+# snap:
+# rm -f $(srcdir)/howm-version.el && \
+# $(MAKE) $(AM_MAKEFLAGS) VERSION=@VERSION@-`date +%y%m%d` dist elcdist && \
+# rm -f $(srcdir)/howm-version.el && \
+# $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/howm-version.el
+
+# recompile: $(howm_LISP)
+# rm -f $(ELCFILES) && \
+# HOWM_MAKE=t EMACS="$(EMACS)" $(SHELL) $(srcdir)/elisp-comp $(howm_LISP)
+
+# elcdist: $(ELCFILES)
+# rm -rf $(distdir) && \
+# mkdir $(distdir) && \
+# cp -p $(ELCFILES) $(distdir) && \
+# $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir)-elc.tar.gz && \
+# rm -rf $(distdir)
+
+$(srcdir)/bcomp.el: $(srcdir)/bcomp.el.in $(srcdir)/Makefile.am
+ rm -f $@ && \
+ list=`for file in $(howm_LISP); do echo -n "\"$$file\" "; done` && \
+ sed -e "s/@\(howm_LISP\)@/$$list/" < $(srcdir)/bcomp.el.in > $@
+
+# $(ELCFILES): $(howm_LISP)
+# $(MAKE) $(AM_MAKEFLAGS) recompile
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$@ $(SHELL) ./config.status
+
+Makefiles: $(top_builddir)/config.status
+ $(SHELL) $(top_builddir)/config.status
+
+update:
+ ( cd $(srcdir); $(CVS) update -P -d ) && \
+ $(MAKE) $(AM_MAKEFLAGS) Makefiles
+
+test:
+ HOWM_TEST=t $(EMACS) -q --no-site-file -l $(TEST_INIT)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null
+# serial 3
+
+# AC_EMACS_LISP(var, code)
+# Set `var' with output of elisp `code'.
+# To avoid incompatibilities of "single-quote in back-quote" etc,
+# temporary files are used to store emacs-lisp and output of it.
+AC_DEFUN([AC_EMACS_LISP],[dnl
+{ ac_temp=./conftemp.$$
+ac_output=confout.$$
+rm -f $ac_temp $ac_output
+cat >$ac_temp <<\_ACEOF
+(defun ac-temp-func ()
+$2
+(princ "\n") ; make sure the output has trailing newline.
+)
+_ACEOF
+$EMACS -batch -q -l $ac_temp -f ac-temp-func | sed -e '/^ *$/d' > $ac_output
+$1=`cat $ac_output`
+rm -f $ac_temp $ac_output; }])
+
+# grab and hack from lispdir.m4
+
+## ------------------------
+## Emacs LISP file handling
+## From Ulrich Drepper
+## Almost entirely rewritten by Alexandre Oliva
+## ------------------------
+
+AC_DEFUN([AM_PATH_LISPDIR],
+ [AC_ARG_WITH(lispdir,
+ [ --with-lispdir Override the default lisp directory],
+ [ lispdir="$withval"
+ AC_MSG_CHECKING([where .elc files should go])
+ AC_MSG_RESULT([$lispdir])],
+ [
+ if test x${lispdir+set} != xset; then
+ AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [dnl
+ AC_EMACS_LISP(am_cv_lispdir,[dnl
+(defvar result nil)
+(setq load-path (nreverse load-path))
+(while load-path
+ (if (string-match "\\`\\(.+/site-lisp\\)/?\\'" (car load-path))
+ (setq result (match-string 1 (car load-path))
+ load-path nil)
+ (setq load-path (cdr load-path))))
+(princ (or result (expand-file-name "../site-lisp" data-directory)))])
+ if test -z "$am_cv_lispdir"; then
+ am_cv_lispdir='${datadir}/emacs/site-lisp'
+ fi
+ ])
+ lispdir="$am_cv_lispdir"
+ fi
+ ])
+ AC_SUBST(lispdir)])
--- /dev/null
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.14'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.14.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+ [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+ fi
+fi
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+ am_maintainer_other[ make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer])],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+ [--enable-silent-rules],
+ [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+ [--disable-silent-rules],
+ [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
+ rm -rf conftest.dir
+
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([acinclude.m4])
--- /dev/null
+;;; action-lock.el --- invoke magic action by RET key on spell strings
+
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;; $Id: action-lock.el,v 1.72 2011-12-31 15:07:28 hira Exp $
+;;
+;; 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 1, 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
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; The GNU General Public License is available by anonymouse ftp from
+;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;; USA.
+
+;;; Commentary:
+
+;;; Code:
+
+;; rules = (rule rule ...)
+;; rule = (regexp action) or (regexp action hilit-pos)
+;; action = function with one argument which corresponds to (interactive "P").
+
+(require 'cl-lib)
+(require 'easy-mmode)
+(require 'font-lock)
+(require 'cheat-font-lock)
+(require 'howm-common)
+
+(defgroup action-lock nil
+ "Invoke magic action by RET key on spell strings."
+ :group 'convenience)
+
+(defvar action-lock-face 'action-lock-face
+ "*Face for action-lock spells.")
+
+(defface action-lock-face
+ (let ((underline (if (and (fboundp 'set-face-underline)
+ window-system)
+ '(((class color)) (:underline "dark cyan"))
+ '(((class color)) (:underline t))))
+ (fail-safe '(t (:inverse-video t))))
+ (list underline fail-safe))
+ "*Face for action-lock spells."
+ :group 'action-lock
+ :group 'howm-faces)
+
+(defvar action-lock-magic-return-key "\C-m")
+(put 'action-lock-magic-return-key 'risky-local-variable t)
+(defvar action-lock-lighter " AL")
+(defvar action-lock-silent t
+ "Inhibit font-lock-verbose if non-nil.")
+
+;; If you want to change these values,
+;; you must set them before loading this file.
+(defvar action-lock-switch-default '("{ }" "{*}" "{-}")) ;; any number
+(defvar action-lock-date-default '("{_}" "[%Y-%m-%d %H:%M]")) ;; before after
+
+(easy-mmode-define-minor-mode action-lock-mode
+ "With no argument, this command toggles the mode.
+Non-null prefix argument turns on the mode.
+Null prefix argument turns off the mode.
+
+\\[action-lock-magic-return] Envoke the action on the field
+"
+ nil ;; default = off
+ action-lock-lighter ;; mode-line
+ `(
+ (,action-lock-magic-return-key . action-lock-magic-return)
+ ))
+
+;; emacs20's easy-mmode-define-minor-mode can't have body. sigh...
+(add-hook 'action-lock-mode-on-hook 'action-lock-initialize-buffer)
+(add-hook 'action-lock-mode-off-hook 'action-lock-restore-buffer)
+
+(defvar action-lock-rules nil)
+(defvar action-lock-original-font-lock-keywords nil)
+(defvar action-lock-original-return nil)
+(put 'action-lock-rules 'risky-local-variable t)
+(put 'action-lock-original-font-lock-keywords 'risky-local-variable t)
+(put 'action-lock-original-return 'risky-local-variable t)
+
+(make-variable-buffer-local 'action-lock-rules)
+(make-variable-buffer-local 'action-lock-original-font-lock-keywords)
+(make-variable-buffer-local 'action-lock-original-return)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; sample
+
+(defun action-lock-switch (label-list)
+ (let ((regexp (mapconcat 'regexp-quote label-list "\\|")))
+; (let ((regexp (regexp-opt label-list))) ;; emacs19 lacks regexp-opt
+ (list regexp
+ `(lambda (&optional dummy)
+ (let* ((b (match-beginning 0))
+ (e (match-end 0))
+ (ring ',(append label-list (list (car label-list))))
+ (s (match-string-no-properties 0))
+ (next (cadr (member s ring))))
+ (delete-region b e)
+ (insert next)
+ (goto-char b))))))
+
+(defun action-lock-date (regexp time-format)
+ (list regexp
+ `(lambda (&optional dummy)
+ (delete-region (match-beginning 0) (match-end 0))
+ (insert (format-time-string ,time-format)))))
+
+(defun action-lock-open (regexp arg-pos &optional hilit-pos)
+ (action-lock-general #'action-lock-find-file
+ regexp arg-pos hilit-pos t))
+(defun action-lock-find-file (f u)
+ (if u
+ (find-file-other-window f)
+ (find-file f)))
+
+;; (defun action-lock-open (regexp arg-pos &optional hilit-pos)
+;; (action-lock-general #'find-file regexp arg-pos hilit-pos))
+
+(defvar action-lock-no-browser nil)
+(defun action-lock-browse-url (url)
+ (setq url (replace-regexp-in-string "^[htp]+\\(s?\\)://" "http\\1://" url))
+ (message "%s" url)
+ (if action-lock-no-browser
+ (kill-new url)
+ (browse-url url)))
+(defun action-lock-browse (regexp arg-pos &optional hilit-pos)
+ (action-lock-general #'action-lock-browse-url regexp arg-pos hilit-pos))
+
+(defun action-lock-general (func regexp arg-pos &optional hilit-pos arg-p)
+ "Generate an action-lock rule.
+FUNC is called when action-lock is invoked on a string which matches
+to REGEXP. ARG-POS specifies a position of subexpression in REGEXP,
+and matched substring is passed to FUNC.
+HILIT-POS specifies another position of subexpression in REGEXP,
+and matched substring is highlighted in buffers.
+FUNC will receive an additional argument for action, as is described
+at the beginning of this file, when ARG-P is non-nil."
+ (list regexp
+ `(lambda (&optional arg)
+ (,func (match-string ,arg-pos)
+ ,@(and arg-p '(arg))))
+ hilit-pos))
+
+; (defun action-lock-escape-quote (s)
+; (apply 'concat
+; (mapcar '(lambda (x) (if (string= x "'") "\\x27" x)) ;; for zsh
+; (split-string s ""))))
+
+;; copied and modified from thingatpt.el [2004-01-30]
+(defvar action-lock-url-path-regexp
+ "\\([-!@#$%^&*()_+|=:~/?a-zA-Z0-9.,;]*[-!@#$%^&*()_+|=:~/?a-zA-Z0-9]+\\)"
+;; "\\([^]\t\n \"'()<>[^`{}]*[^]\t\n \"'()<>[^`{}.,;]+\\)"
+ "A regular expression probably matching the host, path or e-mail part of a URL.")
+;; (defvar action-lock-url-scheme-regexp
+;; "\\<\\(https?://\\|ftp://\\|gopher://\\|telnet://\\|wais://\\|file:/\\|s?news:\\|mailto:\\)")
+(defun action-lock-url-regexp (head &optional tail)
+ (concat head
+ action-lock-url-path-regexp
+ (or tail "")))
+
+(defvar action-lock-open-regexp
+ (action-lock-url-regexp "\\<file://\\(localhost\\)?\\(" "\\>/?\\)"))
+(defvar action-lock-open-regexp-pos 2)
+
+;; emacs20 doesn't support "[htp]\\{3,5\\}"
+(defvar action-lock-browse-regexp
+ (action-lock-url-regexp "\\<\\([htp][htp][htp][htp]?[htp]?s?\\|ftp\\)://" "\\>/?"))
+(defvar action-lock-browse-regexp-pos 0)
+
+(defvar action-lock-default-rules
+ (list (action-lock-switch action-lock-switch-default)
+ (action-lock-date (regexp-quote (car action-lock-date-default))
+ (cadr action-lock-date-default))
+ (action-lock-open (action-lock-url-regexp "URL:\\(file://\\)?\\(localhost\\)?" ">))")
+ 3) ;; ((<URL:...>))
+ (action-lock-open action-lock-open-regexp
+ action-lock-open-regexp-pos) ;; file://...
+ (action-lock-browse action-lock-browse-regexp
+ action-lock-browse-regexp-pos) ;; http://...
+ ))
+(put 'action-lock-default-rules 'risky-local-variable t)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; main
+
+(defvar action-lock-bury-minor-mode-p t)
+(defun action-lock-initialize-buffer ()
+ (interactive)
+ (action-lock-initialize-magic-return)
+ (action-lock-set-rules action-lock-default-rules)
+ (when action-lock-bury-minor-mode-p
+ (action-lock-bury-minor-mode 'action-lock-mode))
+)
+
+(defun action-lock-restore-buffer ()
+ (action-lock-restore-font-lock))
+
+(defun action-lock-magic-return (&optional arg)
+ (interactive "P")
+ (or (action-lock-invoke arg)
+ (if action-lock-mode
+ (let* ((action-lock-mode nil)
+ (f (key-binding action-lock-magic-return-key)))
+ (call-interactively f))
+ ;; Can't happen normally
+ (call-interactively action-lock-original-return))))
+
+(defun action-lock-invoke (&optional arg)
+;; (interactive)
+ (let ((action (action-lock-get-action)))
+ (if (null action)
+ nil
+ (progn
+;; (message "%s" action) ;; debug
+ (funcall action arg)
+;; (apply action nil)
+ t))))
+
+(defun action-lock-initialize-magic-return ()
+ (when (null action-lock-original-return)
+ (let ((action-lock-mode nil))
+ (setq action-lock-original-return
+ (key-binding action-lock-magic-return-key)))))
+
+(defun action-lock-rules ()
+ action-lock-rules)
+(defun action-lock-set-rules (rules)
+ (setq action-lock-rules (howm-cl-remove-duplicates* rules))
+;; (message "Font lock...")
+ (action-lock-font-lock)
+;; (message "...Done.")
+ )
+(defun action-lock-add-rules (rules &optional prepend-p)
+ (action-lock-set-rules (if prepend-p
+ (append rules (action-lock-rules))
+ (append (action-lock-rules) rules))))
+
+(defun action-lock-bury-minor-mode (mode)
+ "Bury MODE to the last in minor-mode-map-alist"
+ (let ((pair (assoc mode minor-mode-map-alist)))
+ (when pair
+ (setq minor-mode-map-alist
+ ;; Duplications must be removed.
+ `(,@(remove pair minor-mode-map-alist) ,pair)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Font lock
+
+;; experimental [2003-10-25]
+(defvar action-lock-case-fold-search nil)
+(defvar action-lock-use-case-fold-search t)
+
+(defun action-lock-matcher (regexp)
+ (if action-lock-use-case-fold-search
+ `(lambda (limit)
+ (let ((case-fold-search action-lock-case-fold-search))
+ (re-search-forward ,regexp limit t)))
+ regexp))
+
+(defun action-lock-font-lock ()
+ (cheat-font-lock-mode action-lock-silent)
+ (if (null action-lock-original-font-lock-keywords)
+ (setq action-lock-original-font-lock-keywords font-lock-keywords)
+ (setq font-lock-keywords action-lock-original-font-lock-keywords))
+ (when action-lock-rules
+ (let* ((entries (mapcar (lambda (pair)
+ (let* ((regexp (car pair))
+ (matcher (action-lock-matcher regexp))
+ (pos (or (cl-caddr pair) 0))
+ (hilit (list pos 'action-lock-face
+ 'prepend)))
+ (cons matcher hilit)))
+ action-lock-rules)))
+ (cheat-font-lock-append-keywords entries)
+;; (cheat-font-lock-prepend-keywords entries)
+ (cheat-font-lock-fontify t)
+ )))
+
+(defun action-lock-restore-font-lock ()
+ (setq font-lock-keywords action-lock-original-font-lock-keywords))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun action-lock-get-action ()
+ (car (action-lock-get-action/range)))
+
+(defun action-lock-get-range ()
+ (cdr (action-lock-get-action/range)))
+
+(defun action-lock-get-action/range ()
+ (let* ((rules action-lock-rules)
+ (current nil)
+ (found nil))
+ (while (and rules (not found))
+ (save-excursion
+ (setq current (car rules)
+ rules (cdr rules))
+ (let* ((regexp (car current))
+ (action (cadr current))
+ (pos (cl-caddr current))
+ (range (action-lock-regexp-range regexp pos)))
+ (if range
+ (setq found (cons action range))))))
+ found))
+
+(defun action-lock-regexp-range (regexp &optional pos)
+ (setq pos (or pos 0))
+ (save-excursion
+ (let ((c (point))
+ (eol (line-end-position))
+ (range nil)
+ (case-fold-search (if action-lock-use-case-fold-search
+ action-lock-case-fold-search
+ case-fold-search))
+ )
+ (beginning-of-line)
+ (while (and (<= (point) c)
+ (re-search-forward regexp eol 'no-error)
+ (not range))
+ (let ((beg (match-beginning pos))
+ (end (match-end pos)))
+ (when (and (<= beg c) (< c end))
+ (setq range (list beg end)))))
+ range)))
+
+(defun action-lock-regexp ()
+ (mapconcat 'car action-lock-rules "\\|"))
+
+(defun action-lock-skip-one-link (reverse)
+ (let* ((r (action-lock-get-range))
+ (border (if reverse 0 1)))
+ (when r
+ (goto-char (nth border r)))))
+
+(defun action-lock-goto-next-link (&optional reverse)
+ (interactive)
+ (let* ((move (if reverse #'backward-char #'forward-char)))
+ (action-lock-skip-one-link reverse)
+ (funcall move)
+ (while (not (action-lock-get-action))
+ (funcall move))
+ (when reverse
+ (action-lock-skip-one-link reverse))))
+
+(defun action-lock-goto-previous-link ()
+ (interactive)
+ (action-lock-goto-next-link t))
+
+;;;;;;;;;;;;;
+
+(provide 'action-lock)
+
+;;; action-lock.el ends here
--- /dev/null
+;;; -*- Emacs-Lisp -*-
+(require 'cl)
+
+(setq bcomp-files
+ '(
+ "howm.el" "howm-menu.el" "howm-reminder.el" "howm-date.el" "howm-misc.el" "howm-mode.el" "howm-view.el" "howm-backend.el" "howm-common.el" "howm-vars.el" "howm-version.el" "howm-lang-en.el" "howm-lang-ja.el" "howm-menu-en.el" "howm-menu-ja.el" "honest-report.el" "action-lock.el" "riffle.el" "gfunc.el" "illusion.el" "cheat-font-lock.el"
+ ))
+
+(let* ((dir (expand-file-name default-directory))
+ (load-path (cons dir load-path))
+ file)
+ (message "deleting old .elc files...")
+ (dolist (elt bcomp-files)
+ (setq file (concat dir elt "c"))
+ (if (file-exists-p file)
+ (delete-file file)))
+
+ (message "compiling...")
+ (dolist (elt bcomp-files)
+ (setq file (concat dir elt))
+ (byte-compile-file file t))
+
+ (message "done"))
--- /dev/null
+;;; -*- Emacs-Lisp -*-
+(require 'cl)
+
+(setq bcomp-files
+ '(
+ @howm_LISP@
+ ))
+
+(let* ((dir (expand-file-name default-directory))
+ (load-path (cons dir load-path))
+ file)
+ (message "deleting old .elc files...")
+ (dolist (elt bcomp-files)
+ (setq file (concat dir elt "c"))
+ (if (file-exists-p file)
+ (delete-file file)))
+
+ (message "compiling...")
+ (dolist (elt bcomp-files)
+ (setq file (concat dir elt))
+ (byte-compile-file file t))
+
+ (message "done"))
--- /dev/null
+;;; cheat-font-lock.el --- modify font-lock-keywords
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: cheat-font-lock.el,v 1.24 2011-12-31 15:07:28 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+;; depends on internal implementation of font-lock.el
+
+;; renamed from howm-font-lock.el [2003-12-12]
+
+(require 'font-lock)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; This code is canceled because it caused a bug on howm-1.2.2rc5.
+;; cheat-font-lock-merge-keywords must support compiled keywords for current
+;; implementation of riffle-contents-mode. [2005-04-28]
+;; See below.
+;; snap:///~/elisp/howm/howm-view.el#223:(define-derived-mode howm-view-contents-mode riffle-contents-mode "HowmC"
+;; snap:///~/elisp/howm/howm-view.el#256:(cheat-font-lock-merge-keywords howm-view-contents-font-lock-keywords
+;;
+;; (if (and (fboundp 'font-lock-add-keywords) (>= emacs-major-version 21))
+;; (progn
+;; (defun cheat-font-lock-merge-keywords (&rest keywords-list)
+;; ;; compiled keywords are not supported in keywords-list.
+;; (font-lock-add-keywords nil (apply #'append keywords-list) 'set))
+;; (defun cheat-font-lock-append-keywords (entries)
+;; (font-lock-add-keywords nil entries 'append))
+;; (defun cheat-font-lock-prepend-keywords (entries)
+;; (font-lock-add-keywords nil entries))
+;; ;; inhibit warning. sigh...
+;; (defun cheat-font-lock-20040624-format-p () nil)
+;; (defun cheat-font-lock-compiled-p (keywords) nil)
+;; (defun cheat-font-lock-compiled-body (keywords) nil)
+;; )
+;; (progn
+;; ;; for xemacs and emacs20
+;; ))
+
+(defun cheat-font-lock-20040624-format-p ()
+ ;; need to call font-lock-set-defaults before font-lock-compile-keywords.
+ ;; see http://lists.gnu.org/archive/html/emacs-diffs/2005-12/msg00961.html
+ (font-lock-set-defaults)
+ (>= (length (font-lock-compile-keywords '(("dummy" . 'dummy)))) 3)) ;; dirty
+(defun cheat-font-lock-compiled-p (keywords)
+ (eq (car-safe keywords) t))
+(defun cheat-font-lock-compiled-body (keywords)
+ (cdr keywords))
+(when (cheat-font-lock-20040624-format-p)
+ ;; re-defun for avoiding the warning:
+ ;; "the function `...' is not known to be defined."
+ (defun cheat-font-lock-compiled-body (keywords)
+ (cddr keywords)))
+(defun cheat-font-lock-keywords (keywords)
+ (if (cheat-font-lock-compiled-p keywords)
+ (cheat-font-lock-compiled-body keywords)
+ keywords))
+(defun cheat-font-lock-merge-keywords (&rest keywords-list)
+ (let ((bodies-list (mapcar #'cheat-font-lock-keywords keywords-list)))
+ (setq font-lock-keywords
+ (apply #'append bodies-list))))
+(defun cheat-font-lock-append-keywords (entries)
+ (cheat-font-lock-merge-keywords font-lock-keywords entries))
+(defun cheat-font-lock-prepend-keywords (entries)
+ (cheat-font-lock-merge-keywords entries font-lock-keywords))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun cheat-font-lock-mode (&optional silent)
+ "Enable font-lock-mode without calling fontify-buffer."
+ ;; For xemacs. But this seems to have no effect. ;_; [2004-01-14]
+ (when silent
+ (set (make-local-variable 'font-lock-verbose) nil))
+ ;; Keywords are not highlighted on the fly in emacs-21.3.50.1
+ ;; when font-lock-defaults is nil. I don't understand this. [2003-11-28]
+ (when (null font-lock-defaults)
+ (set (make-local-variable 'font-lock-defaults) '(nil)))
+ ;; Without the next line, global value is changed to t. [2003-12-30]
+ ;; (emacs-20.7.2 on Vine Linux 2.6)
+ (make-local-variable 'font-lock-fontified)
+ (let* ((font-lock-fontified t) ;; adjourn fontify-buffer
+ (bname (buffer-name))
+ (need-rename (eq (aref (buffer-name) 0) ?\ )))
+ ;; Rename invisible buffer in order to force font-lock-mode.
+ ;; cf. snap:///usr/share/emacs/21.2/lisp/font-lock.el#694:(define-minor-mode font-lock-mode
+ (when need-rename
+ (rename-buffer (concat "xxx-" bname) t))
+ (font-lock-mode 1)
+ (when need-rename
+ (rename-buffer bname)))
+ (font-lock-set-defaults))
+
+(defun cheat-font-lock-fontify (&optional dummy)
+ (font-lock-fontify-buffer))
+
+(provide 'cheat-font-lock)
+
+;;; cheat-font-lock.el ends here
--- /dev/null
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+timestamp='2006-07-02'
+
+# 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 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
+# 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 this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ x86:Interix*:[3456]*)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T:Interix*:[3456]*)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^LIBC/{
+ s: ::g
+ p
+ }'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
--- /dev/null
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+timestamp='2006-07-02'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# 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 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
+# 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 this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | mt \
+ | msp430 \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
--- /dev/null
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for howm InsertVersionHere.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='howm'
+PACKAGE_TARNAME='howm'
+PACKAGE_VERSION='InsertVersionHere'
+PACKAGE_STRING='howm InsertVersionHere'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+extdir
+howmdir
+lispdir
+packagedir
+EMACS
+LN_S
+CVS
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_maintainer_mode
+with_bash
+with_xemacs
+with_emacs
+with_packagedir
+with_lispdir
+with_howmdir
+with_docdir
+with_extdir
+with_endir
+with_jadir
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures howm InsertVersionHere to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/howm]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of howm InsertVersionHere:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
+ --enable-maintainer-mode
+ enable make rules and dependencies not useful (and
+ sometimes confusing) to the casual installer
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-bash Use Bash to build
+ --with-xemacs Use XEmacs to build
+ --with-emacs Use Emacs to build
+ --with-packagedir[=DIR] Use package directory
+ (With XEmacs, this option also sets
+ docdir, lispdir, etc...)
+ --with-lispdir Override the default lisp directory
+ --with-howmdir=DIR Override the default howm directory
+ --with-docdir=DIR Override the default docs directory
+ --with-extdir=DIR Override the default ext directory
+ --with-endir=DIR Obsolete. no need. no effect.
+ --with-jadir=DIR Obsolete. no need. no effect.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+howm configure InsertVersionHere
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by howm $as_me InsertVersionHere, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+am__api_version='1.14'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='howm'
+ VERSION='InsertVersionHere'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+ fi
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+# Emacs set environment variable EMACS as t
+test "x$EMACS" = xt && unset EMACS
+
+emacsen="emacs xemacs"
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+case "$host_os" in
+*cygwin*)
+ with_bash=yes
+ emacsen="$emacsen MeadowNT.exe Meadow95.exe Meadow.exe"
+ ;;
+esac
+
+
+# Check whether --with-bash was given.
+if test "${with_bash+set}" = set; then :
+ withval=$with_bash; case "$withval" in
+yes) SHELL=bash ;;
+no) ;;
+*) SHELL="$withval" ;;
+esac
+fi
+
+
+
+# Check whether --with-xemacs was given.
+if test "${with_xemacs+set}" = set; then :
+ withval=$with_xemacs; case "$withval" in
+yes) emacsen="xemacs" ;;
+no) emacsen="emacs" ;;
+*) EMACS="$withval" ;;
+esac
+fi
+
+
+
+# Check whether --with-emacs was given.
+if test "${with_emacs+set}" = set; then :
+ withval=$with_emacs; case "$withval" in
+yes) emacsen="emacs" ;;
+no) emacsen="xemacs" ;;
+*) EMACS="$withval" ;;
+esac
+fi
+
+
+if test -n "${with_xemacs+set}" && test -n "${with_emacs+set}"; then
+ as_fn_error $? "specify one of --with-xemacs or --with-emacs" "$LINENO" 5
+fi
+
+# Extract the first word of "cvs", so it can be a program name with args.
+set dummy cvs; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CVS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CVS"; then
+ ac_cv_prog_CVS="$CVS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CVS="cvs -z3"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_prog_CVS" && ac_cv_prog_CVS=":"
+fi
+fi
+CVS=$ac_cv_prog_CVS
+if test -n "$CVS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CVS" >&5
+$as_echo "$CVS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+
+for ac_prog in ${emacsen}
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_EMACS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$EMACS"; then
+ ac_cv_prog_EMACS="$EMACS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_EMACS="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+EMACS=$ac_cv_prog_EMACS
+if test -n "$EMACS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EMACS" >&5
+$as_echo "$EMACS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$EMACS" && break
+done
+test -n "$EMACS" || EMACS="no"
+
+if test "$EMACS" = "no"; then
+ as_fn_error $? "cannot find emacs" "$LINENO" 5
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking detecting your emacs type" >&5
+$as_echo_n "checking detecting your emacs type... " >&6; }
+{ ac_temp=./conftemp.$$
+ac_output=confout.$$
+rm -f $ac_temp $ac_output
+cat >$ac_temp <<\_ACEOF
+(defun ac-temp-func ()
+(princ (cond ((featurep 'xemacs) 'xemacs)
+ ((>= emacs-major-version 21) 'emacs21)
+ ((= emacs-major-version 20) 'emacs20)
+ (t 'UNKNOWN)))
+(princ "\n") ; make sure the output has trailing newline.
+)
+_ACEOF
+$EMACS -batch -q -l $ac_temp -f ac-temp-func | sed -e '/^ *$/d' > $ac_output
+emacstype=`cat $ac_output`
+rm -f $ac_temp $ac_output; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacstype" >&5
+$as_echo "$emacstype" >&6; }
+
+if test -z "$emacstype" || test "$emacstype" = UNKNOWN; then
+ as_fn_error $? "this package does not work on your emacs" "$LINENO" 5
+fi
+
+# detect packagedir
+
+# Check whether --with-packagedir was given.
+if test "${with_packagedir+set}" = set; then :
+ withval=$with_packagedir; { $as_echo "$as_me:${as_lineno-$LINENO}: checking where package files should go" >&5
+$as_echo_n "checking where package files should go... " >&6; }
+test "$emacstype" != xemacs && as_fn_error $? "packagedir only works with XEmacs" "$LINENO" 5
+case "$withval" in
+yes) { ac_temp=./conftemp.$$
+ac_output=confout.$$
+rm -f $ac_temp $ac_output
+cat >$ac_temp <<\_ACEOF
+(defun ac-temp-func ()
+(princ (expand-file-name "../site-packages" data-directory))
+(princ "\n") ; make sure the output has trailing newline.
+)
+_ACEOF
+$EMACS -batch -q -l $ac_temp -f ac-temp-func | sed -e '/^ *$/d' > $ac_output
+packagedir=`cat $ac_output`
+rm -f $ac_temp $ac_output; }
+;;
+no) unset packagedir ;;
+*) packagedir="$withval" ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $packagedir" >&5
+$as_echo "$packagedir" >&6; }
+fi
+
+
+
+
+if test "$emacstype" = xemacs && test -n "$packagedir"; then
+ lispdir='${packagedir}/lisp'
+ docdir='${datadir}/howm/doc'
+ extdir='${datadir}/howm/ext'
+fi
+
+
+# Check whether --with-lispdir was given.
+if test "${with_lispdir+set}" = set; then :
+ withval=$with_lispdir; lispdir="$withval"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where .elc files should go" >&5
+$as_echo_n "checking where .elc files should go... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lispdir" >&5
+$as_echo "$lispdir" >&6; }
+else
+
+ if test x${lispdir+set} != xset; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where .elc files should go" >&5
+$as_echo_n "checking where .elc files should go... " >&6; }
+if ${am_cv_lispdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ { ac_temp=./conftemp.$$
+ac_output=confout.$$
+rm -f $ac_temp $ac_output
+cat >$ac_temp <<\_ACEOF
+(defun ac-temp-func ()
+(defvar result nil)
+(setq load-path (nreverse load-path))
+(while load-path
+ (if (string-match "\\`\\(.+/site-lisp\\)/?\\'" (car load-path))
+ (setq result (match-string 1 (car load-path))
+ load-path nil)
+ (setq load-path (cdr load-path))))
+(princ (or result (expand-file-name "../site-lisp" data-directory)))
+(princ "\n") ; make sure the output has trailing newline.
+)
+_ACEOF
+$EMACS -batch -q -l $ac_temp -f ac-temp-func | sed -e '/^ *$/d' > $ac_output
+am_cv_lispdir=`cat $ac_output`
+rm -f $ac_temp $ac_output; }
+ if test -z "$am_cv_lispdir"; then
+ am_cv_lispdir='${datadir}/emacs/site-lisp'
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_lispdir" >&5
+$as_echo "$am_cv_lispdir" >&6; }
+ lispdir="$am_cv_lispdir"
+ fi
+
+fi
+
+
+
+
+# Check whether --with-howmdir was given.
+if test "${with_howmdir+set}" = set; then :
+ withval=$with_howmdir; howmdir="$withval"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where howm files should go" >&5
+$as_echo_n "checking where howm files should go... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $howmdir" >&5
+$as_echo "$howmdir" >&6; }
+else
+
+if test -z "${howmdir}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where howm files should go" >&5
+$as_echo_n "checking where howm files should go... " >&6; }
+if ${ac_cv_howmdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_howmdir='${lispdir}/howm'
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_howmdir" >&5
+$as_echo "$ac_cv_howmdir" >&6; }
+ howmdir="$ac_cv_howmdir"
+fi
+
+fi
+
+
+
+# Check whether --with-docdir was given.
+if test "${with_docdir+set}" = set; then :
+ withval=$with_docdir; docdir="$withval"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where doc files should go" >&5
+$as_echo_n "checking where doc files should go... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $docdir" >&5
+$as_echo "$docdir" >&6; }
+else
+
+if test -z "${docdir}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where doc files should go" >&5
+$as_echo_n "checking where doc files should go... " >&6; }
+if ${ac_cv_docdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_docdir='${datadir}/howm/doc'
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_docdir" >&5
+$as_echo "$ac_cv_docdir" >&6; }
+ docdir="$ac_cv_docdir"
+fi
+
+fi
+
+
+
+# Check whether --with-extdir was given.
+if test "${with_extdir+set}" = set; then :
+ withval=$with_extdir; extdir="$withval"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where ext files should go" >&5
+$as_echo_n "checking where ext files should go... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $extdir" >&5
+$as_echo "$extdir" >&6; }
+else
+
+if test -z "${extdir}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where ext files should go" >&5
+$as_echo_n "checking where ext files should go... " >&6; }
+if ${ac_cv_extdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_extdir='${datadir}/howm/ext'
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_extdir" >&5
+$as_echo "$ac_cv_extdir" >&6; }
+ extdir="$ac_cv_extdir"
+fi
+
+fi
+
+
+
+# Check whether --with-endir was given.
+if test "${with_endir+set}" = set; then :
+ withval=$with_endir;
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-endir is obsolete. no need. no effect." >&5
+$as_echo "$as_me: WARNING: --with-endir is obsolete. no need. no effect." >&2;}
+
+fi
+
+
+
+# Check whether --with-jadir was given.
+if test "${with_jadir+set}" = set; then :
+ withval=$with_jadir;
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-jadir is obsolete. no need. no effect." >&5
+$as_echo "$as_me: WARNING: --with-jadir is obsolete. no need. no effect." >&2;}
+
+fi
+
+
+
+
+
+
+# link files
+if test `cd ${srcdir}; pwd` != `pwd`; then
+ ac_config_commands="$ac_config_commands link-lisp"
+
+# AC_CONFIG_LINKS(doc/howm.info:doc/howm.info)
+fi
+
+ac_config_files="$ac_config_files Makefile doc/Makefile ext/Makefile en/Makefile ja/Makefile sample/Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by howm $as_me InsertVersionHere, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+howm config.status InsertVersionHere
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+howm_ln_s="${LN_S}"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "link-lisp") CONFIG_COMMANDS="$CONFIG_COMMANDS link-lisp" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+ "ext/Makefile") CONFIG_FILES="$CONFIG_FILES ext/Makefile" ;;
+ "en/Makefile") CONFIG_FILES="$CONFIG_FILES en/Makefile" ;;
+ "ja/Makefile") CONFIG_FILES="$CONFIG_FILES ja/Makefile" ;;
+ "sample/Makefile") CONFIG_FILES="$CONFIG_FILES sample/Makefile" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = "\a"
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "link-lisp":C)
+ rm -f *.el
+ ${howm_ln_s} ${ac_srcdir}/*.el .
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
--- /dev/null
+# shamelessly copied from navi2ch-cvs-0.0.20031209
+# $Id: configure.in,v 1.225 2012-12-29 00:59:48 hira Exp $
+
+AC_INIT([howm], [InsertVersionHere])
+AM_INIT_AUTOMAKE
+AM_MAINTAINER_MODE
+
+# Emacs set environment variable EMACS as t
+test "x$EMACS" = xt && unset EMACS
+
+emacsen="emacs xemacs"
+
+AC_CANONICAL_HOST
+
+case "$host_os" in
+*cygwin*)
+ with_bash=yes
+ emacsen="$emacsen MeadowNT.exe Meadow95.exe Meadow.exe"
+ ;;
+esac
+
+AC_ARG_WITH(bash,
+[ --with-bash Use Bash to build],
+[case "$withval" in
+yes) SHELL=bash ;;
+no) ;;
+*) SHELL="$withval" ;;
+esac])
+
+AC_ARG_WITH(xemacs,
+[ --with-xemacs Use XEmacs to build],
+[case "$withval" in
+yes) emacsen="xemacs" ;;
+no) emacsen="emacs" ;;
+*) EMACS="$withval" ;;
+esac])
+
+AC_ARG_WITH(emacs,
+[ --with-emacs Use Emacs to build],
+[case "$withval" in
+yes) emacsen="emacs" ;;
+no) emacsen="xemacs" ;;
+*) EMACS="$withval" ;;
+esac])
+
+if test -n "${with_xemacs+set}" && test -n "${with_emacs+set}"; then
+ AC_MSG_ERROR(specify one of --with-xemacs or --with-emacs)
+fi
+
+AC_CHECK_PROG(CVS, cvs, cvs -z3, :)
+AC_PROG_LN_S
+
+AC_CHECK_PROGS(EMACS, ${emacsen}, no)
+if test "$EMACS" = "no"; then
+ AC_MSG_ERROR(cannot find emacs)
+fi
+
+AC_MSG_CHECKING([detecting your emacs type])
+AC_EMACS_LISP(emacstype, [dnl
+(princ (cond ((featurep 'xemacs) 'xemacs)
+ ((>= emacs-major-version 21) 'emacs21)
+ ((= emacs-major-version 20) 'emacs20)
+ (t 'UNKNOWN)))])
+AC_MSG_RESULT([$emacstype])
+
+if test -z "$emacstype" || test "$emacstype" = UNKNOWN; then
+ AC_MSG_ERROR(this package does not work on your emacs)
+fi
+
+# detect packagedir
+AC_ARG_WITH(packagedir,
+[ --with-packagedir[[=DIR]] Use package directory
+ (With XEmacs, this option also sets
+ docdir, lispdir, etc...)],
+[ AC_MSG_CHECKING([where package files should go])
+test "$emacstype" != xemacs && AC_MSG_ERROR(packagedir only works with XEmacs)
+case "$withval" in
+yes) AC_EMACS_LISP(packagedir, [dnl
+(princ (expand-file-name "../site-packages" data-directory))])
+;;
+no) unset packagedir ;;
+*) packagedir="$withval" ;;
+esac
+AC_MSG_RESULT([$packagedir])])
+
+AC_SUBST(packagedir)
+
+if test "$emacstype" = xemacs && test -n "$packagedir"; then
+ lispdir='${packagedir}/lisp'
+ docdir='${datadir}/howm/doc'
+ extdir='${datadir}/howm/ext'
+fi
+
+AM_PATH_LISPDIR
+
+AC_ARG_WITH(howmdir,
+[ --with-howmdir=DIR Override the default howm directory],
+[ howmdir="$withval"
+AC_MSG_CHECKING([where howm files should go])
+AC_MSG_RESULT([$howmdir])],
+[
+if test -z "${howmdir}"; then
+ AC_CACHE_CHECK([where howm files should go], [ac_cv_howmdir], [dnl
+ ac_cv_howmdir='${lispdir}/howm'
+ ])
+ howmdir="$ac_cv_howmdir"
+fi
+])
+
+AC_ARG_WITH(docdir,
+[ --with-docdir=DIR Override the default docs directory],
+[ docdir="$withval"
+AC_MSG_CHECKING([where doc files should go])
+AC_MSG_RESULT([$docdir])],
+[
+if test -z "${docdir}"; then
+ AC_CACHE_CHECK([where doc files should go], [ac_cv_docdir], [dnl
+dnl AC_EMACS_LISP(ac_cv_docdir,[dnl
+dnl (princ (expand-file-name "howm/doc" data-directory))])
+dnl if test -z "$ac_cv_docdir"; then
+dnl ac_cv_docdir='${datadir}/pixmaps/howm'
+dnl fi
+ ac_cv_docdir='${datadir}/howm/doc'
+ ])
+ docdir="$ac_cv_docdir"
+fi
+])
+
+AC_ARG_WITH(extdir,
+[ --with-extdir=DIR Override the default ext directory],
+[ extdir="$withval"
+AC_MSG_CHECKING([where ext files should go])
+AC_MSG_RESULT([$extdir])],
+[
+if test -z "${extdir}"; then
+ AC_CACHE_CHECK([where ext files should go], [ac_cv_extdir], [dnl
+ ac_cv_extdir='${datadir}/howm/ext'
+ ])
+ extdir="$ac_cv_extdir"
+fi
+])
+
+AC_ARG_WITH(endir,
+[ --with-endir=DIR Obsolete. no need. no effect.],
+[
+AC_MSG_WARN([--with-endir is obsolete. no need. no effect.])
+])
+
+AC_ARG_WITH(jadir,
+[ --with-jadir=DIR Obsolete. no need. no effect.],
+[
+AC_MSG_WARN([--with-jadir is obsolete. no need. no effect.])
+])
+
+AC_SUBST(howmdir)
+AC_SUBST(docdir)
+AC_SUBST(extdir)
+
+# link files
+if test `cd ${srcdir}; pwd` != `pwd`; then
+ AC_CONFIG_COMMANDS([link-lisp],
+ [
+ rm -f *.el
+ ${howm_ln_s} ${ac_srcdir}/*.el .
+ ], [howm_ln_s="${LN_S}"])
+# AC_CONFIG_LINKS(doc/howm.info:doc/howm.info)
+fi
+
+AC_OUTPUT([Makefile doc/Makefile ext/Makefile en/Makefile ja/Makefile sample/Makefile])
--- /dev/null
+=begin
+
+= ChangeLog Memo ¤È howm
+
+ChangeLog Memo ¾å¤Ç¤â howm ¤¬»È¤¨¤Þ¤¹.
+(ChangeLog Memo Æâ¤Ç¼«¸Ê¥ê¥ó¥¯) --- Case I
+
+¤Þ¤¿, ChangeLog Memo ¤È howm ¤ÎÊ»ÍѤâ¤Ç¤¤Þ¤¹.
+(ChangeLog Memo ¤È howm memo ¤È¤Î´Ö¤ÇÁê¸ß¥ê¥ó¥¯) --- Case II
+
+¢¨ I ¤È II ¤ÎξΩ¤Ï¤Ç¤¤Þ¤»¤ó.
+¥¤¥ó¥¹¥È¡¼¥ëË¡¤Ê¤É¤â°ã¤¤¤Þ¤¹¤Î¤Ç,
+¤É¤Á¤é¤«¤òÁª¤ó¤Ç³ºÅö¤¹¤ëÀá¤ò¤ªÆɤߤ¯¤À¤µ¤¤.
+
+== ²¿¤¬¤¦¤ì¤·¤¤?
+
+* ChangeLog Memo ¾å¤Ç howm ¤Î¥ê¥ó¥¯µ¡Ç½¤¬»È¤¨¤ë
+
+* M-x occur, clgrep ¤Ë²Ã¤¨¤Æ
+ * @ ¤ò²¡¤»¤Ðɽ¼¨·Á¼°¤ò¥È¥°¥ë (occur É÷ ¢«¢ª clgrep É÷)
+ * occur É÷ɽ¼¨¤Ç¤Ï, RET ¤ò²¡¤µ¤Ê¤¯¤Æ¤â¥ê¥¢¥ë¥¿¥¤¥à¤ËÆâÍƤòɽ¼¨
+ * ¤µ¤é¤Ë¥½¡¼¥È¤ä¿Ãʤιʤê¹þ¤ß¤â²Äǽ
+
+* Îã¤ÎÉâÄÀ¼° todo list ¤¬»È¤¨¤ë
+
+* ¥á¥âËÜÂΤò±ø¤µ¤Ê¤¤
+ * ¤¤¤Ä¤Ç¤â¤ä¤á¤Æ, ÁǤΠChangeLog ¤ËÌá¤ì¤ë
+
+= ¢£ (Case I) ChangeLog Memo ¾å¤Ç howm
+
+ChangeLog Memo Æâ¤Ç¼«¸Ê¥ê¥ó¥¯¤òÄ¥¤ê¤Þ¤¹.
+
+== ¤Ç¤¤ë¤³¤È
+
+* ÁǤΠChangeLog ¤Ë²Ã¤¨¤Æ
+ * goto link
+ * ¡Ö>>> ¤Û¤²¡×¤Î¾å¤Ç RET ¢ª ¡Ö¤Û¤²¡×¤ò¸¡º÷
+ * ¡Ö>>> ~/hoge.txt¡×¤Î¾å¤Ç RET ¡ß2 ¢ª ¥Õ¥¡¥¤¥ë¤ò³«¤¯
+ * ¡Ö>>> ~/hoge.pdf¡×¤Î¾å¤Ç RET ¡ß2 ¢ª ³°Éô viewer ¤Ç³«¤¯
+ * come-from link
+ * ¡Ö* ¤Û¤²: ¤Õ¤¬¤Õ¤¬¡×¤È¤¤¤¦ entry ¤ò½ñ¤±¤Ð,
+ ¥á¥âÃæ¤Î¡Ö¤Û¤²¡×¤¬¤¹¤Ù¤Æ¥ê¥ó¥¯¤Ë
+ * ¡Ö¤Û¤²¡×¤Î¾å¤Ç RET ¢ª ¡Ö¤Û¤²¡×¤Î°ìÍ÷
+ * wiki link
+ * [[¤Û¤²]] ¤Î¾å¤Ç RET ¢ª entry ¡Ö¤Û¤²¡×¤òÄɲÃ
+ * °Ê¸å¤Ï, [[¤Û¤²]] ¤Î¾å¤Ç RET ¡ß2 ¢ª entry ¡Ö¤Û¤²¡×¤ËÈô¤Ö
+
+== ¥¤¥ó¥¹¥È¡¼¥ë
+
+* ÁÛÄêÎã
+ * ~/elisp/howm/ ¤Ë°ì¼°¤òŸ³«
+ * ~/memo/clmemo.txt ¤Ë¥á¥â¤ò¤È¤ë
+
+* ¼ê½çÎã
+ * ¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼
+ cp ~/elisp/howm/ja/0000-00-00-000000.txt ~/.howm-menu
+ * °Ê²¼¤ò .emacs ¤Ë
+ ;; ÀßÄê¤Ë±þ¤¸¤Æ
+ (setq load-path (cons "~/elisp/howm" load-path))
+ (setq howm-directory "~/memo")
+ (setq howm-file-name-format "clmemo.txt")
+ ;; °Ê²¼¤Ï·è¤Þ¤êʸ¶ç
+ (setq howm-menu-lang 'ja)
+ (setq howm-menu-file "~/.howm-menu")
+ (require 'howm-mode)
+ (howm-setup-change-log)
+
+* ¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ëÎã
+ * ¥á¥âËÜÂΤϱø¤µ¤Ê¤¤¤Î¤Ç, ¤³¤ì¤À¤±¤Ç OK
+ rm ~/.howm-*
+ rm -rf ~/elisp/howm
+ vi ~/.emacs
+
+== »È¤¤Êý
+
+* ¤Õ¤Ä¤¦¤Ë ChangeLog Memo ¤ò¤È¤Ã¤Æ¤¯¤À¤µ¤¤
+* entry ¤Ë²¼Àþ¤¬¤Ä¤¯¤Î¤Ç, ¤½¤Î¾å¤Ç RET ¢ª ¸¡º÷·ë²Ì¤Î°ìÍ÷
+* °ìÍ÷¤Ç¤Ï
+ * RET ¢ª jump
+ * q ¢ª quit
+* ¾Ü¤·¤¯¤Ï README Åù¤ò»²¾È
+
+= ¢£ (Case II) ChangeLog Memo ¤È howm ¤ÎÊ»ÍÑ
+
+ChangeLog Memo ¤È howm memo ¤È¤Î´Ö¤ÇÁê¸ß¥ê¥ó¥¯¤òÄ¥¤ê¤Þ¤¹.
+
+== ¤Ç¤¤ë¤³¤È
+
+* ChangeLog Memo ¾å¤Ç¤â¡Ö<<< ¤Û¤²¡×¡Ö>>> ¤Û¤²¡×¡Ö[[¤Û¤²]]¡×¤¬µ¡Ç½
+* <<< ¤Ç»ØÄꤷ¤¿¥¡¼¥ï¡¼¥É¤Ï, ChangeLog Memo ¾å¤Ç¤â²¼Àþ ¢ª ¥¸¥ã¥ó¥×
+
+== ¥¤¥ó¥¹¥È¡¼¥ë
+
+* howm ¤òÉáÄ̤˥¤¥ó¥¹¥È¡¼¥ë
+* .emacs ¤Ë°Ê²¼¤òÄɲÃ
+ (add-hook 'change-log-mode-hook 'howm-mode)
+ (eval-after-load "howm-view"
+ '(setq howm-view-title-regexp
+ (concat howm-view-title-regexp
+ "\\|^[0-9-]+[ \t]+<.*>$")))
+
+== »È¤¤Êý
+
+* ~/howm/ChangeLog ¤Ë ChangeLog Memo ¤ò¤È¤Ã¤Æ¤¯¤À¤µ¤¤.
+* ChangeLog ¤«¤é howm ¤Ø
+ * ChangeLog Memo ¾å¤Ç M-x howm-from-change-log
+ ¢ª howm ¤Ç¿·µ¬¥á¥â¤ò³«¤¤¤Æ¥¿¥¤¥È¥ë¤ò¥³¥Ô¡¼
+ * ChangeLog Memo ¾å¤Ç [[¤Û¤²]] ¤È½ñ¤, (¥«¡¼¥½¥ëÌᤷ¤Æ)¤½¤Î¾å¤Ç RET
+ ¢ª <<< ¤Û¤² ¤È¤¤¤¦ howm memo ¤òºî¤ë
+* howm ¤«¤é ChangeLog ¤Ø
+ * howm memo ¾å¤Ç M-x howm-to-change-log
+ ¢ª ChangeLog Memo ¤ò³«¤¤¤Æ¥¿¥¤¥È¥ë¤ò¥³¥Ô¡¼
+* Áê¸ß¤Ë
+ * ¤É¤Á¤é¤Î¥á¥â¤«¤é¤â, ÆüÉÕ¾å¤Ç RET
+ ¢ª ¤½¤ÎÆüÉդΥá¥â¤òξÊý°ìÍ÷
+
+== ÊäÂ
+
+howm memo ¤Ç RD ·Á¼°¤ò¤ª»È¤¤¤ÎÊý¤Ï,
+((<URL:http://howm.sourceforge.jp/a/rd-mode-plus.el>))
+¤âÊ»ÍѤ¹¤ë¤ÈÊØÍø¤«¤â¤·¤ì¤Þ¤»¤ó.
+¾å¤Î howm-to-change-log ¤Î¤«¤ï¤ê¤Ë, ¼¡¤Îµ¡Ç½¤¬»È¤¨¤Þ¤¹.
+
+* M-x rd-to-change-log ¢ª ChangeLog Memo ¤ò³«¤¤¤Æ¾Ï¡¦Àá¤Î¥¿¥¤¥È¥ë¤ò¥³¥Ô¡¼
+ * Îã
+ * howm memo ¤Ë¤³¤¦½ñ¤¤¤Æ¤¿¤é¡Ä
+ = ¤Û¤²
+ ¡Ä
+ == ¤Õ¤¬
+ ¡Ä
+ == ¤Ô¤è
+ ¡Ä
+ ¢£ ¢« ¥«¡¼¥½¥ë
+ * ¤³¤ó¤Ê ChangeLog ¤¬¤Ç¤¤ë
+ 2003-12-03 Foo Bar <foo@bar.baz>
+ * ¤Û¤²
+ - ¤Ô¤è
+ * Ãí
+ * ¥«¡¼¥½¥ë¤¬Â°¤¹¤ë¾Ï(=), Àá(==)¤Î¥¿¥¤¥È¥ë¤òÃê½Ð¤·¤Þ¤¹
+ * ¡Ö¤Û¤²¡×¤Ë¥«¡¼¥½¥ë¤òÃÖ¤¤¤¿¾ì¹ç, == ¤Î¥¿¥¤¥È¥ë¤Ï¥³¥Ô¡¼¤µ¤ì¤Þ¤»¤ó
+ * C-u M-x rd-to-change-log ¤Ê¤é, ¤½¤Î¾Ï¤Î¤¹¤Ù¤Æ¤ÎÀá¤Î¥¿¥¤¥È¥ë¤òÃê½Ð¤·¤Þ¤¹
+ 2003-12-03 Foo Bar <foo@bar.baz>
+ * ¤Û¤²
+ - ¤Õ¤¬
+ - ¤Ô¤è
+
+
+=end
--- /dev/null
+2015-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: add commit-hash of git-head emacs
+
+2015-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: update version.
+
+ * index.html: ditto.
+
+ * index-j.html: ditto.
+
+ * TUTORIAL.ja.rd: delete obsolete link.
+
+2012-12-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index-j.html: add link to howmm. fix link to howm-mode.vim.
+
+2011-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: support new commands.
+
+ * README.ja.rd: move old changelogs to OLD.rd
+
+2010-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: update 2ch URL. add customization examples.
+
+ * OLD.rd: ditto.
+
+ * index-j.html: delete obsolete links.
+
+ * index.html: ditto.
+
+2010-12-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index-j.html: add link to QFixHowm.
+
+2010-12-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: update obsolete descriptions.
+
+ * OLD.rd: ditto.
+
+2009-07-23 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: update table of contents.
+
+2009-05-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index-j.html: fix link.
+
+2009-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd:
+ add summary-match-string.
+ delete emacs19.
+ link to howm-helper.
+ remove "todo" and "bug" sections.
+ update URLs.
+
+ * index-j.html: link to howm-helper
+
+2008-12-30 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index-j.html: delete debian package
+
+ * index.html: ditto.
+
+2008-07-16 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index-j.html: move old announce to OLD.rd
+
+ * README.ja.rd: move old changes to OLD.rd
+
+2008-05-14 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index.html: link to howm-1.3.5
+
+2008-04-07 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index.html: add customization example for efficiency
+
+2007-04-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: add Whem.
+
+2007-03-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: update 2ch URL.
+
+2007-01-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: update 2ch URL.
+
+2006-09-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: change on 2006-09-10 is canceled.
+
+2006-09-10 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd:
+ M-x customize-variable howm-menu-todo-priority for %reminder.
+
+2006-06-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd:
+ link to yaswiki is removed because of error response.
+ link to BugReportFAQ is added insteadly.
+
+2006-05-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd:
+ description about "always howm-remember" in menu mode.
+ thx > http://pc10.2ch.net/test/read.cgi/unix/1141892764/99
+
+2006-05-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index.html:
+ link to "much kinder tutorial by Dave O'Toole san" is removed
+ because http://dto.twu.net/HowmTutorial.howm.html is not found now.
+ thx > ganba san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?e.BBS
+
+ * README.rd: ditto.
+
+ * README.ja.rd: link to elscreen
+
+2006-02-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.rd: fix typo (@ ==> -) and misspelling.
+ thx > Highfly san
+ http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000018.html
+
+2006-02-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd:
+ mention gc-cons-threshold
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/220-236n
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/934
+
+2006-01-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd:
+ add thx link to http://pc8.2ch.net/test/read.cgi/unix/1077881095/42
+
+2006-01-17 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: link to BugReportFAQ
+
+2005-12-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: update link to Hidemaru porting
+
+ * index-j.html: ditto.
+
+2005-11-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: jump from menu to each reminder
+ thx > Kaneko Kensuke san
+ http://d.hatena.ne.jp/a666666/20051110/1131621183
+
+ * README.ja.rd: link to Hidemaru porting
+
+ * index-j.html: ditto.
+
+2005-11-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * CL-HOWM.ja.rd: describe merits of sort and filter.
+
+2005-10-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * Makefile.am (MAINTAINERCLEANFILES):
+ move *.html from CLEANFILES to MAINTAINERCLEANFILES
+ so that users can try make clean && make without rdtool.
+
+2005-10-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: describe that 'configure --with-xemacs' changes
+ default lispdir to /usr/lib/xemacs/site-lisp/howm.
+ thx > 2ch 797 san
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+2005-10-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: explain configure --with-xemacs
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/810
+
+2005-10-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: remove incorrect description.
+ 'd' key on date format is never implemented.
+
+2005-09-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.rd: 'search' is corrected to 'search for'
+
+2005-09-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: explain howm-en-dir and howm-ja-dir
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/501-502n
+ thx > http://www.meadowy.org/meadow/netinstall/ticket/5
+
+2005-08-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index-j.html: correct RD label
+
+2005-08-17 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index.html: email address is removed.
+
+2005-08-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: fix
+ - my-howm-next-hit was broken.
+ - howm-view-search-in-result-correctly doesn't affect filter-by-date.
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/779
+
+2005-08-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.rd: add alias, customization, menu editing.
+
+2005-07-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: update URL of howm-mode.vim
+
+2005-07-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: add links to wema and LesserWiki
+
+2005-07-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index-j.html: correct anchor "#label:20" to "#label-20".
+ It depends on the version of rd2, perhaps.
+
+2005-07-16 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: add comment on grep-2.5 multibyte feature
+
+2005-06-07 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * Makefile.am (README.html): added to distribution.
+
+ * README.rd: 'Repeat schedule' is added.
+
+2005-05-26 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index.html: M-x custom ==> M-x customize-group
+
+2005-05-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: correct description of %here; args are quoted
+
+2005-05-08 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: move old customize section to OLD.rd
+
+2005-05-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: key bind R = [Update Menu]
+
+2005-04-02 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * README.ja.rd: link to LinuxZaurus on howm-wiki
+
+2005-03-27 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * OLD.rd: update 2ch URL (pc5 to pc8)
+
+ * README.ja.rd: update 2ch URL (pc5 to pc8)
+
+2005-03-13 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index-j.html: update URL of howm-mode.vim
+
+2005-02-19 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * index-j.html: add link to Meadow memo
+
--- /dev/null
+EXTRA_DIST = CL-HOWM.ja.rd OLD.rd README.ja.rd README.rd TUTORIAL.ja.rd \
+ index-j.html index.html \
+ README-j.html README.html \
+ s-cat.png s-menu.png s-screen-shot.png s-search.png \
+ come.png go.png updown.png todo.png
+MAINTAINERCLEANFILES = README-j.html README.html
+
+doc_DATA = $(EXTRA_DIST)
+
+README-j.html: README.ja.rd
+ rd2 README.ja.rd > README-j.html
+
+README.html: README.rd
+ rd2 README.rd > README.html
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
--- /dev/null
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/mkinstalldirs ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(docdir)"
+DATA = $(doc_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CVS = @CVS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EMACS = @EMACS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+extdir = @extdir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+howmdir = @howmdir@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+packagedir = @packagedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = CL-HOWM.ja.rd OLD.rd README.ja.rd README.rd TUTORIAL.ja.rd \
+ index-j.html index.html \
+ README-j.html README.html \
+ s-cat.png s-menu.png s-screen-shot.png s-search.png \
+ come.png go.png updown.png todo.png
+
+MAINTAINERCLEANFILES = README-j.html README.html
+doc_DATA = $(EXTRA_DIST)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-docDATA: $(doc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+ done
+
+uninstall-docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(docdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-docDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-docDATA install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am \
+ uninstall-docDATA
+
+
+README-j.html: README.ja.rd
+ rd2 README.ja.rd > README-j.html
+
+README.html: README.rd
+ rd2 README.rd > README.html
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null
+=begin
+$Id: OLD.rd,v 1.18 2012-08-16 09:52:06 hira Exp $
+
+* Ìܼ¡
+ * ((<¸Å¤¤¹¹¿·ÍúÎò>))
+ * ((<¸Å¤¤¹ðÃÎ>))
+ * ((<µìÈǤ«¤é¤Î°Ü¹Ô>))
+ * ((<¸Å¤¤¥«¥¹¥¿¥Þ¥¤¥ºË¡>))
+ * ((<¸Å¤¤»²¹Í¥ê¥ó¥¯>))
+
+= ¸Å¤¤¹¹¿·ÍúÎò
+
+== 1.3.x
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.9.2 [2011-12-28]
+ * ¤³¤Þ¤´¤Þ fix (howm-1.3.9.2rc4 ¤ÈƱÆâÍƤǤ¹)
+ * mac ¤Ç grep »ÈÍÑ»þ¤Ë¥¨¥é¡¼¤¬½Ð¤Æ¤¤¤¿
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/787-790n>))
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/898-901n>))
+ * grep ¤Î¥Ç¥Õ¥©¥ë¥È¥ª¥×¥·¥ç¥ó¤òÀßÄꤹ¤ëÁ°¤Ë,
+ --exclude-dir ¤¬Ä̤뤫³Îǧ¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿.
+ * Â礤¤¥Õ¥ì¡¼¥à¤Ç°ìÍ÷ɽ¼¨¤ò¤·¤¿¤È¤¤Î;·×¤Ê¥¦¥£¥ó¥É¥¦Ê¬³ä¤ò½¤Àµ
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste>))
+ * howm-vars.elc ¥í¡¼¥É»þ¤Î·Ù¹ð¡Öold-style backqoute detected!¡×¤ò²óÈò.
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste>))
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.9.1 [2011-01-02]
+ * fix: emacs-24.0.50 ¤Ç¤Î¥¨¥é¡¼
+ (Symbol's function definition is void: make-local-hook).
+ thx > »³ËÜ ½¡¹¨ ¤µ¤ó (munepi at vinelinux.org)
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.9 [2010-12-30]
+ * Note
+ * ¤Û¤È¤ó¤ÉÊѹ¹¤Ï¤¢¤ê¤Þ¤»¤ó¤¬, ¤Þ¤¿°ìǯ¤Û¤É¤¿¤Ã¤¿¤Î¤Ç¥ê¥ê¡¼¥¹¤·¤Æ¤ª¤¤Þ¤¹.
+ * howm-test100702 ¤È¤Î°ã¤¤¤Ï, ¥É¥¥å¥á¥ó¥È¤ÎÈù½¤Àµ¤ä ext/tag2plan ¤Îºï½ü¤À¤±.
+ * ¤³¤Î¥ê¥ê¡¼¥¹¤¬ºÑ¤ó¤À¤é, ¥Ç¥Õ¥©¥ë¥ÈÀßÄê¤òÊѤ¨¤Æ
+ ±£¤·µ¡Ç½¤ò¸ø¼°²½¤·¤¿¤À¤±¤Î¤â¤Î¤ò howm-1.4.0 ¤È¤·¤Æ¥ê¥ê¡¼¥¹¤¹¤ëͽÄê¤Ç¤¹.
+ * fix
+ * ¥á¥Ë¥å¡¼¤«¤é y ¥¡¼(¤Þ¤¿¤Ï [ͽÄê] ¾å¤Ç RET)¤ÇͽÄêɽ¤ò³«¤¤¤¿¤È¤,
+ ÆâÍƥХåե¡¤¬¥«¡¼¥½¥ë°ÌÃ֤Υá¥â¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/826>))
+ * ¥É¥¥å¥á¥ó¥È¤Î¸Å¤¤²Õ½ê¤ò¼êľ¤·
+ * ¥á¥ó¥Æ¤µ¤ì¤Æ¤¤¤Ê¤¤¥Ä¡¼¥ë(ext/tag2plan)¤òºï½ü
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.8 [2009-12-31]
+ * Note
+ * Â礤ÊÊѹ¹¤Ï¤¢¤ê¤Þ¤»¤ó¤¬, °ìǯ¤¿¤Ã¤¿¤Î¤Ç¥ê¥ê¡¼¥¹¤·¤Æ¤ª¤¤Þ¤¹.
+ * howm-test090723 ¤È¤Î°ã¤¤¤Ï, howm-excluded-dirs ¤Ë ".git" ¤ò
+ Äɲä·¤¿¤À¤±¤Ç¤¹.
+ * Êѹ¹¡¦²þÎÉ
+ * ²á¤®¤¿¡ºÀÚ¤ËÃ忧
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/738>))
+ * _darcs/ ¤Ê¤É¤ò¸¡º÷Âоݳ°¤Ë (howm-excluded-dirs).
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/708n>))
+ * ¤¤¤Þ¤É¤¤Î GNU grep ¤ò»È¤Ã¤Æ¤¤¤ë¤Ê¤é¢¤â¤·¤Æ¤ª¤¯¤È̵Â̤ʸ¡º÷¤ò¾Ê¤±¤Þ¤¹.
+ (setq howm-view-grep-option "-Hnr --exclude-dir=_darcs")
+ * ¤µ¤é¤Ë, *.txt ¤À¤±¸¡º÷¤¹¤ë¤è¤¦¤Ë¤·¤¿¤±¤ì¤Ð¡Ä
+ (setq howm-view-grep-option "-Hnr --exclude-dir=_darcs --include=*.txt")
+ * ((<yagrep|URL:http://www.kt.rim.or.jp/~kbk/yagrep/index.html>)) ¤È¤Î
+ ¸ß´¹À¤Î¤¿¤á, grep ¸Æ¤Ó½Ð¤·»þ¤Ë¥Ç¥£¥ì¥¯¥È¥ê̾ËöÈø¤Î / ¤òºï½ü.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/685-686n>))
+ * ((<HidePrivateReminder|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?HidePrivateReminder>))
+ ¤Î¤¿¤á¤ËÆâÉô¤ò¾¯¤·Áݽü.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/731>))
+ * fix
+ * C-c , l (howm-list-recent)»þ¤Ë³ºÅö¥Õ¥¡¥¤¥ë¤¬Â¿¤¹¤®¤ë¤È¥¨¥é¡¼.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/733>))
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Windows>))
+ * howm-view-use-grep ¤òÀßÄꤷ¤Æ¤¤¤ë¾ì¹ç¤Ëȯ¾É.
+ meadow ¤À¤È "Spawning child process: exec format error" ¤Ë¤Ê¤ë¤é¤·¤¤.
+ * grep ¸Æ¤Ó½Ð¤·»þ¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤¬ howm-command-length-limit °Ê¾å¤Ë
+ Ť¤¤È¤¤Ïʬ³ä¤·¤Æ¸Æ¤Ó½Ð¤¹¤è¤¦Ä¾¤·¤Þ¤·¤¿.
+ * (setq howm-list-title t) ¤·¤Æ¤¤¤¿¤é,
+ come-from ¥ê¥ó¥¯¾å¤Ç RET ¤·¤¿¤È¤¤â¥¿¥¤¥È¥ë°ìÍ÷¤òɽ¼¨¤¹¤ë¤è¤¦¤Ë.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/762>))
+ * ¤â¤·°ÊÁ°¤ÎÆ°ºî¤¬¤è¤±¤ì¤Ð,
+ M-x customize-variable RET howm-list-title RET ¤·,
+ howm-keyword-search °Ê³°¤ò¤¹¤Ù¤Æ¥»¥Ã¥È¤·¤Æ¤¯¤À¤µ¤¤.
+ * ¥á¥â¤òÊݸ¤·¤¿¤È¤¤Ë¥á¥Ë¥å¡¼¤¬¼«Æ°¹¹¿·¤µ¤ì¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿.
+ (howm-menu-expiry-hours ¤òÀµ¤ËÀßÄꤷ¤¿¾ì¹ç¤Î¤ß³ºÅö)
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.7 [2008-12-31]
+ * Note
+ * ÆâÉôŪ¤Ê¥³¡¼¥ÉÀ°Íý¤È, ¤³¤Þ¤´¤Þ²þÎÉ¡¦½¤Àµ
+ * howm-1.3.6 (¤â¤·¤¯¤Ï howm-test080531) °ÊÁ°¤Ç
+ ÊÑ¿ô howm-list-normalizer ¤òÀßÄꤷ¤Æ¤¤¤¿¾ì¹ç¤Ï,
+ ¤½¤ÎÀßÄê¤ò»ß¤á, ÊÑ¿ô howm-normalizer ¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤
+ * ¼«Æ°Æɤߤ«¤¨¤â°ì±þ»î¤ß¤Æ¤Ï¤¤¤Þ¤¹¤¬¡Ä
+ * howm-1.3.7rc4 ¤È¤Û¤ÜƱ¤¸¤â¤Î¤Ç¤¹
+ * ÉÔËÜ°Õ¤Ë "Wrote ..." ¤¬É½¼¨¤µ¤ì¤ë¥Ð¥°¤òľ¤·¤Þ¤·¤¿
+ * Êѹ¹¡¦²þÎÉ
+ * Èó¸ß´¹¤ÊÊѹ¹
+ * µìÊÑ¿ô howm-list-normalizer ¤«¤é¿·ÊÑ¿ô howm-normalizer ¤Ø
+ * °Ü¹ÔÊýË¡
+ * M-x customize ¤ÇÀßÄꤷ¤Æ¤¤¤¿¤Ê¤é,
+ M-x customize-variable howm-list-normalizer RET ¤Ç
+ ¡ÖOff¡×¤òÀßÄꤷ,
+ M-x customize-variable howm-normalizer RET ¤Ç²þ¤á¤ÆÀßÄꤷ¤Ê¤ª¤¹
+ * .emacs Åù¤Ç (setq howm-list-normalizer 'howm-view-sort-by-¡û¡û)
+ ¤ÈÀßÄꤷ¤Æ¤¤¤¿¤Ê¤é, ¼¡¤Î¤è¤¦¤Ë½ñ¤¤«¤¨¤ë
+ (setq howm-normalizer 'howm-sort-items-by-¡û¡û)
+ * (setq howm-list-normalizer ¡Ä¤½¤ì°Ê³°¤Î²¿¤«¡Ä)
+ ¤ÈÀßÄꤷ¤Æ¤¤¤¿¤Ê¤é,
+ * lisp ¤¬¤ï¤«¤ëÊý:
+ ¼¡¤Î»ÅÍÍÊѹ¹¤Ë¤¢¤ï¤»¤Æ½¤Àµ¤¹¤ë
+ * µìÊÑ¿ô: ¡Ö¸½ºß¤Î°ìÍ÷¤òʤ٤«¤¨¤Æɽ¼¨¤·Ä¾¤¹´Ø¿ô¡×¤ò»ØÄê
+ * ¿·ÊÑ¿ô: ¡ÖÍ¿¤¨¤é¤ì¤¿¥ê¥¹¥È¤ËÂФ·, ¤½¤Îʤ٤«¤¨¤òÊÖ¤¹´Ø¿ô¡×¤ò»ØÄê
+ * lisp ¤¬¤ï¤«¤é¤Ê¤¤Êý:
+ ((<2ch UNIX ÈÄ howm ¥¹¥ì|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/l50>))
+ ¤«
+ ((<howm wiki ¤Î¡Ö¤Ê¤ó¤Ç¤â¡×|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Comment>))
+ ¤Ç¤´ÁêÃ̤ò
+ * ¤â¤·µìÊÑ¿ô¤ò¥»¥Ã¥È¤·¤¿¤Þ¤Þ¤Ë¤·¤Æ¤ª¤¯¤È¡Ä
+ * ñ½ã¤ËÆɤߤ«¤¨¤é¤ì¤½¤¦¤Ê¤é, ¿·ÊÑ¿ô¤ËÆɤߤ«¤¨¤Æ¿·½èÍý¤ò¼Â¹Ô
+ * Æɤߤ«¤¨¤é¤ì¤Ê¤«¤Ã¤¿¤é, µì½èÍý¤ò¼Â¹Ô (Èó¸úΨ)
+ * ¡Öº£Æü¤ÈÌÀÆü¤ÎÆüÉÕ¡×¤Ï [YYYY-MM-DD] ¤Ç¤Ê¤¯ YYYY-MM-DD ¤òÃ忧
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/691>))
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/275>))
+ * °ìÍ÷¤ä¥á¥Ë¥å¡¼¤Î¥Õ¥¡¥¤¥ë̾¤â, ¥Þ¥Ã¥Á¤¹¤ì¤ÐÃ忧
+ * Á°¤Î¤è¤¦¤ËÌᤷ¤¿¤±¤ì¤Ð¡Ä
+ ;; º£Æü¤ÈÌÀÆü¤ÎÆüÉÕ¤Ï, [YYYY-MM-DD] ¤Î·Á¼°¤À¤±Ã忧
+ (setq howm-highlight-date-regexp-format (regexp-quote "[%Y-%m-%d]"))
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡
+ * ¸¡º÷»þ¤ÎÆâÉôŪ¤Ê°ìÍ÷¥Ð¥Ã¥Õ¥¡ºÆɽ¼¨¤òÍÞÀ©
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤«¤é¤Î X (dired-x) »þ¤Ë, ¥«¡¼¥½¥ë¤òÂбþ¥Õ¥¡¥¤¥ë̾¤ØÃÖ¤¯
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ > 797 ¤µ¤ó
+ * 1.3.2 ¤Î±£¤·µ¡Ç½¤ò¸ø¼°²½ & ¥Ç¥Õ¥©¥ë¥È²½.
+ ÊÑ¿ô howm-view-dired-keep-cursor ¤Ïºï½ü¤·¤Þ¤·¤¿.
+ * howm-view-summary-previous-section ¤â¡Ö³Æ¥Õ¥¡¥¤¥ë¤ÎºÇ½é¤Î¥Ò¥Ã¥È¹Ô¡×¤Ç
+ »ß¤Þ¤ë¤è¤¦Êѹ¹
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/360>))
+ * ÆâÍƥХåե¡¤Ç°ì¥¢¥¤¥Æ¥à¤À¤±É½¼¨¤·¤Æ¤¤¤ë¤È¤¤Ï,
+ ¶èÀÚ¤êÀþ¡Ö====>>> xxx.txt¡×¤òÉÁ¤«¤Ê¤¤.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/314>))
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤Î¥½¡¼¥È´ð½à¤Ë summary-match-string ¤òÄɲÃ
+ * »ØÄꤷ¤¿Àµµ¬É½¸½¤Ë¥Þ¥Ã¥Á¤·¤¿Ê¸»úÎó¤Î½ç¤Ë¥½¡¼¥È
+ * Îã: ¡Ö2006-06-..¡×¤ò»ØÄꤹ¤ì¤Ð, 2006ǯ6·î¤Î¹àÌܤòÆüÉÕ½ç¤Ë
+ * ¤Á¤Ê¤ß¤Ë, summary-match ¤Ï, ¥Þ¥Ã¥Á¤·¤¿¤â¤Î¤ò¾å°Ì¤Ë¤â¤Ã¤Æ¤¯¤ë¤À¤±
+ * ¥Þ¥Ã¥Á¤·¤¿¤â¤Î¤É¤¦¤·¤Î¾å²¼Èæ³Ó¤Ï¤·¤Ê¤¤
+ * ¥á¥Ë¥å¡¼
+ * ¥á¥Ë¥å¡¼¤Î %recent ¤ä %random ¤Ç¤â¥Õ¥¡¥¤¥ë̾Íó¤ò·å¤½¤í¤¨.
+ ((<thx|URL:http://lists.sourceforge.jp/mailman/archives/howm-eng/2007/000032.html>)) > Mielke-san (peter.mielke at gmail.com)
+ * ÊÑ¿ô howm-menu-list-format ¤Ï %recent ¤ª¤è¤Ó %random ÍѤË
+ * ¿·ÊÑ¿ô howm-menu-reminder-format ¤¬ %schedule ¤ª¤è¤Ó %todo ÍÑ
+ * ¥á¥Ë¥å¡¼¤Î %random% ¤Ç, Ʊ¤¸¥Õ¥¡¥¤¥ë¤«¤é¤Ï°ì¹àÌܤ·¤«Áª¤Ð¤ì¤Ê¤¤¤è¤¦¤Ë
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/563-566n>))
+ * ¥á¥Ë¥å¡¼¤ÎÍËÆüɽµ¤ò¥ê¥¹¥È¤Ç»ØÄꤹ¤ë¤è¤¦Êѹ¹.
+ ±Ñ¸ìɽµ¤Î¥Ç¥Õ¥©¥ë¥È¤â "Sun" Åù¤Ëľ¤·¤¿.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/147>))
+ (setq howm-day-of-week-ja '("Æü" "·î" "²Ð" "¿å" "ÌÚ" "¶â" "ÅÚ"))
+ (setq howm-day-of-week-en '("Sun" "Mon" "Tue" "Wed" "Thu" "Fri" "Sat"))
+ * ¤Ã¤Æ¤¤¤¦¤«, ¤ï¤¶¤ï¤¶Æȼ«¤ËÄêµÁ¤»¤º¤Ë
+ (format-time-string "%a") ·è¤áÂǤÁ¤Ç¤â¹½¤ï¤Ê¤¤?
+ * ½é´ü¥á¥Ë¥å¡¼¤Ë¥Ü¥¿¥ó¤ÎÀâÌÀ¤òÄɲÃ.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/144>))
+ * ¤¤¤í¤¤¤í
+ * howm-view-grep-option ¤ËÊ£¿ô¤Î¥ª¥×¥·¥ç¥ó¤ò½ñ¤±¤ë¤è¤¦¤Ë.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/458>))
+ (setq howm-view-grep-option "-Hnr --include=*.txt") ;; *.txt ¤Î¤ß¸¡º÷
+ * ñ½ã¤Ë split-string ¤·¤Æ¤ë¤À¤±.
+ ¤â¤Ã¤È¤Þ¤¸¤á¤Ê¤Î¤¬É¬Íפʤ餪ÃΤ餻¤¯¤À¤µ¤¤.
+ * ñ¸ì¤ÎÅÓÃ椬¤¿¤Þ¤¿¤Þ come-from ¥¡¼¥ï¡¼¥É¤Ë°ìÃפ·¤Æ¤â²¼Àþ¤ò°ú¤«¤Ê¤¤ÀßÄê.
+ ((<thx|URL:http://lists.sourceforge.jp/mailman/archives/howm-eng/2007/000030.html>)) > Mielke-san (peter.mielke at gmail.com)
+ ;; ASCII ʸ»ú¤Î¤ß¤Î¥¡¼¥ï¡¼¥É¤Ï, ñ¸ìÅÓÃæ¤Ë¥Þ¥Ã¥Á¤·¤Æ¤â²¼Àþ¤ò°ú¤«¤Ê¤¤
+ (setq howm-check-word-break "^[[:ascii:]]+$")
+ * ͽÄêɽ, ToDo ¥ê¥¹¥È¤Ë¤âĶ²áÆü¿ô¤òɽ¼¨.
+ ((<thx|URL:http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000028.html>)) > Mielke-san (peter.mielke at gmail.com)
+ * .howm-history ¤Þ¤ï¤ê¤ÎµóÆ°¤ò²þÁ±.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/179>))
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/193-194n>))
+ * ¥Ð¥Ã¥Õ¥¡°ìÍ÷¤Ëɽ¼¨¤·¤Ê¤¤
+ * "Wrote ..." ¤òɽ¼¨¤·¤Ê¤¤
+ * make test »þ¤Ë ~/.howm-history ¤ò±ø¤µ¤Ê¤¤
+ * fix
+ * howm-menu-categorized-reminder ¤Çɽ¼¨¤µ¤ì¤Ê¤¤¹àÌܤ¬¤¢¤Ã¤¿
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste>))
+ * (setq howm-view-list-title-type 2) ¤Î¤È¤ C-c , a ¤Ç¥¨¥é¡¼
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/552>))
+ * ¥¿¥¤¥È¥ë¤Î¤Ê¤¤¥á¥â¤¬ C-c , a ¤Çɽ¼¨¤µ¤ì¤Ê¤«¤Ã¤¿
+ * howmoney ¤¬»È¤¨¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/503>))
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/514>))
+ * ͽÄê¤ä todo ¤¬°ì¤Ä¤â¤Ê¤¤¤È¤¤ËͽÄêɽ¤ä todo ¥ê¥¹¥È¤ò¸Æ¤Ó½Ð¤·¤¿¾ì¹ç.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/494>))
+ * ͽÄêɽ¤ä todo ¥ê¥¹¥È¤Ç action-lock-mode ¤¬ÉÔËܰդ˥ȥ°¥ë.
+ * howm2, howmkara ¤Î -exclude ¥ª¥×¥·¥ç¥ó¤ËÉÔ¶ñ¹ç.
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>)) > dareka ¤µ¤ó
+ * ((<HidePrivateReminder|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?HidePrivateReminder>))¤Ç C-c , t ¤¬¡ÖNo match¡×¤Ë
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?HidePrivateReminder>)) > taku ¤µ¤ó
+ * ¸ß´¹À¤ò½¤Éü
+ * howm-occur ¤Ç°ìÍ÷¥Ð¥Ã¥Õ¥¡¤Î¸¡º÷¸ì¤¬¥Ï¥¤¥é¥¤¥È¤µ¤ì¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿
+ * ¡Ö¡ã¡ã¡ã ¥Æ¥¹¥È ¡ã¡ã¡ã Test¡×¤Î¡ÖTest¡×¾å¤Ç RET ¤òᤤ¤Æ¤â¡Ö¥Æ¥¹¥È¡×¤¬
+ ¸¡º÷¤µ¤ì¤Ê¤«¤Ã¤¿
+ * howm-keyword-case-fold-search ¤ò¥»¥Ã¥È¤·¤Æ¤¤¤¿¤È¤¤ÎÂçʸ»ú¾®Ê¸»ú¤¬¤é¤ß
+ * C-c , l ¤Ç¤¤¤Á¤¤¤ÁÆüÉÕ¤òʹ¤«¤Ê¤¤¤è¤¦¤Ë
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/340>))
+ * [2007-04-02] ¤Ëºî¤ê¹þ¤ó¤À¥Ð¥°
+ * ¸¡º÷·ë²Ì¤Î°ìÍ÷¤Ç¡Ö¡ã¡ã¡ã ¤Û¤²¡×¤¬ÀèƬ¤Ë¤³¤Ê¤¤¾ì¹ç¤¬¤¢¤Ã¤¿
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/328>))
+ * (setq howm-list-title t) ¤·¤Æ¤¤¤ë¤Èȯ¾É
+ * remove-duplicates ¤Î»ÅÍͤò¤è¤¯ÃΤé¤Ê¤«¤Ã¤¿¤»¤¤. ÊÙ¶¯¤Ë¤Ê¤ê¤Þ¤·¤¿.
+ * (setq howm-list-title t) ¤À¤È°ìÍ÷¥Ð¥Ã¥Õ¥¡¤ËÁ°²ó¤ÎÆâÍƤ¬É½¼¨¤µ¤ì¤ë¥Ð¥°
+ * howm-view-contents-limit ¤¬¸ú¤¤¤Æ¤¤¤Ê¤«¤Ã¤¿
+ * ÆüÉդǤιʤê¹þ¤ß·ë²Ì¤¬°ìÆüʬ¿¤¹¤®¤¿
+ * narrowing ´ØÏ¢¤ÎÉÔ¶ñ¹ç(widen È´¤±)
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/160-161n>))
+ * ¥á¥Ë¥å¡¼¤Î¡Ö%reminder¡×¤ÎÄì¤Ë, ²á¤®¤¿Í½Ä꤬ɽ¼¨¤µ¤ì¤Æ¤¤¤¿.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/149>))
+ * ¥á¥Ë¥å¡¼Ãæ¤Î¡Ö> 2006-07-26-015606 | ¡Ä¡×¤Î¡Ö7¡×¾å¤Ç RET ¤ò᤯¤È¥¨¥é¡¼.
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>)) > na ¤µ¤ó
+ * ÊÑ¿ô howm-menu-list-regexp ¤ÎÄêµÁ¤ò¤Á¤ç¤Ã¤Èľ¤·¤¿¤À¤±
+ * °Û¤Ê¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ÎƱ̾¥Õ¥¡¥¤¥ë¤¬°ìÍ÷ɽ¼¨¤Çº®Æ±¤µ¤ì¤Æ¤¤¤¿.
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste>))
+ * howm-view-split-horizontally ¤¬ t ¤Ç¤â nil ¤Ç¤â¤Ê¤¤¤È¤¤ÎÆÃÊ̤ÊÆ°ºî¤òÇÑ»ß.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/591>))
+ * howm-1.2 ¡Á 1.3.7rc2 ¤Ç²õ¤ì¤Æ¤¤¤¿¤¬, ¥Ð¥°¥ì¥Ý¡¼¥È¤Ê¤·.
+ ¤¤Ã¤Èï¤â»È¤Ã¤Æ¤¤¤Ê¤¤ ^^;
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.6 [2008-05-31]
+ * fix: 2008-02-24 °Ê¹ß¤Î CVS Àèü emacs ¤Ç, ¾¥Ð¥Ã¥Õ¥¡¤ÎÃ忧¤¬Íð¤ì¤ë.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/484-487n>))
+ * minor mode ¤¬ font-lock-keywords-only ¤òľ¤Ë¿¨¤ë¤Î¤Ï¹Ôµ·°¤¤?
+ * howm-test20080514 ¤«¤é¤Î¥Ð¥Ã¥¯¥Ý¡¼¥È
+ * (howm-1.3.6rc1 ¤ÈÃæ¿È¤ÏƱ¤¸¤Ç¤¹)
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.5 [2007-12-09]
+ * fix: ²Æ»þ´ÖºÇ½ªÆü¤ËÅöÆü¤ÎͽÄ꤬¥á¥Ë¥å¡¼¤Ëɽ¼¨¤µ¤ì¤Ê¤«¤Ã¤¿.
+ ((<thx|URL:http://lists.sourceforge.jp/mailman/archives/howm-eng/2007/000034.html>)) > Mielke-san (peter.mielke at gmail.com)
+ * howm-test071108 ¤«¤é¤Î¥Ð¥Ã¥¯¥Ý¡¼¥È
+ * fix: ½çÉÔƱ¤Ç¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤ë¤è¤¦¤Ë
+ * Wanderlust ¤ä Navi2ch ¤ò»²¹Í¤Ë¤·¤Æ,
+ ½ä²ó°Í¸¤Î°·¤¤Êý(require ¤Î½ñ¤Êý)¤ò½¤Àµ
+ * howm-test07-05-18 ¤«¤é¤Î¥Ð¥Ã¥¯¥Ý¡¼¥È
+ * automake ¤ò 1.6 ¤«¤é 1.10 ¤Ë
+ * howm-test07-05-05 ¤«¤é¤Î¥Ð¥Ã¥¯¥Ý¡¼¥È
+ * automake-1.10 ¤Î elisp-comp ¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿
+ * (howm-1.3.5rc1 ¤ÈÃæ¿È¤ÏƱ¤¸¤Ç¤¹)
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.4 [2006-12-16]
+ * ¥»¥¥å¥ê¥Æ¥£½¤Àµ
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/207>))
+ * ²¿¤¬ÌäÂê?
+ * Emacs ¤Ë¤Ï, ¥Õ¥¡¥¤¥ë¤´¤È¤Ë¥í¡¼¥«¥ëÊÑ¿ô¤ò¼«Æ°ÀßÄꤹ¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤¹.
+ ¤³¤ì¤ò°ÍѤ¹¤ë¤È, howm »ÈÍÑ»þ¤ËǤ°Õ¤ÎÌ¿Îá¤ò¼«Æ°¼Â¹Ô¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹.
+ ((<ref|URL:https://www.codeblog.org/blog/ueno/20060118.html>))
+ * ¤É¤¦Ä¾¤·¤¿?
+ * howm ´ØÏ¢¤ÎÁ´¥·¥ó¥Ü¥ë¤Ë risky-local-variable °À¤ò¥»¥Ã¥È¤·,
+ ¾å½Ò¤Î¼«Æ°ÀßÄê»þ¤Ë¥Á¥§¥Ã¥¯¤¬Æþ¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿.
+ * ¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤·¤¿¤¯¤Ê¤¤/¤Ç¤¤Ê¤¤¤Î¤Ç¤¹¤¬?
+ * ¥½¡¼¥¹¤ÎÊÔ½¸¤¬²Äǽ¤Ê¤é,
+ howm.el ¤ÎËöÈø¤Ë°Ê²¼¤Î¥³¡¼¥É¤ò²Ã¤¨¤ë¤Î¤¬³Î¼Â¤Ç¤¹.
+ ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤Î¤·¤Ê¤ª¤·¤â¤ªËº¤ì¤Ê¤¯.
+ ;; howm-1.2.2 °Ê¹ßÍÑ. howm ´ØÏ¢¤ÎÁ´¥·¥ó¥Ü¥ë¤Ë risky-local-variable °À.
+ (mapcar (lambda (symbol) (put symbol 'risky-local-variable t))
+ (howm-symbols))
+ * ¤½¤ì¤¬º¤Æñ¤Ê¾ì¹ç¤Ï .emacs ¤Ë°Ê²¼¤ò²Ã¤¨¤Æ¤¯¤À¤µ¤¤.
+ (eval-after-load "howm" ; ¢« autoload/load/require ¤Îµ½Ò¤Ë¤¢¤ï¤»¤Æ
+ ;; howm-1.2.2 °Ê¹ßÍÑ. howm ´ØÏ¢¤ÎÁ´¥·¥ó¥Ü¥ë¤Ë risky-local-variable °À.
+ '(mapcar (lambda (symbol) (put symbol 'risky-local-variable t))
+ (howm-symbols)))
+ * ¤É¤Á¤é¤Ë¤»¤è, ½¤Àµ¤¬È¿±Ç¤µ¤ì¤¿¤³¤È¤ò¤´³Îǧ¤¯¤À¤µ¤¤.
+ * emacs ¤òΩ¤Á¾å¤²Ä¾¤·, howm ¤òµ¯Æ°
+ * °Ê²¼¤ò *scratch* ¥Ð¥Ã¥Õ¥¡¤ËŽ¤ê, ÊĤ¸³ç¸Ì¤Î¸å¤Ë¥«¡¼¥½¥ë¤òÃÖ¤¤¤Æ C-j ¤ò
+ ²¡¤¹
+ (get 'howm-version 'risky-local-variable)
+ * t ¤Èɽ¼¨¤µ¤ì¤ì¤Ð OK
+ * ¥í¡¼¥«¥ëÊÑ¿ô¤Î¼«Æ°ÀßÄê¤ò¤¢¤¨¤Æ»È¤¤¤¿¤¤¤È¤¤Ï?
+ * °Ê²¼¤Î¤è¤¦¤ËÊÑ¿ô¤´¤È¤Ë²ò¶Ø¤·¤Æ¤¯¤À¤µ¤¤.
+ ;; Îã: ÊÑ¿ô howm-auto-narrow ¤Ï¥Õ¥¡¥¤¥ë¤´¤È¤Î¼«Æ°ÀßÄê¤òµö²Ä
+ (put 'howm-auto-narrow 'risky-local-variable nil)
+ * howm ¤Ë¸Â¤é¤º, ¥í¡¼¥«¥ëÊÑ¿ô¤Î¼«Æ°ÀßÄê¤ò°ìÀڻȤ¨¤Ê¤¯¤¹¤ë¤Ë¤Ï?
+ * .emacs ¤Ë°Ê²¼¤ò²Ã¤¨¤Æ¤¯¤À¤µ¤¤.
+ ¤¿¤À¤· emacs ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤è¤Ã¤Æ¤ÏÉÔ´°Á´¤«¤â¤·¤ì¤Þ¤»¤ó.
+ ((<ref|URL:http://www.kmc.gr.jp/~tak/memo/emacs-local-variable.html>))
+ ;; ¥í¡¼¥«¥ëÊÑ¿ô¤Î¼«Æ°ÀßÄê¤ò¥ª¥Õ
+ (setq enable-local-variables nil)
+ * fix: CVS Àèü emacs ¤Ç¥á¥Ë¥å¡¼¤Ê¤É¤Ë¿§¤¬¤Ä¤«¤Ê¤¤
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/165-169n>))
+ * ½¤Àµ¤Ï, cheat-font-lock-20040624-format-p ¤ÎÄêµÁÃæ¤Î = ¤ò >= ¤Ëľ¤¹¤À¤±
+ * howm-test061015 ¤«¤é¤Î¥Ð¥Ã¥¯¥Ý¡¼¥È
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.3 [2006-06-05]
+ * Note
+ * ºÇ¿·¤Î Emacs 22.0.50 (CVS HEAD) ¤Ë¤¿¤Ö¤óÂбþ
+ * Meadow 3.00-dev ¤ä Carbon Emacs ¤â¤³¤ì¤ËÁêÅö¤·¤Þ¤¹.
+ ¤³¤ì¤é¡Ö¥ê¥ê¡¼¥¹Á°¤Î³«È¯ÈǺÇÀèü Emacs¡×
+ ¤òº£¸å¤âÄɤ¤Â³¤±¤ëÊý¤Ï, howm ¤â¥Æ¥¹¥ÈÈǤòÇÁ¤¤¤Æ¤ß¤Æ¤¯¤À¤µ¤¤.
+ * ¥Õ¥¡¥¤¥ë¹½À®¤ò¾¯¡¹Êѹ¹
+ * make install °Ê³°¤ÎÊýË¡¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ì¹ç¤Ï¤´³Îǧ¤¯¤À¤µ¤¤.
+ ½é´ü¥á¥Ë¥å¡¼ 0000-00-00-000000.howm ¤Î¼êÆ°¥³¥Ô¡¼¤ÏÉÔÍפˤʤê¤Þ¤·¤¿.
+ * ¥á¥Ë¥å¡¼¤Î todo °ìÍ÷¤Ç¤ÏÀøÉúÃæ¤Î¹àÌܤâ¥Ç¥Õ¥©¥ë¥È¤Çɽ¼¨
+ * ¥Ç¥Õ¥©¥ë¥È¤Ï¡Ö°ÂÁ´Â¦¡×¤ËÅݤ·¤Æ¤ª¤¯Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦.
+ ¤³¤ì¤Þ¤ÇÄ̤걣¤¹ÊýË¡¤Ï²¼¤Î¡ÖÊѹ¹¡×¤ò»²¾È¤¯¤À¤µ¤¤.
+ * ¤½¤Î¾, grep ¤Îʸ»ú¥³¡¼¥É¤Ë´Ø¤¹¤ë½¤Àµ¤ä, ±£¤·µ¡Ç½¤Ê¤É
+ * ±£¤·µ¡Ç½¤Ç¤Ï, ¥á¥â¤È¤ê¤ò¤µ¤é¤Ë¼ê·Ú¤Ë¤¹¤ë M-x howm-remember ¤¬
+ ¹¥É¾¤Î¤è¤¦¤Ç¤¹.
+ * howm-1.3.3rc1 ¤ä howm-test060515 ¤ÈÃæ¿È¤ÏƱ¤¸
+ * meadow3 ¤Ç¥Ï¥Þ¤Ã¤¿¿Í¤¬Â¿¤½¤¦¤Ê¤Î¤Ç¥ê¥ê¡¼¥¹¤¹¤ëµ¤¤Ë¤Ê¤ê¤Þ¤·¤¿.
+ ¡ÖÉÔ°ÂÄê¤Ê³«È¯ÈǡפȤ¤¤¦´¶¤¸¤¸¤ã¤Ê¤¯¤â¤¦°ìÈ̤ËÉáµÚ¤·¤Æ¤¤¤ë¤Î¤«¤Ê¡Ä
+ * Êѹ¹¡¦²þÎÉ
+ * ¥á¥Ë¥å¡¼¤Î todo °ìÍ÷¤Ç¤ÏÀøÉúÃæ¤Î¹àÌܤâ¥Ç¥Õ¥©¥ë¥È¤Çɽ¼¨
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/75-77n>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/842-845n>))
+ * ±£¤·¤¿¤±¤ì¤Ð M-x customize-variable howm-menu-todo-priority
+ * grep »þ¤Îʸ»ú¥³¡¼¥ÉÀßÄê howm-process-coding-system ¤Ç,
+ ÆþÎϤȽÐÎϤËÊ̤ÎÃͤò»ØÄê¤Ç¤¤ë¤è¤¦¤Ë¤·¤¿
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/96>))
+ ;; process (UTF-8)¢ª emacs
+ ;; emacs ¢ª(SJIS) process
+ (setq howm-process-coding-system '(utf-8-unix . sjis-unix))
+ * ¥á¥Ë¥å¡¼¤Î¡Ö> ¡Ä¡×¤Ç RET ¤·¤¿¤È¤, ¡Ö¡Ä¡×¤ò¸¡º÷¤¹¤ë¤Î¤Ç¤Ê¤¯,
+ Âбþ¥Õ¥¡¥¤¥ë¤òľÀܳ«¤¯
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/823>))
+ * ¥Õ¥¡¥¤¥ë¹½À®¤ä¥¤¥ó¥¹¥È¡¼¥ë¼ê½ç¤Ë¤Ä¤¤¤Æ
+ * ¸À¸ì°Í¸¤ÎÊÑ¿ô¤ò howm-lang-{en,ja}.el ¤ØʬΥ
+ * configure ¤Î¿·¥ª¥×¥·¥ç¥ó --with-howmdir.
+ thx > Ëܾ±¤µ¤ó
+ * *.el ¤È *.elc ¤Ï¤³¤³¤Ø¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë
+ * lispdir ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï, ¡Ä/site-lisp/howm ¤«¤é ¡Ä/site-lisp ¤ËÊѹ¹
+ * ½é´ü¥á¥Ë¥å¡¼¥Æ¥ó¥×¥ì¡¼¥È¤Î¥¤¥ó¥¹¥È¡¼¥ëË¡¤òÊѹ¹
+ thx > Ëܾ±¤µ¤ó, Á¬Ã«¤µ¤ó
+ ((<ref|URL:http://lists.sourceforge.jp/mailman/archives/macemacsjp-users/2005-November/000756.html>))
+ ((<ref|URL:http://lists.sourceforge.jp/mailman/archives/macemacsjp-users/2005-November/000760.html>))
+ * ½¾Íè¤Ï, /usr/local/share/howm/{en,ja}/0000-00-00-000000.howm
+ ¤ËÃÖ¤¤¤Æ, Äê¿ô howm-{en,ja}-dir ¤Ç¤½¤Î°ÌÃÖ¤ò»ØÄê
+ * ¥¤¥ó¥¹¥È¡¼¥ë¤·Ëº¤ì¤äÁêÂХѥ¹¤Ë¤è¤ê, ¥È¥é¥Ö¥ë¤¬À¸¤¸¤Æ¤¤¤¿
+ * ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤¤¾ì¹ç, 0000-00-00-000000.howm ¤Î¼êÆ°¥³¥Ô¡¼¤¬É¬Í×
+ * º£¸å¤Ï, howm-menu-{en,ja}.el
+ * howm ¤ò½é¤á¤Æ»È¤¦¤È¤¤Î¤ß, Äê¿ô howm-menu-{en,ja} ¤òÆɤ߹þ¤ß¤Þ¤¹
+ * ¥á¥â¥ê¤Ë¤«¤«¤¨¹þ¤à¤Î¤¬¤Ò¤ó¤·¤å¤¯¤Ê¤é,
+ ¡Ö»ÈÍѸå¤ËÃͤòÇË´þ¡×¤È¤¤¤¦¾®ºÙ¹©¤â¹Í¤¨¤é¤ì¤Þ¤¹.
+ ¤â¤·É¬ÍפÀ¤Ã¤¿¤é¤ªÃΤ餻¤¯¤À¤µ¤¤.
+ (º£¤É¤¿ô¥¥í¥Ð¥¤¥È¤Ê¤ó¤Æ¸íº¹ÈÏ°Ï?)
+ * 0000-00-00-000000.howm ¤Î¼êÆ°¥³¥Ô¡¼¤Ï´°Á´¤ËÉÔÍפȤʤ俤Ĥâ¤ê
+ * ·ë¶É¤³¤ó¤Êή¤ì
+ ja/0000-00-00-000000.howm
+ ¢¥ê¥ê¡¼¥¹»þ¤Ëºî¼Ô¤¬À¸À® (¼ÂºÝ¤Ï howm-mkmenu.el ¤Ç¼«Æ°²½)
+ howm-menu-ja.el
+ ¢make install
+ $lispdir/howm/howm-menu-ja.elc
+ ¢howm ¤ò½é¤á¤Æ»È¤Ã¤¿¤È¤¤À¤±Æɤ߹þ¤ó¤Ç¼«Æ°À¸À®
+ ~/howm/0000-00-00-000000.howm
+ * fix
+ * CVS Àèü emacs ¤Ç make ¤¹¤ë¤È¥¨¥é¡¼
+ "Font-lock trying to use keywords before setting them up".
+ ((<thx|URL:http://tty0.exblog.jp/2944244>))
+ ((<thx|URL:http://d.hatena.ne.jp/yoshk/20060102>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/867>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/873-874n>))
+ ((<thx|URL:http://d.hatena.ne.jp/clock9/20060406/1144291193>))
+ ((<thx|URL:http://d.hatena.ne.jp/AllStarMoves/20060425/p3>))
+ ((<thx|URL:http://d.hatena.ne.jp/katase_n/20060519>))
+ ((<thx|URL:http://d.hatena.ne.jp/AllStarMoves/20060602/p4>))
+ * grep »þ¤Î howm-process-coding-system ¤Î½èÍý¥¿¥¤¥ß¥ó¥°¤Ë¥Ð¥°
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/63-83n>))
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/94-95n>))
+ * migemo-client ¤Î¥ª¥×¥·¥ç¥ó¤òÄɲûØÄê²Äǽ¤Ë
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/9>))
+ (setq howm-migemo-client-option '("-H" "::1"))
+ * howm-view-grep-option ¤¢¤¿¤ê¤È¤ÎÉÔÅý°ì¤¬µ¤¤Ë¤Ê¤ë¤Î¤Ç,
+ ¥³¥Þ¥ó¥É»ØÄê°ìÈ̤γÈÄ¥»ÅÍÍ°Æ(¤È¤ê¤¢¤¨¤º°Æ¤À¤±). ¤ª¤ª¤²¤µ¤¹¤®?
+ nil ;; ¢ª ¥Ç¥Õ¥©¥ë¥È
+ "¥³¥Þ¥ó¥É̾"
+ ("¥³¥Þ¥ó¥É̾" "¥ª¥×¥·¥ç¥ó" ¡Ä "¥ª¥×¥·¥ç¥ó")
+ ´Ø¿ô̾ ;; ¢ª ¥³¥Þ¥ó¥É¤Î¤«¤ï¤ê¤Ë elisp ¤Î´Ø¿ô¤ò¼Â¹Ô
+ * howm-kill-all ¤Ï .howm-keys ¥Ð¥Ã¥Õ¥¡¤â¾Ã¤¹¤Ù¤
+ ((<thx|URL:http://d.hatena.ne.jp/dasm/20060110>))
+ * howm-mode-off-hook ¤ÎÄêµÁ¤¬¤À¤Ö¤Ã¤Æ¤¤¤¿.
+ thx > Ãݼ¤µ¤ó
+ * ((<howmz.el|URL:http://noir.s7.xrea.com/archives/000136.html>))
+ ¤Ç¥¨¥é¡¼¤¬½Ð¤Æ¤¤¤¿¤½¤¦.
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus>))
+ > (TxT) ¤µ¤ó
+ * emacs20 ¤Ç M-x howm-bug-shot ¤¬¥¨¥é¡¼¤Ë¤Ê¤Ã¤Æ¤¤¤¿.
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportFAQ>))
+ > ƨÈò¤µ¤ó
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.2 [2005-11-04]
+ * Note
+ * ¼ç¤Ë, ¾®¤µ¤Ê¥Ð¥°½¤Àµ¤À¤±
+ * ¤¢¤È¤Ï±£¤·µ¡Ç½¤ò¾¯¡¹
+ * ¥ê¥ê¡¼¥¹Í½ÄêÈÇ 1.3.2rc4 ¤ÈƱ¤¸¤â¤Î¤Ç¤¹
+ * Êѹ¹
+ * ¥á¥Ë¥å¡¼¤Î [º£Æü] (C-c , , .) ¤Ç¤â¥Ç¥Õ¥©¥ë¥È¤Ç¥¿¥¤¥È¥ë¤òɽ¼¨.
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ > nobu ¤µ¤ó
+ * ¥¿¥¤¥È¥ëɽ¼¨¤·¤¿¤¯¤Ê¤±¤ì¤Ð¡Ä
+ * M-x customize-variable RET howm-list-title RET
+ * howm-action-lock-date-search ¤Î¥Á¥§¥Ã¥¯¤ò¤Ï¤º¤¹
+ * [Save for Future Sessions]
+ * fix
+ * xemacs ¤À¤È, ¥á¥Ë¥å¡¼Æâ¤Ç [2005-10-15] ¤Î¤è¤¦¤Ê
+ ÆüÉÕ¾å¤Ç¤Î RET ¤¬¥¨¥é¡¼
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/797-801n>))
+ * xemacs ¤À¤È, °ìÍ÷¥Ð¥Ã¥Õ¥¡¤«¤é¤Î X (dired-x) ¤¬¥¨¥é¡¼
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ > 797 ¤µ¤ó
+ * ¤Ä¤¤¤Ç¤Ë, Ʊ¤¸¥Õ¥¡¥¤¥ë¤¬²¿ÅÙ¤âɽ¼¨¤µ¤ì¤ë¤Î¤ò½¤Àµ
+ * howm-view.el ¤Ë (require 'riffle) ¤òÄɲÃ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/782>))
+ * Makefile °Ê³°¤Î¼ê½ç¤Ç¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È M-x howm-menu ¤¬¥¨¥é¡¼
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/789-791n>))
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BrokenMenu>))
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.1 [2005-08-17]
+ * xemacs ¤Ç¤ä¤±¤ËÃÙ¤¯¤Ê¤Ã¤Æ¤¤¤¿¤Î¤ò½¤Àµ
+ (xemacs ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤â¤è¤ë¤Î¤«¤â)
+ * ´Ä¶ÊÑ¿ô LC_ALL, LC_CTYPE, LANG ¤òÀßÄꤷ¤Ê¤¤¤È¥¨¥é¡¼¤¬½Ð¤Æ¤¤¤¿¤Î¤ò½¤Àµ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/780-781n>))
+ * ¤³¤Î README ¤Î ½¤Àµ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/779>))
+ * my-howm-next-hit ¤Î¥³¡¼¥É¤ò¹¹¿·
+ * howm-view-search-in-result-correctly ¤òÀßÄꤷ¤Æ¤â,
+ date ¤Ç¤Î¹Ê¤ê¹þ¤ß¤Ï¥Õ¥¡¥¤¥ëñ°Ì
+ * ÅöÌ̤ϻÅÍÍ. °ìÆü°ì¥Õ¥¡¥¤¥ë¤Þ¤Ç¤Ê¤éÌäÂê¤Ê¤¤¤Ï¤º.
+ * °ì·î°ì¥Õ¥¡¥¤¥ë¡¦Á´¥á¥â°ì¥Õ¥¡¥¤¥ë¤Ê¤É¤À¤ÈÌäÂê.
+ * ¡Ö»ØÄê·î¤Î¥á¥â°ìÍ÷¡×¤È¤«¤Ç¤Ã¤Á¤¢¤²¤è¤¦¤«¤È¤â»×¤¤¤Þ¤·¤¿¤¬,
+ ¼«Ê¬¤Î¾ì¹ç¤ÏŤ¯¤Ê¤ê¤¹¤®¤ÆÌò¤ËΩ¤¿¤Ê¤½¤¦¤Ê¤Î¤Ç, ¤ä¤á¤Þ¤·¤¿.
+ ¤´°Õ¸«¤¬¤¢¤ì¤Ð¤ªÊ¹¤«¤»¤¯¤À¤µ¤¤.
+ * °ìÍ÷¤Ç, Á°¤ÈƱ¤¸Ì¾Á°¤â¤¤¤Á¤¤¤Áɽ¼¨
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/779>))
+ (setq howm-view-summary-omit-same-name nil)
+ * ¤¢¤È¤Ï±£¤·µ¡Ç½¤ò¾¯¡¹
+ * ¥ê¥ê¡¼¥¹Í½ÄêÈÇ 1.3.1rc1 ¤ÈƱ¤¸¤â¤Î¤Ç¤¹
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.3.0 [2005-08-02]
+ * Note
+ * ÌܶÌ
+ * come-from ¥¡¼¥ï¡¼¥É¤Î alias
+ * M-x customize Âбþ ([Applications] ¢ª [Howm])
+ * ¤³¤Î README ¤Î((<¥«¥¹¥¿¥Þ¥¤¥º>))¤Ï¤¬¤µ¤¬¤µºï¤ê¤Þ¤·¤¿.
+ * ¸¡º÷ÍúÎò
+ * °ìÍ÷»þ¤Î¥¿¥¤¥È¥ëɽ¼¨
+ * °ìÍ÷¤ËƱ¤¸¥Õ¥¡¥¤¥ë̾¤ò¤¯¤êÊÖ¤·É½¼¨¤·¤Ê¤¤
+ * ¼«Æ°¿ìÊâ
+ * ¥á¥Ë¥å¡¼¤ËºÇ¶á¤Î¥á¥â°ìÍ÷¡¦¥é¥ó¥À¥àÁªÂò°ìÍ÷
+ * ¥á¥Ë¥å¡¼¤Ë [ÍúÎò] [¿ìÊâ] [ÀßÄê] [»þ¢] ¤òÄɲÃ
+ * ¤¹¤Ç¤Ë howm ¤ò»È¤Ã¤Æ¤¤¤¿¾ì¹ç,
+ make install ¤·¤Æ¤â¾¡¼ê¤Ë¤ÏÄɲ䵤ì¤Þ¤»¤ó.
+ ¥á¥Ë¥å¡¼¤ò¼«Ê¬¤ÇÊÔ½¸¤¹¤ë¤«,
+ ja/0000-00-00-000000.howm ¤ò¼«Ê¬¤Ç¥³¥Ô¡¼¤¹¤ë¤«¤·¤Æ¤¯¤À¤µ¤¤.
+ * ¥Ç¥Õ¥©¥ë¥È¤òÊѹ¹¤·¤Þ¤·¤¿. Ìᤷ¤¿¤±¤ì¤Ð .emacs ¤Ê¤É¤Ë¢¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤.
+ ;; ¥¿¥¤¥È¥ëɽ¼¨¤Ï¾ï»þ¥ª¥Õ
+ (setq howm-list-title nil)
+ ;; ¸¡º÷ÍúÎò
+ (setq howm-history-limit 0) ;; ¸¡º÷ÍúÎò¤òµÏ¿¤·¤Ê¤¤
+ (setq howm-history-unique nil) ;; ¸¡º÷ÍúÎò¤«¤é½ÅÊ£¤ò¼è¤ê½ü¤«¤Ê¤¤
+ ;; grep -E/-F ¤Ç¤Ê¤¯ egrep/fgrep
+ (setq howm-view-grep-command "egrep")
+ (setq howm-view-fgrep-command "fgrep")
+ (setq howm-view-grep-extended-option nil)
+ (setq howm-view-grep-fixed-option nil)
+ (setq howm-view-grep-file-stdin-option nil) ;; ¥Ñ¥¿¡¼¥ó¤Ï°ú¿ô¤ÇÅϤ¹
+ ;; howm-template ¤¬´Ø¿ô¤À¤Ã¤¿¤È¤¤Ï, universal-argument ¤ò
+ ;; °ú¿ô¤Ë¤·¤Æ¤½¤¤¤Ä¤ò¸Æ¤Ö
+ (setq howm-template-receive-buffer nil)
+ ;; °ìÍ÷¤«¤é RET ¤Ç³«¤¯¤È¤, ÆâÍƥХåե¡¤Î¥«¡¼¥½¥ë°ÌÃÖ¤òÊݤ¿¤Ê¤¤
+ (setq howm-view-summary-keep-cursor nil)
+ * ¥Æ¥¹¥È¤Ë¤´¶¨ÎϤ¯¤À¤µ¤ëÊý¤Ï, ¢¤ò»î¤·¤Æ¤¤¤¿¤À¤±¤ë¤È½õ¤«¤ê¤Þ¤¹.
+ ;; (±£¤·µ¡Ç½)
+ ;; °ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Î¤È¤¤â, ¹Ê¤ê¹þ¤ßÅù¤ò
+ ;; ¥Õ¥¡¥¤¥ëñ°Ì¤¸¤ã¤Ê¤¯¥á¥âñ°Ì¤Ë.
+ ;; ¤¿¤À¤·, date ¤Ç¤Î¹Ê¤ê¹þ¤ß¤Ï¥Õ¥¡¥¤¥ëñ°Ì¤Î¤Þ¤Þ.
+ (setq howm-view-search-in-result-correctly t)
+ * ÆâÉô¼ÂÁõ¤ÎÊѹ¹ (riffle.el)
+ * ¥ê¥ê¡¼¥¹Í½ÄêÈÇ howm-1.3.0rc5 ¤ÈÃæ¿È¤ÏƱ¤¸¤Ç¤¹.
+ * »ÅÍÍÊѹ¹
+ * howm-template ¤ÎÃͤ¬´Ø¿ô¤À¤Ã¤¿¤È¤¤Ï,
+ ¡Öuniversal-argument ¤È((*ľÁ°¤Î¥Ð¥Ã¥Õ¥¡*))¡×¤ò°ú¿ô¤Ë¤·¤Æ¤½¤¤¤Ä¤ò¸Æ¤Ö
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Comment>))
+ * »ÈÍÑÎã
+ ;; snap.el ¤Ç¤Î¥ê¥ó¥¯¤òÆþ¤ì¤ë
+ (setq howm-template #'my-howm-template)
+ (defun my-howm-template (which buf) ;; C-u 3 C-c , c ¤Ê¤é which = 3
+ (let ((snap (with-current-buffer buf
+ (or (snap-record-string) ""))))
+ (format "= %%title%%cursor\n%%date\n%s\n\n" snap)))
+ * ½¾Íè¤È¸ß´¹¤ËÌᤷ¤¿¤±¤ì¤Ð¡Ä
+ ;; howm-template ¤¬´Ø¿ô¤À¤Ã¤¿¤È¤¤Ï, universal-argument ¤ò
+ ;; °ú¿ô¤Ë¤·¤Æ¤½¤¤¤Ä¤ò¸Æ¤Ö
+ (setq howm-template-receive-buffer nil)
+ * ¥á¥Ë¥å¡¼Åù¤«¤é¤Î¥ê¥Þ¥¤¥ó¥Àľá¤»þ, á¤Àè¤Î¼«Æ°Êݸ¤Ë¤Ä¤¤¤Æ¡Ä
+ * ¤¿¤È¤¨ howm-action-lock-forward-save-buffer ¤¬ non-nil ¤Ç¤â,
+ á¤Á°¤«¤é¤¹¤Ç¤Ë¡Ö³ºÅö¥Ð¥Ã¥Õ¥¡¤¬ modified¡×¤À¤Ã¤¿¤È¤¤Ï
+ Êݸ¤·¤Ê¤¤
+ * howm-todo-menu-types ¤Î¥Ç¥Õ¥©¥ë¥È¤Ë "." ¤âÄɲÃ
+ * ¥Ç¥Õ¥©¥ë¥ÈÀßÄê¤ÎÊѹ¹
+ * egrep/fgrep ¤Ç¤Ê¤¯ grep -E/-F ¤ÎÊý¤ò¥Ç¥Õ¥©¥ë¥È¤Ë.
+ ÊÑ¿ô howm-view-fgrep-command ¤Ï¾ÍèÇѻߤ¹¤ë¤«¤â.
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/670>))
+ * grep ¤Ø¤Ïɸ½àÆþÎϤǥѥ¿¡¼¥ó¤òÅϤ¹
+ * {Á´|ºÇ¶á|Á°¸å}¥á¥â°ìÍ÷¤Ë¥Ç¥Õ¥©¥ë¥È¤Ç¥¿¥¤¥È¥ëɽ¼¨
+ * ±£¤·µ¡Ç½¤Î¸ø¼°²½ (¢¥ ¤Ï¡Ö¤ª¤¹¤¹¤á¡×)
+ * 1.1.1.* °ÊÁ°¤«¤é
+ * howm-view-before-open-hook
+ * ¥á¥Ë¥å¡¼¤Î todo ¤Ë½ÜÅÙ¤òɽ¼¨²Ä
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/505>))
+ (setq howm-menu-todo-priority-format "(%8.1f)")
+ * ¥Ç¥Ð¥Ã¥°ÍÑÊÑ¿ô howm-call-process-last-command
+ * (setq howm-message-time t) ¤¹¤ì¤Ð, ¸¡º÷Åù¤ËÍפ·¤¿»þ´Ö¤òɽ¼¨
+ * 1.2 ¤«¤é
+ * come-from ¥¡¼¥ï¡¼¥É¤Î alias ¢¥ ¢ª ((<¥á¥â¤ò½ñ¤³¤¦>))
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?CompoundComeFrom>))
+ * ¥á¥Ë¥å¡¼
+ * ¥á¥Ë¥å¡¼¤Ë¡Ö%recent¡×¤ä¡Ö%random¡× ¢¥
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/242>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/273>))
+ * ¥á¥Ë¥å¡¼Ãæ¤ËÊÑ¿ô¤ä´Ø¿ô¤ÎÃͤòɽ¼¨
+ * °ìÍ÷
+ * ¥½¡¼¥ÈË¡¤Ë¡Örandom¡×¤òÄɲÃ
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?OldMemo>))
+ * °ìÍ÷ɽ¼¨Áë¤Î¹Ô¿ôÀßÄê
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Comment>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/724>))
+ (setq howm-view-summary-window-size 10)
+ * ¡Ö¥¿¥¤¥È¥ë¡×¤ÎÀµµ¬É½¸½¤ò, µ¡Ç½¤´¤È¤ËÊѹ¹²Äǽ
+ (setq howm-list-title-regexp "^[*=] [^ ]") ;; °ìÍ÷ɽ¼¨
+ (setq howm-menu-recent-regexp "^[*=] [^ ]") ;; ¥á¥Ë¥å¡¼Ãæ¤Î %recent
+ * °ìÍ÷¤«¤é RET ¤Ç³«¤¯¤È¤, ÆâÍƥХåե¡¤Î¥«¡¼¥½¥ë°ÌÃÖ¤òÊݤÄ
+ (setq howm-view-summary-keep-cursor t) ;; ¢« ¥Ç¥Õ¥©¥ë¥È¤Ë¤·¤Þ¤·¤¿
+ * ¤Á¤ç¤Ã¤È¼«¿®¤Ê¤·. ÉÔ¶ñ¹ç½Ð¤¿¤é¶µ¤¨¤Æ¤¯¤À¤µ¤¤.
+ * ñ¸ì¤ÎÅÓÃæ¤Ë¥Þ¥Ã¥Á¤·¤¿¤â¤Î¤Ï¸å¤Þ¤ï¤·
+ (setq howm-list-prefer-word t)
+ * ¡Öeuc¡×¤ò¸¡º÷¤·¤¿¤é, ¡Öeuclid¡×¤ä¡Ötakeuchi¡×¤è¤ê¤â,
+ ñ¸ì¡Öeuc¡×¤Ë¥Þ¥Ã¥Á¤·¤¿¤â¤Î¤ò¾å¤Ëɽ¼¨
+ * ¤¿¤À¤·, ¡Ö<<< euclid¡×¤Ï¤¢¤¤¤«¤ï¤é¤º¤Æ¤Ã¤Ú¤ó¤Ø
+ * ¿·µ¬¥á¥â
+ * ¤¤¤Þ³«¤¤¤Æ¤ë¥Õ¥¡¥¤¥ë¤Ë¿·µ¬¥á¥â¤òÄɲÃ: M-x howm-create-here
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/293>))
+ * ¿·µ¬¥á¥â¤Î¥Õ¥¡¥¤¥ë̾¤ò¼êÆ°¤Ç¤Ä¤±¤ë: M-x howm-create-interactively
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/367>))
+ * ¤³¤ó¤Ê´¶¤¸¤Ç¤·¤ç¤¦¤«? > 367 ¤µ¤ó
+ * M-x howm-narrow-to-memo, M-x howm-toggle-narrow
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/293>))
+ * ¤Ä¤¤¤Ç¤Ë, M-x howm-toggle-narrow ¤Ç, ±£¤¹¡¦¸«¤»¤ë¤ò¥È¥°¥ë
+ * ¥á¥â¤ò³«¤¤¤¿¤È¤¼«Æ°Åª¤Ë narrow ¤Ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/301>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/542>))
+ (add-hook 'howm-view-open-hook 'howm-auto-narrow)
+ (add-hook 'howm-create-hook 'howm-auto-narrow) ;; ÄɲÃ[2005-01-07]
+ * ¥ê¥Þ¥¤¥ó¥À¤Î¡Öcancel¡×¤ò°ã¤¦¸ÀÍդ˥«¥¹¥¿¥Þ¥¤¥º
+ (thx > NARA Shinsuke ¤µ¤ó)
+ (setq howm-reminder-cancel-string "give up")
+ * 1.2.1 ¤«¤é
+ * M-x howm-history ¤Ç¸¡º÷ÍúÎò. ³ÆÍúÎò¤«¤é RET ¤ÇÈô¤Ù¤ë. ¢¥
+ * ((<RandomNote|URL:http://ninjinix.x0.com/rn/index.rb?AboutPage.txt>))
+ ¤ä
+ ((<namapo|URL:http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=namapo>))
+ ¤Ë¿¨È¯¤µ¤ì¤Æ¡Ä
+ * µÏ¿¤Ï, ¡Ö¸ÇÄêʸ»úÎ󸡺÷¡×¡Ö¹Ê¤ê¹þ¤ß¸¡º÷¡×¡Ö¥ê¥ó¥¯¡×¤Î¤ß¤Ë¤·¤Æ¤ß¤¿
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/496>))
+ * Îã¤Ë¤è¤Ã¤Æ¡Ö¥á¥Ë¥å¡¼¤Ëɽ¼¨¡×¤â¤·¤¿¤¤¤±¤É,
+ ¡Ö¥á¥Ë¥å¡¼¤ò¥¥ã¥Ã¥·¥å¡×¤È¤Î·ó¤Í¹ç¤¤¤¬.
+ * 1.2.2 ¤«¤é¤ÏºÇÂçµÏ¿¿ô¤òÀßÄê²Ä
+ * 1.3.0 ¤«¤é¤Ï½ÅÊ£¤ò½üµî
+ * °ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Î¤È¤, Á°¡¦¸å¡¦ºÇ½é¡¦ºÇ¸å¤Î¥á¥â¤Ø°ÜÆ°
+ (narrowing ¤â¹Íθ)
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/377>))
+ * M-x howm-previous-memo
+ * M-x howm-next-memo
+ * M-x howm-first-memo
+ * M-x howm-last-memo
+ * ¡û¡û¤Î¤È¤¤À¤±¼«Æ° narrow.
+ ¤¿¤À¤·, ¡Ö>>> foo.howm¡×¤Ç foo.howm ¤ËÈô¤ó¤À¤È¤¤Ï narrow ¤Ë¤·¤Ê¤¤.
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/377>))
+ ;; ¢¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤ËÉÔËþ¤¬¤Ê¤±¤ì¤ÐÀßÄêÉÔÍ×
+ (setq howm-auto-narrow
+ ;; ¢¤Ë½ñ¤¤¤¿¥³¥Þ¥ó¥É¤Ç¤À¤± narrow
+ '(howm-list-all howm-list-recent
+ howm-list-grep howm-list-grep-fixed howm-list-migemo
+ howm-list-related howm-list-around
+ howm-keyword-search)) ;; ¤³¤ì¤Ï come-from ¥ê¥ó¥¯¡¦goto ¥ê¥ó¥¯
+ * C-c , T (howm-insert-dtime) ¢ª [2004-09-01 23:26] ¤È¤«µÆþ
+ ((<ref|URL:http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Programs/elisp/get-date.el>))
+ ((<ref|URL:http://www.gentei.org/~yuuji/software/euc/instamp.el>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/399>))
+ * 1.2.2 ¤«¤é
+ * ¼«Æ°¿ìÊâ ¢¥
+ * ¥á¥Ë¥å¡¼¤Ë¡Ö%here%(howm-menu-search "¤Û¤²")¡×¤È½ñ¤±¤Ð,
+ ¡Ö¤Û¤²¡×¤Î¸¡º÷·ë²Ì¤òËä¤á¹þ¤ß ¢¥
+ (thx > Konstantin Levinski (kostya@pmail.ntu.edu.sg))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/605>))
+ * ¿·µ¬¥á¥â¤Þ¤ï¤ê
+ * °ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Î¤È¤, ¿·¤·¤¤¥á¥â¤ÏÀèƬ¤ËÄɲäȤ¹¤ëÀßÄê ¢¥
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/535>))
+ (setq howm-prepend t)
+ * ¡Ö¤Û¤²¡×¤ò¸¡º÷¤·¤Æ°ìÍ÷¤·¤¿¾õÂÖ¤«¤é¿·µ¬¥á¥â¤òºî¤ë¤È, ¥¿¥¤¥È¥ë¤ò¡Ö¤Û¤²¡×¤Ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/573>))
+ (setq howm-title-from-search t)
+ * ¥Æ¥¥¹¥È¤òÁªÂò¤·¤Æ¤«¤é¡Ö¿·µ¬¥á¥â¡× ¢ª ¤½¤Î¥Æ¥¥¹¥È¤ò¼«Æ°ÁÞÆþ
+ ((<thx|URL:http://hpcgi1.nifty.com/spen/index.cgi?ZaurusSL-C3000%2F%BD%E9%B4%FC%C0%DF%C4%EA%2Femacs%A4%BD%A4%CE%A3%B4#i0>))
+ ;; transient-mark-mode ¤Ç¤Ê¤¤¤È, ¤³¤ÎÀßÄê¤Ï̵»ë¤µ¤ì¤ë
+ (setq howm-content-from-region t)
+ * howm-create-here ¤Ç, Í̵¤ò¸À¤ï¤µ¤º¡Ö¸½¥«¡¼¥½¥ë¹Ô¤Ë¡×¿·µ¬¥á¥âºîÀ®
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/542>))
+ (setq howm-create-here-just t)
+ * °ìÍ÷¤«¤é¤Î¥½¡¼¥È´ð½à¤Ë numerical-name ¤òÄɲÃ
+ * ³«È¯ÍÑ
+ * C-u M-x howm-bug-report ¤Ç´ØÏ¢ÊÑ¿ô¤Î°ìÍ÷
+ * M-x howm-elp ¤Ç, ¥×¥í¥Õ¥¡¥¤¥é elp ¤Î½àÈ÷
+ * ¤½¤Î¾¤Î²þÎÉ
+ * M-x customize ¤ËÂбþ ([Applications] ¢ª [Howm])
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?RoadMap>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/668>))
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤Ç, Ʊ¤¸¥Õ¥¡¥¤¥ë̾¤ò¤¯¤êÊÖ¤·É½¼¨¤·¤Ê¤¤
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/754>))
+ * ¤Ä¤¤¤Ç¤Ë¿§¤â¤Ä¤±¤Æ¤ß¤¿. ¤É¤Ê¤¿¤«¤â¤Ã¤È¤Þ¤·¤ÊÇÛ¿§¤ò¤¯¤À¤µ¤¤.
+ (M-x customize-group RET howm-faces RET ¤·¤Æ,
+ howm-view-name-face ¤È howm-view-empty-face)
+ * (»²¹Í) ´ØÏ¢¤¹¤ë´û¸µ¡Ç½
+ * TAB¡¦ALT-TAB ¢ª ¼¡¡¦Á°¤Î¥Õ¥¡¥¤¥ë¤Ø
+ * u ¢ª °ì¤Ä¤Î¥á¥â¤Ï°ì¹Ô¤À¤±¤Ë
+ * @ ¢ª Ï¢·ëɽ¼¨¤¹¤ì¤ÐƱ¤¸¥á¥â¤Ï°ì¤Ä¤Ë¤Þ¤È¤Þ¤ë
+ * °ìÍ÷¤Ç T ¢ª ¥¿¥¤¥È¥ëɽ¼¨¤ò¡Ö¥È¥°¥ë¡×
+ * 1.2.1 ¤Î±£¤·µ¡Ç½¤«¤é²þÎÉ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/427>))
+ * ¥á¥Ë¥å¡¼Æâ¤Î°ìÍ÷¤Ç¤Ï, ¹ÔƬ¤Ç¤Ê¤¯¤Æ¤â RET ¤Ç¥¸¥ã¥ó¥×
+ * ¥ê¥Þ¥¤¥ó¥Àľá¤¤Ç¡ÖÎ×»þ¤Ë³«¤¤¤¿¥Ð¥Ã¥Õ¥¡¡×¤ò¼«Æ°¤ÇÊĤ¸¤ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/705>))
+ ;; á¤Àè¤ò¼«Æ°¤ÇÊĤ¸¤ë. undo ¤Ç¤¤Ê¤¯¤Ê¤ë¤«¤é¤ª¤¹¤¹¤á¤·¤Þ¤»¤ó.
+ (setq howm-action-lock-forward-kill-buffer t)
+ * howm-menu-lang ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï locale ¤ò¸«¤Æ·è¤á¤ë
+ * ext/howm2 ¤Ç¡Öcome-from ¥¡¼¥ï¡¼¥É¤Î alias¡×¤ò¥µ¥Ý¡¼¥È
+ * ¤¢¤¤¤«¤ï¤é¤º¤ä¤Ã¤Ä¤±»Å»ö.
+ ¡Ä¤È¤¤¤¦¤«, ¸µ¤¬¤ä¤Ã¤Ä¤±»Å»ö¤¹¤®¤Æ, ¤â¤¦²òÆɤǤ¤º.
+ * ÆâÉô¼ÂÁõ
+ * cl ¥Ñ¥Ã¥±¡¼¥¸¤«¤é¤Î´Ø¿ô¤ò howm-cl.el ¤ËʬΥ.
+ ¤¤¤Ä¤«µ¤¹ç¤¬¤Ï¤¤¤ì¤ÐÄÉÊü¤·¤è¤¦¡Ä
+ * make »þ¤Î·Ù¹ð¡Ö¡Ä not known to be defined¡×¤òÍÞÀ©
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1111816102/485>))
+ * riffle.el ¤Î»ÅÍͤòÊѹ¹(gfunc.el ¤ò»È¤¦). ¥æ¡¼¥¶¡¼¤Ë¤Ï±Æ¶Á¤Ê¤¤¤Ä¤â¤ê.
+ ((<howmoney|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?howmoney>))
+ ¤â¤À¤¤¤¸¤ç¤¦¤Ö¤È»×¤¦¤ó¤À¤±¤É¡Ä
+ * ¥Ð¥°½¤Àµ
+ * Çò¹õµ¡¤Ç¥¨¥é¡¼
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/706>))
+ * ¥«¥é¡¼¥Ç¥£¥¹¥×¥ì¥¤¤Ç¤Ê¤¤¤È¤¤Ï, ²¼Àþ¤Î¤«¤ï¤ê¤Ëȿžɽ¼¨¤·¤Æ,
+ ¤½¤ì°Ê³°¤Î¾þ¤ê¤Ï¤Ê¤·
+ * %reminder ¤Î¶èÀÚ¤êÀþ¤¬¤º¤ì¤ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/703>))
+ * °ìÍ÷¤«¤é T ¤Ç¥¿¥¤¥È¥ëɽ¼¨¤·¤¿¤È¤, ̵¥¿¥¤¥È¥ëʬ¤¬Â¿½Åɽ¼¨¤µ¤ì¤Æ¤¤¤¿
+ * make test ¤·¤Æ C-c , s top [RET] T ¤Çȯ¾É
+ * win ¤Ç¡Ö¡Ä\.foo\¡Ä¡×¤Ê¤É¤ò¸¡º÷ÂоݤȤ·¤Ê¤¤¤è¤¦¤Ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/746>))
+ * howm-message-time ¤ò¥»¥Ã¥È¤·¤Æ¤â¡ÖNo match¡×¥á¥Ã¥»¡¼¥¸¤ò±£¤µ¤Ê¤¤¤è¤¦¤Ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/751>))
+ * ¥á¥Ë¥å¡¼¤Î¥ê¥Þ¥¤¥ó¥ÀÆâ¤Ç come-from ¥¡¼¥ï¡¼¥É¤Ë
+ ²¼Àþ¤¬¤Ä¤«¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿.
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/732>))
+
+== 1.2.x
+
+* [2005-06-10] v1.2.4
+ * bug fix
+ * howm-search-path Æâ¤ÎͽÄꡦtodo ¤¬¥á¥Ë¥å¡¼¤Ëɽ¼¨¤µ¤ì¤Ê¤«¤Ã¤¿
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/685>))
+ * ¥á¥Ë¥å¡¼¤Ëɽ¼¨¤µ¤ì¤ëͽÄê¤ÎÈϰϤ¬°ìÆüû¤«¤«¤Ã¤¿
+ * xemacs ¤Ç, ¥Õ¥¡¥¤¥ë¤¬¾¯¤Ê¤¤¤È¥á¥Ë¥å¡¼¤Î %recent ¤¬¥¨¥é¡¼¤Ë
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ * ¥á¥Ë¥å¡¼¾å¤Ç C-c , r ¤·¤¿¤È¤¤Ï¡Ö¥á¥Ë¥å¡¼¹¹¿·¡×
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/696>))
+ * howm-menu-list-face ¤Î¥Ç¥Õ¥©¥ë¥È¤ò¶õ¤Ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/697>))
+ * (require 'howm-mode) ¤·¤¿¤é cl ̤¥í¡¼¥É¤Ç¥¨¥é¡¼
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/698>))
+ * howm-1.2 ¤«¤é¤Ï (require 'howm) ¤¬Àµ¼°.
+ ¡Öhowm-mode¡×¤ò require ¤ä autoload ¤·¤Æ¤¤¤¿¤é,
+ ¡Öhowm¡×¤Ëľ¤·¤Æ¤¯¤À¤µ¤¤.
+ * ((<howmz|URL:http://noir.s7.xrea.com/archives/000136.html>))
+ ¤Ç¥¨¥é¡¼ (´Ø¿ô howm-view-sort-items ¤¬¤Ê¤¤)
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus>))
+ > (TxT) ¤µ¤ó
+ * ¥ê¥Þ¥¤¥ó¥Àľá¤¤Ç¥á¥Ë¥å¡¼¤¬Êø¤ì¤ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/705>))
+ * ¤³¤ó¤ÊÀßÄê¤Çȯ¾É
+ (setq howm-menu-expiry-hours 2)
+ (setq howm-action-lock-forward-save-buffer t)
+ * POBox ¤Î RET (ÊÑ´¹³ÎÄê)¤òÃ¥¤Ã¤Æ¤·¤Þ¤¦
+ * ¼Â¤Ï POBox ¤Ë¸Â¤é¤ºÉÔËÜ°Õ¤ÊÆ°ºî¤ò¤·¤Æ¤¤¤¿
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/711>))
+ * howm-message-time ¤¬¿¿¤Î¤È¤¤Î½êÍ×»þ´Öɽ¼¨¤Ï 1 ÉÃ̤Ëþ¤â·×¬
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/709>))
+ * [2005-03-09] ¤Ë¥³¥á¥ó¥È¥¢¥¦¥È¤µ¤ì¤Æ¤¤¤¿(Íýͳ¼ºÇ°)¤Î¤òÌᤷ¤¿
+ * ¥ê¥ê¡¼¥¹Í½ÄêÈÇ howm-1.2.4rc7 ¤È¤Î°ã¤¤¤Ï¡Ä
+ * ext/howmkara, ext/hsplit.rb, doc/README.html ¤òÇÛÉÛ¥Õ¥¡¥¤¥ë¤ËÄɲÃ
+
+* [2005-05-07] v1.2.3
+ * bug fix
+ * C-c , s RET ¤Î¤è¤¦¤Ë¶õʸ»úÎó¤ò¸¡º÷¤·¤¿¤È¤¤Ï, Á´¥á¥â°ìÍ÷
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/668>))
+ * make ¤Ç¤Ê¤¯¼êÆ° byte-compile ¤·¤¿¤é(?), %reminder ¤Ç¥¨¥é¡¼
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/669>))
+ * ¥ê¥ê¡¼¥¹Í½ÄêÈÇ howm-1.2.3rc1 [2005-05-06] ¤È¤Û¤È¤ó¤ÉƱ¤¸¤Ç¤¹
+
+* [2005-05-02] v1.2.2
+ * Note
+ * ɽÌ̾å¤Û¤ÜÊѲ½¤Ê¤·. ÆâÉô¤Ë¼ê¤ò¤¤¤ì¤Æ³ÈÄ¥À¤ò¹â¤á¤¿(¥Ð¥Ã¥¯¥¨¥ó¥ÉÀÚ¤êÎ¥¤·).
+ * ¸å½Ò¤Î±£¤·µ¡Ç½¤Ï, ¤ä¤Ã¤Ñ¤ê¤Þ¤À±£¤·
+ * µÍ¤á¤¬´Å¤¯¤Æ¤â»È¤Ã¤Æ¤¯¤À¤µ¤ë¤Ê¤é, ¤³¤Î¤Ø¤ó¤¬¤ª¤¹¤¹¤á
+ * come-from ¥¡¼¥ï¡¼¥É¤Î alias
+ * ¥á¥Ë¥å¡¼¤Ë¡Ö%reminder¡×¡Ö%recent¡×¡Ö%random¡×
+ ¡Ö%here%(howm-menu-search "¤Û¤²")¡×
+ * M-x howm-list-buffers, M-x howm-list-mark-ring
+ * M-x howm-random-walk
+ * µ¤¤Ë¤Ê¤ë»ØŦ¤â¤¢¤ë¤±¤É, ¤É¤¦¤â¤Ï¤Ã¤¤ê¤»¤º, ¸«ÀÚ¤ê.
+ ºÆ¸½¤Ç¤¤¿Êý¤Ï¤ªÃΤ餻¤¯¤À¤µ¤¤.
+ ((<ref|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/582>))
+ * ÅÓÃ椫¤é ChangeLog ¤ò¤Ä¤±¤Ï¤¸¤á¤¿¤Î¤Ç, ºÙ¤«¤¤Ä¾¤·¤Ï¤½¤Á¤é¤â»²¾È
+ * ¥ê¥ê¡¼¥¹Í½ÄêÈÇ howm-1.2.2rc6 [2005-04-29]¤ÈƱ¤¸¤â¤Î¤Ç¤¹
+ * »ÅÍÍÊѹ¹ (¤¿¤¤¤¬¤¤±Æ¶Á¤Ê¤µ¤½¤¦)
+ * ÀßÄê howm-menu-top ¤È howm-menu-file ¤ÎÍ¥Àè½ç¤òµÕ¤Ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/648>))
+ * µì: howm-menu-top ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤Ê¤é, howm-menu-file ¤Ï̵»ë
+ * ¿·: howm-menu-file ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤Ê¤é, howm-menu-top ¤Ï̵»ë
+ * ¤Ê¤ª, ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï,
+ howm-menu-top ¤¬»ØÄêºÑ¤ß¤Ç howm-menu-file ¤¬Ìµ»ØÄê
+ * ¥È¥Ã¥×¥á¥Ë¥å¡¼¡Ö<<< %menu%¡×¤òõ¤¹ºÝ¤Ï howm-search-path ¤ò̵»ë.
+ howm-directory ¤À¤±¸¡º÷.
+ * ²þÎÉ
+ * egrep, fgrep ¤¬¤Ê¤¤¤±¤É GNU grep ¤Ï¤¢¤ë, ¤È¤¤¤¦´Ä¶(¥ê¥Ê¥¶¥¦?)¤ËÂбþ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/621-625n>))
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus>))
+ * contents ¤Ç¤Î¹Ê¤ê¹þ¤ß¤â C-u ¤ËÂбþ (¥Þ¥Ã¥Á¤·¤¿¥á¥â¤òÇÓ½ü)
+ ¢ª ((<±þÍÑÎã|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?HidePrivateReminder>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/593>))
+ * todo ¥ê¥¹¥È¤ä¥á¥Ë¥å¡¼¤Î %reminder ¤Ç¤â, ½ÜÅÙ¤¬Æ±¤¸¤Ê¤éʸ»úÎó½ç¥½¡¼¥È
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/571>))
+ * ¤³¤Þ¤´¤Þ
+ * °ìÍ÷¤«¤é¡ÖT¡×¤Ç¥¿¥¤¥È¥ëɽ¼¨¤·¤¿¤È¤, ̵¥¿¥¤¥È¥ëʬ¤ÏºÇ¸å¤Ë¤Þ¤ï¤¹
+ * ²¼Àþ°Ê³°¤Ç RET ᤤ¤¿¤È¤¤Î½èÍý¤ò¼ã´³ÃúÇ«¤Ë
+ * ext/howmkara ¤Ç, ¼«¿È¤Ø¤Î¥ê¥ó¥¯¤òÍÞÀ©.
+ ¤Ä¤¤¤Ç¤Ë Home ¤Ø¤Î¥ê¥ó¥¯¤ò¥Õ¥Ã¥¿¤ËÄɲÃ.
+ * ext/hcal.rb ¤Î [2004-12-25]@3 µË¡Âбþ
+ * ±Ñ¸ì¥á¥Ë¥å¡¼¤ò½¼¼Â. ±Ñʸ index.html ¤Ë¹â®²½¥ª¥×¥·¥ç¥ó¤ÎÀâÌÀ.
+ * ɽ¼¨ÍѥХåե¡¤Ë¤Ï (buffer-disable-undo)
+ * ³«È¯¼Ô¸þ¤±
+ * ¥Ð¥Ã¥¯¥¨¥ó¥É¤ÎÀÚ¤êÎ¥¤·¤ËÃå¼ê(howm-backend.el)
+ * ¤ª¤«¤²¤Ç, Æüì¥Õ¥©¥ë¥À¤äÆüì°ìÍ÷¤¬²Äǽ¤Ë¤Ê¤Ã¤¿
+ * ÉÔ´°Á´¤À¤±¤É, »È¤¤¤Ê¤¬¤é¤³¤±¤¿½ê¤òľ¤·¤Æ¤¤¤¯¤Ã¤Æ¤¤¤¦Å¥Æì¤Ç
+ * gfunc.el (°Âľ generic function)
+ * howm-view-call-process ¢ª howm-call-process Åù
+ * cheat-font-lock.el ¤òÂçÁݽü
+ * win ÍѤË, ¡Ömake test¡×ÁêÅö¤Î test.bat
+ * make test ¤Ï --no-site-file ¤Ë
+ * xemacs ¤À¤È -no-site-file ¤ß¤¿¤¤¤À¤±¤É, ÊüÃÖ
+ * howm-configuration-for-major-mode ¤ÎÎã(howm-misc.el ¤Î¥³¥á¥ó¥È)¤òÈù½¤Àµ
+ (defalias ÍÑ)
+ * bug fix
+ * ¸¡º÷¤¬¥á¥â¤ÎºÇ½ª¹Ô¤Ë¥Þ¥Ã¥Á¤·¤¿¤È¤, Ï¢·ëɽ¼¨¤ÇÆó½Åɽ¼¨¤Ë¤Ê¤Ã¤Æ¤¤¤¿
+ * howm-view-use-grep ¤¬ non-nil ¤Î¤È¤¥¨¥é¡¼
+ (howm-view-grep-file-stdin-option ¤¬ nil ¤À¤Èȯ¾É)
+ * howm-view-use-grep ¤¬ nil ¤Î¤È¤, howm-excluded-file-regexp ¤Ë
+ ³ºÅö¤¹¤ë¥Õ¥¡¥¤¥ë¤Ï¥¹¥¥ã¥ó¤·¤Ê¤¤¤è¤¦¤Ë
+ ((<thx|URL:http://www.bookshelf.jp/pukiwiki/pukiwiki.php?%BC%C1%CC%E4%BD%B8%2F42>))
+ * ¡Ä¤È¤¤¤¦¤«, ¤â¤Ã¤Èº¬¸µ¤«¤éÂоݳ°¥Õ¥¡¥¤¥ë¤Î¥Á¥§¥Ã¥¯¤ò¸«Ä¾¤·
+ * ¤Ä¤¤¤Ç¤Ë, howm-excluded-file-regexp ¤Î¥Ç¥Õ¥©¥ë¥È¤Ë
+ (image-file-name-regexp) ÁêÅö¤òÄɲÃ
+ * 0123-45-6789 ¤ß¤¿¤ÊÅÅÏÃÈÖ¹æ¤Ë²¼Àþ¤ò°ú¤«¤Ê¤¤ (ÆüÉդȤߤʤ¹¾ò·ï¤ò¸·¤·¤¯)
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ * ¡Ö%¡×¤ò´Þ¤à message ¤Î¥¨¥é¡¼
+ * emacs20 ¤Ç¥á¥Ë¥å¡¼¤ò±£¤·¥Ð¥Ã¥Õ¥¡¤Ë¤¹¤ë¤È¿§¤¬¤Ä¤«¤Ê¤¤
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/541>))
+ * °ìÍ÷¡¦ÆâÍƥХåե¡¤«¤é¥á¥â¤ò³«¤¯ºÝ¤Î, narrowing ²ò½ü¤ÎȽÄê¥ß¥¹
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/532>))
+ * come-from µË¡¤òÊѹ¹¤·¤¿¾ì¹ç¤Î¼êÅö¤Æ
+ (thx > taku ¤µ¤ó)
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ * ¥Æ¥¹¥ÈÈÇ¡¦¥ê¥ê¡¼¥¹Í½ÄêÈǤΠbug fix (¾¶)
+ * >>> ~/hoge.ps ¤ä file://~/hoge.ps ¤ò RET ¤Ç³«¤³¤¦¤È¤¹¤ë¤È¥¨¥é¡¼
+ (thx > Konstantin Levinski (kostya@pmail.ntu.edu.sg))
+ * ¤¿¤Ö¤ó [2005-01-07] ¤Ë¤ä¤é¤«¤·¤¿¥Ð¥°
+ * emacs21 ¤È 20 ¤È¤Ç, font-lock-fontify-{block|buffer} ¤ò»È¤¤¤ï¤±
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/416>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/533>))
+ * Íý²ò¤·¤Æ¤Ê¤¯¤Æ, ¥¤¥ó¥Á¥¼êÅö¤Ç¤¹
+ * °ì¥Õ¥¡¥¤¥ë¤¬Ä¹¤¯¤ÆÃ忧¤Ë»þ´Ö¤Î¤«¤«¤ëÊý¤Ï,
+ emacs20 ¤Ç¤Ê¤¯ emacs21 ¤ò¤ª¤¹¤¹¤á¤·¤Þ¤¹
+ * howm-list-all-title ¤¬ non-nil ¤Î¤È¤ C-c , a ¤Îʤӽ礬µÕ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/599-600n>))
+ * ¥á¥â¤ò³«¤¯¤Î¤¬°Û¾ï¤ËÃÙ¤¯
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/635-636n>))
+ ¡Ä ľ¤Ã¤¿¤Î¤«Ì¤³Îǧ
+ * Meadow 2.10 ¤Ç make ¤¬¥¨¥é¡¼¤Ë
+ (thx > taku ¤µ¤ó, ¡Ö¤â¡×¤µ¤ó)
+ ((<ref|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/638>))
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?MaxSpecpdlSize>))
+ * Meadow-1.15 ¤À¤È, image-file-name-regexps ¤¬Ì¤ÄêµÁ¤Ç¥¨¥é¡¼
+ (thx > ƨÈò¤µ¤ó)
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ * howm-directory ¤¬ ~/.howm ¤Î¤è¤¦¤Ê¥É¥Ã¥È¥Ç¥£¥ì¥¯¥È¥ê¤À¤È²¿¤â¸¡º÷¤µ¤ì¤º
+ (thx > taku ¤µ¤ó)
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+
+* [2004-12-11] v1.2.1
+ * Note
+ * ɽ¸þ¤¤Ï, ¤Û¤È¤ó¤É bug fix ¤Î¤ß
+ * ±£¤·µ¡Ç½¤Ï, ¤Þ¤À±£¤·
+ * ²þÎÉ¡¦Êѹ¹
+ * ͽÄêɽ¤Ç, Ʊ¤¸Æü¤ÎͽÄê¤Ïµ½ÒÆâÍƤǥ½¡¼¥È
+ * ¡Ö[2004-11-04]@ 07:30 ¤Û¤²¤Û¤²¡×¤ß¤¿¤¤¤Ë½ñ¤¤¤È¤±¤Ð, »þ¹ï½ç¤Ëʤ֤Ϥº
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/398>))
+ * ¡ÖƱ¤¸Æü¤Î¤Ï½ÅÍ×ÅÙ½ç¤Ç¥½¡¼¥È¡×¤Ã¤ÆÍ×˾¤â, ¤³¤ì»È¤Ã¤Æ¤Ê¤ó¤È¤«¤Ê¤ë?
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/433>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/442>))
+ ((<ref|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/445>))
+ * tag2plan ¤Ïľ¤·¤Æ¤¤¤Þ¤»¤ó.
+ * howm-template ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï howm-view-title-header ¤Ë±þ¤¸¤ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/498>))
+ * howm-view-contents-persistent ¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤò nil ¤«¤é t ¤ËÊѹ¹
+ * ÆâÍƥХåե¡ *howmC* ¤«¤é RET ¤Ç³«¤¤¤Æ¤â, *howmS* ¤ä *howmC* ¤Ï¾Ã¤¨¤Ê¤¤
+ * ÊÑ¿ô howm-list-title ¤ÎÀßÄêÃͤˡÖhowm-keyword-search¡×¤òÄɲÃ
+ * Fix
+ * ¥á¥Ë¥å¡¼¤ÎͽÄêɽ¤Ç,
+ ¡Öhowm-menu-schedule-days-before ÆüÁ°¤«¤é howm-menu-schedule-days Æü¸å¤Þ¤Ç¡×
+ ¤Î¤Ï¤º¤¬¡Ö¡ÄÆüÁ°¤«¤é¡ÄÆü´Ö¡×¤Ë¤Ê¤Ã¤Æ¤¤¤¿
+ * ¥¿¥¤¥È¥ëɽ¼¨»þ¤Ë, ¥¿¥¤¥È¥ëÍó¡Ö= ¡×¤¬¤Ê¤¤¥á¥â¤òµß½Ð
+ * ¥¿¥¤¥È¥ëɽ¼¨¥ª¥ó¤ò¥Ç¥Õ¥©¥ë¥È¤Ë¤¹¤ë¤¿¤á¤ÎÉÛÀÐ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/490-493n>))
+ ((<ref|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/503>))
+ * ((<±ü»³¤µ¤óÈÇ auto-save-buffers|URL:http://homepage3.nifty.com/oatu/emacs/misc.html#asb>))
+ ¤È¤ÎÊ»ÍѤÇ,
+ ¡Ö.howm-keys has changed since visited or saved. Save anyway?¡×
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/507-509n>))
+ * [2004-09-01 23:26]@ ¤È¤«¤ÎÅöÆüʬ¤¬¥á¥Ë¥å¡¼¤Ëɽ¼¨¤µ¤ì¤Ê¤«¤Ã¤¿
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/411>))
+ * ɽ¼¨¤µ¤ì¤ë¤Ã¤Æ¤À¤±. ¤ª¤¹¤¹¤á¤·¤Þ¤»¤ó.
+ ¤³¤Î½ñ¼°¤òËܵ¤¤Ç¥µ¥Ý¡¼¥È¤¹¤ë¤«Ì¤Äê¤Ê¤Î¤Ç.
+ * meadow ¤Ç, [2004-08-08]! ¤Î¡Ö!¡×¤Ç RET ᤯¤È¥¨¥é¡¼
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/384>))
+ * ºÆ¸½¤Ç¤¤Ê¤«¤Ã¤¿¤±¤É, ²¿¤Ë¤»¤è¤³¤ì¤Çľ¤ë¤ó¤¸¤ã¤Ê¤¤¤«¤È
+ * ¥á¥â¤ò³«¤¤¤¿¤È¤¤Ë narrow ¤À¤È, ±£¤ì¤Æ¤ëÉôʬ¤Î½é´ü²½¤Ì¤±
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/377>))
+ * ÆâÉôÀ°Íý
+ * howm-list-migemo ¤¬Ä¾ÀÜ howm-view-search ¤òᤫ¤Ê¤¤¤è¤¦
+ * howm-set-mode-p ¤ò howm-set-mode ¤«¤éʬΥ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/388>))
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?SetMode>))
+ * ¥ê¥Þ¥¤¥ó¥À¤Î action-lock ¤òÀ°Íý¤·¤Æ¤¤¤¸¤ê¤ä¤¹¤¯. Æ°ºî¤ÏÊѲ½¤Ê¤¤¤Ï¤º.
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?TangledToDo>))
+ * ÉûºîÍѤÇ, howm-reminder-regexp-XXX-pos ¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤ¬¤Ò¤È¤Ä¤º¤ì¤¿
+ * ¤½¤Î¾
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤ÈÆâÍƥХåե¡¤ò¡Öo¡×¤Ç¹Ô¤Íè
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/424>))
+ ¡Ä¤Ï, ½ñ¤¤¤Æ¤ß¤¿¤±¤É¾Ã¤·¤Þ¤·¤¿. @ or 0 ¤¬¤¢¤ì¤ÐÉÔÍפǤ¹¤è¤Í?
+
+* [2004-08-24] v1.2
+ * Note
+ * ¥Ð¥°½¤Àµ (narrowing, CVS Àèü emacs ¤Ç¤ÎÃ忧)
+ * 1.1.1¡Á1.1.2 ¤Î±£¤·µ¡Ç½¤ò¸ø¼°²½ (todo ľá¤, ÊÝα¡Ö~¡×)
+ * ¥Õ¥¡¥¤¥ë¹½À®¤Î°ìÉôÊѹ¹ (howm.el, riffle.el) ¢ª ((<¥¤¥ó¥¹¥È¡¼¥ë>))
+ * ¤½¤Î¾¤³¤Þ¤´¤Þ²þÎÉ (file:// ¤Ç¤â³°Éô viewer)
+ * ±£¤·µ¡Ç½Äɲà (¥á¥Ë¥å¡¼¤ËºÇ¶á¡õ¥é¥ó¥À¥à°ìÍ÷)
+ * ¤Û¤ó¤È¤ÎÌÜ¶Ì¤Ï come-from ¤Î alias ¤Ê¤ó¤À¤±¤É, ¤Þ¤À¤·¤Ð¤é¤¯¤Ï±£¤·µ¡Ç½
+ * ¥ê¥ê¡¼¥¹Í½ÄêÈÇ howm-1.2rc6 [2004-08-16]¤ÈƱ¤¸¤â¤Î¤Ç¤¹
+ * ±£¤·µ¡Ç½¤Î¸ø¼°²½
+ * ÌܶÌ
+ * todo ¤Î¿··¿: ÊÝα¡Ö[2004-01-09]~100 ¤Û¤²¡×
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/497>))
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Defer>))
+ * ¥á¥Ë¥å¡¼¡¦Í½Äêɽ¡¦todo °ìÍ÷¤«¤é, -+!@~. ¾å¤Ç RET ¤òľÀÜᤱ¤ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/506>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/568>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/580>))
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?RepeatedToDo>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/698>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/732>))
+ * ¾®²þ¤
+ * °ìÍ÷
+ * ɽ¼¨Àڤ꤫¤¨ (0,1,2,v ¥¡¼)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/826-827n>))
+ * T ¤Ç¥¿¥¤¥È¥ëɽ¼¨, TAB¡¦M-TAB ¤Ç¼¡¡¦Á°¤Î¥Õ¥¡¥¤¥ë¤Ø
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/61>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/892>))
+ * ¥ê¥Þ¥¤¥ó¥À¤ÎÆüÉդˤè¤ë¥½¡¼¥È¡¦¹Ê¤ê¹þ¤ß
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/694>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/726>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/742>))
+ * ¤â¤¦¤Á¤ç¤Ã¤È¶ãÌ£¤·¤Æ°ìÈ̲½¤·¤¿¤¤µ¤¤â (ÀÖ»ú²Õ½ê¤Ç¥½¡¼¥È, ¤È¤«)
+ * ¹Ê¤ê¹þ¤ß´ð½à¤Ë Region, Around ¤òÄɲÃ
+ * ((<¥«¥¹¥¿¥Þ¥¤¥º>))»²¾È
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤Ø¤Î¿§¤Ä¤±
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/675>))
+ * ¡û¡û¤Î¤È¤¤À¤±¥¿¥¤¥È¥ëɽ¼¨
+ * howm-list-recent-title, howm-list-all-title ¤Ï¤½¤Î¤¦¤ÁÇѻߤÎͽÄê
+ * howm-list-title ¤Ë¤Ï´Ø¿ô¤â»ØÄê²Äǽ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/61>))
+ * C-x 1 ¸å¤Ï¾¡¼ê¤Ë¥Õ¥ì¡¼¥à¤òʬ³ä¤·¤Ê¤¤
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/747>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/766>))
+ * ¸¡º÷
+ * foo ¤ò¸¡º÷¤·¤¿¤é [[foo]] ¤ò¾å°Ì¤Ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/835>))
+ * ¥Ç¥Õ¥©¥ë¥È¤Ë¤·¤Þ¤·¤¿. ¤¤¤ä¤Ê¤é (setq howm-list-prefer-wiki nil)
+ * [[¡Ä]] ¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤¿¤é, howm-wiki-format ¤âÍ×ÀßÄê
+ (setq howm-wiki-format "((¡ã%s¡ä))") ;; ((¡ã¡Ä¡ä)) ¤ËÊѹ¹¤·¤¿Îã
+ * howm ¤Ç foo ¤ò¸¡º÷¤·¤¿¸å¤Ï, C-s C-s ¤â foo ¤Î¸¡º÷¤Ë
+ (setq howm-view-update-search-ring t)
+ * ¸¡º÷¤Ë»È¤¦´Ø¿ô¤ò((<¥«¥¹¥¿¥Þ¥¤¥º>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/166-167n>))
+ * ¥á¥Ë¥å¡¼
+ * [º£Æü] [ºòÆü] ¤ò³ÈÄ¥
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/37>))
+ * °ì¥á¥â°ì¥Õ¥¡¥¤¥ë¤Î¤È¤¤Ï, ¤½¤ÎÆüÉÕʸ»úÎó¤ò¸¡º÷.
+ °ìÆü°ì¥Õ¥¡¥¤¥ë¤Î¤È¤¤Ï, ¤½¤ÎÆüÉդΥե¡¥¤¥ë¤ò³«¤¯.
+ * ¥Ç¥Õ¥©¥ë¥È¤Î¥á¥Ë¥å¡¼¤ËÄɲä·¤Þ¤·¤¿
+ * ¤â¤Ã¤ÈÊØÍø¤½¤¦¤Ê
+ ((<Ê̲ò|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/39>))
+ ¤¬¤¹¤Ç¤Ë :-)
+ * ¥¡¼ÀßÄê¤Ë C-i ¤È M-C-i ¤òÄɲÃ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/909>))
+ * action-lock ¤Î((<¥«¥¹¥¿¥Þ¥¤¥º>))
+ * ¡Öfile://¡Ä¡×¤ä¡Öhttp://¡Ä¡×
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/945>))
+ * { } ¤ä {_} ¤òÊѹ¹¤·¤ä¤¹¤¯
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/828>))
+ * {_} ¤Ï¥Æ¥ó¥×¥ì¡¼¥È½ñ¼°¤ÈϢư¤·¤¿Êý¤¬¤¤¤¤¤«¤È»×¤Ã¤Æ, ¾®ºÙ¹©¤·¤Æ¤Þ¤·¤¿
+ * howm ¤Î load Á°¤Ë howm-dtime-format ¤À¤±ÀßÄꤹ¤ë¤È,
+ howm-template-date-format ¤â¤½¤ì¤Ë¤Ê¤ë
+ * {_} ¤Î½ñ¼°¤Ï howm ¦¤Ç¾å½ñ¤¤¹¤ë¤«¤é, ¢¤Ï̵¸ú
+ (setq action-lock-date-default '("{_}" "[%Y-%m-%d %H:%M]")) ;; á¤Á°¸å
+ * howm-action-lock-done-date-format ¤Ê¤ó¤Æ
+ README ¤Ë½ñ¤¤¤Æ¤¿¤Î¤Ï¥¦¥½. ºî¤Ã¤Æ¤Þ¤»¤ó¤Ç¤·¤¿ ^^;
+ * ¥ê¥Þ¥¤¥ó¥À
+ * !+-~. ¤Î½ÜÅÙ¤Î((<¥«¥¹¥¿¥Þ¥¤¥º>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/84>))
+ * ¤³¤Þ¤´¤Þ²þÎÉ
+ * file:// ¤Ç¤â²èÁüÅù¤Ï³°Éô viewer µ¯Æ°
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/309>))
+ * ÆüÉÕ·Á¼°¤Îľá¤ (¥á¥Ë¥å¡¼¤ä todo °ìÍ÷¤«¤é)
+ * ¥á¥Ë¥å¡¼¤Î %schedule, %todo, %recent, %random ¤Î action-lock ¤òÅý°ì
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/264>))
+ * ¡Ö>¡×¤Ç RET ᤯¤È¡Ö|¡×°Ê¹ß¤ò¸¡º÷
+ * ¥«¥¹¥¿¥Þ¥¤¥º
+ * ¿§¤ÎÊѹ¹
+ (set-face-foreground 'howm-menu-list-face "cyan")
+ * ½ñ¼°¤ÎÊѹ¹: ÊÑ¿ô¤ò¤¤¤¸¤ë ¢ª
+ howm-menu-list-format, howm-menu-list-regexp,
+ howm-menu-list-regexp-key-pos, howm-menu-list-regexp-action-pos,
+ howm-menu-list-regexp-face-pos
+ * ·ã¤·¤¤Êѹ¹(ÆüÍˤÏÀÖ, ¤Ê¤É): ´Ø¿ô¤ò¤¤¤¸¤ë ¢ª
+ howm-menu-list-format, howm-menu-list-rules,
+ howm-menu-font-lock-rules
+ * ¡ÖÆüÉÕ¾å¤Ç RET¡×¡Ö¥ê¥Þ¥¤¥ó¥À¾å¤Ç RET¡×¤·¤¿¤È¤¤ÎÆ°ºî¤ò¾®¸¤·¤¯
+ * °ìʸ»ú¥³¥Þ¥ó¥É ¢ª ¤¿¤À¤Á¤Ëȯư (¤½¤Î¸å¤Î RET ¤ÏÉÔÍ×)
+ * ¿ʸ»ú¥³¥Þ¥ó¥É ¢ª ³¤±¤Æ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤«¤éÆþÎÏ
+ * °ìÍ÷¤«¤é C-u f ¤·¤¿¤È¤¤Ë¤Ï¡ÖReject¡×¤Èɽ¼¨
+ * ͽÄêɽ¡¦todo °ìÍ÷¤ËÍËÆü¤òɽ¼¨
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Comment>))
+ * ʸ½ñ¤Î¹¹¿·
+ * ¥¤¥ó¥¹¥È¡¼¥ëË¡¤ÎÀâÌÀ¤Ï, make install ¤ÎÊý¤ò¥á¥¤¥ó¤Ë
+ * index-j.html ¤Ë²èÁü¤È UNIX USER µ»ö¤Ø¤Î¥ê¥ó¥¯¤òÄɲÃ
+ * ¼ÂÁõ¡¦³«È¯
+ * ·ü°Æ¤Î¥Õ¥¡¥¤¥ë̾Êѹ¹¤ò·è¹Ô
+ * howm-mode-mode.el ¢ª howm-mode.el
+ * howm-mode.el ¢ª howm.el
+ * ¾®ºÙ¹©¤Ç, ½¾Íè¤Î (require 'howm-mode) ¤Ç¤âÆ°¤¯¤è¤¦¤Ë¤Ï¤Ê¤Ã¤Æ¤ë
+ * ¤Ñ¤é¤Ñ¤é°ìÍ÷ riffle.el ¤ò, howm-view.el ¤«¤éʬΥ
+ * »ÅÍÍÊѹ¹[2004-07-20]
+ * riffle-controller ¤Î insert-item ¢ª contents-item
+ * ÆâÍƤò¼«Ê¬¤Ç½ñ¤½Ð¤¹¤ó¤¸¤ã¤Ê¤¯, ÆâÍƤòʸ»úÎó¤ÇÊÖ¤¹
+ * ¡Ösection¡×¤òÇÑ»ß
+ * howm-menu.el À°Íý
+ * ÆâÉô»ÅÍͤÎÊѹ¹ (howm-menu-display-rules ¤Þ¤ï¤ê)
+ * ÊÑ¿ô¡¦´Ø¿ô¤Îʤ٤«¤¨
+ * howm-bug-report ²þÎÉ
+ * emacs ¥Ð¡¼¥¸¥ç¥óɽ¼¨¤ò¾Ü¤·¤¯
+ * make ¤·¤Ê¤¯¤Æ¤â¥Ð¡¼¥¸¥ç¥ó¤À¤±¤Ïɽ¼¨
+ * byte-compile, make, make test ¤ÎÍ̵¤âɽ¼¨
+ * howm2 ¤«¤é [[¡û¡û]] ¤Î½èÍý¤òºï½ü
+ * Âбþ¤¹¤ë <<< ¡û¡û ¤¬¤¢¤ë¤Ï¤º¤Ê¤Î¤Ç, ¤½¤Ã¤Á¤Ë¤Þ¤«¤»¤ë
+ * hcal.rb, tag2plan ¤Î ruby ¥ª¥×¥·¥ç¥óµË¡¤Ê¤ª¤·
+ ((<thx|URL:http://arika.org/debian/howm_1.1.2.1-0+0.diff.gz>))
+ * Fix
+ * CVS Àèü emacs ¤Ç¿§¤¬¤Ä¤«¤Ê¤¤
+ ((<thx|URL:http://www.unix-fan.com/celt/blog/20040612.html>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/302>))
+ * ¥á¥â¤¬ narrow ¤µ¤ì¤Æ¤ë¤È, ¸¡º÷¤µ¤ì¤Ê¤¤¡¦±ÜÍ÷¤Ç¤¤Ê¤¤¡¦³«¤¤¤Æ¤â¸«¤¨¤Ê¤¤
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/311>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/329>))
+ * ¡Ö>>> ¥Õ¥¡¥¤¥ë̾¡×¤Î¤È¤¤Ï¥¿¥¤¥È¥ëɽ¼¨¤ò off
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/309>))
+ * >>> ¤«¤é²èÁü¤ò³«¤¤¤¿¤¢¤È, ¸µ¤È°ã¤¦¥Ð¥Ã¥Õ¥¡¤¬É½¼¨¤µ¤ì¤¿¤ê¤·¤Æ¤¿
+ * ¡Ö<<<¡×¾å¤Ç RET (´ØÏ¢¥¡¼¥ï¡¼¥É°ìÍ÷)¤òÀµ¤·¤¯. ·ãÃÙ¤Ë ;_;
+ * emacs ¤È grep ¤ÎÀµµ¬É½¸½¤Î°ã¤¤¤¬¤Þ¤¿¤â¥Í¥Ã¥¯
+ * ¤Á¤Ê¤ß¤Ë»ÅÍͤÏ,
+ ¡Ö¤½¤Î¥¡¼¥ï¡¼¥É¤Ë´Þ¤Þ¤ì¤ë¥¡¼¥ï¡¼¥É¤ò´Þ¤à¥¡¼¥ï¡¼¥É¤Î°ìÍ÷¡×
+ * ¸ºß¤·¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤ò howm-directory ¤Ë»ØÄꤹ¤ë¤È,
+ ½é²ó¤Î C-c , , ¤Ç¥¨¥é¡¼ (make install ¤·¤¿¾ì¹ç)
+ * howm-from-change-log ¤Ç¥¿¥¤¥È¥ë¤¬¥³¥Ô¡¼¤µ¤ì¤Ê¤¯¤Ê¤Ã¤Æ¤¿
+ (thx > 'UCONN¤Î¥Ý¥¹¥É¥¯'¤µ¤ó)
+ * howm-view-open-hook ¤¬ÆóÅٸƤФì¤Æ¤¿
+ * ÀßÄê¤Ë¤è¤Ã¤Æ, Á´¥á¥â°ìÍ÷¤Ç¡Ö¥¿¥¤¥È¥ëÃê½Ð¡×¤¬Æó²ó¸Æ¤Ð¤ì¤Æ¤¿¤«¤â
+ * README ÄûÀµ (howm-title-header ¢ª howm-view-title-header)
+ * Meadow ÍѤΡ֥ɥ饤¥Ö̾¤ÎÂçʸ»ú¾®Ê¸»ú¡×Âкö¤ò
+ Èù½¤Àµ(howm-normalize-file-name). µóÆ°¤ÏÊѲ½¤Ê¤¤¤Ï¤º.
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?DriveLetter>))
+ * ¥Æ¥¹¥ÈÈǤΥХ°(¾¶)
+ * ¡Ö¥á¥Ë¥å¡¼¤Ë %recent¡×¤ÇÂоݳ°¥Õ¥¡¥¤¥ë¤Î¥Á¥§¥Ã¥¯¤ò˺¤ì¤Æ¤¿
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/246>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/247-248n>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/255-257n>))
+ * ((<¥¤¥ó¥¹¥È¡¼¥ë>))¤Î¡Ö¤Ï¤¸¤á¤Æ C-c , , ¤·¤¿»þ¤ËÆɤ߹þ¤à¡×¤ÎÀßÄêÈ´¤±
+ * ¥Æ¥¹¥ÈÈǤΥС¼¥¸¥ç¥óɽ¼¨¤¬, ¥æ¡¼¥¶¤¬ ./configure ¤·¤¿Æü¤Ë¤Ê¤Ã¤Æ¤¿.
+ * emacs -nw ¤Ê¤È¤, [2004-08-08]! ¤Î¡Ö!¡×¤Ç RET ᤯¤È¥¨¥é¡¼
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/354>))
+ * ³Æ¥Õ¥¡¥¤¥ë¸ÄÊÌ¤Ë byte-compile ¤·¤¿¤È¤¤ÎÉÔ¶ñ¹ç
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ * ¥Þ¥¯¥í¤¬¥Þ¥¯¥í°·¤¤¤µ¤ì¤Æ¤Ê¤«¤Ã¤¿
+ ¢ª ¥Õ¥¡¥¤¥ë¤Þ¤¿¤¤¤Ç»È¤¦¥Þ¥¯¥í¤Ï howm-common.el ¤ËÃÖ¤,
+ ³Æ howm-*.el ¤¬ÌÀ¼¨Åª¤Ë require
+
+== 1.1.2.x
+
+* [2004-05-09] v1.1.2.1
+ * fix: make test ¤¬¥¨¥é¡¼
+ * ¥Ñ¥Ã¥±¡¼¥¸¥ó¥°¤Î¥ß¥¹¤Ç, ~/sample/ °Ê²¼¤Î¥Õ¥¡¥¤¥ë¤ËÈ´¤±
+
+* [2004-05-06] v1.1.2
+ * Note
+ * ÃæÅÓȾü¤À¤±¤É, ¤»¤Ã¤«¤¯¤·¤Ð¤é¤¯Êѹ¹¤Ê¤¤¤«¤é¥ê¥ê¡¼¥¹¤·¤È¤³¤¦¤«¤È.
+ * 1.2 ¤Ï¤Þ¤ÀÀè. ¤Ç¤â 1.1.1.x ¤Ï¤â¤¦¥á¥ó¥Æ¤·¤¿¤¯¤Ê¤¤. ¤Ã¤Æ¤³¤È¤Ç¤Ä¤Ê¤®¤Ë.
+ * ¸ø¼°µ¡Ç½¤Ï 1.1.1.3 ¤«¤é¤¿¤¤¤·¤ÆÊѹ¹¤Ê¤·.
+ * 1.1.2rc1 ¤«¤éÁ´¤¯Êѹ¹¤Ê¤·.
+ * ±£¤·µ¡Ç½
+ * alias »îºî, ¤½¤Î¾¾®²þ¤
+ * Èù²þ¤
+ * ¡Ö°ìÍ÷¤«¤é¤Î¹Ê¤ê¤³¤ß¸¡º÷¡×¤Î¥¡¼Êѹ¹ (s ¢ª G)
+ * s ¤Ï C-c , s ¤Î¾Êά·Á¤È¤«¤Ö¤Ã¤Æ¤¿
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/133-134n>))
+ * ¡Ömake test¡×¤Ç¡ÖÁǤÎÀßÄê¤Ç¤Î¥Æ¥¹¥È¡×
+ * ¥á¥Ë¥å¡¼Ãæ¤Ç¤Î¡Ö%|¡×¤Ë¤è¤ëÉԲĻë¥È¥°¥ë¤ò¸ø¼°µ¡Ç½¤Ë
+ * howm-view-real-grep ¤Ï¡Ö¥Ñ¥¿¡¼¥ó¤Î¥ê¥¹¥È¡×¤â¼õ¤±¤Ä¤±¤ë
+ (setq howm-view-grep-file-stdin-option "-f -")
+ * ÆÃ¤Ë linux °Ê³°¤Ç grep »ÈÍѤÊÊý¤Ï, ¤³¤ÎÀßÄê¤ò¤·¤ÆÉÔÅԹ礬½Ð¤Ê¤¤¤«,
+ »î¤·¤Æ¤¤¤¿¤À¤±¤ë¤È½õ¤«¤ê¤Þ¤¹.
+ ¸«¤¿ÌܤÎÆ°ºî¤Ï²¿¤âÊѤï¤é¤Ê¤¤¤Ä¤â¤ê¤Ç¤¹¤¬¡Ä
+ * ¡Öcome-from ¥¡¼¥ï¡¼¥É¤Î alias¡×¤Ë¸þ¤±¤¿ÉÛÀФǤ¹
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?CompoundComeFrom>))
+ * fix
+ * ¡Ö<<< foo {_}¡×¤Î¡Ö<<<¡×¤Ç RET ᤤ¤Æ¤â no match
+ * grep »ÈÍÑ»þ¤Î¤ß? ({}¤¬Æüìʸ»ú)
+ * ¤ä¤Ã¤Ä¤±½¤Àµ. º¬Ëܽ¤Àµ¤Ï¡ÖÊ£¿ô¥Ñ¥¿¡¼¥ó grep¡×¤¬¤Ç¤¤Æ¤«¤é.
+ * come-from ¥ê¥ó¥¯¡Öfoo¡×¾å¤Ç RET ¤·¤Æ¤â,
+ ¡Ö<<< foo bar¡×¤ÎÊý¤¬¾å¤Ëɽ¼¨¤µ¤ì¤¿¤ê
+ * come-from ½ñ¼°¤òÊѹ¹¤·¤Æ¡Ö¹ÔËö¤Þ¤Ç¡×¤¸¤ã¤Ê¤¯¤·¤¿¤È¤¤Ï,
+ ÊÑ¿ô howm-keyword-regexp-format ¤âÀßÄꤷ¤Æ¤¯¤À¤µ¤¤
+ * howm-keyword-case-fold-search ¤¬¿¿¤Ç¤â,
+ Àµµ¬É½¸½¤ò downcase ¤·¤Ê¤¤¤è¤¦½¤Àµ (\W ¤È¤«°ÕÌ£ÊѤï¤Ã¤Æ¤·¤Þ¤¦¤«¤é)
+ * M-x howm-mode ¤Ç howm ¤ò off ¤Ë¤·¤Æ¤«¤éÊݸ¤·¤è¤¦¤È¤¹¤ë¤È¥¨¥é¡¼
+ * hcal.rb ¤ÇÊÝαµ¹æ¤¬¸Å¤¤¤Þ¤Þ¤À¤Ã¤¿ (* ¢ª ~)
+
+== 1.1.1.x
+
+* [2004-04-29] v1.1.1.3
+ * fix: C-c , d RET ¤Çº£Æü¤ÎÆüÉÕ¤òÆþÎϤ·¤¿¤È¤, ¾¡¼ê¤Ë°ìÍ÷¤ØÈô¤ó¤Ç¤¿
+ (howm-insert-date-future ¤¬ nil ¤Î¤È¤)
+ * ¤Ä¤¤¤Ç¤Ë, howm-insert-date-future ¤òÀßÄꤷ¤Æ
+ ¤ª¤»¤Ã¤«¤¤¤¬È¯Æ°¤·¤¿¤È¤¤Ï, ¥á¥Ã¥»¡¼¥¸¤ò½Ð¤¹¤è¤¦¤Ë¤·¤¿
+ * v1.1.1.3rc1 [2004-04-14] ¤ÈÆâÍÆƱ¤¸
+
+* [2004-04-01] v1.1.1.2
+ * Note
+ * 1.1.1.1 ¤«¤é¤Î bug fix °ìÅÀ¤Î¤ß
+ * 1.1.1.2rc1 ¤«¤é¤ÎÊѹ¹¤Ï¤¢¤ê¤Þ¤»¤ó
+ * fix: C-c , g foo ¤Ç Foo ¤¬¥Ò¥Ã¥È¤·¤Ê¤¤ (grep ÉÔ»ÈÍÑ»þ)
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/88>))
+ * ¥á¥Ë¥å¡¼¤ÎͽÄꡦtodo °ìÍ÷¤Î¡Ö>¡×¤Ç RET ¢ª no match
+ ¤È¤¤¤¦¥Ð¥°¤â½Ð¤Æ¤¤¤¿ÌÏÍÍ
+ (howm-keyword-case-fold-search ÀßÄê»þ)
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/96>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/108>))
+ thx > NARA Shinsuke ¤µ¤ó
+
+* [2004-03-16] v1.1.1.1
+ * Note
+ * v1.1.1 ¤«¤é¤Î bug fix ÈǤǤ¹
+ * ¡Ö±£¤·µ¡Ç½¡×¤â¾¯¡¹ÄɲÃ
+ * Èù²þÎÉ
+ * migemo-server ¤òÉÔÍפË
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/899>))
+ * grep »ÈÍѤʤé¤Þ¤ÀɬÍ×
+ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/909>))
+ * howm-menu-mode-map ¤ò¤Õ¤Ä¤¦¤Ë¥¡¼ÄêµÁ²Äǽ¤Ë (buffer local ¤¸¤ã¤Ê¤¯¤·¤¿)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/909>))
+ * action-lock-set-rules ¤Ï¾¡¼ê¤Ë remove-duplicates
+ * fix
+ * (setq howm-list-title t) ¤·¤Æ¤â C-c , l ¤Ç¥¿¥¤¥È¥ë¤¬½Ð¤Ê¤¤
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/924>))
+ * ÆüÉÕÆþÎÏ¤Ç 01230 ¤¬ 20001230 ¤¸¤ã¤Ê¤¯ 1230 ¤È²ò¼á¤µ¤ì¤Æ¤¿
+ * hcal.rb ¤Ç¤â ~ ¤Ï»ØÄêÆü¤Þ¤ÇÀøÉú¤¹¤ë¤è¤¦
+ * ÆâÍƥХåե¡¤Î C-t, M-C-t ¢ª C-i, M-C-i
+ * ¡Ö<<< [foo¡×¤Ç¡Ö[foo¡×¤ò᤯¤È¥¨¥é¡¼ (regexp-quote ¤·Ëº¤ì)
+ * [2004-02-23] ¤Î½¤Àµ¤Ï¤Þ¤Á¤¬¤Ã¤Æ¤¿¤Î¤ÇºÆ½¤Àµ
+ * emacs20, meadow1.x(?) ¤Ç http:// ¤Ë²¼Àþ¤¬¤Ä¤«¤Ê¤¤
+ (³ÈÄ¥Àµµ¬É½¸½ "[htp]\\{3,5\\}")
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ * grep ÉÔ»ÈÍÑ»þ, S ¢ª foo ¤Ç¡ÖFoo¡×¤¬¤Ò¤Ã¤«¤«¤é¤Ê¤¤
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/51-54n>))
+ * README ¤Î½¤Àµ
+ * todo ɽ¼¨·ï¿ô¤Î¥«¥¹¥¿¥Þ¥¤¥ºË¡¤òÄɵ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/69>))
+ * {_} ¤Î¥«¥¹¥¿¥Þ¥¤¥ºË¡¤ÎÀâÌÀ¤ò½¤Àµ
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/79-82n>))
+
+* [2004-02-21] v1.1.1
+ * Note
+ * ÂçÎ̤Τ³¤Þ¤´¤Þ²þÎÉ
+ * Ì̲ܶþ¤(ÊÝα, todo ľá¤, ¥½¡¼¥¹¥³¡¼¥É±ÜÍ÷)¤Ï,
+ ¤Þ¤À¡Ö±£¤·µ¡Ç½¡×¤Ã¤Æ¤³¤È¤Ç
+ * v1.1.0.* ¤«¤é, ¤½¤Î¤Þ¤Þ°Ü¹Ô¤Ç¤¤ë¤Ä¤â¤ê. ½ñ¼°Êѹ¹¤Ê¤É¤Ê¤·.
+ * v1.1.1rc3 ¤ÈÆâÍÆƱ¤¸
+ * ¿·ÀßÄê (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * todo ¤ò RET °ìȯ¤ÇºÑ¤Ë (howm-action-lock-reminder-done-default)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/698>))
+ * ÆâÍƥХåե¡¤Ë¿§¤Ä¤± (howm-view-contents-font-lock-keywords)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/665>))
+ * ¤Û¤ó¤È¤Ï¥Õ¥¡¥¤¥ëËÁƬ¤È³ÈÄ¥»Ò¤«¤é¼«Æ°È½Äꤹ¤Ù¤¤Ê¤ó¤À¤±¤É, ¤Ò¤È¤Þ¤º.
+ * °ìÍ÷¤Î¥½¡¼¥È´ð½à (howm-list-normalizer)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/503>))
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?SortBy>))
+ * ¥á¥Ë¥å¡¼¤ÎͽÄêɽ¤Îɽ¼¨ÈÏ°Ï (howm-menu-schedule-days-before)
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Comment>))
+ * ÆüÉդο·µ¬ÆþÎÏ»þ¤Ëǯ¤ä·î¤òά¤·¤¿¤é̤Íè¤È²ò¼á (howm-insert-date-future)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/425>))
+ * howm-template ¤òÁªÂò²Äǽ¤Ë
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?SwitchTemplate>))
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport>))
+ * (setq howm-list-title t) ¤¹¤ì¤Ð, °ìÍ÷¤Ç¤Ï¾ï¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/288>))
+ * howm-list-recent-title, howm-list-all-title ¤Ï undocumented ¤Ë.
+ ¤½¤Î¤¦¤ÁÇѻߤΤĤâ¤ê.
+ * û½Ì¥Õ¥¡¥¤¥ë̾¤ÎÀßÄê¤ò howm-abbreviate-file-name ¤Ë°ìËܲ½.
+ ¤Ä¤¤¤Ç¤Ë howm-keyword-to-kill-ring ¤âû½Ì¥Õ¥¡¥¤¥ë̾¤Ë.
+ * ¥¡¼¥ï¡¼¥É°ìÍ÷¤ÎÃÖ¤¾ì½ê (howm-keyword-file)
+ * howm-create-file-hook ¤òÄɲÃ
+ * ChangeLog ¥á¥â¤È¤ÎÊ»ÍÑ (¢ªCL-HOWM.ja.rd)
+ (thx > 'UCONN¤Î¥Ý¥¹¥É¥¯'¤µ¤ó)
+ * ¿·¥³¥Þ¥ó¥É
+ * C-c , s ¤Ç¸ÇÄêʸ»úÎ󸡺÷ howm-list-grep-fixed (C-u C-c , g ¤ÈƱ¤¸)
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?KeyBinding>))
+ * C-c , SPC ¤Ç howm ¤Ê¥Ð¥Ã¥Õ¥¡¤È howm ¤Ç¤Ê¤¤¥Ð¥Ã¥Õ¥¡¤È¤òÀÚ¤êÂؤ¨.
+ howm ¤Ê¥Ð¥Ã¥Õ¥¡¤¬¤Ê¤±¤ì¤Ð¥á¥Ë¥å¡¼¤ò³«¤¯.
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Idea>))
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ImplementedIdea>))
+ * °ìÍ÷ɽ¼¨¡¦ÆâÍÆɽ¼¨¤Ç¤Ï n, p ¤Ç¤â¥«¡¼¥½¥ë¾å²¼
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/473>))
+ * ¡Öfile://¡Ä¡×¾å¤Ç C-u RET ¢ª find-file-other-window
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/449>))
+ * [º£Æü] [ºòÆü] ¤Þ¤ï¤ê (°ìÆü°ì¥Õ¥¡¥¤¥ë¤òÁÛÄê)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/452>))
+ * howm-open-today ¤Ï, ¿·µ¬ºîÀ®»þ¤Ë¥Æ¥ó¥×¥ì¡¼¥ÈÁÞÆþ
+ * M-x howm-open-past ¤ÇºòÆü¤ò,
+ C-u 3 M-x howm-open-past ¤Ç 3 ÆüÁ°¤ò³«¤¯
+ * Êѹ¹
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¡¦ÆâÍƥХåե¡
+ * °ìÁȤ·¤«ºî¤é¤Ê¤¤(ÉÔɾ¤Ê¤éÌᤷ¤Þ¤¹). ((<¥«¥¹¥¿¥Þ¥¤¥º>))¤â»²¾È.
+ * q ¤·¤¿¤é, ¥Õ¥ì¡¼¥àʬ³ä¤ò¶¯À©²ò½ü
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/359>))
+ * ¡Ö¸µ¤Î¾õÂÖ¤ËÉüµ¢¡×¤Ï give up ¤Ç¤¹.
+ ¤´¤á¤ó¤Ê¤µ¤¤. »ä¤ÎÏӤȵ¤¹ç¤Ç¤Ï, º¬Ëܲò·è¤ÏÆñ¤·¤½¤¦¡Ä
+ ((<ref|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/194>))
+ ((<ref|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/415-416n>))
+ * sort-by-date ¤ò¡Ö¿·¤·¤¤¤â¤Î¤¬¾å¡×¤ËÊѹ¹
+ * °ìÍ÷ɽ¼¨¤«¤é @ ¤ÇÏ¢·ëɽ¼¨¤ËÀڤ꤫¤¨¤¿¤é, window ¤Îʬ³ä¤ò²ò½ü
+ * Ï¢·ëɽ¼¨¤Ç, ³Æ¥á¥â¤ÎºÇ¸å¤Î¶õ¹Ô¤ò¾Ê¤¯
+ * ¡Ö>>> ¥Õ¥¡¥¤¥ë̾¡×¤Ç RET¡ß2 ¤·¤¿¤é, window ʬ³ä¾õÂÖ¤òÉü¸µ
+ * ¥á¥Ë¥å¡¼
+ * > ¤Ç RET ¢ª ³ºÅö¹Ô¤Øľ¥¸¥ã¥ó¥×
+ * ¡ÖºÑ¤ß¡×¤Ïɽ¼¨¤·¤Ê¤¤
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Comment>))
+ * ÀøÉúÃæ¤Î¥ê¥Þ¥¤¥ó¥À¤Ïɽ¼¨¤·¤Ê¤¤ (howm-menu-todo-priority)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/620>))
+ * ¥á¥Ë¥å¡¼¤Î¥¥ã¥Ã¥·¥å¤òÀßÄꤷ¤Ê¤¤¸Â¤ê, ¥á¥âÊݸ»þ¤Î¥á¥Ë¥å¡¼¹¹¿·¤Ï¥ª¥Õ
+ * schedule, todo Íó¤ËɽÂꡦ½ñ¼°ÀâÌÀ¤òÄɲÃ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/428-430n>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/432>))
+ * %sdays (ͽÄêɽ¤Îɽ¼¨Æü¿ô), %tnum (todo ¤Îɽ¼¨·ï¿ô)¤â
+ * howm2
+ * ¥á¥â°ìÍ÷¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/317>))
+ * howm2 -r ¤Ç¥Õ¥¡¥¤¥ë°ìÍ÷¤òµÕ½ç¤Ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/334>))
+ * autoconf, automake ¤ËÃå¼ê
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/304-307n>))
+ * navi2ch ¤«¤éÃÑÃΤ餺¤Ë¥³¥Ô¡¼. ¤è¤¯¤ï¤«¤é¤Ê¤¤¤Þ¤Þ¤¤¤¸¤ë.
+ * doc/releng.txt ¤è¤ê¥á¥â: tar.gz ¤òºî¤ë¤Ë¤Ï (³«È¯¼ÔÍÑ)
+ aclocal && autoconf && automake && make Makefiles && make dist elcdist
+ * »²¹Í: ((<URL:http://shimaki-hp.hp.infoseek.co.jp/autoconf/book1.html>))
+ * ¥Ç¥Õ¥©¥ë¥È¤Î¥¤¥ó¥¹¥È¡¼¥ëÀ褬 /usr/share/emacs/site-lisp/howm
+ ¤Ë¤Ê¤ë¤è¤¦¤Ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/324>))
+ * make install ¤Ç doc, ext, en, ja ¤â¥¤¥ó¥¹¥È¡¼¥ë
+ * ¼«Ê¬ÍÑ¥á¥â
+ make maintainer-clean; aclocal && automake && autoconf && ./configure --prefix=/tmp/hoge --with-lispdir=/tmp/hoge/el && make && make install
+ * ½é²óµ¯Æ°»þ¤Ë howm-directory ¤ä¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤¬¤Ê¤±¤ì¤Ð¼«Æ°¤Çºî¤ë
+ (make install ¤·¤¿¤È¤¤Î¤ß)
+ * ¤½¤Î¾
+ * auto-save-buffers ¤¬¸Æ¤Ð¤ì¤¿¤é save »þ¤Î¼«Æ°½èÍý¤ò off ¤Ë
+ * ̤Êݸ¤ÎÊÔ½¸¤â, ¸¡º÷¤äÆâÍÆɽ¼¨¤ËÈ¿±Ç
+ (howm-view-use-grep ¤¬ nil ¤Î¤È¤¤Ë¸Â¤ë)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/482>))
+ * Wiki É÷¥ê¥ó¥¯ [[hoge]] ¤Ï hoge ¤Ë²¼Àþ (¡Ö<<< hoge¡×¤ÎÍ̵¤Ë¤«¤«¤ï¤é¤º)
+ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ((<thx|URL:http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=howm>))
+ ((<thx|URL:http://pc2.2ch.net/test/read.cgi/win/1067394259/341-347n>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/672-673n>))
+ * ½¾Íè¤Ï¡Ö]]¡×¤À¤±¤Ë²¼Àþ.
+ ¡ÖºîÀ®ºÑ¤ß¤«¤É¤¦¤«¤ò²¼Àþ¤Î¤Ä¤Êý¤Ç¶èÊ̤Ǥ¤ë¡×¤Ã¤Æ¤¤¤¦
+ ¤È¤ó¤Á¤À¤Ã¤¿¤ó¤À¤±¤É, ¤Ï¤Þ¤Ã¤¿Êý¤¬Ê£¿ô.
+ * ttp:// ¤ÎÎà¤â http:// ¤Ëľ¤·¤Æ¥Ö¥é¥¦¥¶¤Ø
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/676>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/680>))
+ * howm-toggle-search-other-dir ¤Ç, ͽÄêɽ¤ä todo ¥ê¥¹¥È¤Î¸¡º÷ÈϰϤâ³ÈÂç
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/623>))
+ * ((<¥¤¥ó¥¹¥È¡¼¥ë>))¤ÎÀâÌÀ¤Ë¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤òÄɲÃ
+ * howm-reminder-tomorrow-face ¤ÎÇطʤòÃ㿧¤«¤é¥Ô¥ó¥¯¤Ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/805-807n>))
+ * ¥æ¡¼¥¶¡¼¤Ë¤Ï´Ø·¸¤Ê¤·
+ * ¥Õ¥¡¥¤¥ë¹½À®¤ÎÊѹ¹ (¢ª((<¼ÂÁõ¤Ë¤Ä¤¤¤Æ>)))
+ * howm-menu-action ¤Î°ú¿ô»ÅÍͤòÊѹ¹
+ * copy-list ¢ª copy-sequence (cl ¥Ñ¥Ã¥±¡¼¥¸ ¢ª built-in)
+ * fix
+ * URL ¤ÎÃê½Ð¤ò¤Á¤ç¤Ã¤È¤À¤±¤Þ¤·¤Ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/672-673n>))
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤Î¤à¤À¤Ê½ñ¤¤Ê¤ª¤·¤òÍÞÀ©
+ * howm-list-normalize ¤«¤é¤à¤À¤Ë²¿ÅÙ¤â howm-view-summary ¤¬¸Æ¤Ð¤ì¤Æ¡Ä
+ * ¤¤¤Á¤Ð¤ó¤Ò¤É¤¤¤È¤³¤À¤±½¤Àµ. ¤Þ¤À¤à¤À¤Ï»Ä¤Ã¤Æ¤ë.
+ * meadow ¸þ¤±¤Ë, ¥É¥é¥¤¥Ö¥ì¥¿¡¼¤ÎÂçʸ»ú¾®Ê¸»ú¤ò̵»ë
+ (howm-normalize-file-name)
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?DriveLetter>))
+ * ±Ñ¸ì¥á¥Ë¥å¡¼¤Î [String] ¤È [Regexp] ¤¬µÕ
+ * xemacs canna Âкö
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?CannaReturnKey>))
+ * split-horizontally ¤¬ t ¤Ê¤é C-x 1 ¸å¤â²£Ê¤٤Ë
+ (((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/634>))
+ > ¡³(¡¡¼`)¥Î¤µ¤ó)
+ * howm-menu-{schedule|todo} ¤Î¥á¥Ã¥»¡¼¥¸,
+ howm-view-call-process ¤ÎÌá¤êÃÍ¥Á¥§¥Ã¥¯
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/626>))
+ * grep ÉÔ»ÈÍÑ»þ¤Î migemo ¸¡º÷ (howm-list-migemo)
+ (thx > ¤ä¤Þ¤À¤¢¤¤é¤µ¤ó akira@arika.org)
+ * meadow 1.15 ¤Ç¾¥Ð¥Ã¥Õ¥¡¤Î font-lock ¤¬Ãí¼á¡¦Ê¸»úÎó¤Î¤ß¤Ë
+ * font-lock-defaults ¤ÎÂç°èÃͤòÊѤ¨¤Æ¤·¤Þ¤Ã¤Æ¤¿
+ * °ìÍ÷¤Ç ! (shell) ¤¬ xemacs ¤ä emacs20 ¤Ç¥¨¥é¡¼
+ (replace-regexp-in-string ¤ä (buffer-size buf) ¤¬¤Ê¤¤)
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Usage>))
+ * xemacs ´ØÏ¢:
+ thx > ((<³Þ¸¶¤µ¤ó|URL:http://www.nc.kyushu-u.ac.jp/~kasahara/diary/2004/01b.html>))
+ ¡Ä¤³¤Ã¤½¤ê¸ÀµÚÊÖ¤· :p
+ * ¡Ö(setq font-lock-verbose nil) ¤Ç®¤¯¤Ê¤ë¤è¡× (¢ª((<¥¤¥ó¥¹¥È¡¼¥ë>)))
+ * howm ¤Ê¥Ð¥Ã¥Õ¥¡¤Ç¤Ï¼«Æ°¤Ç¤³¤ì¤ò¡Ä¤È»î¤ß¤¿¤±¤É, ¤Ç¤¤Æ¤Ê¤µ¤²
+ * xemacs ¤Ç¤Î byte-compile
+ * defvar ¤ò make-variable-buffer-local ¤è¤êÁ°¤Ë
+ * action-locl.el:
+ action-lock-rules,
+ action-lock-original-font-lock-keywords,
+ action-lock-original-return
+ * howm-view.el:
+ howm-view-name,
+ howm-view-item-list,
+ howm-view-summary-last-line,
+ howm-view-contents-end
+ * ¤Ä¤¤¤Ç¤ËËޥߥ¹¤â¿¿ôϪÄè
+ (reference to free variable / bound but not referenced)
+ * ¡Ö>>>¡×¤À¤±¤Î¹Ô¤«¤é¼¡¤Î¹Ô¤Ë¤«¤±¤Æ²¼Àþ¤¬°ú¤«¤ì¤Æ¤¿
+ * howm-menu.el ¤ò iso-2022-7bit ¤Ë (for Meadow)
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?WorkOn>))
+ * .gz, .jpg, .gif, .png ¤â¸¡º÷Âоݤ«¤é½ü³°
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ImageCapture>))
+ * ºÇ½ª¹Ô¤Ë²þ¹Ô¤¬¤Ê¤¤¤È, ÆâÍÆɽ¼¨¤Ç¤½¤Î¹Ô¤¬½Ð¤Ê¤¤
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/471>))
+ * °ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Ç (setq howm-list-title t) ¤Ê¤È¤,
+ °ìÍ÷¤Ç¡ÖS ¢ª date¡×¤ò¤¯¤êÊÖ¤¹¤È¥½¡¼¥È½ç¤¬Æþ¤ì¤«¤ï¤ë
+ (thx > NAKANO Yasuhiro ¤µ¤ó <nkyasu@yahoo.co.jp>)
+ * °ìÉô´Ä¶¤Ç, global-font-lock ¤¬¸ú¤«¤Ê¤¯¤Ê¤ë
+ (emacs-20.7.2 on Vine Linux 2.6, Meadow1.15 on WindowsXP Professional).
+ (thx > NAKANO Yasuhiro ¤µ¤ó <nkyasu@yahoo.co.jp>)
+ * °ìÍ÷ɽ¼¨¤Î¥Õ¥¡¥¤¥ë̾Íó¤Î¥Ç¥Õ¥©¥ë¥ÈÉý
+ (thx > Jun Kuriyama ¤µ¤ó <kuriyama@imgsrc.co.jp>)
+ * Jargon ¤Î¥ê¥ó¥¯ÀÚ¤ì
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/420>))
+ * ¥³¡¼¥Éźºï
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/421>))
+ * skip-one-link ¢ª action-lock-skip-one-link
+ * *.el ¤ÎÀèƬ¡¦ËöÈø¤ËÄê·¿¥³¥á¥ó¥È
+ * ((<mcomplete.el|URL:http://homepage1.nifty.com/bmonkey/emacs/elisp/mcomplete.el>))
+ ¤È¤ÎÊ»ÍѤǥ¨¥é¡¼
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/365>))
+ * ¡Ö<<<¡×¤Ç RET ¤·¤¿¤È¤¤Ë¤â howm-keyword-case-fold-search ¤òÈ¿±Ç
+ * (setq howm-list-title t) ¤¹¤ë¤È, °ìÍ÷¤ÈÆâÍƤξ岼¤¬µÕž
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/348>))
+ * ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë»þ¤Î·Ù¹ð¤ò¤Û¤ÜÂ༣
+ * howm-keyword-regexp-header-pos ¢ª howm-keyword-regexp-hilit-pos
+ * howm2 ¤Î¥Ç¥Õ¥©¥ë¥È¤Ç, ¥Õ¥¡¥¤¥ë #foo.bar ¤ä foo.bar~ ¤âÂоݳ°¤Ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/316-317n>))
+ * ruby 1.8 ·Ï¤Ç howm2 ¤¬¥¨¥é¡¼
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/308-310n>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/317-318n>))
+ * ÌÀÇطʤऱ¤ÎÇÛ¿§
+ * ¥«¡¼¥½¥ë¤¬¥¿¥¤¥È¥ë¾å¤Ë¤¢¤ë¤È
+ C-c , K (howm-keyword-to-kill-ring) ¤Ë¼ºÇÔ
+ * CVS Àèü emacs ¤À¤È on-the-fly ¤Ç¿§¤¬¤Ä¤«¤Ê¤¤
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/268>))
+ * °ìÍ÷¤Ç ! ¤Ë¤è¤ë shell command ¤Î½ÐÎϤ¬¤¹¤°¾Ã¤¨¤Æ¤·¤Þ¤¦
+ * ¤Ä¤¤¤Ç¤Ë, ½ÐÎϤ¬¶õ¤Î¤È¤¤Ï½ÐÎϥХåե¡¤ò½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¤·¤¿
+ * ¤Ä¤¤¤Ç¤Ë, ¤³¤ì¤âû½Ì¥Õ¥¡¥¤¥ë̾¤Ë
+ * Ï¢·ëɽ¼¨¤Ç TAB ¤òᤤ¤Æ¤«¤é RET ᤯¤È¥¨¥é¡¼
+ * CVS Àèü emacs ¤Ç, °ìÍ÷¡¦ÆâÍƥХåե¡¤Ë¿§¤¬¤Ä¤«¤Ê¤¤
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/259>))
+ * howm-search-other-dir ¤ÎÀâÌÀ¤òÄɲÃ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/260>))
+ * ¥Æ¥¹¥ÈÈǤ«¤é¤ÎÊѹ¹ (¾¶)
+ * fix: (setq howm-insert-date-future t) ¤Î¾õÂÖ¤Ç,
+ [2004-01-23]¤Ë C-c , d ¤·¤Æ¡Ö215¡× ¢ª 2005 ǯ¤Ë
+ (howm-datestr-expand)
+ * ¥Æ¥¹¥ÈÈÇ 2003-12-27 ¡Á 2004-01-21 ¤Î¥Ð¥°
+ * ¥Æ¥¹¥ÈÈÇ 2005-01-23 ¤Ç½¤Àµ
+ * yc Âкö¤ò½ÀÆð¤Ë ¢« ·ë¶ÉÇÑ»ß
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?WorkOn>))
+ * eval-after-load ¤À¤È (load "~/elisp/yc.el") ¤¬¥Þ¥Ã¥Á¤·¤Ê¤¤¤Î¤Ç,
+ defadvice ¤ËÊѹ¹
+ * ¤Û¤ó¤È¤Ï, ƱÍͤΤ³¤È¤ò egg, anthy ¤Ë¤â¤ä¤ë¤Ù¤
+ (patch Ê罸. howm-misc.el »²¾È) ¢« ¤ä¤Ã¤Ñ¤ä¤á[2004-01-18]
+ * ¥á¥Ë¥å¡¼¤Ç¤Ï [2004-01-10]! Åù¤Ë²¼Àþ¤ò¤Ä¤±¤Ê¤¤ ¢« ¡Öľá¤¡×¤È¤·¤ÆÉü³è
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/506>))
+ * fix: ¥á¥Ë¥å¡¼¤Ë½ÜÅÙ¤òɽ¼¨¤·¤¿¤é > ¤«¤éÈô¤Ù¤Ê¤¯¤Ê¤Ã¤Æ¤¿
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Comment>))
+ * fix: anthy ¤È¤ÎÊ»ÍÑ ¢« ·ë¶ÉÇÑ»ß
+ (thx > Jun Kuriyama ¤µ¤ó <kuriyama@imgsrc.co.jp>)
+ * fix: index-j.html ¤«¤é¤Î¥ê¥ó¥¯¤º¤ì
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/361>))
+ * fix: ¥É¥¥å¥á¥ó¥È¤Î¥¤¥ó¥¹¥È¡¼¥ëÀè
+ /usr/local/share/doc/howm ¢ª /usr/local/share/howm/doc
+ * fix: README ¤Î¥ß¥¹. Á´¥á¥â°ìÍ÷¤Ï C-c, l ¤¸¤ã¤Ê¤¯ C-c , a
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/347>))
+ * fix: ¥í¡¼¥É¸å¤Ë howm-keyword-file ¤ò¥»¥Ã¥È¤·¤¿¾ì¹ç¤Ç¤â,
+ ½é²óµ¯Æ°»þ¤Ë¼«Æ°ºîÀ®
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/270>))
+ * fix: ((<yc.el|URL:http://www.ceres.dti.ne.jp/~knak/yc.html>))
+ ¤Ç¡Ö³ÎÄê¡×¤Î RET ¥¡¼¤ò howm ¤¬¿©¤¦
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/274>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/283-284n>))
+ * C-c , d ¢ª d ¤ÇÆü»þ¤òÁÞÆþ ¢« ÇÑ»ß
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/595>))
+ ((<ref|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/597-598n>))
+ * ¤Ä¤¤¤Ç¤Ë prompt ¤ËÍËÆü
+ * ((<¥«¥¹¥¿¥Þ¥¤¥º>)) ¤Îµ½Ò¥ß¥¹: howm-directory ¢ª howm-keyword-file
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Comment>))
+ * configure.in ¤Ë Meadow.exe ¤òÄɲÃ
+ (((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?RoadMap>))
+ > Meadow2»È¤¤¤µ¤ó)
+ * ÇÑ»ß
+ * canna, egg, yc, anthy ¤Î¸ÄÊÌÂкö
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?WorkOn>))
+ * ¤«¤ï¤ê¤Ë, action-lock-mode ¤ÎÍ¥ÀèÅÙ¤òºÇ¼å¤Ë.
+ * °ÊÁ°¤ÎÂкö¤ËÌ᤹¤Ë¤Ï,
+ (setq action-lock-bury-minor-mode-p nil)
+ (setq howm-ime-fix t)
+ * C-u C-c , c (¿·µ¬¥á¥â¤Ë¡Ö>>> ¸µ¥Õ¥¡¥¤¥ë¡×¤òÆþ¤ì¤Ê¤¤)¤È
+ howm-template-use-file
+ * howm-view-quit-to-nonhowm (°ìÍ÷¤Ç q ¢ª howm °Ê³°¤Î buffer ¤Ø)
+ * howm-template-file-abbrev, howm-view-header-abbrev
+ (howm-abbreviate-file-name ¤Ë°ìËܲ½)
+
+== 1.1.0.x
+
+* [2004-02-08] v1.1.0.4
+ ¥Æ¥¹¥ÈÈǤ«¤é¤Î backport (thx > ³§ÍÍ ¡Ä¥Æ¥¹¥ÈÈÇ README »²¾È)
+ * ÀøÉúÃæ¤Î¹àÌܤϥá¥Ë¥å¡¼¤Î todo ¥ê¥¹¥È¤Ëɽ¼¨¤·¤Ê¤¤
+ * C-c , s ¤Ç¸ÇÄêʸ»úÎ󸡺÷ howm-list-grep-fixed (C-u C-c , g ¤ÈƱ¤¸)
+ * canna, egg, yc, anthy ¤Î¸ÄÊÌÂкö¤òÇÑ»ß. ¤«¤ï¤ê¤ËÈ´ËÜÂкö.
+ * ¥á¥Ë¥å¡¼¤Î¥¥ã¥Ã¥·¥å¤òÀßÄꤷ¤Ê¤¤¸Â¤ê, ¥á¥âÊݸ»þ¤Î¥á¥Ë¥å¡¼¹¹¿·¤Ï¥ª¥Õ
+ * auto-save-buffers ¤¬¸Æ¤Ð¤ì¤¿¤é save »þ¤Î¼«Æ°½èÍý¤ò off ¤Ë
+ * .jpg, .gif, .png ¤â¸¡º÷Âоݤ«¤é½ü³°
+ * ¡Öxemacs ¤Ç¤Ï, (setq font-lock-verbose nil) ¤Ç®¤¯¤Ê¤ë¤è¡× (¢ª((<¥¤¥ó¥¹¥È¡¼¥ë>)))
+ * fix
+ * xemacs canna Âкö
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?CannaReturnKey>))
+ * ±Ñ¸ì¥á¥Ë¥å¡¼¤Î [String] ¤È [Regexp] ¤¬µÕ
+ * howm-view-call-process ¤ÎÌá¤êÃÍ¥Á¥§¥Ã¥¯
+ * meadow 1.15 ¤Ç¾¥Ð¥Ã¥Õ¥¡¤Î font-lock ¤¬Ãí¼á¡¦Ê¸»úÎó¤Î¤ß¤Ë
+ * °ìÍ÷¤Ç ! (shell) ¤¬ xemacs, emacs20 ¤Ç¥¨¥é¡¼
+ * xemacs ¤Ç¤Î byte-compile
+ * ¡Ö>>>¡×¤À¤±¤Î¹Ô¤«¤é¼¡¤Î¹Ô¤Ë¤«¤±¤Æ²¼Àþ¤¬°ú¤«¤ì¤Æ¤¿
+ * howm-menu.el ¤ò iso-2022-7bit ¤Ë (for Meadow)
+ * CVS Àèü emacs ¤À¤È on-the-fly ¤Ç¿§¤¬¤Ä¤«¤Ê¤¤
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/268>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/501>))
+ * ºÇ½ª¹Ô¤Ë²þ¹Ô¤¬¤Ê¤¤¾ì¹ç, ¤½¤Î¹Ô¤¬ÆâÍÆɽ¼¨¤Ë½Ð¤Ê¤¤
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/482>))
+* [2003-12-31] v1.1.0.3
+ * fix: °ìÉô´Ä¶¤Ç, global-font-lock ¤¬¸ú¤«¤Ê¤¯¤Ê¤ë
+ (emacs-20.7.2 on Vine Linux 2.6, Meadow1.15 on WindowsXP Professional).
+ (thx > NAKANO Yasuhiro ¤µ¤ó <nkyasu@yahoo.co.jp>)
+ * fix: °ìÍ÷ɽ¼¨¤Î¥Õ¥¡¥¤¥ë̾Íó¤Î¥Ç¥Õ¥©¥ë¥ÈÉý
+ (thx > Jun Kuriyama ¤µ¤ó <kuriyama@imgsrc.co.jp>)
+* [2003-12-29] v1.1.0.2
+ * fix: anthy ¤È¤ÎÊ»ÍÑ
+ (thx > Jun Kuriyama ¤µ¤ó <kuriyama@imgsrc.co.jp>)
+ * ¥á¥Ë¥å¡¼¤Ë schedule¡¦todo ¤ÎɽÂê¤ÈÀâÌÀ¤òÄɲÃ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/428-432n>))
+* [2003-12-27] v1.1.0.1
+ * fix: Ï¢·ëɽ¼¨¤Ç TAB ¤òᤤ¤Æ¤«¤é RET ᤯¤È¥¨¥é¡¼
+ * fix: ÌÀÇطʤऱ¤ÎÇÛ¿§
+ * fix: egg, yc, mcomplete ¤È¤ÎÊ»ÍÑ
+ * fix: Jargon ¤Î¥ê¥ó¥¯ÀÚ¤ì
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/420>))
+* [2003-11-22] v1.1
+ * Note
+ * Èó¸ß´¹¤ÊÊѹ¹¤ò¤Þ¤È¤á¤Æ¤ä¤Ã¤Æ¤·¤Þ¤ª¤¦ÈÇ
+ * ¥ª¥×¥·¥ç¥ó¤Ç, ½¾Íè¤É¤ª¤ê¤Ë¤â»È¤¨¤ë¤è¤¦¤Ë¤·¤¿¤Ä¤â¤ê
+ * ¡Ö((<¥¤¥ó¥¹¥È¡¼¥ë>))¡×¤Î°Ü¹ÔÎã¤ò»²¾È
+ * ¥Ç¥Õ¥©¥ë¥È½ñ¼°¤ÎÊѹ¹
+ * ¥ê¥ó¥¯½ñ¼°¤ò <<, >> ¤«¤é <<<, >>> ¤ËÊѹ¹
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/173>))
+ * Âбþ¤·¤Æ, hcal.rb ¤Î¡Öº£Æü¥Þ¡¼¥¯¡×¤ò <<<<##>>>> ¤ËÊѹ¹
+ * 1 ¥á¥â 1 ¥Õ¥¡¥¤¥ë¤ò¥Ç¥Õ¥©¥ë¥È¤Ë
+ * ¥ê¥Þ¥¤¥ó¥À¤Î½ñ¼°Êѹ¹ (¢ª((<¥ê¥Þ¥¤¥ó¥À>)))
+ * ÆüÉÕ½ñ¼°¤ò [2003/10/21] ¤«¤é [2003-10-21] ¤ËÊѹ¹
+ ¢ª ((<»²¹Í|URL:http://www.kanzaki.com/docs/html/dtf.html>))
+ * ¥á¥Ë¥å¡¼¤ò¥á¥â¤ÈÅý¹ç
+ * ¡Ö%¡û¡û%¡×¤ò¸¡º÷¤·¤¿¤é, ¡Ö<<< %¡û¡û%¡×¤ò menu-mode ¤Ç³«¤¯
+ * C-c , , ¤Ç¡Ö<<< %menu%¡×¤ò³«¤¯ (menu.howm ¤Ç¤Ï¤Ê¤¯)
+ * ²þÎÉ
+ * <<< ¤Ç¤ÎÂçʸ»ú¾®Ê¸»ú¤Î¶èÊÌ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * <<< ¤Ê¤É¤Ë¿§¤Ä¤±
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/133>))
+ * ¥Ç¥Õ¥©¥ë¥È¤Î¥á¥Ë¥å¡¼¤Ë¥·¥ç¡¼¥È¥«¥Ã¥È¥¡¼¤òÄɲÃ
+ * ÆüÉÕ·Á¼°¡Ö2003-10-30¡×¤Î action-lock ¤Ë¡Ö¤¯¤êÊÖ¤·¡×¤òÄɲÃ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/224>))
+ * XEmacs, CVS Àèü Emacs, Carbon Emacs ¤ËÂбþ(?)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/209>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/229>))
+ * '¤ä'¤µ¤ó¤Î patch ¤ò¼è¤ê¹þ¤ß¤Þ¤·¤¿
+ * howm2
+ * <<< ¤È >>> ¤¬¤«¤é¤à¾ì¹ç¤ò½¤Àµ. ·ãÃ٤ˤʤä¿ ;_;
+ * Âоݥե¡¥¤¥ë¤òÁªÊ̲Äǽ¤Ë (-list)
+ * ¥ª¥×¥·¥ç¥óÄɲà (-goto, -comefrom, -i)
+ * ((<ChangeLog Memo ¤È¤ÎÊ»ÍÑ|URL:CL-HOWM.ja.rd>))
+ * ¾®Êѹ¹
+ * C-c , d ¤È C-c , D ¤òÆþ¤ì¤«¤¨
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/174>))
+ * ¥½¡¼¥¹¥Õ¥¡¥¤¥ëʬ³ä (howm-font-lock.el, howm-menu.el)
+ * ¥Ç¥Õ¥©¥ë¥È¤Î major-mode ¤ò text-mode ¤Ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/181>))
+ * [Á°¸å] ¤Ë¥¡¼³ä¤ê¤¢¤Æ (C-c , A)
+ * ÆâÍÆɽ¼¨¤È¥Æ¥ó¥×¥ì¡¼¥È¤Î¥Õ¥¡¥¤¥ë̾¤Ï /home/hoge/¡Ä ¤¸¤ã¤Ê¤¯ ~/¡Ä ¤Ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/228-229n>))
+ * ¿·µ¬¥á¥âºîÀ®Ä¾¸å¤Ë undo ¤¹¤ì¤Ð¡Ö>>> ¸µ¥Õ¥¡¥¤¥ë¡×¤ò¾Ã¤»¤ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/230-235n>))
+ * ÈùÊѹ¹
+ * face ¤òÊÑ¿ô¤Ç»ØÄê
+ * howm-menu-lang ¤òÀßÄꤷ¤Ê¤±¤ì¤Ð, ¤ª¤»¤Ã¤«¤¤¤Ë¿ä¬
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/121-123n>))
+ * howm-menu-refresh-after-save, howm-refresh-after-save ¤òµ¯Æ°¸å¤âÊѹ¹²Ä¤Ë
+ * ¥á¥Ë¥å¡¼¤Î "...done" ¥á¥Ã¥»¡¼¥¸¤ä¤Ã¤ÑÉü³è (schedule, todo ¤Î¥¹¥¥ã¥ó»þ)
+ * howm2 ¤Î index.html ¤Ç, ¿ô»ú¤¸¤ã¤Ê¤¤¥Õ¥¡¥¤¥ë̾¤òÀè¤Ë
+ * ¥á¥Ë¥å¡¼Ã¦½Ð»þ¤Î bury-buffer ¤òÇÑ»ß.
+ * howm-ignore-comefrom-same ¤òÇÑ»ß
+ * ±£¤·µ¡Ç½: howm-view-{summary|contents}-persistent ¤Ë´Ø¿ô¤âÀßÄê²Äǽ
+ ;; Îã: ͽÄêɽ¡¦todo ¥ê¥¹¥È¤äÁ´¥á¥â°ìÍ÷Åù¤À¤± persistent
+ (setq howm-view-summary-persistent
+ (lambda () (member howm-view-name '("{schedule}" "{todo}" ""))))
+ * µ¤¤¬¤«¤ï¤ë²ÄǽÀ¤¢¤ê
+ * ÊÑ¿ô̾ howm-reminder-regexp-date-pos ¢ª ¡Ä-day-pos
+ * howm-template-{file|date}-format ¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤÏ
+ howm-ref-header, howm-date-format ¤ò»²¾È¤¹¤ë
+ * *.elc ¤â¸¡º÷Âоݳ°
+ * ¥É¥¥å¥á¥ó¥È
+ * ¡Ö((<Æ°¤¤Þ¤»¤ó¤è?>))¡×¤Ë¥Á¥§¥Ã¥¯¥ê¥¹¥È¤òÄɲÃ
+ * ¡Ö((<¥¤¥ó¥¹¥È¡¼¥ë>))¡×¤ËÀßÄêÎã¤òÄɲÃ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/174>))
+ * ¥á¥Ë¥å¡¼¤Ï ~/howm/ja/*.howm ¤¸¤ã¤Ê¤¯ ~/howm/*.howm
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/122>))
+ * ¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¤ò¥«¥é¡¼ÈǤË
+ * goto, come-from ¤Î½ñ¼°Êѹ¹Îã¤ò RD É÷¤Ë
+ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/174>))
+ * ¥á¥Ë¥å¡¼¥Ð¥Ã¥Õ¥¡±£¤·¤ÎÊÌË¡¤ò¾Ò²ð (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * ¼Â¤Ï¥³¥ó¥½¡¼¥ë¤Ç¤â»È¤¨¤Æ¤¿
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/167>))
+ * <<< ¤¬ RD ¤Î include ¤È¤«¤Ö¤Ã¤Æ¤ë»Ý¤ÎÃí°Õ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/198-205n>))
+ (¢ª((<¥¤¥ó¥¹¥È¡¼¥ë>)))
+ * ¥«¥¹¥¿¥Þ¥¤¥ºÎã¤Ë¤ª¤Þ¤±¤òÄɲÃ
+ * ¡Ö¥¤¥ó¥¹¥È¡¼¥ë¡×¤Î°Ü¹ÔÎã¤Ë, GNU touch ¤Ë¤¬¤Ê¤¤¾ì¹ç¤Î¥í¡¼¥Æ¥¯ÈǤòÄɲÃ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/190>))
+ * ((<¥«¥¹¥¿¥Þ¥¤¥º>))¤Ë¡Ö¥á¥Ë¥å¡¼¤ò¥á¥â°·¤¤¤·¤Ê¤¤¡×ÀßÄê¤òÌÀµ
+ * yen.el ¤Î¾Ò²ð (¢ª((<³°Éô¥Ä¡¼¥ë>)))
+ * tag2plan ¤ÎÀâÌÀ¤ò½¤Àµ (-date_sep, ~/howm/*/*/*.howm)
+ * ¡Ö»²¹Í¡×¤Ëä·ϡ¦Ä¶ä¤òÄɲÃ
+ * fix
+ * grep »ÈÍÑ»þ¤Ï¡Ö-hoge¡×¤¬¸¡º÷¤Ç¤¤Ê¤«¤Ã¤¿
+ * ÆâÍƥХåե¡¤Î font-lock (²¾½¤Àµ)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/128-136n>))
+ * v1.0.4.1 ¤Î¥Ð¥°: ¸¡º÷ʸ»úÎó¤Î¿§
+ * [2003-10-05] ¤Î¥Ð¥°: ¥Õ¥¡¥¤¥ë¶èÀÚ¤ê¤Î¿§
+ * °ìÍ÷¥¢¤«¤é¤µ¤é¤Ë°ìÍ÷¥¤¤òɽ¼¨¤·¤¿¸å¤Ç q ¤·¤¿¤é, °ìÍ÷¥¢¤ËÌá¤ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/149-150n>))
+ * ¡Ö¥Õ¥ì¡¼¥àʬ³ä¤òÉü¸µ¡×¤È¤ÎÀޤꤢ¤¤¤Ë¼«¿®¤Ê¤·.
+ ¤â¤·ÉÔ¶ñ¹ç¤¬½Ð¤¿¤é, ¢¤Ç½¾ÍèÆ°ºî(¥¢¤ÎÁ°¤Î¥Ð¥Ã¥Õ¥¡¤ËÌá¤ë)¤Ë.
+ (setq howm-view-quit-to-nonhowm t)
+ * [Á°¸å] ¤Î¼Â¹Ôľ¸å¤ÎÆâÍƥХåե¡
+ * filter-by-date Åù¤Ç¡Ö2003 ǯ 9 ·î * Æü¤Þ¤Ç¡×¤ÈÆþÎϤ·¤¿¤é,
+ ¡Ö2003 ǯ 9 ·î 31 Æü (= 10 ·î 2 Æü)¤Þ¤Ç¡×¤È²ò¼á¤µ¤ì¤Æ¤¿
+ * ¤³¤ì°Ê³°¤Ë¤â¥Ð¥°¤Þ¤ß¤ì¤À¤Ã¤¿[2003-10-26]
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤ÈÆâÍƥХåե¡¤Î°ÌÃÖ¤¬Æþ¤ì¤«¤ï¤ë¾É¾õ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/193>))
+ * ºÆ¸½Ë¡: ÆâÍƥХåե¡¤ÎÊý¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ, g ¤Ç¸¡º÷ ¢ª q
+ * ÆóÆü°Ê¾åµ¯Æ°¤·Â³¤±¤ë¤È, ¥á¥Ë¥å¡¼(ͽÄꡦtodo)¤ÎÅöÆü¤ÈÍâÆü¤Î¿§¤Ä¤±¤¬ÊÑ
+ * mailcap.el ¤¬¤Ê¤¤¤È¤¤Î >>> /etc
+ * >>> ¤Î¸å¤Ë²¿¤â½ñ¤¤¤Æ¤Ê¤¤¤È¤¤Ï̵»ë¤¹¤Ù¤·
+ * Àµµ¬É½¸½ [^¡Ä] ¤ò [^\r\n¡Ä] ¤Ë¤Ò¤È¤È¤ª¤êľ¤·
+ * ¥Æ¥¹¥ÈÈǤ«¤é¤ÎÊѹ¹¡¦fix
+ * font-lock ¤¬¤É¤ó¤É¤ó½Å¤¯¤Ê¤Ã¤Æ¤¿. ¤è¤¯¤³¤ó¤Ê¤Î¤ÇÆ°¤¤¤Æ¤¿¤Ê¤¢¡Ä
+ * fix: xemacs ¤Ç font-lock ¤¬¸Ç¤Þ¤ë
+ ((<ref|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/248-249n>))
+ * ¤ä¤Ã¤Ñ¤ê¥Ç¥Õ¥©¥ë¥È¤Ï¡Ö¥¿¥¤¥È¥ëɽ¼¨¤Ê¤·¡×
+ * °Ü¹ÔÎã¤Îµì¥¡¼ÀßÄ꤬, howm ¥í¡¼¥ÉÁ°¤Ç¤â¸å¤Ç¤âÈ¿±Ç¤µ¤ì¤ë¤è¤¦¤Ë
+ * ¥á¥Ë¥å¡¼¤¬³«¤«¤Ê¤«¤Ã¤¿ (.howm-keys ¤Ë¡Ö%menu%¡×ÄɲÃ)
+ * ¥á¥Ë¥å¡¼¤¬±£¤·¥Ð¥Ã¥Õ¥¡¤Î¤È¤, ²¼Àþ¤¬¤Ä¤«¤Ê¤«¤Ã¤¿
+ * ¥á¥Ë¥å¡¼¤Î footer ¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï½Ð¤Ê¤¯¤Ê¤Ã¤Æ¤¿
+ * ¥á¥Ë¥å¡¼¤Î %eval% ¤ä %call% ¤Ç¥Ð¥Ã¥Õ¥¡¶¯À©Àڤ꤫¤¨
+ * ÊÑ¿ô howm-menu-persistent ¤òÇÑ»ß
+ * howm-reminder-today-face ¤¬Ì¤ÄêµÁ¤À¤Ã¤¿
+ * {_} ¤Ç RET ¤·¤¿¤È¤¤â, ÀßÄꤷ¤¿ÆüÉÕ½ñ¼°¤Ë
+ * ¡Ö<<< http¡×¤¬¤¢¤Ã¤Æ¤â http://¡Ä ¤Ï¥Ö¥é¥¦¥¶¤òµ¯Æ°¤¹¤Ù¤·
+ * howm2 ¤Ç URL ¤ò¥ê¥ó¥¯¤Ë¤¹¤ë¤Î¤ò˺¤ì¤Æ¤¿
+ * howm2 -type=rd ¤Ç URL ¤ò¥ê¥ó¥¯¤Ë¤¹¤ë¤Î¤ò˺¤ì¤Æ¤¿
+ * [¹¹¿·] ¥Ü¥¿¥ó¤Ï¸µ¤Î¥Ð¥Ã¥Õ¥¡¤ËÌá¤ë
+ * ¡Ö>>> /foo/bar/¡×¤Î°ìÍ÷¸«½Ð¤·¤¬¶õ¤Ë¤Ê¤Ã¤Æ¤¿
+ * xemacs ¤Ç mailcap.el ¤¬¤Ê¤¤¤È¤¤Î¥¨¥é¡¼²óÈò
+ * howm-try-require ¤Î¼ÂÁõ¤ò¤¹¤Ã¤¤ê
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/219>))
+ * ~/howm/CVS/* ¤¬¸¡º÷ÂоݤˤʤäƤ¤¤¿
+ * howm-keyword-case-fold-search ¤òÀßÄꤷ¤¿¤é,
+ ¥¡¼¥ï¡¼¥ÉÊä´°¤Ç¤âÂçʸ»ú¾®Ê¸»ú¤ò̵»ë
+ * ¥Ç¥Õ¥©¥ë¥È¤Î¥Õ¥¡¥¤¥ë̾¤òÊѹ¹ (¤´¤á¤ó¤Ê¤µ¤¤)
+ * 20031030-202259.howm ¢ª 2003-10-30-202259.howm
+ * ÊÑ´¹¼ê½ç
+ * ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤Ë cd ¤·¤Æ,
+ find . -name '*.howm' -print | ruby -ne '$_.chop!; d = File::dirname $_; f = File::basename($_).sub(/^(\d{4})(\d{2})(\d{2})/){|s| "#$1-#$2-#$3"}; puts %~mv #$_ #{File::expand_path f, d}~' > ~/howm_kuzu
+ * ~/howm_kuzu ¤ÎÆâÍƤò³Îǧ¤·, ÌäÂê¤Ê¤±¤ì¤Ð
+ cat ~/howm_kuzu | /bin/sh
+ * ɬÍפʤé, °Ü¹ÔÎã¤Î¤è¤¦¤Ë¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò¤Ç¤Ã¤Á¤¢¤²
+ * C-u C-c , c ¤Ê¤é, ¿·µ¬¥á¥â¤Ë¡Ö>>> ¸µ¥Õ¥¡¥¤¥ë¡×¤òÆþ¤ì¤º, ¥¿¥¤¥È¥ë¤â¶õÍó
+ (ÊÑ¿ô howm-template-use-file ¤Ç¥«¥¹¥¿¥Þ¥¤¥º)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/230>))
+ ¡Ä undocumented. ¤½¤Î¤¦¤ÁÇÑ»ßͽÄê.
+ * ¤³¤Þ¤´¤Þ fix
+ * >>> ¤Þ¤ï¤ê
+ * ³°Éô viewer ¤¬¾ï¤Ë off ¤Ë¤Ê¤Ã¤Æ¤¿
+ * howm-keyword-case-fold-search ¤òÀßÄꤷ¤¿¤È¤¤Î >>> /etc/X11
+ * ÆüÉÕ·Á¼°¡Ö2003-10-30¡×¤Î action-lock ¤«¤é¤Î search Âоݥե¡¥¤¥ë
+ * <<< ¤ä >>> ¤Ç¶õÇò¤ò´Þ¤àʸ»úÎ󤬸¡º÷¤Ç¤¤Ê¤¯¤Ê¤Ã¤Æ¤¿
+ * ¥¿¥¤¥È¥ë¤¬¾ï¤Ë¶õÍó¤Ë¤Ê¤Ã¤Æ¤¿
+ * howm-keyword-case-fold-search ¤òÀßÄꤷ¤¿¤é,
+ >>> foo ¤Ç¤â¡Ö<<< FOO¡×¤ÏÀèƬ¤Ë¤¯¤ë¤Ù¤
+ * C-c , c ¤Ç¥¨¥é¡¼
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/241-242n>))
+
+== 1.0.x
+
+* [2003-10-27] v1.0.4.2
+ * fix: font-lock ¤¬¤É¤ó¤É¤ó½Å¤¯¤Ê¤Ã¤Æ¤¿. ¤è¤¯¤³¤ó¤Ê¤Î¤ÇÆ°¤¤¤Æ¤¿¤Ê¤¢¡Ä
+* [2003-10-04] v1.0.4.1
+ * fix: ¡ÖºÇ¶á¡×¤¬¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ò¥Á¥§¥Ã¥¯¤·¤Ê¤¯¤Ê¤Ã¤Æ¤¿
+ * fix: sort-by-date ¤Î¥Ç¥Õ¥©¥ë¥È¤ò¡Ö¿·¤·¤¤½ç¡×¤Ë (°ÊÁ°¤Ï¤½¤¦¤À¤Ã¤¿µ¤¤¬?)
+ * ¥·¥ç¡¼¥È¥«¥Ã¥È¤Î¿½ÅÄêµÁ¤Ë¤Ï·Ù¹ðɽ¼¨
+ * ¤Ä¤¤¤Ç¤Ë¥á¥Ë¥å¡¼¤Î "...done" ¥á¥Ã¥»¡¼¥¸¤òÇÑ»ß
+ * TUTORIAL.rd ¤Ë¡ÖÆüÉÕ¤òÆþ¤ì¤ë¡×ÄɲÃ
+* [2003-10-02] v1.0.4
+ * >> ¤Ç³°Éô viewer (¢ª((<¥á¥â¤òÆɤ⤦>)),((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/54-57>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/107-112n>))
+ * ¥Ç¥£¥ì¥¯¥È¥ê¤âÂбþ. ¡Ö>> /usr/src¡×¤È¤«.
+ * ¥¡¼³ä¤ê¤¢¤ÆÈù½¤Àµ
+ * (°ìÍ÷¥â¡¼¥É) °ì¹Ô¥¹¥¯¥í¡¼¥ë: n,p ¢ª j,k
+ * (¥á¥Ë¥å¡¼) ¥¹¥¯¥í¡¼¥ë: SPC, BS
+ * ¥¿¥¤¥È¥ë¤ò kill-ring ¤Ø: C-c , k ¢ª C-c , K
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/67>))
+ * fix: contents-mode ¤Ç C-h ¤¬Ì¤ÀßÄê¤À¤Ã¤¿
+ * howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤Î save »þ¤Ë, ²¼Àþ¤ò°ú¤Ä¾¤·, ¥á¥Ë¥å¡¼¤â¹¹¿·
+ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/98>))
+ * ¸¡º÷Âоݥǥ£¥ì¥¯¥È¥ê¤ÎÄɲà (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/69-72n>))
+ * ¥É¥Ã¥È¥Õ¥¡¥¤¥ë¤Ï¸¡º÷¤·¤Ê¤¤
+ (>> ¤ä howm-search-path ¤ÇÌÀ¼¨Åª¤Ë»ØÄꤹ¤ì¤Ðõ¤¹)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/74>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/86>))
+ * ¥á¥Ë¥å¡¼¤ò²á¾ê¤Ë¶¯²½
+ (¢ª((<URL:ja/menu_edit.howm>)))
+ * HyperCard ¤ä Um4 ¤Ë»É·ã¤µ¤ì¤Þ¤·¤¿. ¤Û¤ó¤È¤ÏÊ̥ġ¼¥ë¤Ë¤¹¤Ù¤.
+ * ¸½¥Ð¥Ã¥Õ¥¡¤Î¥³¥Ô¡¼¤ò howm-mode ¤Çɽ¼¨(M-x howm-show-buffer-as-howm)
+ ((<ref|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/71>))
+ * ¼ûÍ×ÉÔÌÀ¤Ê¤Î¤ÇÍͻҸ«
+ * action-lock ¤Î "...Done" ¥á¥Ã¥»¡¼¥¸¤òÇÑ»ß
+ * fix
+ * ¡Ö>> ¥Õ¥¡¥¤¥ë̾¡×¤¬ howm-excluded-file-regexp ¤Ë´Ø¤ï¤é¤º¸ú¤¯¤è¤¦¤Ë
+ * call-process ¤Ç STDERR ¤Ï¼Î¤Æ¤ë
+ * action-lock ¤ÎÀâÌÀ¤Ë file://¡Ä ¤òÄɲÃ
+ * À£Á°¤Î window ʬ³ä¾õ¶·¤Ë´Ø¤ï¤é¤º, °ìÍ÷¤ò¾å, ÆâÍƤò²¼¤Ëɽ¼¨
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/90>))
+ * sort ¤ä filter ¤Ë¥Õ¥¡¥¤¥ë̾¤ò»È¤¦ºÝ¤Ï, ¥Ç¥£¥ì¥¯¥È¥êÉôʬ¤ò½üµî
+ * howm-menu-refresh ¤ò M-x ¤ä¥¡¼³ä¤ê¤¢¤Æ¤«¤é¸Æ¤Ù¤ë¤è¤¦¤Ë
+ * ¥Æ¥¹¥ÈÈǤΥХ°
+ * °ìÍ÷ɽ¼¨¤·¤¿Ä¾¸å¤ÏÆâÍƤ¬É½¼¨¤µ¤ì¤Ê¤¤
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/59-64n>))
+ * Wiki É÷ link [[¡û¡û]] ¤¬¥¨¥é¡¼
+ * [¥á¥Ë¥å¡¼¹¹¿·] ¤¬¥¨¥é¡¼
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/95>))
+ * >> ¤Ç³ºÅö¥Õ¥¡¥¤¥ë¤¬ÀèƬ¤Ë½Ð¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿
+ * ¡Ö»²¹Í¡×¤òÀ°Íý
+ * °Ê²¼¤â¼ÂÁõºÑ¤ß¤À¤±¤É, v1.1 ¤Þ¤Ç¿²¤«¤¹¤Ä¤â¤ê
+ * ¥ê¥Þ¥¤¥ó¥À¤Î½ñ¼°Êѹ¹
+ * ¥á¥Ë¥å¡¼¤È¥á¥â¤ÎÅý¹ç
+* [2003-09-23] È¿¾Ê¤·¤Æ¥Æ¥¹¥ÈÈǤòʬΥ
+ * Æó·ÏÅý¥á¥ó¥Æ¤¹¤ëǽÎϤϤʤ¤¤Î¤Ç¡Ä
+ * ¥ê¥ê¡¼¥¹ÈǤÏÊüÃÖ
+ * ¥Æ¥¹¥ÈÈǤϱóθ¤Ê¤¯¹¹¿·
+ * ¥Æ¥¹¥ÈÈǤι¹¿·¤¬Íî¤ÁÃ夤¤¿¤é,
+ ¤½¤Î¾õÂ֤˥С¼¥¸¥ç¥óÈÖ¹æ¤Ä¤±¤Æ, ¥ê¥ê¡¼¥¹ÈǤäƤ³¤È¤Ë¤¹¤ë
+* [2003/09/23] v1.0.3.4
+ * ÆüÉÕ·Á¼° [2003/09/21] ¤Î action-lock ¤ò³ÈÄ¥ (¢ª((<¥á¥â¤ò½ñ¤³¤¦>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/49-51n>))
+ * fix: howm2 ¤Î¥ê¥ó¥¯°ìÍ÷¤òÁêÂХѥ¹¤Ë
+ * fix: template ¤Þ¤ï¤ê
+ * Á°¤Î¥á¥â¤È¤Î´Ö¤Ë¶õ¹Ô¤òÆþ¤ì¤ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/53>))
+ * ¥¹¥Ú¥ë¥ß¥¹ cursol ¢ª cursor
+ * ¿·¥á¥â template ¤Î %xxx ÃÖ¤¤«¤¨¤¬, Á°¤Î¥á¥â¤Ë¤âµÚ¤ó¤Ç¤¤¤¿
+ * fix: ¡Ö¼¡(Á°)¤Î¥ê¥ó¥¯¤Ø¡×¤ò½¤Àµ
+ * fix: canna Âкö¤ò, ¥í¡¼¥É½ç½ø¤Ë´Ø¤ï¤é¤ºÍ¸ú¤Ë
+* [2003/09/21] v1.0.2.3
+ * fix: ½é¤á¤Æµ¯Æ°¤·¤¿¤È¤¤Ë ~/.howm-keys ¤òºîÀ®
+ * fix: canna Âкö
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/45>))
+* [2003/09/20] v1.0.2.2
+ * HTML ²½¥¹¥¯¥ê¥×¥È howm2 ¤Ç¤Ã¤Á¤¢¤¬¤ê (¢ª((<³°Éô¥Ä¡¼¥ë>)))
+ * fix: ¡Ö!¡×¤¹¤ë¤È¥Ð¥Ã¥Õ¥¡Ì¾¤¬ÊÑ
+* [2003/09/18] v1.0.2
+ * HTML ²½¥¹¥¯¥ê¥×¥È howm2 ¤Î»îºî (¢ª((<³°Éô¥Ä¡¼¥ë>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/35>))
+ * ̤Êݸ¤À¤í¤¦¤È°ÑºÙ¹½¤ï¤º, howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¶¯À©ºï½ü¤¹¤ë¥³¥Þ¥ó¥É
+ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/36>))
+ * ¡Ö¤ä¤µ¤·¤¤ Emacs-Lisp ¹ÖºÂ¡×¤Î URL ¤ò½¤Àµ.
+ ¤¤¤Þ howm ¤¬¤¢¤ë¤Î¤Ï¤³¤ÎËܤΤª¤«¤²¤Ç¤¹.
+* [2003/09/17] v1.0.1
+ * °ìÍ÷¥â¡¼¥É¤Ç¡Ö!¡× ¢ª shell ¤Ç¥³¥Þ¥ó¥É¼Â¹Ô (¢ª((<¥á¥â¤òÆɤ⤦>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/501>))
+ * Dired-X ¤Ç¤¦¤Þ¤¯Æ¨¤²¤¿¤Ä¤â¤ê¤À¤Ã¤¿¤ó¤À¤±¤É, ÉÔɾ¤Ê¤Î¤Ç
+ * lisper ¤¿¤ë¼Ô, Í×µá»ÅÍͤξå¤ò¹Ô¤«¤Ê¤¤¤È :-p
+* [2003/09/17] v1.0.0.1
+ * Dired-X ¤Ë¤Ä¤¤¤ÆºÇÄã¸Â¤ÎÀâÌÀ
+ * fix: Dired-X ¤ÎÂоݥХåե¡¤òÄûÀµ
+* [2003/09/17] v1.0
+ * ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤ò³¬Áز½: ~/howm/ǯ/·î/ǯ_·î_Æü.howm
+ * ¤³¤ó¤Ê¤Õ¤¦¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤â»ØÄê¤Ç¤¤ë¤è¤¦¤Ë¤·¤¿
+ (setq howm-file-name-format "%Y/%m/%Y_%m_%d.howm")
+ * °Ü¹Ô¤Ë¤Ä¤¤¤Æ¤Ï, ((<¥¤¥ó¥¹¥È¡¼¥ë>))¤Î¡ÖÃí°Õ¡×
+
+== 0.9.x
+
+* [2003/09/16] v0.9.9
+ * ¥á¥Ë¥å¡¼ (¢ª((<¥á¥â¤ò½ñ¤³¤¦>)))
+ * Á°¸å¤Î¥á¥â¤Î°ìÍ÷
+ * ÀâÌÀ¤òÊäÂ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/494>))
+ * °ìÍ÷¥â¡¼¥É¤Ç¡ÖX¡× ¢ª Dired-X ¤òµ¯Æ°¤·¤Æ¥Õ¥¡¥¤¥ëÁàºî
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/496>))
+ * howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¾Ã¤¹
+ * fix: window ¤Î¾õÂÖ¤òÉü¸µ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/497>))
+ * ¤É¤ó¤Ê¥â¡¼¥É¤Ç¤â C-c , Q ¤¬¸ú¤¯
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/498>))
+* [2003/09/16] v0.9.8.3
+ * fix: ¥¿¥¤¥È¥ë°ìÍ÷¤Ç¥¨¥é¡¼
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/490>))
+ * pure elisp ÈǤΤȤ
+ * ¥¿¥¤¥È¥ë¤¬°ì¤Ä¤â¤Ê¤«¤Ã¤¿¤È¤
+ * menu.howm ¤ò°ìÍ÷¤Ë½Ð¤µ¤Ê¤¤ÊýË¡ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/491>))
+* [2003/09/16] v0.9.8.2
+ * ¥á¥Ë¥å¡¼¤ò¥Õ¥¡¥¤¥ë¤Ë¤·¤ÆÊÔ½¸¤ò¿ä¾© (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * Ʊº¤Î ja/menu.howm ¤ò ~/howm/ ¤Ë¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤
+ * ((<URL:TUTORIAL.ja.rd>))
+ * ¥Ç¥Õ¥©¥ë¥È¤ÎÊѹ¹ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * grep »È¤ï¤Ê¤¤ (¥Ð¥°½Ð¤·´üÂÔ)
+ * ¥á¥Ë¥å¡¼¤Î¥¥ã¥Ã¥·¥å¤Ï¥ª¥Õ
+ * ¥Õ¥¡¥¤¥ë¤ò³«¤¯ºÝ, °ìÍ÷¤ò»Ä¤¹
+ * ³Ú¤·¤¤Ï¢µÙ¤Ç¤·¤¿ :-)
+* [2003/09/16] v0.9.7.1
+ * Wiki É÷¥ê¥ó¥¯ [[¤Û¤²]] (¢ª((<¥á¥â¤ò½ñ¤³¤¦>)))
+ * ¡Ö<<¡×¾å¤Ç¥ê¥¿¡¼¥ó᤯¤È¡Ö´ØÏ¢¥¡¼¥ï¡¼¥É¡×¤Ø¤Î¥ê¥ó¥¯ (¢ª((<¥á¥â¤ò½ñ¤³¤¦>)))
+ * ¸Å¤¤¹¹¿·µÏ¿¤È°Ü¹ÔÎã¤ò°ÜÆ° (¢ª((<URL:OLD.rd>)))
+ * howm-ignore-comefrom-same ¤ò undocumented ¤Ë. ¤½¤Î¤¦¤ÁÇÑ»ß?
+ * fix: ÍËÆüɽ¼¨¤Ë¤â¸À¸ìÀßÄê¤òÈ¿±Ç
+* [2003/09/15] v0.9.6
+ * ¡Ön¡×¤È¡Öp¡×¤Ç°ì¹Ôñ°Ì¤Î¥¹¥¯¥í¡¼¥ë
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/485>))
+* [2003/09/15] v0.9.5
+ * ¥á¥Ë¥å¡¼¤Ë [Á´¾Ã] (howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¾Ã¤¹)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/481>))
+* [2003/09/14] v0.9.4.2
+ * fix: ¥¿¥¤¥È¥ë°ìÍ÷¤¬Î¢¤Ë±£¤ì¤Æ¤·¤Þ¤Ã¤Æ¤¿
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/475>))
+ * fix: ¡Ö¥«¡¼¥½¥ë¤òÂбþ¥«¥é¥à¤Ø¡×¤ÎÈù½¤Àµ(¥Þ¥Ã¥Á¤·¤Ê¤±¤ì¤Ð¹ÔƬ¤Ø)
+* [2003/09/14] v0.9.4.1
+ * grep æµÑ¤Î»î¤ß (¢ª((<¥¤¥ó¥¹¥È¡¼¥ë>)))
+ * ¥á¥â¤¬ÂçÎ̤À¤È¤ä¤Ã¤Ñ¤ê¤Á¤ç¤Ã¤ÈÃÙ¤¤ ;_;
+ * fix: ¡ÖWrong type argument: window-configuration-p, nil¡×
+ * °ìÍ÷¥â¡¼¥É¤«¤é¥Õ¥¡¥¤¥ë¤ò³«¤¤¤¿¤È¤, ¥«¡¼¥½¥ë¤òÂбþ¥«¥é¥à¤Ø:
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/472>))¤Ë¸þ¤±¤Æ
+* [2003/09/13] v0.9.3
+ * °ìÍ÷¥â¡¼¥É¤«¤éÈ´¤±¤ëºÝ, window ¤Î¾õÂÖ¤òÉü¸µ
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/450>))
+ * C-u RET ¤Ç°ìÍ÷¤ò»Ä¤¹ (¢ª((<¥á¥â¤òÆɤ⤦>)))
+ * howm-view-summary-persistent (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * howm-view-kill-buffer, howm-view-delete-other-windows ¤òÇÑ»ß
+* [2003/09/12] v0.9.2.1
+ * fix: come-from ¥ê¥ó¥¯¤òºÇĹ°ìÃפË
+ * fix: ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/447>))
+ * howm-view-kill-buffer ¤ÎÀâÌÀµÕ¤À¤Ã¤¿
+ * ¥¿¥¤¥È¥ë°ìÍ÷ɽ¼¨¤ÎºÝ, ¥¿¥¤¥È¥ë¤Ê¤·°ìÍ÷¤¬Î¢¤Ë»Ä¤Ã¤Æ¤¿
+ * howm-ignore-comefrom-same (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * ¤Ê¤ó¤«ÉÔɾ¤Ê¤Î¤Ç, ¥Þ¥Ë¥å¥¢¥ë¤ò HTML ²½
+* [2003/09/10] v0.9.1
+ * ¥Ç¥Õ¥©¥ë¥È¤ò±Ñ¸ì¤Ë
+ * .emacs ¤Ë°Ê²¼¤ò½ñ¤±¤Ð¥á¥Ë¥å¡¼¤¬ÆüËܸì¤Ë
+ (setq howm-menu-lang 'ja)
+ * hcal.rb ¤â¥Ç¥Õ¥©¥ë¥Èµ¹æ¤Ï ASCII ʸ»ú¤Ë
+* [2003/09/09] v0.9
+ * ruby, find æµÑ. elisp ¤¬¤³¤ó¤Ê¤Ë®¤«¤Ã¤¿¤È¤Ï¡Ä
+ * howm-view-kill-buffer ¤ÎÀâÌÀ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * ext/easy-mmode.el ¤ÎƱº¤òÇÑ»ß (°ÕÌ£¤Ê¤µ¤²)
+
+== 0.8.x
+
+* [2003/08/31] v0.8.5
+ * ¥¿¥¤¥È¥ë¤Î°ìÍ÷ɽ¼¨ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/398>))
+ * °ìÍ÷¥â¡¼¥É¤ä¥á¥Ë¥å¡¼¥â¡¼¥É¤Ç¡Ö?¡×¤ò²¡¤¹¤È¥Ø¥ë¥×
+ * ¡Ö»²¹Í¡×¤Ë vim ÈǤòÄɲÃ
+* [2003/06/03] v0.8.4
+ * °Âľ¥«¥ì¥ó¥À¡¼ hcal.rb (htodo.rb ¤ò²þ̾¡¦³ÈÄ¥)
+ * ͽÄêɽ¤ËºÑ¹àÌܤâɽ¼¨ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * ¡Ö»²¹Í¡×¤Ë wikilog ¤òÄɲÃ
+* [2003/05/11] v0.8.3
+ * fix: howm-excluded-file-regexp ¤¬ menu, schedule, todo ¤Ç¸ú¤¤¤Æ¤Ê¤«¤Ã¤¿
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1050963280/126>))
+ * README
+ * maxima ¤Ë¤Ä¤¤¤Æ¤ÎÃí°Õ
+ * M-x howm-create ¢ª M-x howm-menu
+* [2003/03/19] v0.8.2
+ * ³°Éô¥Ä¡¼¥ë¤Ë htodo.rb ÄɲÃ
+ * fix: todo °ìÍ÷¤Ç, ºÑ¹àÌÜ(@[2003/03/19]. ¤Ê¤É)¤âÆüÉÕ½ç¤Ëʤ֤褦
+* [2003/02/20] v0.8.1.1
+ * fix: ¡Ö@[2003/02/14] 501¼¼¡×¤Î laziness ¤¬ 501 ¤Ë¤Ê¤Ã¤Æ¤¿¤Î¤ò½¤Àµ
+ * fix: ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¡Ö.#foobar.baz¡×¤ò¸¡º÷Âоݳ°¤Ë
+* [2002/12/14] v0.8.1
+ * howm-congrats-hook
+ * ¥É¥Ã¥È¥Õ¥¡¥¤¥ë¤â¸¡º÷ÂÐ¾Ý¤Ë (howm-excluded-file-regexp ¤«¤éºï½ü)
+ * ¡Ö>> ¥Õ¥¡¥¤¥ë̾¡×´ØÏ¢¤ò¤Þ¤¸¤á¤Ë½¤Àµ¤¹¤ë¤Þ¤Ç¤Î»ÃÄê½èÃÖ
+* [2002/11/03] v0.8
+ * ¥á¥Ë¥å¡¼
+ * ¥ê¥Þ¥¤¥ó¥À
+ * ½¾Íè¤Î¡Ö@[2002/10/21] !!¡×¤Ê¤É¤ÏÇÑ»ß
+ * ¥í¡¼¥Þ»ú¸¡º÷ (migemo)
+ * Éտ路¤Æ, grep ¥³¥Þ¥ó¥É¤ò egrep ¤ËÊѹ¹
+ * ¤½¤Î¾¤¤¤í¤¤¤í
+ * action-lock ¤ÎÄɲÃÎã (namazu ¤ò»È¤¤, Message-ID ¤«¤é¥á¡¼¥ë¤ò¸¡º÷)
+ * action-lock ¤Î¡Ö̤½èÍý¡×¤ò {___} ¤«¤é {_} ¤ËÊѹ¹
+ * [2002/10/18] ¤Î¤è¤¦¤ÊÆüÉÕ·Á¼°¤â¥ê¥ó¥¯¤Ë
+ * howm-view-summary ¤Î°ì¹Ôɽ¼¨¤Ç, ÀèƬ¶õÇò¤Ïºï½ü
+ * howm-view-split-horizontally
+ * howm-insert-date
+ * ÊÑ¿ô howm-view-summary-format ¤Î»ÅÍÍÊѹ¹
+ (½Äʬ³ä¤Ê¤é todo °ìÍ÷¤Ë¥Õ¥¡¥¤¥ë̾ɽ¼¨¤Ê¤·, ¤Î¤ä¤Ã¤Ä¤±¼ÂÁõ¤Î¤¿¤á)
+ * °ìÍ÷¤Ç¤Î¥¿¥¤¥È¥ëɽ¼¨¤ò°ìöÇÑ»ß (Ê£»¨¤Ê³ä¤ËÌò¤¿¤¿¤º)
+ * °ìÉô¥¡¼¥Ð¥¤¥ó¥ÉÊѹ¹
+ * fix: ¡Öº£Æü¤Î¥á¥â¡×¾å¤Ç C-c , c ¤·¤¿¤È¤¤Ï¡ÖÁ°¤Ë¸«¤Æ¤¿¥Õ¥¡¥¤¥ë¡×¤Ïά
+
+== 0.7.x
+
+* [2002/09/30] v0.7.6.1
+ * howm-view-kill-buffer ¤Ë´Ø·¸¤Ê¤¯, ¥¿¥°°ìÍ÷¥Ð¥Ã¥Õ¥¡¤À¤±¤Ï»Ä¤¹(¤ä¤Ã¤Ä¤±)
+ * fix: case-fold-search ¤òÀßÄꤷ¤Æ¤¤¤ë¤È¤¤Î, grep / grep -i ¤ÎȽÄê
+* [2002/09/26] v0.7.5
+ * ¸¡º÷¤ÇÂçʸ»ú¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤¤è¤¦Êѹ¹
+* [2002/09/24] v0.7.4
+ * fix: ¸¡º÷¤Ç no match ¤Ë¤Ê¤Ã¤¿¤È¤, Á°¥Ð¥Ã¥Õ¥¡¤Î¿§¤Ê¤É¤¬ÊѤË
+ (font-lock-keywords-only ¤ÎÂç°èÃͤò¸í¤Ã¤ÆÊѹ¹)
+* [2002/09/20] v0.7.3
+ * action-lock-no-browser
+ * fix: @ ¤Ç°ìÍ÷ɽ¼¨¤ÈÏ¢·ëɽ¼¨¤È¤òÀڤ꤫¤¨¤¿¤È¤¥«¡¼¥½¥ë°ÌÃÖ¤¬¤º¤ì¤Ì¤è¤¦
+ * fix: ¥Þ¡¼¥¯¤òÀßÄꤻ¤º howm-create ¤·¤Æ¤â¥¨¥é¡¼½Ð¤Ì¤è¤¦
+* [2002/09/19] v0.7.2
+ * °ìÍ÷¤Ç summry ̤¥¹¥¥ã¥ó¤ÎÉôʬ¤Ë¤Ï¡Ötype 'p'¡×¤Èɽ¼¨
+ * fix: .howm-keys ¤Ø¤Î½ÅÊ£ÅÐÏ¿¥Á¥§¥Ã¥¯¤Ç¤ÏÂçʸ»ú¾®Ê¸»ú¤ò¶èÊ̤¹¤ë¤è¤¦¤Ë
+ * fix: ¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï°ìÍ÷Âоݳ°¤Ë (Îã: CVS/)
+* [2002/09/18] v0.7.1
+ * http:// ¤Ç web browser µ¯Æ°
+ * fix: ¡Ö¥¡¼¥ï¡¼¥É¤ò kill-ring ¤Ø¡×¢ª¡Ö¥¿¥¤¥È¥ë¤ò kill-ring ¤Ø¡×(̤¤Ãæ)
+* [2002/09/17] v0.7
+ * 1 Æü 1 ¥Õ¥¡¥¤¥ë¤Ë
+ * ¥¿¥¤¥È¥ë = ¤È come-from ¥ê¥ó¥¯ << ¤È¤òʬΥ
+ * ºÇ¶á¤Î¥á¥â¤Î°ìÍ÷ (¥¡¼¥Ð¥¤¥ó¥É¤âÊѹ¹)
+ * ¥Õ¥¡¥¤¥ë̾¤ò kill-ring ¤Ø (C-u C-c , k)
+ * ¡Ö>> ¥Õ¥¡¥¤¥ë̾¡× (file://¡Ä ¤È ((<URL:¡Ä>)) ¤â»Ä¤·¤Æ¤Ï¤¢¤ë)
+ * ÍѸìÊѹ¹: ÌÀ¼¨¡¦°Å¼¨ ¢ª goto¡¦come-from
+ * Á´¥á¥â°ìÍ÷¤Ë¤â¥Ø¥Ã¥À
+ * fix: ¸Å¤¤ ruby-mode.el ¤ò»È¤¦¤ÈÁ´¥á¥â°ìÍ÷¤ËÊѤʿ§¤¬¤Ä¤¯¤Î¤ò¤ä¤Ã¤Ä¤±½¤Àµ
+
+== 0.6.x
+
+* [2002/09/14] v0.6 Á´Ì̽ñ¤¤Ê¤ª¤·
+ * ¡Ö¥ê¥ó¥¯¡×¤ÎÇÑ»ß. ¤¹¤Ù¤Æ¤Ï¸¡º÷¤Ç¤¢¤ë.
+ * ¸¡º÷·ë²Ì¤Î¥½¡¼¥È¡¦¹Ê¤ê¤³¤ß¡¦Ï¢·ëɽ¼¨
+ * ¥¡¼¥ï¡¼¥É°ìÍ÷¥Õ¥¡¥¤¥ë(~/.howm-keys)¤ò¤·¤Ö¤·¤ÖƳÆþ
+ * °Å¼¨¥ê¥ó¥¯¤Î½ñ¼°¤ò²ÄÊѤˤ¹¤ë¤¿¤á
+ * emacs, grep, ruby ¤ÎÀµµ¬É½¸½¤Î°ã¤¤¤ËǺ¤ß¤¿¤¯¤Ê¤¤¤«¤é,
+ °Å¼¨¥ê¥ó¥¯Àë¸À¤Î¥¹¥¥ã¥ó(Àµµ¬É½¸½¸¡º÷!)¤Ï emacs Æâ¤Ç´°·ë¤µ¤»¤¿¤¤
+ * Á´¥Õ¥¡¥¤¥ë¤Î°Å¼¨¥ê¥ó¥¯Àë¸À¤ò emacs ¤Ç¥¹¥¥ã¥ó¤¹¤ë¤Î¤Ï
+ ¤µ¤¹¤¬¤ËÃÙ¤½¤¦
+ * µÕ¼ê¤Ë¤È¤Ã¤Æ, ²¿¤«¸¡º÷¤¹¤ë¤¿¤ó¤Ó¤Ë
+ ¤½¤Î¸¡º÷¸ì¤òÅÐÏ¿¤·¤Æ¤·¤Þ¤ª¤¦¤«¤È¤â
+ * shell ¤ò»È¤ï¤Ê¤¤ (¡Ä¤Ë¤·¤¿¤Ä¤â¤ê)
+ * ¥Ñ¥é¥°¥é¥Õ»Ø¸þ¤ÏÇÑ»ß
+ * ¤«¤ï¤ê¤Ë, ³Æ¥Ñ¥é¥°¥é¥Õ¤ò 1 ¥Õ¥¡¥¤¥ë¤Ë¤·¤Æ, Ï¢·ëɽ¼¨
+ * migemo ¸¡º÷¤¬Ì¤¼ÂÁõ
+ * ¥Õ¥¡¥¤¥ë̾¤ÏÍ̵¤ò¸À¤ï¤µ¤º¾¡¼ê¤Ë¤Ä¤±¤ë
+
+== 0.5.x °ÊÁ°
+
+* [2002/06/26] v0.5.3 (¥ê¥ê¡¼¥¹¤»¤º[2002/09/12])
+ * ¥Ñ¥é¥°¥é¥Õ°ìÍ÷¤ÎÆü»þ¤ò¥Ï¥¤¥é¥¤¥È
+* [2002/06/25] v0.5.2
+ * migemo ¸¡º÷¤Ç¤â¥Þ¥Ã¥Á¤ò¥Ï¥¤¥é¥¤¥È
+ * describe-mode ¤Ë¥Ñ¥é¥°¥é¥Õ´ØÏ¢¤Î¥¡¼ÀßÄê¤âµ½Ò
+ * rd-memo ¤È¤ÎÊ»ÍÑÀßÄêÎã
+* [2002/06/24] v0.5.1
+ * ¥«¡¼¥½¥ë¤¬¥Ñ¥é¥°¥é¥Õ¤ÎÀèƬ¤Ë¤¢¤Ã¤¿¤È¤¤ÎµóÆ°¤ò½¤Àµ
+ * ¥Ñ¥é¥°¥é¥Õ¤ò¿·µ¬¥¿¥¤¥È¥ë¤Ë°ÜÆ°¤·¤¿¤È¤ howm-create-title ¤¬¸ú¤¯¤è¤¦
+* [2002/06/23] v0.5
+ * ¥Ñ¥é¥°¥é¥Õ»Ø¸þ¤È»þ·ÏÎó¥á¥â (»îÍÑÃæ)
+ * howm-default-directory
+ * howm-menu ¤òÇѻߤ·, ÉáÄÌ¤Ë keymap ¤ò»ÈÍÑ
+ * ¸½Âê̾¤ò kill ring ¤Ø
+ * popview-mode ¤«¤é¥Õ¥¡¥¤¥ë¤ò³«¤¯¤È, ¸«¤Æ¤¤¤¿²Õ½ê¤Ë¥«¡¼¥½¥ë°ÜÆ°
+ * grep ¤Ç¤ÏÂê̾¤Ç¤Ê¤¯¥Þ¥Ã¥Á¹Ô¤òɽ¼¨
+ * ¤½¤Î¾, Èù½¤Àµ
+ * migemo-client --type=egrep ¤òÌÀ¼¨
+ * popview-mode ¤Î post-command-hook ¤Ï buffer-local ¤Ë
+ * popview-mode ¤Î update Í×ÉÔÍ×¥Á¥§¥Ã¥¯¤Ï, ¥¡¼¥ï¡¼¥É¤¸¤ã¤Ê¤¯°ÌÃÖ¤Ç
+ * popview-mode ¤Ï 'popview ¤Ç¤Ê¤¯ 'popview-mode ¤ò provide
+ * howm-create-file ¤ËÊä´°
+* [2002/06/06] v0.4.2
+ * migemo
+ * grep ¢ª egrep
+ * Âê̾¤ÎÊä´°ÆþÎÏ
+ * tag2plan ¤Ç¡Ö@[2002/06/06] foo¡×¤¬ÅÐÏ¿¤µ¤ì¤Ê¤«¤Ã¤¿¤Î¤ò½¤Àµ
+* [2002/06/05] v0.4.1
+ * grep ¤Ë -i
+ * ¶õÇò¹Ô¤ÏÂê̾¤È¤ß¤Ê¤µ¤Ê¤¤
+ * howm ¥³¥Þ¥ó¥É¤âÂê̾½ñ¼°¤Î¥Ç¥Õ¥©¥ë¥È¤ò¡Ö°ì¹ÔÌܡפË
+* [2002/06/03] v0.4 Âê̾½ñ¼°¤òÊѹ¹ (¡Ö= Âê̾¡×¢ª °ì¹ÔÌÜ)
+* [2002/06/03] v0.3.2 ¥Ç¥Ð¥Ã¥°(1¥Õ¥¡¥¤¥ëÊ£¿ô¥¿¥°)
+* [2002/06/02] v0.3.1
+ * ³Æ°ìÍ÷¤Î¥Ð¥Ã¥Õ¥¡¤òÊ̤Ë
+ * tag °ìÍ÷¤Ïº£Æü¤ÎÆüÉդ˥«¡¼¥½¥ë°ÜÆ°
+ * ¿·µ¬ºîÀ®»þ, Âê̾¤¬¶õ¤Ê¤éÂê̾½ñ¼°¼«ÂÎ("= ")¤ò¾Êά
+ * howm -pipe
+ * w3mmenu
+* [2002/06/02] v0.3
+ * ¥³¥Þ¥ó¥ÉÄɲà (¼¡/Á°¤Î¥ê¥ó¥¯¤Ø, tag, ¹Ê¤ê¤³¤ß¸¡º÷, ¿·µ¬, Ê£À½)
+ * tag2plan
+ * popview-mode ¤ËºÇÄã¸Â¥É¥¥å¥á¥ó¥È
+ * ¤½¤Î¾, Èù½¤Àµ
+* [2002/05/30] v0.2 ¥³¥Þ¥ó¥ÉÄɲà (refresh, »²¾ÈÀè/¸µ°ìÍ÷, Á´Âê̾°ìÍ÷, ¸¡º÷)
+* [2002/05/29] v0.1 ¸ø³«
+
+= ¸Å¤¤¹ðÃÎ
+
+* ²Æ»þ´Ö¤Î¥Ð¥° 2007-11-09
+ * howm-1.3.5 ¤Î¹¹¿·µÏ¿¤ò»²¾È
+
+* ¥»¥¥å¥ê¥Æ¥£½¤Àµ 2006-12-16
+ * howm-1.3.4 ¤Î¹¹¿·µÏ¿¤ò»²¾È
+
+* ¥Æ¥¹¥ÈÈǤ˥Х°:
+ [2003-12-27]¡Á[2004-01-21]¤Î¥Æ¥¹¥ÈÈǤÇ
+ (setq howm-insert-date-future t)
+ ¤òÀßÄꤷ¤Æ¤¤¤¿¾ì¹ç,
+ ¡Ö̤Íè¤ÎÆüÉÕ¤òÆþÎϤ·¤¿¤Î¤Ë, ¤½¤ì¤ò¤â¤¦°ìÃÊ̤Íè¤ØÁ÷¤Ã¤Æ¤·¤Þ¤¦¡×
+ ¤È¤¤¤¦¥Ð¥°¤¬¤¢¤ê¤Þ¤·¤¿. ¤¹¤ß¤Þ¤»¤ó.
+ * ͽÄꡦtodo ¤Î°ìÍ÷¤Ç, ǯ·î¤Ë¤Þ¤Á¤¬¤¤¤¬¤Ê¤¤¤«³Î¤«¤á¤Æ¤¯¤À¤µ¤¤.
+ (ÆäË, ¡Ö2004 ǯ¤Î¤Ä¤â¤ê¤¬ 2005 ǯ¤Ë¡×¤È¤¤¤¦¾É¾õ¤ò¤´Ãí°Õ¤¯¤À¤µ¤¤)
+ * ¥ê¥ê¡¼¥¹ÈǤ«¡¢[2004-01-22]°Ê¹ß¤Î¥Æ¥¹¥ÈÈÇ¤Ë update ¤·¤Æ¤¯¤À¤µ¤¤.
+
+= µìÈǤ«¤é¤Î°Ü¹Ô
+(ɬ¤º¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¤È¤Ã¤Æ¤«¤é!)
+
+== v1.0.x ¤«¤é¤Î°Ü¹ÔÎã
+
+* .emacs ¤Î½¤Àµ ¢ª ((<¥¤¥ó¥¹¥È¡¼¥ë>))
+ * ¡Ö<<< ¤ÇÂçʸ»ú¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤¡×¤òÀßÄꤷ¤¿¾ì¹ç¤Ï,
+ ¥¡¼¥ï¡¼¥É°ìÍ÷¤òºî¤êľ¤·¤Æ½ÅÊ£¤ò¾Ã¤¹¤È¤è¤¤¤Ç¤·¤ç¤¦
+* ¿·ÂÎÀ©¤Ë°Ü¹Ô¤¹¤ë¾ì¹ç
+ * ¥ê¥Þ¥¤¥ó¥À¤Î½ñ¼°Êѹ¹
+ @[2003/09/25]! ¢ª [2003/09/25]!
+ @[2003/09/25] ¢ª [2003/09/25]-
+ [2003/09/25]! ¢ª [2003/09/25]:!
+ [2003/09/25] ¢ª [2003/09/25]
+ * ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤Ë cd ¤·¤Æ,
+ find . -name '*.howm' -print | xargs -n 1 ruby -p -i.bak -e '$_.gsub!(%r~(@?)(\[[0-9]+/[0-9]+/[0-9]+\])([-+@!.]?)~){|s| if ($1 == %~~ && $3 == %~~); s; else; $2 + ($1 == %~@~ ? %~~ : %~:~) + ($3 == %~~ ? %~-~ : $3); end}'
+ * ³Îǧ¸å, *.bak ¤ò¼Î¤Æ¤ë
+ * ÆüÉդνñ¼°Êѹ¹
+ [2003/10/21] ¢ª [2003-10-21]
+ * ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤Ë cd ¤·¤Æ,
+ find . -name '*.howm' -print | xargs -n 1 ruby -p -i.bak -e '$_.gsub!(%r!(\D)(\d{4}/\d{2}/\d{2})(\D)!){|s| $1 + ($2.tr "/", "-") + $3}'
+ * ³Îǧ¸å, *.bak ¤ò¼Î¤Æ¤ë
+ * ¥ê¥ó¥¯¤Î½ñ¼°Êѹ¹ (<<, >> ¤ò <<<, >>> ¤Ë)
+ * ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤Ë cd ¤·¤Æ,
+ find . -name '*.howm' -print | xargs -n 1 ruby -p -i.bak -e '$_.sub!(/(<<|>>).*/){|s| $1[0,1] + s}'
+ * ³Îǧ¸å, *.bak ¤ò¼Î¤Æ¤ë
+ * ¤ä¤ê¤¿¤±¤ì¤Ð, ¥á¥â¤ò²þ̾¤·¤Æ¤â¤è¤¤
+ 2003_10_18.howm ¢ª 2003-10-18-000000.howm
+ * ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤Ë cd ¤·¤Æ,
+ find . -name '*.howm' -print | ruby -ne '$_.chop!; d = File::dirname $_; f = File::basename($_).tr("_", "-").sub(/[.][^.]+$/){|s| "-000000" + s}; puts %~mv #$_ #{File::expand_path f, d}~' > ~/howm_kuzu
+ * ~/howm_kuzu ¤ÎÆâÍƤò³Îǧ¤·, ÌäÂê¤Ê¤±¤ì¤Ð
+ cat ~/howm_kuzu | /bin/sh
+ * ¹¹¿·½ç¤È̾Á°½ç¤¬°ìÃפ¹¤ë¤è¤¦, ¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò¤Ç¤Ã¤Á¤¢¤²
+ * ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤Ë cd ¤·¤Æ,
+ * GNU touch ¤Î¾ì¹ç
+ find . -name '*.howm' -print | sort -r | ruby -ne 'puts %~touch -d "#{ARGF.lineno} min ago" #$_~' > ~/howm_kuzu
+ * ¤½¤ì°Ê³°¤Î¾ì¹ç
+ find . -name '*.howm' -print | sort | ruby -ne '$_.chop!; puts %~sleep 1; touch #$_~' > ~/howm_kuzu
+ * ~/howm_kuzu ¤ÎÆâÍƤò³Îǧ¤·, ÌäÂê¤Ê¤±¤ì¤Ð
+ cat ~/howm_kuzu | /bin/sh
+ * ¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤Î¤µ¤·¤«¤¨ (ja/* ¤Î¥³¥Ô¡¼) ¢ª ((<¥¤¥ó¥¹¥È¡¼¥ë>))
+ * µì¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤Ï¼Î¤Æ¤ë
+* µìÂÎÀ©¤ò´Ó¤¯¾ì¹ç: .emacs (howm ¥í¡¼¥É¤è¤êÁ°)¤Ë
+ (setq howm-ref-header ">>") ; goto ¥ê¥ó¥¯
+ (setq howm-keyword-header "<<") ; come-from ¥ê¥ó¥¯
+ (setq howm-reminder-old-format t) ; ¥ê¥Þ¥¤¥ó¥À¤Î½ñ¼°Êѹ¹¤ò¤·¤Ê¤¤
+ (setq howm-date-separator "/") ; ÆüÉÕ¤Ï 2003/10/21 ¤Î·Á¼°
+ (setq howm-menu-keyword-regexp nil) ; ¡Ö%¡û¡û%¡×¤ò menu-mode ¤Ë¤·¤Ê¤¤
+ (setq howm-menu-top nil) ; C-c , , ¤Ç¡Ö<< %menu%¡×¤ò³«¤«¤Ê¤¤
+ (setq howm-menu-file "menu.howm") ; C-c , , ¤Ç menu.howm ¤ò³«¤¯
+ (setq howm-use-color nil) ; << ¤Ê¤É¤Ë¿§¤ò¤Ä¤±¤Ê¤¤
+ (setq howm-menu-name-format " *howmM:%s*") ; ¥á¥Ë¥å¡¼¤Ï±£¤· buffer
+ (setq howm-abbreviate-file-name nil) ; ¥Õ¥¡¥¤¥ë̾ɽµ¤Ï full path
+ ;; µì¥Ç¥Õ¥©¥ë¥ÈÀßÄê
+ (setq howm-file-name-format "%Y/%m/%Y_%m_%d.howm") ; 1 Æü 1 ¥Õ¥¡¥¤¥ë
+ (add-to-list 'auto-mode-alist '("\\.howm$" . fundamental-mode))
+ (setq howm-default-key-table
+ '(
+ ;; ("key" func list-mode-p global-p)
+ ("r" howm-initialize-buffer)
+ ("l" howm-list-recent t t)
+ ("a" howm-list-all t t)
+ ("g" howm-list-grep t t)
+ ("m" howm-list-migemo t t)
+ ("t" howm-list-todo t t)
+ ("y" howm-list-schedule t t)
+ ("c" howm-create t t)
+ ("," howm-menu t t)
+ ("d" howm-dup)
+ ("i" howm-insert-keyword)
+ ("D" howm-insert-date)
+ ("K" howm-keyword-to-kill-ring t t)
+ ("n" action-lock-goto-next-link)
+ ("p" action-lock-goto-previous-link)
+ ("Q" howm-kill-all t t)
+ ))
+ (when (featurep 'howm-mode) (howm-set-keymap))
+ * Ʊº¥Ä¡¼¥ë¤Î»ÈÍÑ»þ¤Ï, ¼¡¤Î¥ª¥×¥·¥ç¥ó¤ò¤Ä¤±¤ë
+ * howm2 -comefrom='<<' -goto='>>'
+ * hcal.rb -format=old -date_sep=/
+ * tag2plan -format=old -date_sep=/
+
+== v0.8.x, v0.9.x ¤«¤é¤Î°Ü¹ÔÎã
+
+* ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤Î³¬Áز½¤Ë±þ¤¸¤Æ¡Ä
+ * ¿·ÂÎÀ©¤Ë°Ü¹Ô
+ * ²¿¤â¤·¤Ê¤¯¤Æ¤è¤¤.
+ * ¤ä¤ê¤¿¤±¤ì¤Ð, ~/howm/2003/09/ ¤Ê¤É¤òºî¤Ã¤Æµì¥á¥â¤ò°ÜÆ°¤·¤Æ¤â¤è¤¤
+ * µìÂÎÀ©¤ò´Ó¤¯: .emacs ¤Ë
+ (setq howm-file-name-format "%Y_%m_%d.howm")
+
+== v0.7.x ¤«¤é¤Î°Ü¹ÔÎã
+
+* ¥ê¥Þ¥¤¥ó¥À¤Î½ñ¼°Êѹ¹¤Ëȼ¤¤, ¼¡¤Î¥¹¥¯¥ê¥×¥È¤Ç¥á¥â¤òÊÑ´¹
+ * ÊÑ´¹¥¹¥¯¥ê¥×¥È (~/kuzu.rb ¤È¤¹¤ë)
+ $d = '@\\[[0-9 :/]+\\]'
+ $_.gsub!(/(#$d) *!!!/){|s| "#$1! ¡ú¡ú"}
+ $_.gsub!(/(#$d) *!!/){|s| "#$1! ¡ú"}
+ $_.gsub!(/(#$d) *!/){|s| "#$1!"}
+ $_.gsub!(/(#$d) *@@@/){|s| "#$1@ ¡ú¡ú"}
+ $_.gsub!(/(#$d) *@@/){|s| "#$1@ ¡ú"}
+ $_.gsub!(/(#$d) *@/){|s| "#$1@"}
+ $_.gsub!(/(#$d) *~~~/){|s| "#$1+ ¡ú¡ú"}
+ $_.gsub!(/(#$d) *~~/){|s| "#$1+ ¡ú"}
+ $_.gsub!(/(#$d) *~/){|s| "#$1+"}
+ END {
+ STDERR.print '.'
+ sleep 1
+ }
+ * ÊÑ´¹¼ê½ç
+ cd ~/howm
+ ls *.howm | xargs -n 1 ruby -p -i.bak ~/kuzu.rb
+ (³Îǧ¸å, *.bak ¤ò¼Î¤Æ¤ë)
+
+== v0.6 °ÊÁ°¤«¤é¤Î°Ü¹ÔÎã
+
+* come-from ¤Î½ñ¼°Êѹ¹¤Ëȼ¤¤, °Ê²¼¤Î¤è¤¦¤Ë¥á¥â¤òÊÑ´¹
+ cd ~/howm
+ ruby -p -i.bak -e '$_.sub! /^= /, "= << "; $_.sub! /^= << link$/, "= link"' *.howm
+ (³Îǧ¸å, *.bak ¤ò¼Î¤Æ¤ë)
+ * rd-memo ¤È¤Î¸ß´¹À¤Î¤¿¤á¤Ë, ¡Ö= link¡×¤ÏÊÑ´¹¤·¤Ê¤¤
+* ¤µ¤é¤Ë, ¥Õ¥¡¥¤¥ë̾¤âÊѹ¹
+ * ¿·Êý¼°¤Ë°Ü¤¹¾ì¹ç
+ * ¼¡¤Î¤è¤¦¤Ë¤·¤Æ, ¡Öcat ¢þ¢þ ¢þ¢þ > ¢þ¢þ¡×¤È¤¤¤¦¥³¥Þ¥ó¥ÉÎó¤òºîÀ®
+ cd ~/howm
+ ruby -e 'h=Hash::new []; ARGV.each{|f| f=~/^([0-9]+)-[0-9]+.*/ and h[$1] = h[$1] + [f]}; h.keys.sort.each{|k| puts "cat #{h[k].sort.join %! !} > #{k =~ /(....)(..)(..)/; %!#$1_#$2_#$3.howm!} && sleep 1"}' *.howm > howm_kuzu
+ * sleep 1 ¤Ï, ¥Õ¥¡¥¤¥ë¹¹¿·»þ¹ï½ç¤Ç¤Á¤ã¤ó¤Èʤ֤褦¤Ë
+ * howm_kuzu ¤ÎÆâÍƤò³Îǧ¤·, ÌäÂê¤Ê¤±¤ì¤Ð
+ cat howm_kuzu | /bin/sh
+ (³Îǧ¸å, 200*-*.howm ¤ò¼Î¤Æ¤ë)
+ * µìÊý¼°¤ò´Ó¤¯¾ì¹ç: ~/.emacs ¤Ë
+ (setq howm-file-name-format "%Y%m%d-%H%M%S.howm") ;; 1 ¥á¥â 1 ¥Õ¥¡¥¤¥ë
+ (setq howm-file-name-format "%Y%m%d-000000.howm") ;; 1 Æü 1 ¥Õ¥¡¥¤¥ë
+
+= ¸Å¤¤¥«¥¹¥¿¥Þ¥¤¥ºË¡
+
+== v1.2.3 ¤Î¥«¥¹¥¿¥Þ¥¤¥º [2005-05-08]
+
+~/.emacs (~/.emacs.el ¤«¤â)¤Ë, °Ê²¼¤Î¤è¤¦¤Ë½ñ¤¯
+
+* ¿§
+ * <<< ¤Ê¤É¤Ë¿§¤ò¤Ä¤±¤Ê¤¤
+ (setq howm-use-color nil)
+ * ¿§¤«¤¨: howm ¤Î¥í¡¼¥É¤è¤ê¸å¤Ë
+ (set-face-foreground 'howm-mode-keyword-face "red") ;; <<<
+ (set-face-foreground 'howm-mode-ref-face "magenta") ;; >>>
+ (set-face-background 'howm-mode-wiki-face "green") ;; [[]] ¤ÎÇØ·Ê
+ (set-face-background 'howm-mode-title-face "yellow") ;; = ¤ÎÇØ·Ê
+ (set-face-foreground 'action-lock-face "blue") ;; ²¼Àþʸ»ú
+ (set-face-underline 'action-lock-face t) ;; ²¼Àþ¤Ïʸ»ú¤ÈƱ¿§ (Emacs 21)
+ (set-face-underline 'action-lock-face "dark cyan") ;; ²¼Àþ (Emacs 21)
+ (set-face-foreground 'howm-menu-key-face "orange") ;; ¥á¥Ë¥å¡¼¤Î shortcut
+ * ¿§Ì¾¤Ï M-x list-colors-display »²¾È
+ * ÆâÍƥХåե¡¤Ë rd-mode ¤Ê¿§¤ò¤Ä¤±¤ë
+ ;; rd-mode.el ¤¬Æɤ߹þ¤Þ¤ì¤Æ¤¤¤ë¤È¤¤¤¦Á°Äó¤Ç
+ (setq howm-view-contents-font-lock-keywords rd-font-lock-keywords)
+
+* ÊØÍø¥¡¼
+ * ¡Ö¥«¥¿¥«¥Ê¡×¤Ç¥á¥Ë¥å¡¼, ¡ÖCtrl-¥«¥¿¥«¥Ê¡×¤Ç¿·µ¬¥á¥â
+ (define-key global-map [katakana] 'howm-menu)
+ (define-key global-map [(control katakana)] 'howm-create)
+ * [tab]([alt]-[tab])¤Ç¼¡(Á°)¤Î¥ê¥ó¥¯¤Ë°ÜÆ°
+ (define-key howm-mode-map [tab] 'action-lock-goto-next-link)
+ (define-key howm-mode-map [(meta tab)] 'action-lock-goto-previous-link)
+ * ËÜÍè¤Î tab ¤Ï C-i ¤Ç
+
+* Êݸ¾ì½ê
+ * ¥á¥â¤ò ~/memo/ ¤ËÃÖ¤¯
+ (setq howm-directory "~/memo/")
+ * ¥á¥âÃÖ¤¾ì/ǯ/ǯ·îÆü-»þʬÉÃ.howm ¤Ë
+ (setq howm-file-name-format "%Y/%Y%m%d-%H%M%S.howm")
+ * ¥Õ¥¡¥¤¥ë̾¼«ÂΤËǯ·îÆü¤¬Æþ¤Ã¤Æ¤¤¤Ê¤¤¤È, filter-by-date ¤¬µ¡Ç½¤·¤Ê¤¤
+ * 1 Æü 1 ¥Õ¥¡¥¤¥ë (¥á¥âÃÖ¤¾ì/ǯ/·î/ǯ_·î_Æü.howm ¤Ë)
+ (setq howm-file-name-format "%Y/%m/%Y_%m_%d.howm")
+ * ÉÔ´°Á´¤ÊÅÀ¤¬¤¢¤ê¤Þ¤¹. ²æËý¤Ç¤¤ë¿Í¤À¤±¤É¤¦¤¾
+ * ¥á¥âñ°Ì¤Ç¤¢¤ë¤Ù¤½èÍý¤Î°ìÉô¤¬¥Õ¥¡¥¤¥ëñ°Ì¤Ë
+ (¥¿¥¤¥È¥ëɽ¼¨, ¹¹¿·½ç°ìÍ÷, ÆâÍƤǤιʤꤳ¤ß, uniq)
+ * ¥á¥Ë¥å¡¼¤Ë°Ê²¼¤Î¥Ü¥¿¥ó¤ò½ñ¤¤¤Æ¤ª¤¯¤ÈÊØÍø
+ * [º£Æü] ¢ª º£Æü¤Î¥á¥â
+ * [ºòÆü] ¢ª ºòÆü¤Î¥á¥â
+ * ¥¡¼¥ï¡¼¥É°ìÍ÷¤ò ~/howm/.howm-keys ¤ËÃÖ¤¯
+ (setq howm-keyword-file "~/howm/.howm-keys") ;; ¥Ç¥Õ¥©¥ë¥È¤Ï ~/.howm-keys
+ * ¤³¤¦¤·¤Æ¤ª¤±¤Ð, °ã¤¦¥Þ¥·¥ó¤Ç¤â ~/howm/ °Ê²¼¤Î¥³¥Ô¡¼¤À¤±¤ÇºÑ¤à.
+ * ¤¹¤Ç¤Ë½ñ¤¤¤¿¥á¥â¤¬¤¢¤ë¤Ê¤é, mv ~/.howm-keys ~/howm/ ¤ò¤·¤Æ¤ª¤¯¤«,
+ ºÆ¹½ÃÛ¤¹¤ë(¢ª((<¥¤¥ó¥¹¥È¡¼¥ë>))).
+ * ¥Ç¥á¥ê¥Ã¥È: ¸¡º÷¤¬ÃÙ¤¯¤Ê¤ë? (Âδ¶¤Ç¤¤ë¤Û¤É¤«¤Ï, ¤ä¤Ã¤Æ¤ß¤Ê¤¤¤ÈÉÔÌÀ)
+
+* °ìÍ÷
+ * ¥¿¥¤¥È¥ë°ìÍ÷¤òɽ¼¨
+ (setq howm-list-title t)
+ * ¥¿¥¤¥È¥ë¤ò½ñ¤«¤Ê¤¤¤È¤¤Ç¤â, ¥¿¥¤¥È¥ëÍó¡Ö= ¡×¤Ï»Ä¤·¤Æ¤ª¤¯Êý¤¬°ÂÁ´¤Ç¤·¤ç¤¦
+ (Âкö¤Ï¤·¤¿¤Ä¤â¤ê¤Ç¤¹¤¬¡Ä)
+ * ¡û¡û¤Î¤È¤¤À¤±¥¿¥¤¥È¥ëɽ¼¨
+ (setq howm-list-title
+ ;; ¢¤Ë½ñ¤¤¤¿¥³¥Þ¥ó¥É¤Ç¤À¤±¥¿¥¤¥È¥ëɽ¼¨
+ '(howm-list-all howm-list-recent
+ howm-list-grep howm-list-grep-fixed howm-list-migemo
+ howm-list-related howm-list-around
+ howm-keyword-search)) ;; ¤³¤ì¤Ï come-from ¥ê¥ó¥¯¡¦goto ¥ê¥ó¥¯
+ * ´Ø¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ
+ (setq howm-list-title (lambda () ¡Ä))
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤ÈÆâÍƥХåե¡¤ò²£¤Ëʤ٤ë
+ (setq howm-view-split-horizontally t)
+ * ²£¤Ëʤ٤뤱¤É, °ìö C-x 1 ¤·¤¿¸å¤Ï½Ä¤ËʤÖ
+ (setq howm-view-split-horizontally 'hoge) ;; t, nil °Ê³°¤ò»ØÄê
+ * ï¤â»È¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç¤³¤Îµ¡Ç½¤Ïºï½ü [2008-10-07]
+ * [return] ¤Ç¥Õ¥¡¥¤¥ë¤ò³«¤¯ºÝ, °ìÍ÷¥Ð¥Ã¥Õ¥¡¤ò¾Ã¤¹.
+ C-u ¤·¤Æ [return] ¤À¤È, °ìÍ÷¤ò»Ä¤¹.
+ (setq howm-view-summary-persistent nil)
+ * °ìÍ÷¤Ç¡Ö!¡×¤·¤¿¤È¤¤Î½é´ü¥³¥Þ¥ó¥É¤òÊѹ¹
+ (setq howm-view-summary-shell-last-file "_FILE_")
+ (setq howm-view-summary-shell-hist
+ '("mv _FILE_ ~/gomi" "touch _FILE_" "ls -l _FILE_"))
+ * ½é´ü¥³¥Þ¥ó¥É¤Ï¡Ömv ¥Õ¥¡¥¤¥ë̾ ~/gomi¡×
+ * M-p ²¡¤·¤Æ¤¤¤¯¤È, ¡Ötouch ¥Õ¥¡¥¤¥ë̾¡×¤ä¡Öls -l ¥Õ¥¡¥¤¥ë̾¡×
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¡¦ÆâÍƥХåե¡¤ò¸¡º÷¤´¤È¤Ë¸ÄÊ̤˺î¤ë
+ (setq howm-view-summary-name "*howmS:%s*")
+ (setq howm-view-contents-name "*howmC:%s*")
+ * °ìÍ÷¤ò¥Ç¥Õ¥©¥ë¥È¤ÇÆüÉÕ½ç¤Ë
+ (setq howm-list-normalizer 'howm-view-sort-by-reverse-date)
+ * C-x 1 ¸å¤Ï¾¡¼ê¤Ë¥Õ¥ì¡¼¥à¤òʬ³ä¤·¤Ê¤¤ (SPC ¤ÇºÆʬ³ä)
+ (setq howm-view-keep-one-window t)
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤Î¿§¤Ä¤±Îã
+ (setq howm-view-summary-font-lock-keywords '(("^2003" . 'highlight)))
+ * foo ¤ò¸¡º÷¤·¤Æ¤â [[foo]] ¤ò¾å°Ì¤Ë¤·¤Ê¤¤
+ (setq howm-list-prefer-wiki nil)
+
+* ¥á¥Ë¥å¡¼
+ * ¥á¥Ë¥å¡¼¤ÎÊѹ¹
+ * ¥á¥Ë¥å¡¼¤ò³«¤¤¤Æ [menu ÊÔ½¸] ¾å¤Ç¥ê¥¿¡¼¥ó ¢ª ¼«Í³¤ËÊÔ½¸
+ * ¤è¤¯³«¤¯¥á¥â¤Ø¤Î goto ¥ê¥ó¥¯¤Ê¤É¤ò½ñ¤¤¤Æ¤ª¤±¤ÐÊØÍø¤«¤È
+ * ¥á¥Ë¥å¡¼¤ÎËöÈø¤Ë¡ÖR[menu ¹¹¿·] E[menu ÊÔ½¸]¡×¤ò¤Ä¤±¤ë
+ (setq howm-menu-footer "\n-- \n%\"R\"[menu ¹¹¿·] %\"E\"[menu ÊÔ½¸]")
+ * ¥á¥Ë¥å¡¼¤Ï±£¤·¥Ð¥Ã¥Õ¥¡¤Ë
+ (setq howm-menu-name-format " *howmM:%s*")
+ * ¢¨ Emacs ƦÃμ±
+ * ¶õÇò¤Ç»Ï¤Þ¤ë¥Ð¥Ã¥Õ¥¡Ì¾¤Ï, C-x b ¤ä C-x C-b ¤Ç½Ð¤Æ¤³¤Ê¤¤
+ * ¤½¤ó¤Ê¥Ð¥Ã¥Õ¥¡¤ò¸«¤ë¤Ë¤Ï, C-x b C-q SPC SPC
+ * ¥á¥Ë¥å¡¼¤ò¥á¥â°·¤¤¤·¤Ê¤¤ (¥á¥â°ìÍ÷¡¦¸¡º÷¤ÎÂоݳ°¤Ë)
+ ;; mv ~/howm/0000-00-00-000000.howm ~/hoge/fuga/menu.howm ¤·¤È¤¤¤Æ¡Ä
+ (setq howm-menu-file "~/hoge/fuga/menu.howm")
+ * ͽÄêɽ¤Îɽ¼¨ÈÏ°Ï
+ (setq howm-menu-schedule-days-before 2) ;; ¡ûÆüÁ°¤«¤é
+ (setq howm-menu-schedule-days 7) ;; ¡ûÆü¸å¤Þ¤Ç
+ * todo ¤Îɽ¼¨·ï¿ô
+ (setq howm-menu-todo-num 50)
+
+* ¤â¤Ã¤È·Ú¤¯ (cf. ((<ÉÙ¹ëŪ¥×¥í¥°¥é¥ß¥ó¥°|URL:http://pitecan.com/fugo.html>)))
+ * ¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤òľÀÜ»ØÄê
+ (setq howm-menu-file "0000-00-00-000000.howm")
+ * ¥á¥Ë¥å¡¼¤ò 2 »þ´Ö¥¥ã¥Ã¥·¥å
+ (setq howm-menu-expiry-hours 2)
+ * ¤«¤ï¤ê¤Ë, ¥á¥âÊݸ»þ¤Ë¥á¥Ë¥å¡¼¤ò¼«Æ°¹¹¿·¤¹¤ë¤è¤¦¤Ë¤Ê¤ë(¤«¤Ê¤ê½Å¤¤).
+ ¤½¤ì¤â»ß¤á¤ë¤Ê¤é
+ (setq howm-menu-refresh-after-save nil)
+ * ¥»¡¼¥Ö¸å¤Î²¼Àþ°ú¤Ä¾¤·¤ò¤·¤Ê¤¤
+ (setq howm-refresh-after-save nil)
+ * °ìÍ÷¤Ç¤Î¥¿¥¤¥È¥ëɽ¼¨¤òÍÞÀ©
+ ;; ¡ÖºÇ¶á¤Î¡×¤Þ¤¿¤Ï¡ÖÁ°¸å¤Î¡×¥á¥â°ìÍ÷»þ¤Ë¸Â¤ë
+ (setq howm-list-title '(howm-list-recent howm-list-around))
+ ;; °ìÀÚɽ¼¨¤»¤º
+ ;(setq howm-list-title 'nil)
+ * ¸¡º÷¤Ë grep ¤ò»È¤¦
+ (setq howm-view-use-grep t)
+ * ¤³¤Î¾ì¹ç, ¥í¡¼¥Þ»ú¸¡º÷¤ò»È¤¦¤Ë¤Ï migemo-server ¤òÆ°¤«¤·¤Æ¤ª¤¯É¬Íפ¢¤ê
+ * GNU grep ¤¸¤ã¤Ê¤¤¤È¤À¤á¤«¤â. -H ¤È¤« -r ¤È¤« -e ¤È¤«¡Ä
+ * grep ¥³¥Þ¥ó¥É̾¤òÊѹ¹¤¹¤ë¤Ê¤é¡Ä
+ (setq howm-view-grep-command "egrep")
+ (setq howm-view-fgrep-command "fgrep")
+ * egrep, fgrep ¤¬¤Ê¤¤¤±¤É GNU grep ¤Ï¤¢¤ë, ¤È¤¤¤¦´Ä¶(¥ê¥Ê¥¶¥¦?)¤Ê¤é¡Ä
+ (setq howm-view-grep-command "grep")
+ (setq howm-view-fgrep-command "grep")
+ (setq howm-view-grep-extended-option "-E")
+ (setq howm-view-grep-fixed-option "-F")
+
+* ³°Éô viewer
+ * ¥Õ¥¡¥¤¥ë̾(Àµµ¬É½¸½)¤È viewer ¤ÎÂбþ¤ò»ØÄê (~/.mailcap ¤è¤êÍ¥À褷¤Þ¤¹)
+ (setq howm-view-external-viewer-assoc
+ '(
+ ("[.]\\(jpg\\|gif\\|png\\)$" . "display %s")
+ ("[.]dvi$" . "xdvi %s")
+ ))
+ * ¡Ö³°Éô viewer ¤ò»È¤ï¤Ê¤¤ mime-type¡×¤Î»ØÄê (Àµµ¬É½¸½)
+ (setq howm-view-open-by-myself '("text/.*" "application/emacs-lisp"))
+ * ~/.mime-types ¤ä ~/.mailcap ¤ò»²¾È¤·¤Ê¤¤
+ (setq howm-view-use-mailcap nil)
+ * ¤³¤ÎÀßÄê¤ò¤·¤Æ¤Ê¤¯¤Æ¤â, ¥é¥¤¥Ö¥é¥ê¤Î load ¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ï»²¾È¤·¤Þ¤»¤ó
+ * emacs-21.2.1 ÉÕ°¤Î gnus/mailcap ¤Ë°Í¸
+ * ¸Å¤¤ FLIM ¤Ï conflict?
+
+* ¸¡º÷
+ * ¥É¥Ã¥È¥Õ¥¡¥¤¥ë¤âõ¤¹
+ (setq howm-excluded-file-regexp
+ "^[.][.]\\|[~#]$\\|\\.bak$\\|/CVS/")
+ * Âоݥǥ£¥ì¥¯¥È¥ê¤ÎÄɲÃ
+ * Á´Ê¸¸¡º÷¤Î¤È¤, ¥á¥â¤Ë²Ã¤¨¤Æ»ØÄê¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤âºÆµ¢Åª¤Ëõ¤¹
+ (setq howm-search-path '("~/Mail" "~/News"))
+ (setq howm-search-other-dir t) ;; ²¼µ¤Î¥È¥°¥ë¤Î½é´üÃÍ (t ¤« nil)
+ * M-x howm-toggle-search-other-dir ¤Ç,
+ ¾åµ¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷Âоݤˤ¹¤ë¤«¤·¤Ê¤¤¤«¥È¥°¥ë
+ * ¥¡¼¥Ð¥¤¥ó¥É¤·¤¿¤±¤ì¤Ð³Æ¼«¤Ç (¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹ÌϺ÷Ãæ¤Ë¤Ä¤¡Ä)
+ * ¸¡º÷¤Ë»È¤¦´Ø¿ô¤ò¤¹¤ê¤«¤¨
+ ;; t ¤Ê¤é grep ¥³¥Þ¥ó¥É, nil ¤Ê¤é¥Ç¥Õ¥©¥ë¥È¤Î elisp ´Ø¿ô¤ò»ÈÍÑ.
+ ;; ¤³¤ì°Ê³°¤Ê¤é, »ØÄꤷ¤¿´Ø¿ô¤ò»ÈÍÑ.
+ (setq howm-view-use-grep #'my-grep-function)
+ (defun my-grep-function (str file-list
+ &optional fixed-p force-case-fold)
+ "STR ¤ò FILE-LIST (¥Õ¥¡¥¤¥ë̾¤Î¥ê¥¹¥È)¤«¤é¸¡º÷.
+ Ìá¤êÃͤÏ, ((¥Õ¥¡¥¤¥ë̾ ¹ÔÈÖ¹æ ¹ÔÆâÍÆ) (¥Õ¥¡¥¤¥ë̾ ¹ÔÈÖ¹æ ¹ÔÆâÍÆ) ¡Ä)
+ ¤È¤¤¤¦¥ê¥¹¥È.
+ FIXED-P ¤¬¿¿¤Ê¤éʸ»úÎó STR ¤ò, µ¶¤Ê¤éÀµµ¬É½¸½ STR ¤ò¸¡º÷¤¹¤ë.
+ STR ¤¬Âçʸ»ú¤ò´Þ¤Þ¤Ê¤¤¤È¤¤ä, ´Þ¤ó¤Ç¤â FORCE-CASE-FOLD ¤¬¿¿¤Î¤È¤¤Ï,
+ Âçʸ»ú¾®Ê¸»ú¤Î°ã¤¤¤ò̵»ë¤¹¤ë."
+ ¡Ä)
+ * howm ¤Ç foo ¤ò¸¡º÷¤·¤¿¸å¤Ï, C-s C-s ¤â foo ¤Î¸¡º÷¤Ë
+ (setq howm-view-update-search-ring t)
+ * Àµµ¬É½¸½¤Ï C-u C-s C-s ¤Ê¤Î¤ÇÃí°Õ
+
+* ̤Êݸ¤À¤í¤¦¤È°ÑºÙ¹½¤ï¤º, howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¶¯À©ºï½ü¤¹¤ë¥³¥Þ¥ó¥É
+ (¤ª¤¹¤¹¤á¤·¤Þ¤»¤ó. »È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤.)
+ * C-u C-c , Q
+ * ¥á¥Ë¥å¡¼¤Ë½ñ¤¯¤Ê¤é [¶¯À©Á´¾Ã]
+ * ʪÁû¤Ê¤Î¤Ç, ¢¤ò½ñ¤¤¤È¤«¤Ê¤¤¤È̵¸ú
+ (setq howm-kill-all-enable-force t)
+
+* ¥Æ¥ó¥×¥ì¡¼¥È¤ÎÊѹ¹Îã
+ * ¤³¤ó¤Ê¤Õ¤¦¤Ë
+ Subject: ¥¿¥¤¥È¥ë¥Ð¡¼¤Ë»þ·×¤òɽ¼¨ ¢«Ä¾Á°¤Î¥ê¡¼¥¸¥ç¥ó¤ÎÆâÍÆ
+ Date: Thu, 12 Sep 2002 15:45:59 +0900
+ In-Reply-To: </home/hira/sawfish/rich-title/rich-title.jl> ¢«Ä¾Á°¥Õ¥¡¥¤¥ë
+
+ ¢£ ¢« ¥«¡¼¥½¥ë
+ * ~/.emacs ¤Ë
+ (setq howm-template "Subject: %title\nDate: %date\n%file\n%cursor")
+ (setq howm-template-date-format "%a, %d %b %Y %H:%M:%S %z")
+ (setq howm-template-file-format "In-Reply-To: <%s>\n")
+ * ¥Æ¥ó¥×¥ì¡¼¥È¤òÊ£¿ô»ØÄê
+ ;; C-u 2 C-c , c ¢ª 2 ÈÖÌܤΥƥó¥×¥ì¡¼¥È¤Ç¿·µ¬¥á¥â
+ ;; ¥á¥Ë¥å¡¼¤«¤é C-u 2 c ¤Ç¤âƱÍÍ
+ (setq howm-template
+ '("= %title%cursor\n%date %file\n\n" "%date: %title%cursor"))
+ * ¤Ä¤¤¤Ç¤Ë, howm-template ¤ÎÃͤ¬´Ø¿ô¤Ê¤é
+ ¡Öuniversal-argument ¤ò°ú¿ô¤Ë¤·¤Æ¤½¤¤¤Ä¤ò¸Æ¤Ö¡×¤Ã¤Æ¤¤¤¦¤Î¤â»Å¹þ¤ß¤Þ¤·¤¿
+
+* ½ñ¼°¤ÎÊѹ¹Îã (howm-*.el ¤Î load ¤è¤êÁ°¤Ë)
+ * ¥¿¥¤¥È¥ë(¥á¥â¶èÀÚ¤ê) @@@ ¡Ä
+ (setq howm-view-title-header "@@@")
+ * goto ¥ê¥ó¥¯ ==>¡Ä, come-from ¥ê¥ó¥¯ <==¡Ä
+ (setq howm-ref-header "==>")
+ (setq howm-keyword-header "<==")
+ * goto ¥ê¥ó¥¯ ((¡ã¡Ä¡ä)), come-from ¥ê¥ó¥¯ ((¡§¡Ä¡§))
+ ;; ¡ã¡ä¡§¤ÏȾ³Ñ¤Ëľ¤·¤Æ¤¯¤À¤µ¤¤
+ (setq howm-ref-regexp "((¡ã\\([^¡ä\r\n]+\\)¡ä))")
+ (setq howm-ref-regexp-pos 1)
+ (setq howm-keyword-format "((¡§%s¡§))")
+ (setq howm-keyword-regexp "\\(((¡§\\)\\([^¡§\r\n]+\\)¡§))")
+ (setq howm-keyword-regexp-hilit-pos 1) ;; ¡Ö´ØÏ¢¥¡¼¥ï¡¼¥É¡×ÍÑ
+ (setq howm-keyword-regexp-pos 2)
+ (setq howm-keyword-regexp-format "%s") ;; M-x describe-variable »²¾È
+ * wiki É÷¥ê¥ó¥¯ [[hoge]] ¤Î²¼Àþ¤ò¡Ö]]¡×¤À¤±¤Ë
+ * ¡Ö<<< hoge¡×¤ÎºîÀ®¸å¤Ï, ¡Öhoge¡×¤Ë¤â²¼Àþ
+ (setq howm-wiki-regexp "\\[\\[\\([^]\r\n]+\\)\\(\\]\\]\\)")
+ (setq howm-wiki-regexp-hilit-pos 2)
+ (setq howm-wiki-regexp-pos 1)
+
+* ¤³¤Þ¤´¤Þ
+ * <<< ¤ÇÂçʸ»ú¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤
+ (setq howm-keyword-case-fold-search t)
+ * ÆüÉÕÆþÎÏ(C-c , d ¤Þ¤¿¤Ï [Æü¢])¤Çǯ¤ä·î¤òά¤·¤¿¤é, ¡Ö̤Íè¡×¤È²ò¼á
+ (setq howm-insert-date-future t)
+ * ¿·µ¬ÆþÎÏ»þ¤Î¤ß¤Ç¤¹. ¡Ö[2003-12-27]¡×¾å¤Ç RET ¤·¤¿¤È¤¤ÎÆ°ºî¤Ï½¾Íè¤É¤ª¤ê.
+ * ¡Öhttp://¡×¤Ç¥ê¥¿¡¼¥ó²¡¤·¤¿¤é, URL ¤ò kill-ring ¤Ø
+ (setq action-lock-no-browser t)
+
+* ͽÄêɽ¡¦todo °ìÍ÷
+ * ºÑ¹àÌܤòɽ¼¨¤·¤Ê¤¤
+ (setq howm-schedule-types "[!@]") ;; ͽÄêɽ
+ (setq howm-todo-types "[-+~!]") ;; todo °ìÍ÷
+ * ¥ê¥Þ¥¤¥ó¥Àµ¹æ(!+-~@.)¤«¤é RET °ìȯ¤Ç¡ÖºÑ¡×¤Ë
+ (setq howm-action-lock-reminder-done-default "")
+ * ¤³¤Î¾ì¹ç, C-u RET ¤Ç½¾Íè¤ÎÆ°ºî (¥¥ã¥ó¥»¥ë, µ¹æÊѹ¹, ¡Ä)
+ * ͽÄêɽ¡¦todo °ìÍ÷¤«¤é¥ê¥Þ¥¤¥ó¥Àµ¹æ¾å¤ÇľÀÜ RET ¤·¤¿¤È¤,
+ ᤫ¤ìÀè¥Ð¥Ã¥Õ¥¡¤ò¼«Æ° save
+ (setq howm-action-lock-forward-save-buffer t)
+ * ¡Ö¼«Æ° save¡×¤ËÄñ¹³¤Ê¤¤Êý¤À¤±¤É¤¦¤¾
+ * ¼êÆ°¤Ç C-x s (̤Êݸ¥Ð¥Ã¥Õ¥¡¤¿¤Á¤ò save)¤Ê¤ê¤¹¤ëÊý¤¬ÀµÆ»¤«¤È
+ * ÊÝα¤ÎÉâÄÀÈÏ°Ï
+ (setq howm-todo-priority-defer-init -14) ;; ½é´üÃÍ = ²¼¸Â
+ (setq howm-todo-priority-defer-peak 0) ;; ¾å¸Â
+ * !+-~. ¤Î½ÜÅ٤Υ«¥¹¥¿¥Þ¥¤¥º
+ * Îã: ¥á¥Ë¥å¡¼¤Ç, ¡ÖÀøÉúÃæ¤ÏÈóɽ¼¨¡×¡ÖºÑ¤Ïɽ¼¨¡×
+ (setq howm-menu-todo-priority -50000)
+ (setq howm-todo-priority-done-bottom -44444)
+ * howm-todo-priority-normal-bottom Åù. ¥½¡¼¥¹(howm-reminder.el)»²¾È.
+
+* action-lock
+ * { } (¥È¥°¥ë¥¹¥¤¥Ã¥Á)¤ÎÊѹ¹
+ ;; howm ¤Î load Á°¤Ë
+ (setq action-lock-switch-default '("{ }" "{*}" "{-}")) ;; ²¿¸Ä¤Ç¤â
+ * {_} (̤½èÍý)¤ÎÊѹ¹
+ (setq howm-dtime-format "[%a %b %d %H:%M:%S %Y]") ;; {_}
+ (setq howm-template-date-format "[%Y-%m-%d %H:%M]") ;; ¥Æ¥ó¥×¥ì¡¼¥È
+ * ¡Öfile://¡Ä¡×¤ä¡Öhttp://¡Ä¡×¤ÎÊѹ¹ (¤Þ¤·¤ÊÀßÄêÊ罸)
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/945>))
+ ;; howm (Àµ³Î¤Ë¤Ï action-lock.el) ¤Î¥í¡¼¥É¤è¤êÁ°¤Ë.
+ ;; ¡¦file://¡Ä
+ (setq action-lock-open-regexp
+ "\\<file://\\(localhost\\)?\\([-!@#$%^&*()_+|=:~/?a-zA-Z0-9.,;]*[-!@#$%^&*()_+|=:~/?a-zA-Z0-9]+\\)\\>")
+ (setq action-lock-open-regexp-pos 2) ;; 2 ¸ÄÌܤΡÖ\\(¡Ä\\)¡×¤¬¥Õ¥¡¥¤¥ë̾
+ ;; ¡¦http://¡Ä
+ (setq action-lock-browse-regexp
+ "\\<\\([htp]\\{3,5\\}s?\\|ftp\\)://\\([-!@#$%^&*()_+|=:~/?a-zA-Z0-9.,;]*[-!@#$%^&*()_+|=:~/?a-zA-Z0-9]+\\)\\>"
+ (setq action-lock-browse-regexp-pos 0) ;; ¥Þ¥Ã¥Á¤·¤¿Á´ÂΤ¬ URL
+ * action-lock ÄɲÃÎã:
+ ¡ÖMessage-ID: ¡Ä¡×¤Ç¥ê¥¿¡¼¥ó²¡¤·¤¿¤é, ³ºÅö¥á¡¼¥ë¤ò namazu ¤Ç¸¡º÷
+ ;; howm ¤ò load ¤·¤¿¸å¤Ë
+ (defun my-howm-search-message-id (id)
+ (message "Searching...")
+ (let* ((query (format "+message-id:%s" id))
+ (args `("-l" "-n" "1" ,query "/home/hoge/NMZ/Mail"))
+ (found (car (howm-call-process "namazu" args))))
+ (if found
+ (progn
+ (find-file found)
+ (re-search-forward "^$" nil t)
+ (message "Done."))
+ (message "No match."))))
+ (setq action-lock-default-rules
+ (cons (action-lock-general 'my-howm-search-message-id
+ "Message-[Ii][Dd]: \\(.*\\)$"
+ 1)
+ action-lock-default-rules))
+
+* ¥á¥Ë¥å¡¼¤ò¹¹¿·¤¹¤ë¤¿¤Ó¤Ë, ¥«¥ì¥ó¥À¡¼¤Ø¤Î export ¤â¹¹¿· (¢ª((<³°Éô¥Ä¡¼¥ë>)))
+ (defun my-howm-menu-hook ()
+ (shell-command "tag2plan ~/howm/*/*/*.howm > ~/.dayplan_tag &")
+ (switch-to-buffer howm-menu-name))
+ (add-hook 'howm-menu-hook 'my-howm-menu-hook)
+
+* ((<RD|URL:http://www2.pos.to/~tosh/ruby/rdtool/ja/>))¤ò»È¤¦¾ì¹ç:
+ ((<"¹ÔƬ¤Î * ¤Ç¥¨¥ó¥È¥ê¤Î³«ÊĤ¬¤Ç¤¤ë¤è¤¦¤Ë"|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/237-238n>))
+
+* ¤ª¤Þ¤±
+ (setq howm-congrats-format
+ '(
+ "%s¥¥¿¨¬¨¬¨¬¨¬¨¬(¡¬¢Ï¡¬)¨¬¨¬¨¬¨¬¨¬!!!!"
+ "(¡¦¢Ï¡¦) %s!"
+ "¡Ê¡ë§¥¡ë)%s¡©"
+ "¡Ê¡¡¡_¡µ`¡Ë¡ã¡¡%s"
+ ;; ¡Ä°Ê²¼Î¬¡Ä
+ ))
+
+* ¤â¤Ã¤È¤¤¤í¤¤¤í¤¤¤¸¤ë¤Ë¤Ï, *.el ËÁƬ¤ò»²¾È
+
+= ¸Å¤¤»²¹Í¥ê¥ó¥¯
+
+* ((<Wiki|URL:http://c2.com/cgi/wiki>)):
+ web ¤Çï¤Ç¤âÊÔ½¸¡Ü¤ª¼ê·Ú¥ê¥ó¥¯¡Ü¤ª¼ê·Ú¥Õ¥©¡¼¥Þ¥Ã¥È
+ * ((<WikiModeDiscussion|URL:http://www.emacswiki.org/cgi-bin/wiki.pl/WikiModeDiscussion>))
+ (EmacsWiki): Emacs ¤Ç¤Î Wiki
+ * ((<RWiki-mode|URL:http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=rwiki-mode>))
+ (RWiki): RWiki ¤ò Emacs ¤«¤é»È¤¦°Æ
+ * ((<QP-Wiki|URL:http://pitecan.com/UnixMagazine/>))
+ (Áý°æ½ÓÇ·¤µ¤ó): PDA ¤Ç Wiki
+ * ((<HashedWiki|URL:http://www.google.com/search?q=hashedwiki>))
+ (SHIMADA Keiki ¤µ¤ó): ¥Ñ¥é¥°¥é¥Õ»Ø¸þ Wiki
+ * ((<ishinao ¤µ¤ó¤Î³Æ¼ï¥Ä¡¼¥ë|URL:http://ishinao.net/>)):
+ Wiki ¤Ë¤È¤é¤ï¤ì¤Ê¤¤¥¢¥¤¥Ç¥¢ËþºÜ
+ * ((<¡ÖÆüËÜȯ¤Î wiki ¥¯¥í¡¼¥ó¥ê¥¹¥È¡×|URL:http://www.yamdas.org/column/technique/clonelist.html>))
+ ((<¡Ö2¡×|URL:http://www.yamdas.org/column/technique/clonelist2.html>))
+ (yomoyomo ¤µ¤ó)
+* HyperCard: card ·¿ database Ū visual script ¸À¸ì´Ä¶???
+ * ((<¡ÖHyperCard¡×|URL:http://www.hyuki.com/yukiwiki/wiki.cgi?HyperCard>))
+ (YukiWiki)
+ * ((<¡ÖHyperCard¤Î¥ê¥¢¥ë¥¿¥¤¥àÀ¡×|URL:http://web.archive.org/web/20040111061953/http://mwave.sppd.ne.jp/wiki/pukiwiki.php?%5b%5bHyperCard%A4%CE%A5%EA%A5%A2%A5%EB%A5%BF%A5%A4%A5%E0%C0%AD%5d%5d>))
+ (SsPukiWiki)
+ * ((<¡Ö¥Ï¥¤¥Ñ¡¼¥«¡¼¥É¤Ç¤Ä¤¯¤ë¥ª¥Õ¥£¥¹¥·¥¹¥Æ¥à¡×|URL:http://www.kanzaki.com/hc/MacUser.html>))
+ (¿ÀºêÀµ±Ñ¤µ¤ó)
+* ¥á¥â¤È¤ê´Ä¶
+ * ʬÎऻ¤º, »þ´Ö½ç¤ÈÁ´Ê¸¸¡º÷¤Ç´ÉÍý
+ * ((<Q-Pocket|URL:http://pitecan.com/UnixMagazine/>))
+ (Áý°æ½ÓÇ·¤µ¤ó):
+ PDA ÈǤâ
+ * ChangeLog ¥á¥â
+ * ((<¡ÖUnix¤Î¥á¥âµ»½Ñ¡×|URL:http://namazu.org/~satoru/unimag/1/>))
+ (¹âÎÓů¤µ¤ó)
+ * ((<¡Ö»ä¤Î ChangeLog ¥á¥â³èÍÑË¡¡×|URL:http://nais.to/~yto/doc/zb/0016.html>))
+ (»³²¼Ã£Íº¤µ¤ó)
+ * ((<¡ÖChangeLog ¥á¥â¤ò»î¤·¤Æ¤ß¤è¤¦¡×|URL:http://pop-club.hp.infoseek.co.jp/emacs/changelog.html>))
+ (°ÂÂðÀµÇ·¤µ¤ó)
+ * ((<ä·ϡ¦Ä¶äÂ|URL:http://www.google.com/search?q=%E2%C0%8Cn+%92%B4%96%AA>))
+ (syo ¤µ¤ó): ChangeLog + Ìܼ¡¡¦Ê¤٤«¤¨¡¦hyper link ¤Ã¤Æ´¶¤¸?
+ * ¥¹¥¯¥é¥Ã¥×¥Ö¥Ã¥¯
+ * ((<Ⱦ 2001|URL:http://www.vector.co.jp/soft/win95/writing/se120325.html>))
+ (ÍìÀ¾°ì¼þ¤µ¤ó): ÄêÈÖ
+ * ((<WeBoX|URL:http://webox.sakura.ne.jp/software/webox/>))
+ (Ãæ¼Áï»Ë¤µ¤ó): ¤¹¤´¤¯¤¤¤¤¤é¤·¤¤
+ * ¤½¤Î¾¤Î Emacs Íѥġ¼¥ë
+ * ((<notes-mode|URL:http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/>))
+ (John Heidemann ¤µ¤ó):
+ link ¤ÎÊØÍø¤µ¤òÃΤê¤Þ¤·¤¿
+ * ((<notes-mode ¤È memo-mode ¤ÎÈæ³ÓÏÀ|URL:http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Programs/others/compare-notes-and-memo-mode.html>))
+ (À¾Ëܹ§»Ö¤µ¤ó)
+ * ((<memoma|URL:http://web.archive.org/web/20040803170229/http://www.jaist.ac.jp/~tetsu/memoma/memoma.html>))
+ (¸¶ÅÄů¼£¤µ¤ó): MH ·Á¼° ¢ª ¥á¡¼¥ë¥ê¡¼¥À¤Ç¤âÆɤá¤ë
+ * ((<Um4|URL:http://www.d4.dion.ne.jp/~usuda/emacs/index.html>))
+ (±±ÅÄÂó»Ë¤µ¤ó): ¤¤¤í¤¤¤íÊݸ¥á¥Ë¥å¡¼
+ * rd-memo
+ (ÀÛºî. ³«È¯½ªÎ» ¢ª ((<tar.gz|URL:http://howm.sourceforge.jp/a/rd-memo.tar.gz>)))
+ * ((<¡Ö¥³¥ó¥Ô¥å¡¼¥¿´Ä¶¤Ç¤Î¥á¥â¡×|URL:http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=%A5%B3%A5%F3%A5%D4%A5%E5%A1%BC%A5%BF%B4%C4%B6%AD%A4%C7%A4%CE%A5%E1%A5%E2>))
+ (Tosh¤µ¤ó): Wiki ¤ËÃíÌܤ·¤¿¤¤Ã¤«¤±
+ * howm ´ØÏ¢
+ * °Ü¿¢
+ * ((<howm-mode.vim|URL:http://sworddancer.funkyboy.jp/howm_vim/>))
+ (¼·Åç¸ù°ì¤µ¤ó)
+ ((<¡Ü¦Á|URL:http://www.google.com/search?q=vim+howm+%82%AD%82%D3%82%F1>)): vim ÈÇ
+ * ((<howm-wrap|URL:http://homepage3.nifty.com/~ko-ji/>))
+ (kimura ¤µ¤ó)¤È
+ ((<howm-helper|URL:http://www.geocities.co.jp/Milano-Cat/2067/howm-init.html>))
+ (deecay ¤µ¤ó): xyzzy ÈÇ
+ * ((<howm.mac|URL:http://mrm.seesaa.net/category/789739.html>))
+ (Mr.M ¤µ¤ó)
+ ((<¡Ü¦Á|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?HideMaru>)): ½¨´ÝÈÇ
+ * ÉâÄÀ¼° todo ¥ê¥¹¥È
+ * ((<wikilog|URL:http://web.archive.org/web/20040308005605/http://koten.hypermart.net/wikilog_rc01.l>))
+ (Gonza ¤µ¤ó): xyzzy ¥¨¥Ç¥£¥¿ÍѤÎ, Wiki + ChangeLog ¥á¥â
+ ¢ª ((<·Ð°Þ|URL:http://pc2.2ch.net/test/read.cgi/win/1053880433/n29-36>))
+ * ((<howm¼°TODO´ÉÍýWEB¥¢¥×¥ê|URL:http://web.archive.org/web/20060128122538/http://www.lyricfathom.com/pukiwiki/pukiwiki.php?howm%BC%B0TODO%B4%C9%CD%FDWEB%A5%A2%A5%D7%A5%EA>))
+ (°¾À¤ó): PHP ¤Ç¤Î¼ÂÁõ
+ * ((<wema|URL:http://wema.sourceforge.jp/>))
+ (¤Õ¤·¤Ï¤é¤«¤ó¤µ¤ó): ÉÕäµ¥Ù¡¼¥¹¤Î Wiki Ū¤Ê¤â¤Î.
+ ÉÕäµ¼«ÂΤ¬¾å²¼¤Ë°ÜÆ°. æ˹.
+ * ((<LesserWiki|URL:http://lesserwiki.org/>))
+ (yatsu¤µ¤ó): Ajax ¤Ê Wiki
+ * ((<Whem|URL:http://www.n314.com/whem/?action=ExecLogin&mail=guest>))
+ (Nishimura¤µ¤ó): WebÍÑ¥Þ¥ë¥Á¥æ¡¼¥¶¥á¥â¥Ä¡¼¥ë. goto/come-from ¥ê¥ó¥¯¤¢¤ê.
+* ¤ªµ¤¤Ë¤¤¤ê
+ * ((<memo-mode|URL:http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Programs/>))
+ (OSHIRO Naoki ¤µ¤ó): ²Õ¾ò½ñ¤»Ù±ç. ¤Ù¤¿¤Ü¤ì.
+ * ((<get-date|URL:http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Programs/>))
+ (OSHIRO Naoki ¤µ¤ó): º£Æü¤ÎÆüÉÕ¤òÈ¿¼ÍŪ¤ËÆþÎÏ. ¤Ù¤¿¤Ü¤ì.
+ * ((<migemo|URL:http://migemo.namazu.org/>))
+ (¹âÎÓů¤µ¤ó): ¥í¡¼¥Þ»ú¤òÆþ¤ì¤ë¤À¤±¤ÇÆüËܸì¤â¸¡º÷. °¦ÍÑ.
+ * ((<rdtool|URL:http://www.google.com/search?q=rdtool>))
+ (Tosh¤µ¤ó): ¤³¤Î README ¤Ç»È¤Ã¤Æ¤ë¥É¥¥å¥á¥ó¥È¥Õ¥©¡¼¥Þ¥Ã¥È. °¦ÍÑ.
+ * ((<elscreen|URL:http://www.morishima.net/~naoto/j/software/elscreen/>))
+ (Naoto Morishima¤µ¤ó): GNU screen ¤Î Emacs ÈÇ. °¦ÍÑ.
+
+=end
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>README.ja.rd</title>
+</head>
+<body>
+<h1><a name="label-0" id="label-0">howm (°ì¿Í¤ª¼ê·Ú Wiki ¤â¤É¤)</a></h1><!-- RDLabel: "howm (°ì¿Í¤ª¼ê·Ú Wiki ¤â¤É¤)" -->
+<p>$Id: README.ja.rd,v 1.337 2012-12-29 00:59:48 hira Exp $</p>
+<p>Emacs ¤ÇÃÇÊÒŪ¤Ê¥á¥â¤ò¤É¤ó¤É¤ó¤È¤ë¤¿¤á¤Î´Ä¶¤Ç¤¹.
+ʬÎൡǽ¤Ï¤¢¤¨¤Æ¤Ä¤±¤Þ¤»¤ó.
+¤«¤ï¤ê¤Ë, Á´Ê¸¸¡º÷¤È¥á¥â´Ö¥ê¥ó¥¯¤¬¼ê·Ú¤Ë¤Ç¤¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿.
+¼«Í³½ñ¼°¤Ê¤Î¤Ç²þ½¡¤âÉÔÍ× :-)</p>
+<h2><a name="label-1" id="label-1">Ìܼ¡</a></h2><!-- RDLabel: "Ìܼ¡" -->
+<ul>
+<li><a href="#label-2">»È¤¤Êý</a> ¡Ä
+ <a href="#label-3">¥á¥â¤ò½ñ¤³¤¦</a>¡¿<a href="#label-4">¥á¥â¤òÆɤ⤦</a>¡¿<a href="#label-5">¥ê¥Þ¥¤¥ó¥À</a></li>
+<li><a href="#label-6">ƳÆþË¡</a> ¡Ä
+ <a href="#label-7">¥¤¥ó¥¹¥È¡¼¥ë</a>¡¿<a href="#label-11">¥«¥¹¥¿¥Þ¥¤¥º</a>¡¿<a href="#label-12">³°Éô¥Ä¡¼¥ë</a></li>
+<li><a href="#label-13">¼ÂÁõ</a> ¡Ä
+ <a href="#label-14">¼ÂÁõ¤Ë¤Ä¤¤¤Æ</a>¡¿<a href="#label-15">Æ°¤¤Þ¤»¤ó¤è?</a></li>
+<li><a href="#label-16">È÷¹Í</a> ¡Ä
+ <a href="#label-17">»²¹Í</a>¡¿<a href="#label-18">¹¹¿·µÏ¿</a>¡¿<a href="#label-19">¥¢¥É¥ì¥¹</a></li>
+</ul>
+<h2><a name="label-2" id="label-2">»È¤¤Êý</a></h2><!-- RDLabel: "»È¤¤Êý" -->
+<ul>
+<li>¤¤¤í¤¤¤í¤¢¤ê¤¹¤®¤Æ²¿¤¬²¿¤ä¤é
+ ¢ª Àè¤Ë<a href="TUTORIAL.ja.rd">¥Á¥å¡¼¥È¥ê¥¢¥ë</a>¤ò¤É¤¦¤¾</li>
+<li>¼«Í³ÅÙ¤¢¤ê¤¹¤®¤Æ¤É¤¦»È¤¨¤Ð¤¤¤¤¤ä¤é
+ ¢ª <a href="index-j.html#hint">¤³¤ó¤Ê¤Õ¤¦¤Ë»È¤¨¤Þ¤¹</a></li>
+</ul>
+<h3><a name="label-3" id="label-3">¥á¥â¤ò½ñ¤³¤¦</a></h3><!-- RDLabel: "¥á¥â¤ò½ñ¤³¤¦" -->
+<p>(howm-mode)</p>
+<ul>
+<li>¼ê½ç
+<ul>
+<li>C-c , , (M-x howm-menu) ¤Ç¥á¥Ë¥å¡¼¤ò½Ð¤·,
+ [¿·µ¬] ¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó ¢ª ¡Öº£Æü¤Î¥á¥â¡×¤ò³«¤¯
+<ul>
+<li>¤Þ¤¿¤Ï, ľÀÜ C-c , c (M-x howm-create)</li>
+</ul></li>
+<li><p>¤³¤ó¤Ê¥Æ¥ó¥×¥ì¡¼¥È¤¬É½¼¨¤µ¤ì¤ë</p>
+<pre>= ¢£ ¢«(¥¿¥¤¥È¥ëÍó)
+[2002-09-16 20:08] >>> /home/hira/elisp/howm/howm-mode.el
+¢¬(ºîÀ®Æü & ¤½¤ÎÁ°¤Ë¸«¤Æ¤¿¥Õ¥¡¥¤¥ë)</pre>
+<ul>
+<li>¸«¤Æ¤¿¥Õ¥¡¥¤¥ë¤¬ÉÔÍפʤé, undo (C-x u ¤À¤« C-_ ¤À¤«) ¤Ç¾Ã¤¹</li>
+<li>¥Æ¥ó¥×¥ì¡¼¥È¼«ÂΤ¬ÉÔÍפʤé, ³¤±¤Æ¤â¤¦°ìÅÙ undo</li>
+</ul></li>
+<li>¹¥¤¤Ê¤³¤È¤ò¹¥¤¤Ê¤è¤¦¤Ë½ñ¤¯</li>
+<li>¤½¤ó¤À¤±.</li>
+</ul></li>
+<li>¥¿¥¤¥È¥ëÍó (1 ¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â)
+<ul>
+<li><p>¼¡¤Î¤è¤¦¤Ë½ñ¤¯¤È, foo ¤È bar ¤¬¥¿¥¤¥È¥ë</p>
+<pre>= foo
+(¡Ä ¤Û¤²¤Û¤² ¡Ä)
+= bar
+(¡Ä ¤Õ¤¬¤Õ¤¬ ¡Ä)</pre>
+<ul>
+<li>Ï¢·ëɽ¼¨¤Ç¤Ï, (¡Ä ¤Û¤²¤Û¤² ¡Ä) ¤ä (¡Ä ¤Õ¤¬¤Õ¤¬ ¡Ä) ¤¬¤Ò¤È¤«¤¿¤Þ¤ê</li>
+</ul></li>
+<li><p>Àµ³Î¤Ê½ñ¼°¤Ï,</p>
+<pre>(¹ÔƬ)=(¶õÇò)(¥¿¥¤¥È¥ë)(¹ÔËö)</pre>
+<ul>
+<li>½ñ¼°¤ÏÊѹ¹²Ä (¢ª<a href="#label-11">¥«¥¹¥¿¥Þ¥¤¥º</a>)</li>
+</ul></li>
+<li><p>¥¿¥¤¥È¥ë¤Ê¤·¤Ç, ñ¤Ë¥á¥â¤Î¶èÀÚ¤ê¤È¤·¤Æ»È¤¦¤À¤±¤Ç¤â OK</p>
+<pre>(¡Ä ¤Û¤²¤Û¤² ¡Ä)
+=
+(¡Ä ¤Õ¤¬¤Õ¤¬ ¡Ä)
+=
+(¡Ä ¤Ø¤í¤Ø¤í ¡Ä)</pre></li>
+</ul></li>
+<li>¼¡¤Î¤è¤¦¤Ë½ñ¤¯¤È¥ê¥ó¥¯
+<ul>
+<li><p>goto ¥ê¥ó¥¯: ¥Õ¥¡¥¤¥ë(¥Ç¥£¥ì¥¯¥È¥ê)̾ or ´Þ¤Þ¤ì¤ëʸ»úÎó</p>
+<pre>>>> ~/.emacs
+>>> /usr/src
+>>> ¤Û¤²¤Û¤²</pre>
+<ul>
+<li>ËÜʸÃæ¤Ë¡Ö¤Û¤²¤Û¤²¡×¤È¤¤¤¦Ê¸»úÎó¤ò´Þ¤à¥á¥â¤Ø¤Î¥ê¥ó¥¯</li>
+</ul></li>
+<li><p>come-from ¥ê¥ó¥¯: ¾¤Î¥á¥â¤Ç¡Ö¤Õ¤¬¤Õ¤¬¡×¤È¤¤¤¦Ê¸»úÎ󤬽ФƤ¤¿¤é,
+ ¤¼¤ó¤Ö¤³¤Î¥á¥â¤Ø¤Î¥ê¥ó¥¯¤Ë</p>
+<pre><<< ¤Õ¤¬¤Õ¤¬</pre>
+<ul>
+<li>»²¹Í
+ <a href="http://catb.org/~esr/jargon/html/C/COME-FROM.html">Jargon: COME-FROM</a></li>
+</ul></li>
+<li><p>Wiki É÷¥ê¥ó¥¯: goto ¤ÈƱ¤¸. ¤¿¤À¤·¡Ö<<< ¤Ø¤í¤Ø¤í¡×¤¬¤â¤·¤Ê¤±¤ì¤Ðºî¤ë.</p>
+<pre>[[¤Ø¤í¤Ø¤í]]</pre></li>
+</ul></li>
+<li>¥ê¥ó¥¯¤Ë¤Ï²¼Àþ¤¬°ú¤«¤ì¤ë. ²¼Àþ¤Ë¥«¡¼¥½¥ë»ý¤Ã¤Æ¤Ã¤Æ¥ê¥¿¡¼¥ó¥¡¼!
+<ul>
+<li>³ºÅö¥Õ¥¡¥¤¥ë¤Î°ìÍ÷¤¬É½¼¨¤µ¤ì¤ë (¢ª<a href="#label-4">¥á¥â¤òÆɤ⤦</a>)
+<ul>
+<li><p>¤¿¤È¤¨¤Ð, ¡Ö>>> emacs¡×¤Ê¤é¤³¤ó¤Ê°ìÍ÷</p>
+<pre><<< emacs ¢« ¤º¤Ð¤ê¤Î come-from Àë¸À¤ò¤·¤¿¥á¥â
+<<< emacs lisp ¢« ¡Öemacs¡×¤ò´Þ¤à come-from ¤òÀë¸À¤·¤¿¥á¥â
+<<< ¼«ºî emacs lisp
+grep, ruby, emacs ¤Î regexp ¤Î°ã¤¤ ¢« ËÜʸÃæ¤Ë¡Öemacs¡×¤ò´Þ¤à¥á¥â
+emacs ÍѸ¡º÷¥Ä¡¼¥ë?[2001-08-13] (¿·¤·¤¤½ç)
+¡Ä</pre></li>
+<li>Æɤߤ¿¤¤¥á¥â¤Ë¥«¡¼¥½¥ë¤¢¤ï¤»¤Æ¥ê¥¿¡¼¥ó¥¡¼!
+ ¢ª ¤½¤Î¥á¥â¤ò³«¤¯</li>
+</ul></li>
+<li>΢µ»
+<ul>
+<li>come-from ¥ê¥ó¥¯¤Î <<< ¾å¤Ç¥ê¥¿¡¼¥ó ¢ª ¡Ö´ØÏ¢¥¡¼¥ï¡¼¥É¡×¤Ø¤Î¥ê¥ó¥¯
+<ul>
+<li>Îã
+<ul>
+<li>¡Ö¼«ºî¡×¡Ölisp¡×¤¬ come-from ¥¡¼¥ï¡¼¥É¤Î¤È¤</li>
+<li>¡Ö<<< ¼«ºî¤Î lisp¡×¤Î¾å¤Ç¥ê¥¿¡¼¥ó
+ ¢ª ¡Ö¼«ºî¡×¡Ölisp¡×¤ò´Þ¤à¥¡¼¥ï¡¼¥É¤¬¥Ò¥Ã¥È</li>
+</ul></li>
+</ul></li>
+<li>¥á¥âÃæ¤Ë¡Ö<<< foo <<< bar <<< baz¡×¤È½ñ¤±¤Ð, ¡Öalias¡×
+<ul>
+<li>foo, bar, baz ¤Î¤É¤ì¤Ç¥ê¥¿¡¼¥ó¤òᤤ¤Æ¤â
+ ¡Öfoo ¤Þ¤¿¤Ï bar ¤Þ¤¿¤Ï baz¡×¤Î¸¡º÷¤Ë¤Ê¤ê¤Þ¤¹</li>
+<li>Tips: ¸ß¤¤¤Ë¤¿¤°¤ê¤¿¤¤¤±¤É alias ¤Çº®¤¼¤ë¤Î¤Ï·ù, ¤È¤¤¤¦¾ì¹ç¤Ë¤Ï¡Ä
+<ul>
+<li>¤É¤³¤«¤Ë¡Ö<<< foo¡×</li>
+<li>Ê̤Τɤ³¤«¤Ë¡Öfoo <<< bar¡×</li>
+<li>¤³¤¦¤¹¤ì¤Ð, foo¡¦bar ¤É¤Á¤é¤Ç¸¡º÷¤·¤Æ¤â¡Öfoo <<< bar¡×¤¬¾å°Ì¤Ë</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>¥ê¥ó¥¯¤Î¿¿Áê
+<ul>
+<li>¼Â¤Ïñ¤Ë, ¡Ögrep ¤Õ¤¬¤Õ¤¬¡×¤Î¥·¥ç¡¼¥È¥«¥Ã¥È¤À¤Ã¤¿¤ê</li>
+<li>come-from ¥ê¥ó¥¯¤Î¸ú²Ì
+<ul>
+<li>¤³¤Î¥¡¼¥ï¡¼¥É¤¬½Ð¤Æ¤¤¿¤é, ¼«Æ°Åª¤Ë¥ê¥ó¥¯(= ¸¡º÷)¤Ë¤·¤Æ¤¯¤ì</li>
+<li>¤½¤Î¥¡¼¥ï¡¼¥É¤ò¸¡º÷¤·¤¿¤È¤¤Ï, ÀèƬ¤Ëɽ¼¨¤·¤Æ¤¯¤ì</li>
+</ul></li>
+<li>come-from ¥ê¥ó¥¯¤Ï¡Ä
+<ul>
+<li>¤Ê¤¯¤Æ¤â¤è¤·</li>
+<li>1 ¤Ä¤Î¥á¥âÆâ¤Ë 2 ¸Ä 3 ¸Ä¤È¤¢¤Ã¤Æ¤â¤è¤·</li>
+<li>Ê̤Υá¥â¤ÈƱ¤¸¥¡¼¥ï¡¼¥É¤¬¤«¤Ö¤Ã¤Æ¤â¤è¤·</li>
+<li><p>¥¿¥¤¥È¥ë¤È·ó¤Í¤ë¤Ê¤é,</p>
+<pre>= <<< ¤Õ¤¬¤Õ¤¬</pre></li>
+</ul></li>
+<li>come-from, goto ¤È¤â, Âçʸ»ú¾®Ê¸»ú¤ò¶èÊÌ (¢ª<a href="#label-11">¥«¥¹¥¿¥Þ¥¤¥º</a>)</li>
+<li>½ñ¼°¤ÏÊѹ¹²Ä (¢ª<a href="#label-11">¥«¥¹¥¿¥Þ¥¤¥º</a>)</li>
+<li>°Ê²¼, come-from ¥ê¥ó¥¯¤Î¥¡¼¥ï¡¼¥É¤òñ¤Ë¡Ö¥¡¼¥ï¡¼¥É¡×¤Èɽµ</li>
+</ul></li>
+<li>action-lock
+<ul>
+<li>¼öʸ¤Î¾å¤Ç¥ê¥¿¡¼¥ó¥¡¼¤¿¤¿¤¯¤ÈËâˡȯư</li>
+<li>{ } ¤È½ñ¤¯¤È¡Ö¥È¥°¥ë¥¹¥¤¥Ã¥Á¡×.
+ ¤¿¤¿¤¯¤¿¤ó¤Ó¤Ë { } ¢ª {*} ¢ª {-} ¢ª { } ¢ª ¡Ä</li>
+<li>{_} ¤È½ñ¤¯¤È¡Ö̤½èÍý¡×.
+ ¤¿¤¿¤±¤Ð {_} ¢ª [2002-09-13 02:31]</li>
+<li>http://¡Ä ¢ª ¥Ö¥é¥¦¥¶µ¯Æ°
+<ul>
+<li><p>browse-url ¤ò»ÈÍÑ. ɬÍפʤéŬÅö¤ËÀßÄê.</p>
+<pre>(setq browse-url-browser-function 'browse-url-mozilla)</pre></li>
+</ul></li>
+<li>file://¡Ä ¢ª ¥Õ¥¡¥¤¥ë¤ò³«¤¯
+<ul>
+<li>C-u RET ¤Ê¤éÁë¤òʬ³ä¤·¤Æ³«¤¯</li>
+</ul></li>
+<li>[2002-10-18] ¤Î¤è¤¦¤ÊÆüÉÕ·Á¼°¤Î¾å¤Ç¥ê¥¿¡¼¥ó ¢ª minibuffer ¤Ç¡Ä
+<ul>
+<li>¤½¤Î¤Þ¤Þ¥ê¥¿¡¼¥ó ¢ª ¤½¤ÎÆüÉÕ¤ò¸¡º÷ (goto link)</li>
+<li>¡Ö+17¡× ¢ª 17 Æü¸å¤ÎÆüÉդ˽ñ¤¤«¤¨</li>
+<li>¡Ö20030921¡× ¢ª [2003-09-21] ¤Ë½ñ¤¤«¤¨
+<ul>
+<li>ǯ¤ä·î¤Ï¾Êά²Äǽ
+<ul>
+<li>¡Ö6¡× ¢ª [2002-10-06]</li>
+<li>¡Ö803¡× ¢ª [2002-08-03]</li>
+<li>¡Ö31103¡× ¢ª [2003-11-03]</li>
+</ul></li>
+</ul></li>
+<li>¡Ö~20031030¡× ¢ª ¤½¤Î¹Ô¤ÎÊ£À½¤ò [2003-10-30] ʬ¤Þ¤ÇÁÞÆþ
+<ul>
+<li>ǯ¤ä·î¤Ï¾Êά²Äǽ (¾å¤ÈƱÍÍ)</li>
+<li>¡ÖEvery?¡×¤ËÂФ·¤Æ
+<ul>
+<li>¤½¤Î¤Þ¤Þ¥ê¥¿¡¼¥ó ¢ª ËèÆü</li>
+<li>3 ¢ª 3Æü¤´¤È</li>
+<li>w ¢ª Ëè½µ</li>
+<li>m ¢ª Ëè·î</li>
+<li>y ¢ª Ëèǯ</li>
+</ul></li>
+</ul></li>
+<li>¡Ö.¡× ¢ª º£Æü¤ÎÆüÉդ˽ñ¤¤«¤¨</li>
+<li>¤Á¤Ê¤ß¤Ë, ¥á¥Ë¥å¡¼¤Î [Æü¢] ¤ÇÆüÉÕ·Á¼°¤òÆþÎϤǤ¤Þ¤¹</li>
+</ul></li>
+<li>¥ê¥ó¥¯¤â¤³¤Î¼öʸ¤Î°ì¼ï
+<ul>
+<li>¾¤Ë¤ª¤â¤·¤í¤¤¥¢¥¤¥Ç¥¢¤¢¤Ã¤¿¤é¶µ¤¨¤Æ¤¯¤À¤µ¤¤</li>
+</ul></li>
+</ul></li>
+<li>¥³¥Þ¥ó¥É (¡ú¤Ï howm-mode °Ê³°¤Ç¤â¾ï¤Ë͸ú)
+<ul>
+<li>C-c , , ¢ª ¥á¥Ë¥å¡¼¤ò³«¤¯ ¡ú</li>
+<li>¥á¥Ë¥å¡¼
+<ul>
+<li>¥¡¼
+<ul>
+<li>[space] ¤È [backspace] ¢ª ¥¹¥¯¥í¡¼¥ë</li>
+<li>TAB (M-TAB) ¢ª ¼¡(Á°)¤Î¹àÌܤØ</li>
+<li>[¡û¡û] ¤ä > ¤Î¾å¤Ç¥ê¥¿¡¼¥ó ¢ª ¼Â¹Ô (¥¸¥ã¥ó¥×)</li>
+<li>? ¢ª ¥Ø¥ë¥×</li>
+<li>q ¢ª æ½Ð</li>
+</ul></li>
+<li>¥Ü¥¿¥ó [¡û¡û] (¥³¥Þ¥ó¥É)
+<ul>
+<li>ºîÀ®
+<ul>
+<li>[®µ] (C-c , e) ¢ª ¤Ñ¤Ñ¤Ã¤È¥á¥â¤È¤ê (C-c C-c ¤ÇÊݸ) ¡ú</li>
+<li>[¿·µ¬] (C-c , c) ¢ª ¿·µ¬¥á¥âºîÀ® (¸½¥ê¡¼¥¸¥ç¥ó¤¬¥¿¥¤¥È¥ë) ¡ú</li>
+<li>[Ê£À½] (C-c , D) ¢ª ¸½¥á¥â¤òÊ£À½ (½»½êÏ¿¥Æ¥ó¥×¥ì¡¼¥È¤Ê¤É¤ÎÍÑÅÓ¤òÁÛÄê)</li>
+</ul></li>
+<li>°ìÍ÷
+<ul>
+<li>[°ìÍ÷] (C-c , a) ¢ª Á´¥á¥â¤Î°ìÍ÷ ¡ú</li>
+<li>[ºÇ¶á] (C-c , l) ¢ª ºÇ¶á¤Î¥á¥â¤ÎÏ¢·ëɽ¼¨ ¡ú
+<ul>
+<li>(C-u 20 C-c , l) ¢ª ºÇ¶á 20 Æüʬ¤Î°ìÍ÷</li>
+</ul></li>
+<li>[Á°¸å] (C-c , A) ¢ª Á°¸å¤Î¥á¥â (¸«¤Æ¤¿¥á¥â¤òÃæ¿´¤ËÁ´¥á¥â¤ÎÆüÉÕ½ç°ìÍ÷)
+<ul>
+<li>Âоݥե¡¥¤¥ë¤ò(ÊÔ½¸¥â¡¼¥É¤Ç)³«¤¤¤¿¾õÂÖ¤«¤é¥á¥Ë¥å¡¼¤ò¸Æ¤Ö¤³¤È</li>
+</ul></li>
+<li>[ÍúÎò] (C-c , h) ¢ª ¸¡º÷ÍúÎò ¡ú</li>
+<li>[ͽÄê] (C-c , y) ¢ª ͽÄêɽ: <a href="#label-5">¥ê¥Þ¥¤¥ó¥À</a>»²¾È ¡ú</li>
+<li>[Todo] (C-c , t) ¢ª todo °ìÍ÷: <a href="#label-5">¥ê¥Þ¥¤¥ó¥À</a>»²¾È ¡ú</li>
+<li>[Á´¥Ð] (C-c , b) ¢ª ¥Ð¥Ã¥Õ¥¡°ìÍ÷ ¡ú</li>
+<li>[mark] (C-c , x) ¢ª ¥Ð¥Ã¥Õ¥¡Æâ¤Î¥Þ¡¼¥¯°ÌÃÖ°ìÍ÷ ¡ú</li>
+</ul></li>
+<li>¸¡º÷
+<ul>
+<li>[Àµµ¬] (C-c , g) ¢ª Àµµ¬É½¸½¤Î¸¡º÷ ¡ú
+<ul>
+<li>´ðËÜŪ¤Ë¤ÏÂçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ʤ·
+<ul>
+<li>¡ÖWiki¡×¤Î¤è¤¦¤ËÌÀ¼¨Åª¤ËÂçʸ»ú¤ò»ØÄꤷ¤¿¤È¤¤Ï¶èÊÌ</li>
+</ul></li>
+</ul></li>
+<li>[¸ÇÄê] (C-c , s) ¢ª ¥¡¼¥ï¡¼¥É¤òÊä´°ÆþÎϤ·¤Æ¸ÇÄêʸ»úÎó¤Î¸¡º÷ ¡ú
+<ul>
+<li>C-u C-c , g ¤ä C-u C-c , m ¤Ç¤â</li>
+</ul></li>
+<li>[roma] (C-c , m) ¢ª ¥í¡¼¥Þ»ú¸¡º÷ (migemo) ¡ú</li>
+<li>[º£Æü] (C-c , .) ¢ª º£Æü¤Î¥á¥â ¡ú
+<ul>
+<li>(C-u 20 C-c , .) ¢ª 20 ÆüÁ°¤Î¥á¥â</li>
+</ul></li>
+<li>[ºòÆü] (C-c , :) ¢ª ºòÆü¤Î¥á¥â ¡ú
+<ul>
+<li>(C-u 20 C-c , :) ¢ª 20 ÆüÁ°¤Î¥á¥â</li>
+</ul></li>
+<li>[¥ÐÆâ] (C-c , o) ¢ª ¥Ð¥Ã¥Õ¥¡Æâ¤òÀµµ¬É½¸½¸¡º÷ ¡ú</li>
+</ul></li>
+<li>ÊÔ½¸: Âоݥե¡¥¤¥ë¤ò(ÊÔ½¸¥â¡¼¥É¤Ç)³«¤¤¤¿¾õÂÖ¤«¤é¥á¥Ë¥å¡¼¤ò¸Æ¤Ö¤³¤È
+<ul>
+<li>[¹¹¿·] (C-c , r) ¢ª ²¼Àþ¤ò°ú¤¤Ê¤ª¤¹</li>
+<li>[¸°¢] (C-c , i) ¢ª ¥¡¼¥ï¡¼¥É¤òÊä´°ÆþÎϤ·¤ÆŽ¤ê¤Ä¤± ¡ú
+<ul>
+<li>Tips: M-v ¤Ç¸õÊä°ìÍ÷¤Ë°Ü¤Ã¤Æ migemo ¸¡º÷¤¹¤ë¤È³Ú</li>
+</ul></li>
+<li>[Æü¢] (C-c , d) ¢ª º£Æü¤ÎÆüÉÕ [yyyy-mm-dd] ¤òŽ¤ê¤Ä¤± ¡ú</li>
+<li>[»þ¢] (C-c , T) ¢ª º£Æü¤ÎÆü»þ [yyyy-mm-dd HH:MM] ¤òŽ¤ê¤Ä¤± ¡ú</li>
+<li>[Âꢬ] (C-c , K) ¢ª ¸½¥á¥â¤Î¥¿¥¤¥È¥ë¤ò kill ring ¤Ø (C-y ¤ÇŽ¤ê¤Ä¤±) ¡ú
+<ul>
+<li>¥¿¥¤¥È¥ë¤¬¤ß¤Ä¤«¤é¤Ê¤«¤Ã¤¿¤È¤¤Ï¥Õ¥¡¥¤¥ë̾</li>
+</ul></li>
+<li>[̾¢¬] (C-u C-c , K) ¢ª ¥Õ¥¡¥¤¥ë̾¤ò kill ring ¤Ø ¡ú</li>
+</ul></li>
+<li>ÆÃÊÌ
+<ul>
+<li>[menu ¹¹¿·] (R) ¢ª ¥á¥Ë¥å¡¼¤ÎͽÄêɽ¤Ê¤É¤ò¹¹¿·</li>
+<li>[menu ÊÔ½¸] ¢ª ¥á¥Ë¥å¡¼¤òÊÔ½¸</li>
+<li>[Á´¾Ã] (C-c , Q) ¢ª howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¾Ã¤¹ (̤Êݸ¤Ï½ü¤¯) ¡ú</li>
+<li>[¿ìÊâ] (C-c , w) ¢ª ¥é¥ó¥À¥à¤Ë¥ê¥ó¥¯¤ò¤¿¤É¤Ã¤Æ¼«Æ°±ÜÍ÷. C-g ¤ÇÄä»ß. ¡ú</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>¤½¤Î¾
+<ul>
+<li>[return] ¢ª ¥ê¥ó¥¯¾å¤Ê¤é³ºÅö¥Õ¥¡¥¤¥ë¤ò³«¤¯. ¤µ¤â¤Ê¤¯¤Ð²þ¹Ô.</li>
+<li>°ÜÆ°
+<ul>
+<li>C-c , n ¢ª ¼¡¤Î¥ê¥ó¥¯¤Ø</li>
+<li>C-c , p ¢ª Á°¤Î¥ê¥ó¥¯¤Ø</li>
+<li>°ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Î¤È¤¡Ä
+<ul>
+<li>C-c , N ¢ª ¼¡¤Î¥á¥â¤Ø</li>
+<li>C-c , P ¢ª Á°¤Î¥á¥â¤Ø</li>
+<li>C-c , H ¢ª ºÇ½é¤Î¥á¥â¤Ø</li>
+<li>C-c , L ¢ª ºÇ¸å¤Î¥á¥â¤Ø</li>
+</ul></li>
+</ul></li>
+<li>¿·µ¬¥á¥â
+<ul>
+<li>C-c , C ¢ª ¤¤¤Þ³«¤¤¤Æ¤ë¥Õ¥¡¥¤¥ë¤ËÄɲÃ
+<ul>
+<li>¥á¥Ë¥å¡¼¤Ë [ÄɲÃ] ¤È½ñ¤¯¤È, ¤³¤ÎÆ°ºî¤Î¥Ü¥¿¥ó.
+ ±Ñ¸ì¥á¥Ë¥å¡¼¤Ê¤é [Add].</li>
+</ul></li>
+<li>C-c , I ¢ª ¥Õ¥¡¥¤¥ë̾¤ò¼êÆ°¤Ç (Èó¿ä¾©)
+<ul>
+<li>C-u C-c , I ¤Ê¤é, ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ë</li>
+</ul></li>
+</ul></li>
+<li>narrow (1 ¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Î¤È¤)
+<ul>
+<li>M-x howm-narrow-to-memo ¢ª Á°¸å¤Î¥á¥â¤ò±£¤¹. Ì᤹¤Ë¤Ï M-x widen</li>
+<li>M-x howm-toggle-narrow ¢ª ¡Ö±£¤¹¡×¡Ö¸«¤»¤ë¡×¤ò¥È¥°¥ë</li>
+</ul></li>
+<li>C-c , SPC ¢ª howm ¤Ê¥Ð¥Ã¥Õ¥¡¤È howm ¤Ç¤Ê¤¤¥Ð¥Ã¥Õ¥¡¤È¤òÀÚ¤êÂؤ¨ ¡ú</li>
+<li>M-x howm-show-buffer-as-howm ¢ª ¸½¥Ð¥Ã¥Õ¥¡¤Î¥³¥Ô¡¼¤ò howm-mode ¤Çɽ¼¨ ¡ú
+<ul>
+<li>¼ûÍ×ÉÔÌÀ¤Ê¤Î¤ÇÍͻҸ«[2003-09-29]</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul>
+<h3><a name="label-4" id="label-4">¥á¥â¤òÆɤ⤦</a></h3><!-- RDLabel: "¥á¥â¤òÆɤ⤦" -->
+<p>(°ìÍ÷¥â¡¼¥É)</p>
+<ul>
+<li>¥³¥Þ¥ó¥É(ºÆ·Ç)
+<ul>
+<li>C-c , , (M-x howm-menu) ¢ª ¥á¥Ë¥å¡¼</li>
+<li>C-c , a (M-x howm-list-all) ¢ª Á´¥á¥â°ìÍ÷</li>
+<li>C-c , g (M-x howm-list-grep) ¢ª Á´¥á¥â¸¡º÷ (Àµµ¬É½¸½)</li>
+<li>C-c , s (M-x howm-list-grep-fixed) ¢ª Á´¥á¥â¸¡º÷ (¸ÇÄꥡ¼¥ï¡¼¥É)</li>
+</ul></li>
+<li>¸¡º÷¤ä¥ê¥ó¥¯¥¸¥ã¥ó¥×¤ò¤¹¤ë¤È, °ìÍ÷¥â¡¼¥É
+<ul>
+<li>¥Ç¥Õ¥©¥ë¥È¤Ï°ìÍ÷ɽ¼¨
+<ul>
+<li>°ìÍ÷¥Ð¥Ã¥Õ¥¡ + ÆâÍƥХåե¡</li>
+<li>¥«¡¼¥½¥ë°ÌÃ֤Υá¥â¤ÎÆâÍƤ¬É½¼¨¤µ¤ì¤ë</li>
+</ul></li>
+<li>Ï¢·ëɽ¼¨¤â¤Ç¤¤ë
+<ul>
+<li>@ ¤ÇÏ¢·ëɽ¼¨. ¤â¤¦°ìÅÙ @ ¤Ç°ìÍ÷ɽ¼¨¤ËÌá¤ë.</li>
+<li>¥Ò¥Ã¥È¤·¤¿¥á¥â¤ÎÆâÍƤò¤¼¤ó¤Ö¤Ä¤Ê¤²¤Æɽ¼¨
+<ul>
+<li>ÃÇÊÒŪ¤Ê¥á¥â¤ò¤É¤ó¤É¤ó½ñ¤¯ ¢ª ¤Ä¤Ê¤²¤ÆÆɤà</li>
+</ul></li>
+<li>[tab] ¤È [alt]-[tab] ¤Ç¼¡/Á°¤Î¥á¥â¤Ø</li>
+<li>Tips: ¥á¥â¤òõ¤¹¤È¤, ¸¡º÷¤Ç¤¢¤ëÄøÅÙ¤·¤Ü¤ê¤³¤ó¤À¤é,
+ Ï¢·ëɽ¼¨¤·¤Æ migemo ¸¡º÷¤¹¤ë¤È³Ú</li>
+</ul></li>
+<li>°ìÍ÷ɽ¼¨¤Ç
+<ul>
+<li>0 ¢ª Ï¢·ëɽ¼¨¤Î¥È¥°¥ë (@ ¤ÈƱ¤¸)</li>
+<li>1 ¢ª ÆâÍƥХåե¡¤ò¾Ã¤¹</li>
+<li>2 ¢ª ÆâÍƥХåե¡¤ò½Ð¤¹</li>
+<li>v ¢ª ÆâÍƥХåե¡¤ò¥È¥°¥ë</li>
+<li>TAB, M-TAB ¢ª ¼¡¡¦Á°¤Î¥Õ¥¡¥¤¥ë¤Ø</li>
+<li>T ¢ª ¥¿¥¤¥È¥ëɽ¼¨¤ò¥È¥°¥ë</li>
+</ul></li>
+<li>¤É¤Á¤é¤Îɽ¼¨¤Ç¤â
+<ul>
+<li>n ¤È p ¢ª ¾å²¼</li>
+<li>[space] ¤È [backspace] ¢ª ¥¹¥¯¥í¡¼¥ë</li>
+<li>j ¤È k ¢ª °ì¹Ô¥¹¥¯¥í¡¼¥ë</li>
+<li>[return] ¢ª ¥«¡¼¥½¥ë°ÌÃ֤Υá¥â¤ò³«¤¯
+<ul>
+<li>C-u ¤·¤Æ [return] ¢ª ¥á¥â¤ò³«¤¤¤Æ°ìÍ÷¤ò¾Ã¤¹</li>
+</ul></li>
+<li>X ¢ª Dired-X ¤òµ¯Æ° (²þ̾¡¦ºï½ü¤Ê¤É¤Î¥Õ¥¡¥¤¥ëÁàºî)
+<ul>
+<li><p>Dired-X ¤Î»È¤¤Êý¤Ï, info dired-x Åù¤ò»²¾È</p>
+<pre>v ¢ª Ãæ¿È¤ò¸«¤ë (q ¢ª Ìá¤ë)
+d ¢ª ¡Ö¾Ã¤¹¤¾¡×¥Þ¡¼¥¯
+x ¢ª ¥Þ¡¼¥¯¤·¤¿¥Õ¥¡¥¤¥ë¤¿¤Á¤òËÜÅö¤Ë¾Ã¤¹</pre></li>
+</ul></li>
+<li>? ¢ª ¥Ø¥ë¥×</li>
+<li>q ¢ª æ½Ð</li>
+</ul></li>
+</ul></li>
+<li>¥½¡¼¥È
+<ul>
+<li>S ¢ª ²¿¤Ç¥½¡¼¥È¤¹¤ë¤«Ê¹¤¤¤Æ¤¯¤ë (Êä´°ÆþÎÏ)
+<ul>
+<li>name: ¥Õ¥¡¥¤¥ë̾</li>
+<li>name-match: »ØÄꤷ¤¿¥Õ¥¡¥¤¥ë̾¤ò¾å°Ì¤Ë°Ü¤¹</li>
+<li>date: ºîÀ®Æü</li>
+<li>mtime: ¹¹¿·»þ¹ï</li>
+<li>summary: °ì¹Ôɽ¼¨¤Îʸ»úÎó</li>
+<li>summary-match: »ØÄꤷ¤¿Àµµ¬É½¸½¤ò°ì¹Ôɽ¼¨¤«¤é¸¡º÷¤·¤Æ, ¾å°Ì¤Ë°Ü¤¹</li>
+<li>summary-match-string: Ʊ¾å + ¥Þ¥Ã¥Á¤·¤¿Ê¸»úÎó½ç¤Ë¥½¡¼¥È</li>
+<li>random: ¥é¥ó¥À¥à¥·¥ã¥Ã¥Õ¥ë</li>
+<li>reminder: ¥ê¥Þ¥¤¥ó¥À½ç</li>
+<li>numerical-name: ¥Õ¥¡¥¤¥ë̾ (¿ô»ú½ç. ¥á¡¼¥ë¤Î¥½¡¼¥È¤òÁÛÄê)</li>
+<li>reverse: ¸½É½¼¨¤ÎµÕ½ç</li>
+</ul></li>
+<li>C-u S ¤Ê¤é¥Ç¥Õ¥©¥ë¥È¤ÎµÕ½ç</li>
+<li>R ¢ª reverse</li>
+</ul></li>
+<li>¹Ê¤ê¤³¤ß (and ¸¡º÷)
+<ul>
+<li>f ¢ª ²¿¤Ç¹Ê¤ê¤³¤à¤«Ê¹¤¤¤Æ¤¯¤ë (Êä´°ÆþÎÏ)
+<ul>
+<li>name: ¥Õ¥¡¥¤¥ë̾</li>
+<li>date: ºîÀ®Æü</li>
+<li>mtime: ¹¹¿·»þ¹ï</li>
+<li>summary: °ì¹Ôɽ¼¨¤Îʸ»úÎó</li>
+<li>contents: ÆâÍÆ</li>
+<li>reminder: ¥ê¥Þ¥¤¥ó¥À¤ÎÆüÉÕÈÏ°Ï</li>
+<li>Region: Îΰè</li>
+<li>Around: ¥«¡¼¥½¥ë°ÌÃ֤μþÊÕ
+<ul>
+<li>C-u 7 f ¢ª Around ¤Ê¤é, Á°¸å 7 ¤Ä</li>
+</ul></li>
+<li>uniq: Ʊ¤¸¥Õ¥¡¥¤¥ëÃæ¤Ç²¿²Õ½ê¥Ò¥Ã¥È¤·¤Æ¤â, ºÇ½é¤Î°ì²Õ½ê¤À¤±É½¼¨</li>
+</ul></li>
+<li>C-u f ¤Ê¤é, ¥Þ¥Ã¥Á¤·¤¿¤â¤Î¤ò¼è¤ê½ü¤¯</li>
+<li>G ¢ª contents</li>
+<li>u ¢ª uniq</li>
+</ul></li>
+<li>howm-mode ¤È¶¦ÄÌ
+<ul>
+<li>l ¢ª Á´¥á¥â¤Î°ìÍ÷</li>
+<li>g ¢ª ¸¡º÷ (grep)
+<ul>
+<li>C-u g ¢ª ¥¡¼¥ï¡¼¥É¤òÊä´°ÆþÎϤ·¤Æ¸¡º÷</li>
+</ul></li>
+<li>m ¢ª ¥í¡¼¥Þ»ú¸¡º÷ (migemo)
+<ul>
+<li>C-u m ¢ª C-u g ¤ÈƱ¤¸</li>
+</ul></li>
+<li>c ¢ª ¿·µ¬¥Õ¥¡¥¤¥ëºîÀ® (¸½¥ê¡¼¥¸¥ç¥ó¤¬¥¿¥¤¥È¥ë)</li>
+<li>Q ¢ª howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¾Ã¤¹ (̤Êݸ¤Ï½ü¤¯)</li>
+</ul></li>
+<li>¤½¤Î¾
+<ul>
+<li>°ìÍ÷ɽ¼¨¤Ç ! ¢ª shell ¤Ç¥³¥Þ¥ó¥É¼Â¹Ô
+<ul>
+<li>¥á¥â¤ò¼ê¤Ã¼è¤êÁ᤯¼Î¤Æ¤¿¤±¤ì¤Ð, ¤³¤ì¤Ç mv ¤Ê¤ê rm ¤Ê¤ê¤·¤Æ¤¯¤À¤µ¤¤</li>
+<li>2 ²óÌܤ«¤é¤Ï¾®¸¤·¤¤µóÆ°¤ò¤·¤Þ¤¹ :-)</li>
+</ul></li>
+<li>>>> hoge.png ¤Ê¤é³°Éô viewer ¤Ç²èÁü¤ò³«¤¯
+<ul>
+<li>ÀßÄê¤Ï<a href="#label-11">¥«¥¹¥¿¥Þ¥¤¥º</a>»²¾È</li>
+</ul></li>
+</ul></li>
+</ul>
+<h3><a name="label-5" id="label-5">¥ê¥Þ¥¤¥ó¥À</a></h3><!-- RDLabel: "¥ê¥Þ¥¤¥ó¥À" -->
+<p>(ͽÄêɽ¡¦todo)</p>
+<ul>
+<li>µ¡Ç½
+<ul>
+<li><p>¥á¥âÃæ¤Ë</p>
+<pre>[2002-10-20]+ ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦</pre>
+<p>¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¤ª¤¯¤È, °ìÍ÷¤Ç¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹</p>
+<ul>
+<li>C-c , y ¢ª ͽÄêɽ
+<ul>
+<li>. ¢ª º£Æü¤Ø</li>
+</ul></li>
+<li>C-c , t ¢ª todo °ìÍ÷
+<ul>
+<li>°ìÍ÷Ãæ¤Î¾å²¼¤É¤Î°ÌÃÖ¤Ëɽ¼¨¤µ¤ì¤ë¤«¤Ï, ÆüÉդȼïÎष¤À¤¤</li>
+</ul></li>
+</ul></li>
+<li>¡ÖºÇ¶á¤ÎͽÄê¡×¤È¡Ötodo ËÁƬ¡×¤Ï¥á¥Ë¥å¡¼¤Ë¤âɽ¼¨¤µ¤ì¤Þ¤¹
+ (¤³¤È¤¢¤ë¤´¤È¤Ë¤Á¤é¤Ã¤È¸«¤¨¤ë¤Î¤¬½ÅÍפ«¤È)
+<ul>
+<li>¥á¥Ë¥å¡¼¤Ç¤Ï, ¹ÔƬ¤Î¡Ö>¡×¾å¤Ç RET ¤ò᤯¤È¥á¥â¤ËÈô¤Ó¤Þ¤¹
+ (¤½¤ì°Ê³°¤Î°ÌÃ֤Ǥâ, ²¼Àþ¤¬¤Ê¤¤½ê¤Ê¤éƱÍÍ)</li>
+</ul></li>
+<li>¥«¥ì¥ó¥À¡¼¥½¥Õ¥È plan ¤Ø¤Î export ¤â²Äǽ (¢ª<a href="#label-12">³°Éô¥Ä¡¼¥ë</a>)</li>
+</ul></li>
+<li>½ñ¼°
+<ul>
+<li><p>³Ð½ñ (-)</p>
+<pre>[2002-10-20]- ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦</pre>
+<ul>
+<li>»ØÄêÆü¤ËÉ⤤¢¤¬¤ê, °Ê¸å¤Ï½ù¡¹¤ËÄÀ¤à</li>
+<li>»ØÄêÆü¤Þ¤Ç¤ÏÄì¤ËÀøÉú</li>
+<li><p>ÄÀ¤à¤Î¤òÃÙ¤¯¤¹¤ë¤Ë¤Ï, ͱͽÆü¿ô¤Ç»ØÄê(¥Ç¥Õ¥©¥ë¥È 1 Æü)</p>
+<pre>[2002-10-20]-14 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦ ¢ª 14 Æü´Ö¤°¤é¤¤¤Ïµ¤¤Ë¤«¤±¤è¤¦</pre></li>
+</ul></li>
+<li><p>todo (+)</p>
+<pre>[2002-10-20]+ ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤦¤Ù¤·</pre>
+<ul>
+<li>»ØÄêÆü¤«¤é, ½ù¡¹¤ËÉ⤤¢¤¬¤Ã¤Æ¤¯¤ë</li>
+<li>»ØÄêÆü¤Þ¤Ç¤ÏÄì¤ËÀøÉú</li>
+<li><p>É⤤¢¤¬¤ë®¤µ¤Ï, ͱͽÆü¿ô¤Ç»ØÄê(¥Ç¥Õ¥©¥ë¥È 7 Æü)</p>
+<pre>[2002-10-20]+14 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤦¤Ù¤· ¢ª 14 Æü´Ö¤°¤é¤¤¤Î¤¦¤Á¤Ë</pre></li>
+</ul></li>
+<li><p>¡ºÀÚ (!)</p>
+<pre>[2002-10-20]! ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± ¡ºÀÚ</pre>
+<ul>
+<li>»ØÄêÆü¤¬¶á¤Å¤¯¤È, É⤤¢¤¬¤Ã¤Æ¤¯¤ë</li>
+<li>»ØÄêÆü°Ê¹ß¤Ï, °ìÈÖ¾å¤ËÉ⤤äѤʤ·</li>
+<li><p>²¿ÆüÁ°¤«¤éÉ⤤Ϥ¸¤á¤ë¤«¤Ï, ͱͽÆü¿ô¤Ç»ØÄê(¥Ç¥Õ¥©¥ë¥È 7 Æü)</p>
+<pre>[2002-10-20]!14 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± ¡ºÀÚ ¢ª 14 ÆüÁ°¤°¤é¤¤¤«¤é¤Ü¤Á¤Ü¤Á</pre></li>
+<li>ͽÄêɽ(¸å½Ò)¤Ë¤âɽ¼¨</li>
+</ul></li>
+<li><p>ÊÝα (~)</p>
+<pre>[2002-10-20]~ ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦¤«</pre>
+<ul>
+<li>»ØÄêÆü¤«¤é, Éâ¤ÄÀ¤ß¤ò¤¯¤ê¤«¤¨¤¹</li>
+<li>»ØÄêÆü¤Þ¤Ç¤ÏÄì¤ËÀøÉú</li>
+<li><p>²¿Æü¼þ´ü¤ÇÉâ¤ÄÀ¤ß¤¹¤ë¤«¤Ï, ͱͽÆü¿ô¤Ç»ØÄê(¥Ç¥Õ¥©¥ë¥È 30 Æü)</p>
+<pre>[2002-10-20]!14 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦¤« ¢ª 14 Æü¼þ´ü</pre></li>
+</ul></li>
+<li><p>ͽÄê (@)</p>
+<pre>[2002-10-20]@ ¥Ï¥¤¥¦¥§¥¤ÏÇÀ±</pre>
+<ul>
+<li>todo °ìÍ÷¤Ç¤Ï¤Ê¤¯, ͽÄêɽ¤Ëɽ¼¨</li>
+</ul></li>
+<li><p>ºÑ (.)</p>
+<pre>[2002-10-20]. ¥Ï¥¤¥¦¥§¥¤ÏÇÀ±</pre>
+<ul>
+<li>¾ï¤ËÄì</li>
+</ul></li>
+</ul></li>
+<li>action-lock
+<ul>
+<li><p>Îã</p>
+<pre>[2002-10-20]+9 ¤Û¤²¤Û¤²</pre>
+<p>¤Î¡Ö+9¡×¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¤¿¤¿¤¯¤È, ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ë¥á¥Ë¥å¡¼¤¬½Ð¤Æ¡Ä</p>
+<ul>
+<li><p>¤½¤Î¤Þ¤Þ¥ê¥¿¡¼¥ó ¢ª ¡ÖºÑ¡×</p>
+<pre>[2002-10-20]. [2002-10-20]:+9 ¤Û¤²¤Û¤²</pre></li>
+<li><p>x ¤òÆþÎÏ ¢ª ¡Öcancel¡×</p>
+<pre>[2002-10-20]. cancel [2002-10-20]:+9 ¤Û¤²¤Û¤²</pre></li>
+<li><p>- ¤òÆþÎÏ ¢ª ¼ïÎà¤ò³Ð½ñ¤ËÊѹ¹</p>
+<pre>[2002-10-20]-9 ¤Û¤²¤Û¤²</pre></li>
+<li><p>14 ¤òÆþÎÏ ¢ª ͱͽÆü¿ô¤ò 14 Æü¤ËÊѹ¹</p>
+<pre>[2002-10-20]+14 ¤Û¤²¤Û¤²</pre></li>
+</ul></li>
+<li>¥á¥Ë¥å¡¼¡¦Í½Äêɽ¡¦todo °ìÍ÷¤«¤é¤âľÀÜᤱ¤Þ¤¹</li>
+</ul></li>
+<li>Tips (»ä¤Î»È¤¤Êý)
+<ul>
+<li>¡Ötodo¡×¤ä¡Ö¡ºÀڡפÏËÜÅö¤ËɬÍפʤâ¤Î¤À¤±
+<ul>
+<li>¤½¤ì°Ê³°¤Ï¡Ö³Ð½ñ¡×¤ÇÄÀ¤à¤Ë¤Þ¤«¤»¤ë (¤É¤¦¤»Á´Éô¤Ï¤Ç¤¤Þ¤»¤ó :p)</li>
+<li><p>¸å¤í¤á¤¿¤±¤ì¤Ð, ͱͽÆü¿ô¤ÎŤ¤¡Ö³Ð½ñ¡×¤Ë</p>
+<pre>[2002-11-10]-10 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ±</pre></li>
+</ul></li>
+<li><p>¶ÛµÞ¤Ç¤Ï¤Ê¤¤¤¬½ÅÍפʤ³¤È</p>
+<pre>[2002-11-10]-999 ¡ü¥Ï¥¤¥¦¥§¥¤ÏÇÀ±</pre></li>
+<li><p>ÌÜΩ¤¿¤»¤¿¤¤¤³¤È</p>
+<pre>[2002-11-10]! ¡ú¡ú¥Ï¥¤¥¦¥§¥¤ÏÇÀ±</pre></li>
+</ul></li>
+</ul>
+<h2><a name="label-6" id="label-6">ƳÆþË¡</a></h2><!-- RDLabel: "ƳÆþË¡" -->
+<h3><a name="label-7" id="label-7">¥¤¥ó¥¹¥È¡¼¥ë</a></h3><!-- RDLabel: "¥¤¥ó¥¹¥È¡¼¥ë" -->
+<h4><a name="label-8" id="label-8">¼«Æ°¥¤¥ó¥¹¥È¡¼¥ë¤Î¾ì¹ç</a></h4><!-- RDLabel: "¼«Æ°¥¤¥ó¥¹¥È¡¼¥ë¤Î¾ì¹ç" -->
+<ul>
+<li>¥¤¥ó¥¹¥È¡¼¥ë
+<ul>
+<li>./configure ¤·¤Æ make ¤·¤Æ, root ¤Ë¤Ê¤Ã¤Æ make install
+<ul>
+<li>*.el, *.elc ¤Ï /usr/share/emacs/site-lisp/howm/ ¤Ë</li>
+<li>doc/, ext/ ¤Ï /usr/local/share/howm/ ¤Ë</li>
+</ul></li>
+<li><p>xemacs ¤Î¾ì¹ç</p>
+<pre>./configure --with-xemacs</pre>
+<ul>
+<li>*.el, *.elc ¤Ï /usr/lib/xemacs/site-lisp/howm/ ¤Ë</li>
+</ul></li>
+<li><p>¥¤¥ó¥¹¥È¡¼¥ëÀè¤ÎÊѹ¹Îã</p>
+<pre>./configure --with-howmdir=$HOME/elisp --prefix=$HOME</pre>
+<ul>
+<li>*.el, *.elc ¤Ï ~/elisp/ ¤Ë</li>
+<li>doc/, ext/ ¤Ï ~/share/howm/ ¤Ë</li>
+</ul></li>
+<li>¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤Ï ./configure --help ¤ò»²¾È</li>
+</ul></li>
+<li>ÀßÄê
+<ul>
+<li>~/.emacs (.emacs.el ¤«¤â)¤ËÄɲÃ
+<ul>
+<li><p>case 1: emacs µ¯Æ°»þ¤ËÆɤ߹þ¤à</p>
+<pre>(setq howm-menu-lang 'ja)
+(require 'howm)</pre></li>
+<li><p>case 2: ¤Ï¤¸¤á¤Æ C-c , , ¤·¤¿»þ¤ËÆɤ߹þ¤à</p>
+<pre>(setq howm-menu-lang 'ja)
+(global-set-key "\C-c,," 'howm-menu)
+(autoload 'howm-menu "howm" "Hitori Otegaru Wiki Modoki" t)</pre></li>
+<li><p>¤¤¤º¤ì¤â, ¤â¤·¡ÖCannot open load file¡×¤È¤«¥¨¥é¡¼¤¬½Ð¤ë¤Ê¤é,
+ ¾åµ¤ÎÁ°¤Ë¤³¤ì¤òÄɲÃ</p>
+<pre>(add-to-list 'load-path "/usr/share/emacs/site-lisp/howm/")</pre></li>
+</ul></li>
+<li>~/howm/ ¤ÎºîÀ®¤ä¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤ÏÉÔÍפǤ¹
+ (¥á¥Ë¥å¡¼µ¯Æ°»þ¤Ë¼«Æ°ºîÀ®)</li>
+</ul></li>
+</ul>
+<h4><a name="label-9" id="label-9">¼êÆ°¥¤¥ó¥¹¥È¡¼¥ë¤Î¾ì¹ç</a></h4><!-- RDLabel: "¼êÆ°¥¤¥ó¥¹¥È¡¼¥ë¤Î¾ì¹ç" -->
+<ul>
+<li>*.el ¤òŬÅö¤Ê¾ì½ê¤ËÃÖ¤¯ (Îã: ~/elisp/howm)
+<ul>
+<li>~/.emacs (.emacs.el ¤«¤â)¤Ë
+<ul>
+<li><p>ÃÖ¤¾ì¤Ë±þ¤¸¤Æ, ¢¤Î¤è¤¦¤Ëµ½Ò</p>
+<pre>(add-to-list 'load-path "~/elisp/howm/")</pre></li>
+<li>¤µ¤é¤Ë, <a href="#label-8">¼«Æ°¥¤¥ó¥¹¥È¡¼¥ë¤Î¾ì¹ç</a>¤ÈƱÍͤε½Ò¤òÄɲÃ</li>
+</ul></li>
+<li><p>¤ª¹¥¤ß¤Ç, ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë</p>
+<pre>cd ~/elisp/howm
+\emacs -batch -q --no-site-file --eval '(progn (add-to-list (quote load-path) ".") (byte-recompile-directory "." 0))'</pre></li>
+</ul></li>
+</ul>
+<h4><a name="label-10" id="label-10">¥¤¥ó¥¹¥È¡¼¥ë¤ÎÊäÂ</a></h4><!-- RDLabel: "¥¤¥ó¥¹¥È¡¼¥ë¤ÎÊäÂ" -->
+<ul>
+<li><p>¤ª¹¥¤ß¤Ç, ~/.emacs ¤ËÀßÄê¤òÄɲà (¢ª<a href="#label-11">¥«¥¹¥¿¥Þ¥¤¥º</a>)</p>
+<pre>;; ÀßÄêÎã
+(define-key global-map [katakana] 'howm-menu) ; [¥«¥¿¥«¥Ê] ¥¡¼¤Ç¥á¥Ë¥å¡¼
+(setq howm-file-name-format "%Y/%m/%Y_%m_%d.txt") ; 1 Æü 1 ¥Õ¥¡¥¤¥ë
+(setq howm-keyword-case-fold-search t) ; <<< ¤ÇÂçʸ»ú¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤
+(setq howm-list-title nil) ; °ìÍ÷»þ¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨¤·¤Ê¤¤
+(setq howm-menu-refresh-after-save nil) ; save »þ¤Ë¥á¥Ë¥å¡¼¤ò¼«Æ°¹¹¿·¤»¤º
+(setq howm-refresh-after-save nil) ; save »þ¤Ë²¼Àþ¤ò°ú¤Ä¾¤µ¤Ê¤¤
+(setq howm-menu-expiry-hours 2) ; ¥á¥Ë¥å¡¼¤ò 2 »þ´Ö¥¥ã¥Ã¥·¥å</pre></li>
+<li>¤Ê¤ª, ¥¡¼¥ï¡¼¥É°ìÍ÷¤Ï ~/.howm-keys ¤ËµÏ¿¤µ¤ì¤ë
+<ul>
+<li>Ëü°ì²õ¤ì¤Æ¤â, ºÆ¹½ÃۤϴÊñ. Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤˱þ¤¸¤Æ¡Ä
+<ul>
+<li><p>¶èÊ̤¹¤ë¾ì¹ç</p>
+<pre>find ~/howm -name '*.txt' -print | xargs ruby -ne '$_ =~ /<<<\s+(.+)$/ and puts $1.split(/\s*<<<\s*/).join "\t"' | sort -u > ~/.howm-keys</pre></li>
+<li><p>¶èÊ̤·¤Ê¤¤¾ì¹ç</p>
+<pre>find ~/howm -name '*.txt' -print | xargs ruby -ne '$_ =~ /<<<\s+(.+)$/ and puts $1.downcase.split(/\s*<<<\s*/).join "\t"' | sort -u > ~/.howm-keys</pre></li>
+</ul></li>
+</ul></li>
+<li>Ãí°Õ
+<ul>
+<li>GNU Emacs °Ê³°¤Î¾ì¹ç:
+ »ä¤Ï¤è¤¯¤ï¤«¤é¤Ê¤¤¤Î¤Ç, ¸¡º÷¤·¤Æ¤¯¤À¤µ¤¤
+<ul>
+<li>meadow:
+ <a href="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=meadowmemo%20edition">ÀßÄêºÑ¤ß Meadow</a>
+ ¤Ê¤éºÇ½é¤«¤é»È¤¨¤Þ¤¹
+<ul>
+<li>cygwin + grep »ÈÍѤΤȤ¤Ï,
+ ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤È¥³¥Þ¥ó¥É¤ò¥É¥é¥¤¥Ö¥ì¥¿¡¼¤«¤é»ØÄꤹ¤ë.
+<ul>
+<li><p>~/.emacs(.emacs.el ¤«¤â) ¤Ç¢¤Î¤è¤¦¤Ë</p>
+<pre>(setq howm-directory "c:/cygwin/home/howm/")</pre></li>
+<li>cygwin ¤«¤é¸«¤¿ / ¤È emacs ¤«¤é¸«¤¿ / ¤¬¿©¤¤°ã¤¦¤È¤«¤¤¤¦ÏÃ.</li>
+</ul></li>
+</ul></li>
+<li>xemacs:
+<ul>
+<li><p>font-lock ¤Î¥á¥Ã¥»¡¼¥¸¤òÍÞÀ©¤¹¤ë¤È®¤¯¤Ê¤ë¤½¤¦.
+ thx > <a href="http://eron.info/k/diary/">³Þ¸¶¤µ¤ó</a></p>
+<pre>(setq font-lock-verbose nil)</pre></li>
+</ul></li>
+<li>Linux Zaurus:
+ <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus">Wiki</a>
+ ¤ò»²¾È¤¯¤À¤µ¤¤.
+ thx > <a href="http://www.bookshelf.jp/2ch/unix/1063800495.html">100</a></li>
+</ul></li>
+<li>SKK ¤ò»È¤¦¾ì¹ç
+<ul>
+<li><p>.emacs ¤Ë°Ê²¼¤ò½ñ¤¤¤Æ¤ª¤«¤Ê¤¤¤È, Dired-X ¤Ë C-x C-j ¤òÃ¥¤ï¤ì¤Þ¤¹</p>
+<pre>(setq dired-bind-jump nil)</pre></li>
+</ul></li>
+<li>viper-mode ¤ò»È¤¦¾ì¹ç
+<ul>
+<li>viper-mode ¤è¤êÀè¤Ë howm-mode ¤ò¥í¡¼¥É¤·¤Æ¤ª¤¯
+<ul>
+<li>post-command-hook ¤Ë°¤µ¤¹¤ë??</li>
+</ul></li>
+</ul></li>
+<li>¥³¥ó¥½¡¼¥ë (emacs -nw) ¤Î¾ì¹ç
+<ul>
+<li><p>²¼Àþ¤¬É½¼¨¤µ¤ì¤Ê¤¤Ã¼Ëö¤Ê¤é</p>
+<pre>(set-face-foreground 'action-lock-face "blue") ;; ²¼Àþ¤Î¤«¤ï¤ê¤Ë¿§¤Ä¤±</pre></li>
+</ul></li>
+<li><a href="http://www.ruby-lang.org/ja/man/html/RD.html">RD</a>¤ò»È¤¦¾ì¹ç
+<ul>
+<li><<< ¤¬ RD ¤Î include ¤È¤«¤Ö¤ë</li>
+<li>ÂкöÎã
+<ul>
+<li>include ¤Ï»È¤ï¤Ê¤¤. ¹Ô¤Î¤Ï¤¸¤á¤Ë <<< ¤ò½ñ¤«¤Ê¤¤¤è¤¦Ãí°Õ¤¹¤ë.</li>
+<li>include ¤Ï»È¤ï¤Ê¤¤. rd2 ¤ò¤«¤±¤ëÁ°¤Ë howm2 -type=rd ¤òÄ̤¹.</li>
+<li><p>¥ê¥ó¥¯µ¹æ¤òÊѹ¹¤¹¤ë</p>
+<pre>;; Îã: .emacs (howm ¥í¡¼¥É¤è¤êÁ°)¤Ë
+(setq howm-ref-header "==>") ; goto ¥ê¥ó¥¯
+(setq howm-keyword-header "<==") ; come-from ¥ê¥ó¥¯</pre></li>
+<li><a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ExternalTool">¢ª howm wiki ¤Î¡ÖÊ»Íѥġ¼¥ë¡×</a>¤â»²¾È</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>µìÈǤ«¤é¤Î°Ü¹Ô (ɬ¤º¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¤È¤Ã¤Æ¤«¤é!) ¢ª <a href="OLD.rd"><URL:OLD.rd></a>
+<ul>
+<li>¿·¤¿¤Ë make install ¤·¤Æ¤â, ¸Ä¿Í¤Î¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤¹¹¿·¤Ï¤·¤Þ¤»¤ó.
+ ɬÍפʤé, ¥á¥Ë¥å¡¼¤ò¼«Ê¬¤ÇÊÔ½¸¤¹¤ë¤«,
+ ja/0000-00-00-000000.txt ¤ò¼«Ê¬¤Ç¥³¥Ô¡¼¤¹¤ë¤«¤·¤Æ¤¯¤À¤µ¤¤.</li>
+</ul></li>
+</ul>
+<h3><a name="label-11" id="label-11">¥«¥¹¥¿¥Þ¥¤¥º</a></h3><!-- RDLabel: "¥«¥¹¥¿¥Þ¥¤¥º" -->
+<p>´ðËÜŪ¤Ë¤Ï M-x customize ¢ª [Applications] ¢ª [Howm] ¤Ç.
+¤Ô¤ó¤È¤³¤Ê¤¤¹àÌܤâ, [Show] ¤Ç¤¢¤ê¤¬¤Á¤Ê´ûÄêÃͤ«¤éÁªÂò²Äǽ.</p>
+<p>¤½¤³¤Ë¤Ê¤¤ÀßÄê¤Ë¤Ä¤¤¤Æ¤Ï, ~/.emacs (~/.emacs.el ¤«¤â)¤Ø, °Ê²¼¤Î¤è¤¦¤ËľÀܽñ¤¯.
+(¤â¤Ã¤ÈÌÖÍåŪ¤À¤¬¸Å¤¤²òÀâ¤Ï, <a href="OLD.rd"><URL:OLD.rd></a>¤ò»²¾È)</p>
+<ul>
+<li>¿§
+<ul>
+<li><p>howm ´ØÏ¢¤ÎÁ´¥Ð¥Ã¥Õ¥¡¤Ë¶¦Ä̤ο§ÀßÄê</p>
+<pre>;; ¡Ö¤Û¤²¡×¤È¡Ö[¤Õ¤¬]¡×¤ËÃ忧
+;; ¡¦ÀßÄêË¡¤Î¾ÜºÙ¤Ï, ÊÑ¿ô font-lock-keywords ¤Î¥Ø¥ë¥×¤ò»²¾È
+;; ¡¦face ¤Î°ìÍ÷¤Ï M-x list-faces-display
+(setq howm-user-font-lock-keywords
+ '(
+ ("¤Û¤²" . (0 'highlight prepend))
+ ("\\[¤Õ¤¬\\]" . (0 'font-lock-doc-face prepend))
+ ))</pre>
+<ul>
+<li>todo ¤äͽÄê¤Î¿§¤ï¤±¤Ë¤Ç¤â»È¤Ã¤Æ¤Ï¤¤¤«¤¬¤«¤È.</li>
+</ul></li>
+<li><p>ÆâÍƥХåե¡¤Ë rd-mode ¤Ê¿§¤ò¤Ä¤±¤ë</p>
+<pre>;; rd-mode.el ¤¬Æɤ߹þ¤Þ¤ì¤Æ¤¤¤ë¤È¤¤¤¦Á°Äó¤Ç
+(setq howm-view-contents-font-lock-keywords rd-font-lock-keywords)</pre></li>
+</ul></li>
+<li>ÊØÍø¥¡¼
+<ul>
+<li><p>¡Ö¥«¥¿¥«¥Ê¡×¤Ç¥á¥Ë¥å¡¼, ¡ÖCtrl-¥«¥¿¥«¥Ê¡×¤Ç¿·µ¬¥á¥â</p>
+<pre>(define-key global-map [katakana] 'howm-menu)
+(define-key global-map [(control katakana)] 'howm-create)</pre></li>
+<li><p>[tab]([alt]-[tab])¤Ç¼¡(Á°)¤Î¥ê¥ó¥¯¤Ë°ÜÆ°</p>
+<pre>(define-key howm-mode-map [tab] 'action-lock-goto-next-link)
+(define-key howm-mode-map [(meta tab)] 'action-lock-goto-previous-link)</pre>
+<ul>
+<li>ËÜÍè¤Î tab ¤Ï C-i ¤Ç</li>
+</ul></li>
+</ul></li>
+<li>Êݸ¾ì½ê
+<ul>
+<li><p>¥á¥âÃÖ¤¾ì/ǯ/ǯ·îÆü-»þʬÉÃ.txt ¤Ë</p>
+<pre>(setq howm-file-name-format "%Y/%Y%m%d-%H%M%S.txt")</pre>
+<ul>
+<li>¥Õ¥¡¥¤¥ë̾¼«ÂΤËǯ·îÆü¤¬Æþ¤Ã¤Æ¤¤¤Ê¤¤¤È, filter-by-date ¤¬µ¡Ç½¤·¤Ê¤¤</li>
+</ul></li>
+<li><p>1 Æü 1 ¥Õ¥¡¥¤¥ë (¥á¥âÃÖ¤¾ì/ǯ/·î/ǯ_·î_Æü.txt ¤Ë)</p>
+<pre>(setq howm-file-name-format "%Y/%m/%Y_%m_%d.txt")</pre>
+<ul>
+<li>ÉÔ´°Á´¤ÊÅÀ¤¬¤¢¤ê¤Þ¤¹. ²æËý¤Ç¤¤ë¿Í¤À¤±¤É¤¦¤¾
+<ul>
+<li>¥á¥âñ°Ì¤Ç¤¢¤ë¤Ù¤½èÍý¤Î°ìÉô¤¬¥Õ¥¡¥¤¥ëñ°Ì¤Ë
+ (¥¿¥¤¥È¥ëɽ¼¨, ¹¹¿·½ç°ìÍ÷, ÆâÍƤǤιʤꤳ¤ß, uniq)</li>
+</ul></li>
+</ul></li>
+<li><p>¥¡¼¥ï¡¼¥É°ìÍ÷¤ò ~/howm/.howm-keys ¤ËÃÖ¤¯</p>
+<pre>(setq howm-keyword-file "~/howm/.howm-keys") ;; ¥Ç¥Õ¥©¥ë¥È¤Ï ~/.howm-keys</pre>
+<ul>
+<li>¤³¤¦¤·¤Æ¤ª¤±¤Ð, °ã¤¦¥Þ¥·¥ó¤Ç¤â ~/howm/ °Ê²¼¤Î¥³¥Ô¡¼¤À¤±¤ÇºÑ¤à.</li>
+<li>¤¹¤Ç¤Ë½ñ¤¤¤¿¥á¥â¤¬¤¢¤ë¤Ê¤é, mv ~/.howm-keys ~/howm/ ¤ò¤·¤Æ¤ª¤¯¤«,
+ ºÆ¹½ÃÛ¤¹¤ë(¢ª<a href="#label-7">¥¤¥ó¥¹¥È¡¼¥ë</a>).</li>
+<li>¥Ç¥á¥ê¥Ã¥È: ¸¡º÷¤¬ÃÙ¤¯¤Ê¤ë? (Âδ¶¤Ç¤¤ë¤Û¤É¤«¤Ï, ¤ä¤Ã¤Æ¤ß¤Ê¤¤¤ÈÉÔÌÀ)</li>
+</ul></li>
+</ul></li>
+<li>°ìÍ÷
+<ul>
+<li><p>°ìÍ÷¤Ç¡Ö!¡×¤·¤¿¤È¤¤Î½é´ü¥³¥Þ¥ó¥É¤òÊѹ¹</p>
+<pre>(setq howm-view-summary-shell-last-file "_FILE_")
+(setq howm-view-summary-shell-hist
+ '("mv _FILE_ ~/gomi" "touch _FILE_" "ls -l _FILE_"))</pre>
+<ul>
+<li>½é´ü¥³¥Þ¥ó¥É¤Ï¡Ömv ¥Õ¥¡¥¤¥ë̾ ~/gomi¡×</li>
+<li>M-p ²¡¤·¤Æ¤¤¤¯¤È, ¡Ötouch ¥Õ¥¡¥¤¥ë̾¡×¤ä¡Öls -l ¥Õ¥¡¥¤¥ë̾¡×</li>
+</ul></li>
+<li><p>°ìÍ÷¥Ð¥Ã¥Õ¥¡¤Î¿§¤Ä¤±Îã</p>
+<pre>(setq howm-view-summary-font-lock-keywords '(("^2003" . 'highlight)))</pre></li>
+</ul></li>
+<li>¥á¥Ë¥å¡¼
+<ul>
+<li>¥á¥Ë¥å¡¼¤ÎÊѹ¹
+<ul>
+<li>¥á¥Ë¥å¡¼¤ò³«¤¤¤Æ [menu ÊÔ½¸] ¾å¤Ç¥ê¥¿¡¼¥ó ¢ª ¼«Í³¤ËÊÔ½¸</li>
+<li>¤è¤¯³«¤¯¥á¥â¤Ø¤Î goto ¥ê¥ó¥¯¤Ê¤É¤ò½ñ¤¤¤Æ¤ª¤±¤ÐÊØÍø¤«¤È</li>
+</ul></li>
+<li>¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤Ë¡Ö%recent¡×¤ä¡Ö%random¡×¤È½ñ¤¯¤È,
+ ¡ÖºÇ¶á¤Î¥á¥â¡×¤ä¡Ö¥é¥ó¥À¥à¤ËÁª¤ó¤À¥á¥â¡×¤Î¥¿¥¤¥È¥ë°ìÍ÷
+<ul>
+<li><p>¥«¥¹¥¿¥Þ¥¤¥º</p>
+<pre>(setq howm-menu-recent-num 20) ;; ɽ¼¨¤¹¤ë¸Ä¿ô</pre></li>
+</ul></li>
+<li>¥á¥Ë¥å¡¼Ãæ¤ËÊÑ¿ô¤ä´Ø¿ô¤ÎÃͤòɽ¼¨
+<ul>
+<li>¥á¥Ë¥å¡¼Ãæ¤Ë¤³¤¦½ñ¤¯¤È¡Ä
+<ul>
+<li>%here%foo ¢ª foo ¤ÎÃͤòɽ¼¨</li>
+<li>%here%(foo 3) ¢ª (foo '3) ¤Î·ë²Ì¤òɽ¼¨
+<ul>
+<li>Îã: %here%(howm-menu-search "¤Û¤²") ¢ª ¡Ö¤Û¤²¡×¤Î¸¡º÷·ë²Ì¤òËä¤á¹þ¤ß</li>
+<li><p>¤¿¤À¤·, ÅÐÏ¿¤·¤¿´Ø¿ô¤·¤«»È¤¨¤Þ¤»¤ó (¤ª¤Ã¤«¤Ê¤¤¤«¤é)</p>
+<pre>(setq howm-menu-allow
+ (append '(foo bar) howm-menu-allow)) ;; foo ¤È bar ¤òµö²Ä</pre></li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li><p>¥á¥Ë¥å¡¼¤ò¥á¥â°·¤¤¤·¤Ê¤¤ (¥á¥â°ìÍ÷¡¦¸¡º÷¤ÎÂоݳ°¤Ë)</p>
+<pre>;; mv ~/howm/0000-00-00-000000.txt ~/hoge/fuga/menu.txt ¤·¤È¤¤¤Æ¡Ä
+(setq howm-menu-file "~/hoge/fuga/menu.txt")</pre></li>
+<li><p>%reminder ¤Î»ÅÀÚ¤êÎã</p>
+<pre>(setq howm-menu-reminder-separators
+ '(
+ (-1 . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬º£Æü¢¢¬Ä¶²á¨¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ (0 . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬Í½Äꢨ¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ (3 . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬¤â¤Ã¤ÈÀ袢¬3Æü¸å¤Þ¤Ç¨¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ (nil . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬todo¢¨¬¨¬¨¬¨¬¨¬¨¬¨¬") ;ͽÄê¤Ètodo¤Î¶
+ ))</pre></li>
+</ul></li>
+<li>¤â¤Ã¤È·Ú¤¯ (cf. <a href="http://pitecan.com/fugo.html">ÉÙ¹ëŪ¥×¥í¥°¥é¥ß¥ó¥°</a>)
+<ul>
+<li>¾å½Ò¤Î M-x customize ¤Ç [Howm Efficiency] ¤ò»²¾È</li>
+<li>ÆäË, Ëܵ¤¤Ç»È¤¦¤Ë¤Ï howm-view-use-grep ¤ÎÀßÄê¤ò¤ª¤¹¤¹¤á¤·¤Þ¤¹
+<ul>
+<li><p>grep »ÈÍÑ»þ¤Î coding system »ØÄê</p>
+<pre>(setq howm-process-coding-system 'euc-japan-unix) ;; Æɤ߽ñ¤¶¦ÄÌ
+(setq howm-process-coding-system '(utf-8-unix . sjis-unix)) ;; (ÆÉ.½ñ)</pre></li>
+</ul></li>
+<li><p>Tips: gc-cons-threshold ¤ÎÃͤòÁý¤ä¤¹¤È®¤¯¤Ê¤ë¾ì¹ç¤¬¤¢¤ë.
+ ref > <a href="http://www.bookshelf.jp/2ch/unix/1077881095.html">220,234-236</a></p>
+<pre>(setq gc-cons-threshold (* 4000 10000))</pre></li>
+<li>Tips: grep-2.5 ¤Ç¤Ï, ´Ä¶ÊÑ¿ô LANG ¤ò C ¤Ë¤·¤Æ¤ª¤¯¤È,
+ ¥Þ¥ë¥Á¥Ð¥¤¥ÈÂбþ¤¬¥ª¥Õ¤Ë¤Ê¤Ã¤Æ®¤¯¤Ê¤ë
+ <a href="http://search.luky.org/vine-users.5/msg06363.html">ref</a></li>
+</ul></li>
+<li>¸¡º÷
+<ul>
+<li>Âоݥǥ£¥ì¥¯¥È¥ê¤ÎÄɲÃ
+<ul>
+<li><p>Á´Ê¸¸¡º÷¤Î¤È¤, ¥á¥â¤Ë²Ã¤¨¤Æ»ØÄê¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤âºÆµ¢Åª¤Ëõ¤¹</p>
+<pre>(setq howm-search-path '("~/Mail" "~/News"))
+(setq howm-search-other-dir t) ;; ²¼µ¤Î¥È¥°¥ë¤Î½é´üÃÍ (t ¤« nil)</pre></li>
+<li>M-x howm-toggle-search-other-dir ¤Ç,
+ ¾åµ¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷Âоݤˤ¹¤ë¤«¤·¤Ê¤¤¤«¥È¥°¥ë
+<ul>
+<li>¥¡¼¥Ð¥¤¥ó¥É¤·¤¿¤±¤ì¤Ð³Æ¼«¤Ç (¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹ÌϺ÷Ãæ¤Ë¤Ä¤¡Ä)</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>̤Êݸ¤À¤í¤¦¤È°ÑºÙ¹½¤ï¤º, howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¶¯À©ºï½ü¤¹¤ë¥³¥Þ¥ó¥É
+ (¤ª¤¹¤¹¤á¤·¤Þ¤»¤ó. »È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤.)
+<ul>
+<li>C-u C-c , Q</li>
+<li>¥á¥Ë¥å¡¼¤Ë½ñ¤¯¤Ê¤é [¶¯À©Á´¾Ã]</li>
+<li><p>ʪÁû¤Ê¤Î¤Ç, ¢¤ò½ñ¤¤¤È¤«¤Ê¤¤¤È̵¸ú</p>
+<pre>(setq howm-kill-all-enable-force t)</pre></li>
+</ul></li>
+<li>¥Æ¥ó¥×¥ì¡¼¥È¤ÎÊѹ¹Îã
+<ul>
+<li><p>¤³¤ó¤Ê¤Õ¤¦¤Ë</p>
+<pre>Subject: ¥¿¥¤¥È¥ë¥Ð¡¼¤Ë»þ·×¤òɽ¼¨ ¢«Ä¾Á°¤Î¥ê¡¼¥¸¥ç¥ó¤ÎÆâÍÆ
+Date: Thu, 12 Sep 2002 15:45:59 +0900
+In-Reply-To: </home/hira/sawfish/rich-title/rich-title.jl> ¢«Ä¾Á°¥Õ¥¡¥¤¥ë
+
+¢£ ¢« ¥«¡¼¥½¥ë</pre>
+<ul>
+<li><p>~/.emacs ¤Ë</p>
+<pre>(setq howm-template "Subject: %title\nDate: %date\n%file\n%cursor")
+(setq howm-template-date-format "%a, %d %b %Y %H:%M:%S %z")
+(setq howm-template-file-format "In-Reply-To: <%s>\n")</pre></li>
+</ul></li>
+<li><p>¥Æ¥ó¥×¥ì¡¼¥È¤òÊ£¿ô»ØÄê</p>
+<pre>;; C-u 2 C-c , c ¢ª 2 ÈÖÌܤΥƥó¥×¥ì¡¼¥È¤Ç¿·µ¬¥á¥â
+;; ¥á¥Ë¥å¡¼¤«¤é C-u 2 c ¤Ç¤âƱÍÍ
+(setq howm-template
+ '("= %title%cursor\n%date %file\n\n" "%date: %title%cursor"))</pre>
+<ul>
+<li>¤Ä¤¤¤Ç¤Ë, howm-template ¤ÎÃͤ¬´Ø¿ô¤Ê¤é
+ ¡Öuniversal-argument ¤ÈľÁ°¤Î¥Ð¥Ã¥Õ¥¡¤ò°ú¿ô¤Ë¤·¤Æ¤½¤¤¤Ä¤ò¸Æ¤Ö¡×
+ ¤Ã¤Æ¤¤¤¦¤Î¤â»Å¹þ¤ß¤Þ¤·¤¿</li>
+</ul></li>
+</ul></li>
+<li>½ñ¼°¤ÎÊѹ¹Îã (howm-*.el ¤Î load ¤è¤êÁ°¤Ë)
+<ul>
+<li><p>¥¿¥¤¥È¥ë(¥á¥â¶èÀÚ¤ê) @@@ ¡Ä</p>
+<pre>(setq howm-view-title-header "@@@")</pre></li>
+<li><p>goto ¥ê¥ó¥¯ ==>¡Ä, come-from ¥ê¥ó¥¯ <==¡Ä</p>
+<pre>(setq howm-ref-header "==>")
+(setq howm-keyword-header "<==")</pre></li>
+<li><p>goto ¥ê¥ó¥¯ ((¡ã¡Ä¡ä)), come-from ¥ê¥ó¥¯ ((¡§¡Ä¡§))</p>
+<pre>;; ¡ã¡ä¡§¤ÏȾ³Ñ¤Ëľ¤·¤Æ¤¯¤À¤µ¤¤
+(setq howm-ref-regexp "((¡ã\\([^¡ä\r\n]+\\)¡ä))")
+(setq howm-ref-regexp-pos 1)
+(setq howm-keyword-format "((¡§%s¡§))")
+(setq howm-keyword-regexp "\\(((¡§\\)\\([^¡§\r\n]+\\)¡§))")
+(setq howm-keyword-regexp-hilit-pos 1) ;; ¡Ö´ØÏ¢¥¡¼¥ï¡¼¥É¡×ÍÑ
+(setq howm-keyword-regexp-pos 2)
+(setq howm-keyword-regexp-format "%s") ;; M-x describe-variable »²¾È</pre>
+<ul>
+<li>Ãí: come-from ¥¡¼¥ï¡¼¥É¤Î alias ¤Ç¤Ï,
+ ¼¡¤Î¤É¤Á¤é¤«¤·¤«ÁÛÄꤷ¤Æ¤¤¤Þ¤»¤ó.
+<ul>
+<li>¡Ö¡Ä¤«¤é¸å¡×·¿: <<< foo <<< bar <<< baz</li>
+<li>¡Ö¡Ä¤«¤é¡Ä¤Þ¤Ç¡×·¿: ((¡§foo¡§)) ((¡§bar¡§)) ((¡§baz¡§))</li>
+</ul></li>
+</ul></li>
+<li>wiki É÷¥ê¥ó¥¯ [[hoge]] ¤Î²¼Àþ¤ò¡Ö]]¡×¤À¤±¤Ë
+<ul>
+<li><p>¡Ö<<< hoge¡×¤ÎºîÀ®¸å¤Ï, ¡Öhoge¡×¤Ë¤â²¼Àþ</p>
+<pre>(setq howm-wiki-regexp "\\[\\[\\([^]\r\n]+\\)\\(\\]\\]\\)")
+(setq howm-wiki-regexp-hilit-pos 2)
+(setq howm-wiki-regexp-pos 1)</pre></li>
+</ul></li>
+</ul></li>
+<li>¤³¤Þ¤´¤Þ
+<ul>
+<li><p>ÆüÉÕÆþÎÏ(C-c , d ¤Þ¤¿¤Ï [Æü¢])¤Çǯ¤ä·î¤òά¤·¤¿¤é, ¡Ö̤Íè¡×¤È²ò¼á</p>
+<pre>(setq howm-insert-date-future t)</pre>
+<ul>
+<li>¿·µ¬ÆþÎÏ»þ¤Î¤ß¤Ç¤¹. ¡Ö[2003-12-27]¡×¾å¤Ç RET ¤·¤¿¤È¤¤ÎÆ°ºî¤Ï½¾Íè¤É¤ª¤ê.</li>
+</ul></li>
+<li><p>¡Öhttp://¡×¤Ç¥ê¥¿¡¼¥ó²¡¤·¤¿¤é, URL ¤ò kill-ring ¤Ø</p>
+<pre>(setq action-lock-no-browser t)</pre></li>
+</ul></li>
+<li>ͽÄêɽ¡¦todo °ìÍ÷
+<ul>
+<li><p>¥ê¥Þ¥¤¥ó¥Àµ¹æ(!+-~@.)¤«¤é RET °ìȯ¤Ç¡ÖºÑ¡×¤Ë</p>
+<pre>(setq howm-action-lock-reminder-done-default "")</pre>
+<ul>
+<li>¤³¤Î¾ì¹ç, C-u RET ¤Ç½¾Íè¤ÎÆ°ºî (¥¥ã¥ó¥»¥ë, µ¹æÊѹ¹, ¡Ä)</li>
+</ul></li>
+<li><p>ͽÄêɽ¡¦todo °ìÍ÷¤«¤é¥ê¥Þ¥¤¥ó¥Àµ¹æ¾å¤ÇľÀÜ RET ¤·¤¿¤È¤,
+ ᤫ¤ìÀè¥Ð¥Ã¥Õ¥¡¤ò¼«Æ° save</p>
+<pre>(setq howm-action-lock-forward-save-buffer t)</pre>
+<ul>
+<li>¡Ö¼«Æ° save¡×¤ËÄñ¹³¤Ê¤¤Êý¤À¤±¤É¤¦¤¾</li>
+<li>¼êÆ°¤Ç C-x s (̤Êݸ¥Ð¥Ã¥Õ¥¡¤¿¤Á¤ò save)¤Ê¤ê¤¹¤ëÊý¤¬ÀµÆ»¤«¤È</li>
+</ul></li>
+<li><p>ÊÝα¤ÎÉâÄÀÈÏ°Ï</p>
+<pre>(setq howm-todo-priority-defer-init -14) ;; ½é´üÃÍ = ²¼¸Â
+(setq howm-todo-priority-defer-peak 0) ;; ¾å¸Â</pre></li>
+<li>!+-~. ¤Î½ÜÅ٤Υ«¥¹¥¿¥Þ¥¤¥º
+<ul>
+<li><p>Îã: ¥á¥Ë¥å¡¼¤Ç, ¡ÖÀøÉúÃæ¤ÏÈóɽ¼¨¡×¡ÖºÑ¤Ïɽ¼¨¡×</p>
+<pre>(setq howm-menu-todo-priority -50000)
+(setq howm-todo-priority-done-bottom -44444)</pre></li>
+<li>howm-todo-priority-normal-bottom Åù. ¥½¡¼¥¹(howm-reminder.el)»²¾È.</li>
+</ul></li>
+<li><p>todo °ìÍ÷(M-x howm-list-todo)¤Î»ÅÀÚ¤êÎã</p>
+<pre>(setq howm-todo-separators
+ '(
+ (0 . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬¢¬Ä¶²á¨¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ (nil . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬ÀøÉúÃ梨¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ ))</pre>
+<ul>
+<li>Ï¢·ëɽ¼¨¤ä¥½¡¼¥È¤ò¤¹¤ë¾ì¹ç¤Ë¤Ï¤¸¤ã¤Þ¤«¤â¡Ä</li>
+</ul></li>
+</ul></li>
+<li>action-lock
+<ul>
+<li><p>{ } (¥È¥°¥ë¥¹¥¤¥Ã¥Á)¤ÎÊѹ¹</p>
+<pre>;; howm ¤Î load Á°¤Ë
+(setq action-lock-switch-default '("{ }" "{*}" "{-}")) ;; ²¿¸Ä¤Ç¤â</pre></li>
+<li><p>{_} (̤½èÍý)¤ÎÊѹ¹</p>
+<pre>(setq howm-dtime-format "[%a %b %d %H:%M:%S %Y]") ;; {_}
+(setq howm-template-date-format "[%Y-%m-%d %H:%M]") ;; ¥Æ¥ó¥×¥ì¡¼¥È</pre></li>
+<li><p>¡Öfile://¡Ä¡×¤ä¡Öhttp://¡Ä¡×¤ÎÊѹ¹ (¤Þ¤·¤ÊÀßÄêÊ罸)
+ thx > <a href="http://www.bookshelf.jp/2ch/unix/1063800495.html">945</a></p>
+<pre>;; howm (Àµ³Î¤Ë¤Ï action-lock.el) ¤Î¥í¡¼¥É¤è¤êÁ°¤Ë.
+;; ¡¦file://¡Ä
+(setq action-lock-open-regexp
+ "\\<file://\\(localhost\\)?\\([-!@#$%^&*()_+|=:~/?a-zA-Z0-9.,;]*[-!@#$%^&*()_+|=:~/?a-zA-Z0-9]+\\)\\>")
+(setq action-lock-open-regexp-pos 2) ;; 2 ¸ÄÌܤΡÖ\\(¡Ä\\)¡×¤¬¥Õ¥¡¥¤¥ë̾
+;; ¡¦http://¡Ä
+(setq action-lock-browse-regexp
+ "\\<\\([htp]\\{3,5\\}s?\\|ftp\\)://\\([-!@#$%^&*()_+|=:~/?a-zA-Z0-9.,;]*[-!@#$%^&*()_+|=:~/?a-zA-Z0-9]+\\)\\>"
+(setq action-lock-browse-regexp-pos 0) ;; ¥Þ¥Ã¥Á¤·¤¿Á´ÂΤ¬ URL</pre></li>
+<li><p>action-lock ÄɲÃÎã:
+ ¡ÖMessage-ID: ¡Ä¡×¤Ç¥ê¥¿¡¼¥ó²¡¤·¤¿¤é, ³ºÅö¥á¡¼¥ë¤ò namazu ¤Ç¸¡º÷</p>
+<pre>;; howm ¤ò load ¤·¤¿¸å¤Ë
+(defun my-howm-search-message-id (id)
+ (message "Searching...")
+ (let* ((query (format "+message-id:%s" id))
+ (args `("-l" "-n" "1" ,query "/home/hoge/NMZ/Mail"))
+ (found (car (howm-call-process "namazu" args))))
+ (if found
+ (progn
+ (find-file found)
+ (re-search-forward "^$" nil t)
+ (message "Done."))
+ (message "No match."))))
+(setq action-lock-default-rules
+ (cons (action-lock-general 'my-howm-search-message-id
+ "Message-[Ii][Dd]: \\(.*\\)$"
+ 1)
+ action-lock-default-rules))</pre></li>
+</ul></li>
+<li><a href="http://www.ruby-lang.org/ja/man/html/RD.html">RD</a>¤ò»È¤¦¾ì¹ç:
+ ¹ÔƬ¤Î * ¤Ç¥¨¥ó¥È¥ê¤Î³«ÊĤ¬¤Ç¤¤ë¤è¤¦¤Ë
+ ¢ª <a href="http://www.bookshelf.jp/2ch/unix/1063800495.html">237-238</a></li>
+<li><p>¤ª¤Þ¤±</p>
+<pre>(setq howm-congrats-format
+ '(
+ "(¡¡¦¦Ø¡¦¡®) %s"
+ "(¡®¡¦¦Ø¡¦¡) %s"
+ ;; ¡Ä°Ê²¼Î¬¡Ä
+ ))
+(setq howm-congrats-command '("play" "~/sound/fanfare.wav"))</pre></li>
+<li>¤â¤Ã¤È¤¤¤í¤¤¤í¤¤¤¸¤ë¤Ë¤Ï, *.el ËÁƬ¤ò»²¾È</li>
+</ul>
+<h3><a name="label-12" id="label-12">³°Éô¥Ä¡¼¥ë</a></h3><!-- RDLabel: "³°Éô¥Ä¡¼¥ë" -->
+<p>(Ʊº¥Ä¡¼¥ë¤Ï ext/ ¤Ë)</p>
+<ul>
+<li>HTML ¤Ø¤ÎÊÑ´¹: howm2 (Ʊº. Í× ruby)
+<ul>
+<li>Îã
+<ul>
+<li><p>¥á¥â¥Ç¥£¥ì¥¯¥È¥ê ~/howm/ ¤òÊÑ´¹¤·¤Æ ~/converted/ ¤ËÅǤ¯</p>
+<pre>./howm2 ~/howm/ ~/converted/</pre></li>
+<li><p><<< ¤ÎÂçʸ»ú¾®Ê¸»ú¤ò̵»ë</p>
+<pre>./howm2 -i ~/howm/ ~/converted/</pre></li>
+<li><p>¥ê¥ó¥¯½ñ¼°¤Î»ØÄê</p>
+<pre>./howm2 -comefrom='<<<' -goto='>>>' ~/howm/ ~/converted/</pre></li>
+<li><p>¡Ö¤Û¤²¡×¤ò´Þ¤à¥Õ¥¡¥¤¥ë¤À¤± HTML ²½</p>
+<pre>grep -rl '¤Û¤²' ~/howm/ | howm2 -list ~/converted/</pre></li>
+</ul></li>
+<li>²¿¤â¹©Éפ·¤Æ¤Ê¤¤¤Î¤Ç, ·ãÃÙ¤«¤Ä¥á¥â¥ê¤É¤«¿©¤¤</li>
+<li>alias ¤Î¡ÖºÆµ¢Åª¤Ê¡×Ÿ³«¤Ï̤¥µ¥Ý¡¼¥È</li>
+</ul></li>
+<li>¥«¥ì¥ó¥À¡¼ & todo °ìÍ÷: hcal.rb (Ʊº. Í× ruby)
+<ul>
+<li><p>¥«¥ì¥ó¥À¡¼(ͽÄꡦ¡ºÀÚ¡¦ºÑ¤ß¤Î°ìÍ÷)¤ò½ÐÎÏ</p>
+<pre>hcal.rb -schedule_mark='¡û' -deadline_mark='¡ü' -done_mark='¡¿' ~/howm/*/*/*.txt</pre>
+<ul>
+<li><p>¤³¤ó¤Ê´¶¤¸¤Ç¤º¤é¤º¤é</p>
+<pre>----------------<6>---------------- 2003
+01 Sun
+02 Mon ¡üÅÄÃæÀèÀ¸¤ËÏ¢Íí ¡ûB4ÎØ¹Ö ¾®ÎÓ ¡û¹©³Ø´ðÁü¸³ 12:40 <<<<##>>>>
+¡Ä</pre></li>
+<li>¡ü¤Ï¡ºÀÚ(@[2003-06-02]!), ¡û¤ÏͽÄê(@[2003-06-02]@), ¡¿¤ÏºÑ(@[2003-06-02].)</li>
+<li><<<<# ¤Ï¡Öº£Æü¡×, #>>>> ¤Ï¡ÖËèǯ¤ÎƱ·îƱÆü¡×
+<ul>
+<li><p>¤³¤ó¤Ê´¶¤¸¤Ç alias ¤·¤È¤¯¤ÈÊØÍø</p>
+<pre>alias hcal="hcal.rb -schedule_mark='¡û' -deadline_mark='¡ü' -done_mark='¡¿' ~/howm/*/*/*.txt | less '+/<<<<#'"</pre></li>
+</ul></li>
+</ul></li>
+<li>¡Ö½ÜÅÙ½ç todo °ìÍ÷¡×¤ò½ÐÎÏ
+ (howm ¤ò»È¤¦¤Ê¤éÉÔÍ×. ChangeLog ÇɤʿͤؤΤª¤Þ¤±¤Ç¤¹)
+<ul>
+<li><p>¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç</p>
+<pre>hcal.rb -l memo.txt</pre></li>
+<li><p>emacs ¤«¤é M-x grep ¤·¤Æ</p>
+<pre>Run grep (like this): hcal.rb -l ~/memo/*.txt</pre></li>
+</ul></li>
+</ul></li>
+<li>²Õ¾ò½ñ¤»Ù±ç:
+<ul>
+<li><a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?OrgMode">org-mode ¤È¤ÎÊ»ÍÑ</a></li>
+</ul></li>
+<li>´Ê°×¾®¸¯¤¤Ä¢
+<ul>
+<li><p>¥¡¼¥ï¡¼¥É¤ò·è¤á¤Æ, ÆüµÃæ¤Ë½ñ¤¤¤Æ¤ª¤¯</p>
+<pre>$¿©Èñ$ 500±ß ¥é¡¼¥á¥ó</pre></li>
+<li>¡Ö<<< $¿©Èñ$¡×¤Ê¤ê¡Ö>>> $¿©Èñ$¡×¤Ê¤ê¤Ç°ìÍ÷¤òɽ¼¨.
+ ¹Ê¤ê¹þ¤ß¡¦¥½¡¼¥È¤·¤ÆÈÏ°Ï»ØÄê.</li>
+<li>M-x yen-region ¤Ç, ¡Ö¢þ¢þ±ß¡×¤ò¹ç·×
+ ¢ª <a href="http://howm.sourceforge.jp/a/yen.el">yen.el</a></li>
+</ul></li>
+<li><a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ExternalTool">¢ª howm wiki ¤Î¡ÖÊ»Íѥġ¼¥ë¡×</a>¤â»²¾È</li>
+</ul>
+<h2><a name="label-13" id="label-13">¼ÂÁõ</a></h2><!-- RDLabel: "¼ÂÁõ" -->
+<h3><a name="label-14" id="label-14">¼ÂÁõ¤Ë¤Ä¤¤¤Æ</a></h3><!-- RDLabel: "¼ÂÁõ¤Ë¤Ä¤¤¤Æ" -->
+<ul>
+<li>¥Õ¥¡¥¤¥ë³«¤¯¤¿¤ó¤Ó¤Ë¥¹¥¥ã¥ó¤Ã¤Æ¤¤¤¦°Â°×¼ÂÁõ
+<ul>
+<li>~/.howm-keys ¤Ë¥¡¼¥ï¡¼¥É¤Î°ìÍ÷</li>
+<li>¥Õ¥¡¥¤¥ë¤ò³«¤¯¤È¤¤Ï¡Ä
+<ul>
+<li>.howm-keys ¤Î³Æ¥¡¼¥ï¡¼¥É¤Ë¤Ä¤¤¤Æ, ½Ð¸½¤ÎÍ̵¤ò¸¡º÷</li>
+<li>½Ð¸½¥¡¼¥ï¡¼¥É¤ò or ¤Ç¤Ä¤Ê¤¤¤ÀÀµµ¬É½¸½¤òºîÀ®</li>
+<li>¤½¤ÎÀµµ¬É½¸½¤ò font-lock ¤È action-lock ¤ËÀßÄê</li>
+</ul></li>
+<li>¥Õ¥¡¥¤¥ëÊݸ»þ¤ËÆâÍƤò¥¹¥¥ã¥ó¤·¤Æ, ~/.howm-keys ¤ò¹¹¿·</li>
+</ul></li>
+<li>¸¡º÷
+<ul>
+<li>¥á¥â¥Ç¥£¥ì¥¯¥È¥ê ~/howm/ °Ê²¼¤òºÆµ¢Åª¤ËÁ´¸¡º÷.
+ ¥Õ¥¡¥¤¥ë̾¤â³ÈÄ¥»Ò¤â ~/howm/ °Ê²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤â, ¤É¤¦¤Ç¤â¤è¤¤.
+<ul>
+<li>¥Õ¥¡¥¤¥ë̾¤ÎÀ©Ìó¤Ï,
+<ul>
+<li>¥Õ¥¡¥¤¥ë̾¤Ëǯ·îÆü¤¬Æþ¤Ã¤Æ¤¤¤ë (filter-by-date ¤Î¤¿¤á)</li>
+<li>string<= ¤Ç¥½¡¼¥È¤·¤¿¤éÆü»þ½ç¤Ë¤Ê¤ë</li>
+</ul></li>
+</ul></li>
+<li>¸ß´¹¤Ê¸¡º÷´Ø¿ô¤òÆóËÜÍÑ°Õ. ¹¥¤¤ÊÊý¤ò»È¤¨¤ë.
+<ul>
+<li>real-grep (grep ¤ò¸Æ¤Ö)</li>
+<li>fake-grep (elisp ¤Î¤ß)</li>
+</ul></li>
+</ul></li>
+<li>¥Õ¥¡¥¤¥ë¹½À®
+<ul>
+<li>howm ËÜÂΤȤÏÆÈΩ
+<ul>
+<li>bcomp.el
+<ul>
+<li>make »þ¤Ë»È¤¦¤À¤±</li>
+<li>navi2ch-cvs-0.0.20031209 ¤«¤é¼ÚÍÑ</li>
+</ul></li>
+<li>cheat-font-lock.el
+<ul>
+<li>font-lock-keywords ¤ò¸å¤«¤éÊѹ¹¤¹¤ë¤¿¤á¤Î´Ø¿ô</li>
+<li>font-lock.el ¤ÎÆâÉô¼ÂÁõ¤Ë°Í¸</li>
+</ul></li>
+<li>action-lock.el
+<ul>
+<li>action-lock-mode (minor-mode)
+<ul>
+<li>¼öʸ(Àµµ¬É½¸½)¤ÈËâË¡(´Ø¿ô)¤ÎÁȤòÅÐÏ¿</li>
+<li>¥ê¥¿¡¼¥ó¥¡¼Ã¡¤¤¤¿¤é
+<ul>
+<li>¼öʸ¤Î¾å ¢ª ËâË¡¤¬È¯Æ°</li>
+<li>¤½¤ì°Ê³° ¢ª ËÜÍè¤Î¥ê¥¿¡¼¥ó¥¡¼</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>riffle.el
+<ul>
+<li>riffle-{summary|contents}-mode
+<ul>
+<li>°ìÍ÷¡¦ÆâÍƤΤѤé¤Ñ¤éɽ¼¨, ÆâÍƤÎÏ¢·ëɽ¼¨</li>
+<li>°ìÍ÷¤Ç¤Ï, post-command-hook ¤Ç°ÜÆ°¸¡½Ð ¢ª ÆâÍÆɽ¼¨¤ò¹¹¿·</li>
+<li>¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ëÊÑ¿ô riffle-item-list ¤Ë¹àÌܤòÊÝ»ý</li>
+</ul></li>
+<li>gfunc.el ¤ò»ÈÍÑ</li>
+</ul></li>
+<li>gfunc.el
+<ul>
+<li>°Âľ generic function</li>
+</ul></li>
+<li>illusion.el
+<ul>
+<li>illusion-mode (minor-mode)</li>
+<li>¤Õ¤Ä¤¦¤Î¡Ö¥Õ¥¡¥¤¥ë¡×¤Ç¤Ê¤¤Âоݤò, ³«¤¤¤ÆÊÔ½¸¤·¤ÆÊݸ</li>
+<li>º£¤Î¤È¤³¤í³èÍѤµ¤ì¤Æ¤¤¤Ê¤¤</li>
+</ul></li>
+<li>honest-report.el
+<ul>
+<li>¥Ð¥°¥ì¥Ý¡¼¥È¤ÎÀ¸À®</li>
+</ul></li>
+</ul></li>
+<li>howm ËÜÂÎ
+<ul>
+<li>¼çÌò
+<ul>
+<li>howm-backend.el
+<ul>
+<li>¥Ð¥Ã¥¯¥¨¥ó¥É¤ÎʬΥ</li>
+<li>Ãê¾Ý²½
+<ul>
+<li>¥Ç¥£¥ì¥¯¥È¥ê ¢ª folder</li>
+<li>¥Õ¥¡¥¤¥ë ¢ª page</li>
+<li>¥Þ¥Ã¥Á²Õ½ê ¢ª item</li>
+</ul></li>
+</ul></li>
+<li>howm-view.el
+<ul>
+<li>howm-view-{summary|contents}-mode (major-mode)
+<ul>
+<li>riffle-{summary|contents}-mode ¤«¤éÇÉÀ¸</li>
+<li>¸¡º÷¤Î¼Â¹Ô</li>
+</ul></li>
+</ul></li>
+<li>howm-mode.el (howm-mode-mode.el ¤«¤é²þ̾[2004-07-14])
+<ul>
+<li>howm-mode (minor-mode)
+<ul>
+<li>¾å½Ò¤Î¥¹¥¥ã¥ó¤Ê¤É</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>ÏÆÌò
+<ul>
+<li>howm-date.el
+<ul>
+<li>ÆüÉÕÆþÎϤλٱç</li>
+</ul></li>
+<li>howm-reminder.el
+<ul>
+<li>ÉâÄÀ¼° todo</li>
+</ul></li>
+<li>howm-menu.el
+<ul>
+<li>howm-menu-mode (major-mode)</li>
+</ul></li>
+</ul></li>
+<li>ÀßÄê
+<ul>
+<li>howm-version.el
+<ul>
+<li>Äê¿ô howm-version ¤òÀßÄꤹ¤ë¤À¤±</li>
+</ul></li>
+<li>howm-vars.el
+<ul>
+<li>defvar, defcustom, Åù</li>
+</ul></li>
+<li>howm-lang-*.el
+<ul>
+<li>¸À¸ì°Í¸¤ÎÊÑ¿ô</li>
+</ul></li>
+<li>howm-menu-*.el
+<ul>
+<li>½é´ü¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤ÎÆâÍƤòʸ»úÎóÄê¿ô¤È¤·¤ÆÄêµÁ</li>
+</ul></li>
+<li>howm-mkmenu.el
+<ul>
+<li>howm-menu-*.el ¤ò ja/0000-00-00-000000.txt Åù¤«¤éÀ¸À®¤¹¤ë¥¹¥¯¥ê¥×¥È</li>
+<li>ºî¼Ô°Ê³°¤Ï»È¤¦É¬Íפʤ¤¤Ï¤º</li>
+</ul></li>
+</ul></li>
+<li>Ȭ
+<ul>
+<li>howm-cl.el
+<ul>
+<li>cl ¥Ñ¥Ã¥±¡¼¥¸¤Ø¤Î°Í¸¤ò¤Þ¤È¤á¤¿¤À¤±</li>
+</ul></li>
+<li>howm-common.el
+<ul>
+<li>howm-*.el ¤Ç require</li>
+<li>ÆäË, ¥Õ¥¡¥¤¥ë¤Þ¤¿¤¤¤Ç»È¤¦¥Þ¥¯¥í¤Ï¤³¤³¤Ø (¢è byte-compile Âкö)</li>
+</ul></li>
+<li>howm-misc.el
+<ul>
+<li>Ȭ</li>
+</ul></li>
+<li>howm.el (howm-mode.el ¤«¤é²þ̾[2004-07-14])
+<ul>
+<li>¥á¥¤¥ó¥Õ¥¡¥¤¥ë. require ¤¹¤ë¤À¤±.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul>
+<h3><a name="label-15" id="label-15">Æ°¤¤Þ¤»¤ó¤è?</a></h3><!-- RDLabel: "Æ°¤¤Þ¤»¤ó¤è?" -->
+<p>(¥Ð¥°¤Î»ØŦ¤ò¤¯¤À¤µ¤ëÊý¤Ø)</p>
+<ul>
+<li>°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ¤¤¤¿¤À¤¯¤È, Ä´ºº¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹
+<ul>
+<li><p>¤Ç¤¤ë¤À¤± make test ¤ò¤ª´ê¤¤¤·¤Þ¤¹</p>
+<pre>cd howm-¡û.¡û.¡û
+make test</pre></li>
+<li>win ¤Ê¤é, test.bat ¤ò¤ª´ê¤¤¤·¤Þ¤¹
+<ul>
+<li>test.bat Ãæ¤Î¡ÖHOWM_EMACS=¡Ä¡×¤ò´Ä¶¤Ë¤¢¤ï¤»¤Æ½¤Àµ</li>
+<li>test.bat ¤ò¼Â¹Ô</li>
+</ul></li>
+<li>¤É¤Á¤é¤â, emacs ¤¬Î©¤Á¤¢¤¬¤ê, ¼ÁÌäɼ¤¬É½¼¨¤µ¤ì¤Þ¤¹</li>
+<li><a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportFAQ">¤Ê¤ó¤Ç¤ï¤¶¤ï¤¶? ¢ª ¥Ð¥°¥ì¥Ý¡¼¥ÈFAQ</a></li>
+</ul></li>
+<li>ÊäÂ: ¥¬¥¤¥·¥å¥Ä¾åÅù
+<ul>
+<li>¡Ö»ÅÍͤ«¡×¡Ö´ûÃΤΥХ°¤«¡×¤Î¥Á¥§¥Ã¥¯¤Ã¤Æ, ¤ª¤Ã¤¯¤¦¤Ç¤¹¤è¤Í¤¨.</li>
+<li>howm ¤Ë´Ø¤·¤Æ¤Ï, ¤³¤Î¥Á¥§¥Ã¥¯¤ÏÉÔÍפǤ¹.
+ ¤½¤ì¤è¤ê¤â, µ¤·Ú¤Ë¤É¤ó¤É¤ó»ØŦ¤·¤Æ¤¤¤¿¤À¤¯Êý¤¬¤¢¤ê¤¬¤¿¤¤¤Ç¤¹.</li>
+<li>¤¼¤Ò, ºî¼Ô¤ÎÌܤ¬ÆϤ¯¤È¤³¤í(2ch ¤« howm wiki)¤Ë¤¿¤ì¹þ¤ó¤Ç¤¯¤À¤µ¤¤.</li>
+<li>cf.
+ <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportFAQ">¥Ð¥°¥ì¥Ý¡¼¥ÈFAQ</a>,
+ <a href="http://web.archive.org/web/20041018232953/http://nnri.dip.jp/~yf/cgi-bin/yaswiki.cgi?name=%A5%AA%A1%BC%A5%D7%A5%F3%A5%BD%A1%BC%A5%B9%A4%CF%B2%BC%C4%AE%B5%A4%BC%C1">YASWiki:¥ª¡¼¥×¥ó¥½¡¼¥¹¤Ï²¼Ä®µ¤¼Á</a></li>
+</ul></li>
+<li>ºî¼Ô³Ð½ñ
+<ul>
+<li>¥Ç¥Ð¥Ã¥°ÍÑÊÑ¿ô howm-call-process-last-command</li>
+<li>C-u M-x howm-bug-report ¤Ç´ØÏ¢ÊÑ¿ô¤Î°ìÍ÷</li>
+<li>M-x howm-elp ¤Ç, ¥×¥í¥Õ¥¡¥¤¥é elp ¤Î½àÈ÷</li>
+</ul></li>
+</ul>
+<h2><a name="label-16" id="label-16">È÷¹Í</a></h2><!-- RDLabel: "È÷¹Í" -->
+<h3><a name="label-17" id="label-17">»²¹Í</a></h3><!-- RDLabel: "»²¹Í" -->
+<p><a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?IdeaSource">¸µ¥Í¥¿</a>»²¾È.
+ÆäË, Q-pocket¡¦HashedWiki¡¦ChangeLog ¥á¥â¤«¤é¤¤¤Ã¤Ñ¤¤¤Þ¤Í¤·¤Æ¤Þ¤¹. ´¶¼Õ.</p>
+<ul>
+<li>¹À¥ÍºÆóÃø¡Ö¤ä¤µ¤·¤¤ Emacs-Lisp ¹ÖºÂ¡×(¥«¥Ã¥È¥·¥¹¥Æ¥à, 1999)
+ ISBN 4-906391-70-2
+ ¢ª
+ <a href="http://www.gentei.org/~yuuji/elisp/">¥ª¥ó¥é¥¤¥óÈÇ (¾¶?)</a>
+<ul>
+<li>elisp ¤Ï¤¸¤á¤ë¤Ê¤é°µÅÝŪ¤Ë¤ª¤¹¤¹¤á</li>
+<li>6.4 ¾ÏËöÌäÂê¤Î¡Ö¥µ¥¯¥µ¥¯ dired¡×¤ò»²¹Í¤Ë¤µ¤»¤Æ¤¤¤¿¤À¤¤Þ¤·¤¿</li>
+</ul></li>
+</ul>
+<h3><a name="label-18" id="label-18">¹¹¿·µÏ¿</a></h3><!-- RDLabel: "¹¹¿·µÏ¿" -->
+<p>thx > patch¡¦²þÎÉ°Æ¡¦»ØŦ¤ò¤¯¤À¤µ¤Ã¤¿³§ÍÍ</p>
+<ul>
+<li>¥Æ¥¹¥ÈÈÇ
+<ul>
+<li>[2016-01-01]
+<ul>
+<li>¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë»þ¤Î·Ù¹ð¤ò²óÈò
+<ul>
+<li>cl ¤ò¤ä¤á¤Æ cl-lib ¤ò»È¤¦</li>
+<li>howm-ime-fix (howm-1.1.1 °ÊÁ°¤Î canna, egg, yc, anthy ¸ÄÊÌÂкö) ¤òÇÑ»ß</li>
+<li>¤½¤Î¾¤³¤Þ¤´¤Þ</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>¥ê¥ê¡¼¥¹ÈÇ howm-1.4.3 [2015-12-31]
+<ul>
+<li>emacs 25.1.50.1 (2015-12-27 »þÅÀ¤Î git Àèü = de88375) ¤Çµ¯Æ°¤ò³Îǧ</li>
+<li>howm-1.4.3rc1 ¤ÈƱ¤¸ÆâÍƤǤ¹</li>
+<li>fix
+<ul>
+<li>git Àèü emacs ¤Ç¤Î¥¨¥é¡¼ (void-function ed)</li>
+<li>C-c , A (howm-list-around) ¤Ç howm-list-title ¤ÎÀßÄ꤬¸ú¤¤¤Æ¤¤¤Ê¤«¤Ã¤¿
+ <a href="http://peace.2ch.net/test/read.cgi/unix/1397477663/39">thx</a></li>
+<li><a href="http://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?Recentf">howm-recentf</a>¤Ê¤É¤Ç̵Â̤˥ê¥â¡¼¥È¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¥ï¡¼¥É¤òʹ¤¤¤Æ¤³¤Ê¤¤¤è¤¦¤Ë.
+ thx > ¸ñ¹¾±Ñ䤵¤ó (hide at koie.org)</li>
+<li>¥É¥¥å¥á¥ó¥È¤Î¥Õ¥¡¥¤¥ë¥â¡¼¥É¤ÎÄûÀµ</li>
+</ul></li>
+</ul></li>
+<li>¥ê¥ê¡¼¥¹ÈÇ howm-1.4.2 [2013-12-31]
+<ul>
+<li>Note
+<ul>
+<li>emacs 24.3 ¤ËÂбþ. 2013-12-25 »þÅÀ¤Î trunk (24.3.50.1) ¤Ç¤âµ¯Æ°¤ò³Îǧ.</li>
+<li>howm-test130321 ¤ä howm-1.4.2rc1 ¤ÈƱ¤¸ÆâÍƤǤ¹</li>
+</ul></li>
+<li>²þÎÉ
+<ul>
+<li>C-c , a (howm-list-all) ¤ò¹â®²½
+ <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste">thx</a></li>
+</ul></li>
+<li>fix
+<ul>
+<li>emacs 24.3.1 ¤Ç¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤»¤º¤Ë¼Â¹Ô¤·¤¿¤È¤¤Î¥¨¥é¡¼
+ "Can't detect type of ..."
+ <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste">thx</a></li>
+<li>¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯²¼¤Ç¿·µ¬¥á¥â¤¬ howm-mode ¤Ë¤Ê¤é¤Ê¤¤¥Ð¥°
+ <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste">thx</a></li>
+<li>¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë»þ¤Î·Ù¹ð</li>
+</ul></li>
+</ul></li>
+<li>¥ê¥ê¡¼¥¹ÈÇ howm-1.4.1 [2012-12-27]
+<ul>
+<li>~/.howm-keys ¤¬Ìµ¤«¤Ã¤¿¤é, Á´¥á¥â¤ò¥¹¥¥ã¥ó¤·¤ÆºÆÀ¸À®
+ <a href="http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000099.html">thx</a>
+ > Albert-san (areiner at tph.tuwien.ac.at)</li>
+<li>fix: *.txt ¤È *.howm ¤¬º®ºß¤·¤Æ¤â°ìÍ÷¥â¡¼¥É¤Îɽ¼¨¤¬¤º¤ì¤Ê¤¤¤è¤¦¤Ë
+ <a href="http://toro.2ch.net/test/read.cgi/unix/1141892764/940">thx</a></li>
+</ul></li>
+<li>¥ê¥ê¡¼¥¹ÈÇ howm-1.4.0 [2012-08-16]
+<ul>
+<li>Note
+<ul>
+<li><em>Èó¸ß´¹Êѹ¹</em>¤ËÃí°Õ!
+<ul>
+<li><p>1.3.* ¤É¤ª¤ê¤ÎµóÆ°¤ò˾¤à¤Ê¤é¢</p>
+<pre>(setq howm-compatible-to-ver1dot3 t) ;; (require 'howm) ¤è¤êÁ°¤Ë!</pre></li>
+<li>¸ÄÊ̤ËÀßÄꤷ¤¿¤±¤ì¤Ð, M-x customize-group RET howm-compatibility RET</li>
+</ul></li>
+<li>Ť¤¤³¤È±£¤·µ¡Ç½¤À¤Ã¤¿¤â¤Î¤ò¸ø¼°µ¡Ç½¤Ë¤·¤Þ¤·¤¿.</li>
+<li>emacs-24 Âбþ</li>
+<li>howm-1.4.0rc2 ¤ÈƱÆâÍƤǤ¹.</li>
+</ul></li>
+<li>Êѹ¹
+<ul>
+<li>howm-file-name-format ¤Î¥Ç¥Õ¥©¥ë¥È¤ò *.howm ¤«¤é *.txt ¤ËÊѹ¹
+<ul>
+<li>³ÈÄ¥»Ò¤Î¤»¤¤¤Ç¾¥Ä¡¼¥ë¤È¤ÎÏ¢·È¤Ëº¤¤Ã¤Æ¤¤¤ë¤é¤·¤¤»öÎã¤ò¸«¤«¤±¤ë¤Î¤Ç</li>
+</ul></li>
+<li>°ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Î¤È¤¤â, ¹Ê¤ê¹þ¤ßÅù¤ò¥Õ¥¡¥¤¥ëñ°Ì¤¸¤ã¤Ê¤¯¥á¥âñ°Ì¤Ë.
+ ¤¿¤À¤·, date ¤Ç¤Î¹Ê¤ê¹þ¤ß¤Ï¥Õ¥¡¥¤¥ëñ°Ì¤Î¤Þ¤Þ.</li>
+<li>¥¿¥¤¥È¥ë¤¬¶õ¤Î¤È¤¤ÏËÜʸ¤Î°ì¹ÔÌܤò¥¿¥¤¥È¥ë¤Ë.</li>
+</ul></li>
+<li>¤³¤Þ¤´¤Þ²þÎÉ
+<ul>
+<li><p>¥á¥Ë¥å¡¼¤Ë°Ê²¼¤ò½ñ¤±¤Ð, ¥¿¥¤¥à¥¹¥¿¥ó¥×½ç¤Ç¤Ê¤¯¥Õ¥¡¥¤¥ë̾½ç¤Î¾å°Ì¤òɽ¼¨.
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/890">thx</a></p>
+<pre>%here%(howm-menu-recent identity)</pre></li>
+<li><p>¥Ç¥£¥ì¥¯¥È¥ê¤ËÂФ·¤Æ¤â¥Ó¥å¡¼¥¢¤òÀßÄê¤Ç¤¤ë¤è¤¦¤Ë.
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/891">thx</a></p>
+<pre>;; ¡Öfile://¡Ä/¡×¤ä¡Ö>>> ¡Ä/¡×¤Ï open ¥³¥Þ¥ó¥É(mac ÍÑ)¤Ç³«¤¯
+(setq howm-view-external-viewer-assoc '(("/$" . "open %s")))</pre></li>
+<li>ÊÑ¿ô howm-normalizer ¤Î¤¢¤ê¤¬¤Á¤ÊÀßÄê¥ß¥¹¤ò»¡¤¹¤ë¤è¤¦¤Ë
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/865-870n">thx</a></li>
+<li>¥É¥¥å¥á¥ó¥È¤Î¸Å¤¤²Õ½ê¤ò¼êľ¤·</li>
+<li>rast ¤Þ¤ï¤ê¤Î»îºî¤òºï½ü</li>
+</ul></li>
+<li>±£¤·µ¡Ç½¤Î¸ø¼°²½
+<ul>
+<li>¥³¥Þ¥ó¥É
+<ul>
+<li>C-c , e (howm-remember)
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/24-25n">thx</a>
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/61">thx</a>
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/72-75n">thx</a>
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/92-93n">thx</a>
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/99">thx</a></li>
+<li>C-c , b (howm-list-buffers)</li>
+<li>C-c , x (howm-list-mark-ring)</li>
+<li>C-c , o (howm-occur)</li>
+</ul></li>
+<li>¥ê¥Þ¥¤¥ó¥À
+<ul>
+<li>¥á¥Ë¥å¡¼¤Ë¡Ö%reminder¡×¤È½ñ¤¯¤È, ͽÄê¤È todo ¤ÎÅý¹ç°ìÍ÷
+<ul>
+<li>ͽÄê¡Ö@¡×¤Ï,
+ howm-menu-schedule-days-before ÆüÁ°¤«¤é
+ howm-menu-schedule-days Æü¸å¤Þ¤Ç¤òÀèƬ¤Ëɽ¼¨
+<ul>
+<li>[2004-12-03]@5 ¤Ê¤É¤È½ñ¤¯¤È, ¡Ö5 Æü´Ö¡×¤Î°Õ
+ (ÅöÆü¤â´Þ¤à¤Î¤Ç¡Ö12·î3Æü¤«¤é12·î7Æü¤Þ¤Ç¡×).
+ °ìÍ÷¤«¤é¾Ã¤¨¤ë¤Î¤¬¤½¤ì¤À¤±Í±Í½¤µ¤ì¤ë.
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/516">thx</a></li>
+</ul></li>
+<li>¡ºÀÚ¡Ö!¡×¤â, ¡ºÀÚÆü¤¬¤½¤ÎÈϰϤޤǤʤé°ì½ï¤Ëɽ¼¨</li>
+<li>¤½¤ì¤è¤ê²¼¤Ï½¾Íè¤É¤ª¤ê</li>
+<li>½¾Íè¤Î %schedule + %todo ¤È¤¯¤é¤Ù¤ë¤È, ¥¹¥¥ã¥ó¤¬°ì²ó¤Ç¤¹¤à¤Ö¤ó¸úΨŪ</li>
+</ul></li>
+<li>[2005-05-15 21:37]@ ¤Î¤è¤¦¤Ê½ñ¼°¤ÎͽÄê¤Ï, »þ¹ï½ç¤Ë¥½¡¼¥È
+ <a href="http://pc.2ch.net/test/read.cgi/unix/1063800495/141">thx</a>
+ <a href="http://pc.2ch.net/test/read.cgi/unix/1063800495/148">thx</a>
+ <a href="http://pc.2ch.net/test/read.cgi/unix/1063800495/597">thx</a>
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/683">thx</a></li>
+<li><p>¥á¥Ë¥å¡¼¤«¤é¥ê¥Þ¥¤¥ó¥À¤òľá¤¤·¤¿¤È¤¤Ë,
+ Âбþ¥Ð¥Ã¥Õ¥¡¤Î¹Ô¿ô¤¬Â¿¾¯¤º¤ì¤Æ¤¤¤Æ¤âµö¤¹.
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/519">thx</a></p>
+<pre>(setq howm-action-lock-forward-fuzziness 5) ;; ²¿¹Ô¤Þ¤Ç¤º¤ì¤Æ¤âµö¤¹¤«</pre></li>
+</ul></li>
+<li><a href="#label-11">¥«¥¹¥¿¥Þ¥¤¥º</a>
+<ul>
+<li>¾åµ %reminder ¤ä todo list Ãæ¤Î»ÅÀÚ¤ê</li>
+<li>grep »ÈÍÑ»þ¤Î coding system »ØÄê
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/784">thx</a></li>
+<li>howm ´ØÏ¢¤ÎÁ´¥Ð¥Ã¥Õ¥¡¤Ë¶¦Ä̤ο§ÀßÄê
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/42">thx</a>
+ <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Idea">thx</a>
+ > taku ¤µ¤ó</li>
+<li>todo ¤òºÑ¤Þ¤»¤¿¤È¤¤Ë»ØÄꥳ¥Þ¥ó¥É¤ò¼Â¹Ô (howm-congrats-command)</li>
+</ul></li>
+</ul></li>
+<li>fix: 2012-01-21 °Ê¹ß¤Î emacs-24 ¤Ç¥¨¥é¡¼ (void-variable inhibit-first-line-modes-regexps)
+ <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste">thx</a>
+ thx > º´¡¹ÌÚ ´² ¤µ¤ó (sasaki at fcc.ad.jp)</li>
+</ul></li>
+<li>±£¤·µ¡Ç½ (experimental)
+<ul>
+<li>1.1.1.* °ÊÁ°¤«¤é
+<ul>
+<li>¥½¡¼¥¹¥³¡¼¥É¤ÎÆɤ߽ñ¤¤â howm ¤Ç
+<ul>
+<li><a href="http://www.tamacom.com/global-j.html">GNU global</a>
+ (<a href="http://www.tamacom.com/tour/lang/ruby/S/21.html">Îã</a>)
+ ¤â¤É¤¤Î on the fly ÈǤᤶ¤·¤Æ</li>
+<li>¤Þ¤À³«È¯Ãæ. Ì£¸«¤¹¤ë¤Ë¤Ï¡Ä
+<ul>
+<li>ÊÑ¿ô howm-configuration-for-major-mode ¤òÀßÄê
+<ul>
+<li>major-mode ¤Ë±þ¤¸¤Æ, come-from ¥ê¥ó¥¯Åù¤Î½ñ¼°¤òÊѤ¨¤ë</li>
+<li>howm-misc.el ¤Î¥³¥á¥ó¥È»²¾È</li>
+</ul></li>
+<li>M-x howm-open-directory-independently ¤·¤Æ ~/elisp/howm ¤Ê¤É¤ÈÆþÎÏ</li>
+</ul></li>
+<li>ÀµÂΤϷë¶É grep ¤Ê¤ó¤À¤«¤é, ¤¢¤Þ¤ê¸¤¤Æ°ºî¤ò´üÂÔ¤·¤Æ¤Ï¤¤¤±¤Ê¤¤
+<ul>
+<li>elisp, tex ¤Ç¤ÏÊØÍø¤À¤±¤É, ruby ¤¸¤ã»È¤¤¤â¤Î¤Ë¤Ê¤é¤º.
+<ul>
+<li>¢è elisp ¤Î´Ø¿ô̾¤ä tex ¤Î¥é¥Ù¥ë¤ÏÂç°èŪ¤Ë°ì°Õ. ruby ¤ÏÈÝ.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>1.2
+<ul>
+<li><p>°ìÍ÷»þ¤ÎÆâÍƥХåե¡¤Ë¥Õ¥¡¥¤¥ëÁ´ÂΤòɽ¼¨¤µ¤»¤ë</p>
+<pre>(setq howm-view-preview-narrow nil)</pre>
+<ul>
+<li>Ï¢·ë»þ¤Ï½¾Íè¤É¤ª¤ê(¥á¥â¶èÀÚ¤ê¤ÎÈϰϤΤß)</li>
+<li>howm-configuration-for-major-mode °Ê³°¤Ç»È¤¦¾ìÌ̤Ï, ¤Þ¤¢¤Ê¤¤¤Ç¤·¤ç¤¦</li>
+</ul></li>
+<li>¥ê¥Þ¥¤¥ó¥À
+<ul>
+<li><p>¥ê¥Þ¥¤¥ó¥À¤Î¥«¥¹¥¿¥Þ¥¤¥º
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/296">thx</a></p>
+<pre>;; ¿·¤·¤¤·¿¤Î¥ê¥Þ¥¤¥ó¥À¡Ö*¡×¤òÄêµÁ¤¹¤ëÎã:
+;; ¡Ö[2004-07-11]* ¤Û¤²¡×¤Ï, »ØÄêÆü¤Þ¤Ç¾å¾º¤·, ¤½¤Î¤¢¤È²¼¹ß.
+;; (½ÜÅÙ = - |ÃÙ¤ì / ͱͽÆü¿ô|. ͱͽÆü¿ô¤Î¥Ç¥Õ¥©¥ë¥È¤Ï 3)
+;; 1. ½ÜÅٴؿô¤ò½àÈ÷ (ÃÙ¤ì¤ÈͱͽÆü¿ô(¤È¥¢¥¤¥Æ¥à)¤ò¿©¤Ã¤Æ½ÜÅÙ¤òÅǤ¯)
+;; ÃÙ¤ì: »ØÄêÆü¤«¤éº£Æü¤Þ¤Ç¤ÎÆü¿ô. ¤Þ¤À¤Ê¤é¥Þ¥¤¥Ê¥¹.
+;; ͱͽ: ¡Ö[2004-07-11]*8¡×¤Ê¤é 8. ¡Ö[2004-07-11]*¡×¤À¤±¤Ê¤é nil.
+;; ½ÜÅÙ: Â礤¤¤Û¤É¾å. ¡Ö³Ð½ñ¡×¤Ê¤é½éÆü¤¬ 0 ¤ÇËèÆü 1 ¤º¤Ä¸º¤ë.
+;; (¥¢¥¤¥Æ¥à: ¤Õ¤Ä¤¦¤Ï»È¤ï¤Ê¤¤¤±¤É¤Ä¤¤¤Ç¤Ë. howm-backend.el »²¾È)
+(defun my-priority (late lazy item)
+ (let ((r (howm-todo-relative-late late lazy 3)))
+ ;; r = late / lazy. ̵»ØÄê»þ¤Ï lazy = 3.
+ (- (abs r))))
+;; 2. face ¤ò½àÈ÷
+(defface my-face '((t (:foreground "cyan"))) "my face")
+(setq my-face 'my-face)
+;; 3. µ¹æ, ½ÜÅٴؿô, face ¤òÅÐÏ¿.
+;; »Ä¤ê¤Î°ú¿ôÆó¤Ä¤Ï, ¡ÖͽÄêɽ¤Ëɽ¼¨¤¹¤ë¤«¡×¡Ötodo ¥ê¥¹¥È¤Ëɽ¼¨¤¹¤ë¤«¡×.
+(howm-define-reminder "*" #'my-priority 'my-face nil t)</pre>
+<ul>
+<li>»²¹Í: ´û¸¤Î½ÜÅٴؿô¤Î¥°¥é¥Õ¤¬
+ <a href="http://howm.sourceforge.jp/uu/#label:11">UNIX USER »ï¤Îµ»ö</a>
+ ¤Ë½Ð¤Æ¤Þ¤¹</li>
+<li>¥Ð¥°
+<ul>
+<li>°ìÉô¤Îµ¹æ¤Ï¤³¤±¤½¤¦ (Àµµ¬É½¸½ [¡Ä] Æâ¤ÇÆÃÊ̤ʰÕÌ£¤ò»ý¤Äµ¹æ¤Ï¡ß)</li>
+<li>¡Ö[2004-07-11]- ¤Û¤²¡×¤«¤é¡Ö-¡×¾å¤Ç RET ¤·¤Æ¡Ö*¡×¤òÆþÎϤ¹¤ë¤È¥¨¥é¡¼</li>
+</ul></li>
+<li>¤È¤ê¤¢¤¨¤ºÃ¡¤Âæ. ¤³¤ó¤Ê¤ó¤Ç¤¤¤¤¤ó¤Ç¤·¤ç¤¦¤«?</li>
+</ul></li>
+</ul></li>
+<li>ÆüÉÕ·Á¼°
+<ul>
+<li><p>ÆüÉÕ¾å¤Ç RET¡ß2 ¤·¤Æ¤«¤é¡Ä</p>
+<pre>-, + ¢ª Á°Æü, ÍâÆü
+(, ) ¢ª Á°Æü, ÍâÆü
+{, } ¢ª Á°·î, Íâ·î
+[, ] ¢ª Á°Ç¯, Íâǯ</pre>
+<ul>
+<li>C-u 20 - ¢ª 20ÆüÁ°</li>
+<li><p>¥Ò¥Ã¥È¤·¤Ê¤«¤Ã¤¿¤é¤½¤ÎÀè¤ÎÆüÉÕ¤ò½ç¤Ëõ¤¹</p>
+<pre>(setq howm-date-forward-ymd-limit 90) ;; 90ÆüÀè¤Ç give up</pre></li>
+<li>¤â¤Ã¤È¤Þ¤·¤Ê¥¡¼ÀßÄê¤Ê¤¤¤«¤Í¤¨</li>
+</ul></li>
+<li><p>ÆüÉÕÆþÎÏ¡ÖC-c , d¡×¤·¤¿¤È¤¤ÎÆ°ºî¤ò¤µ¤é¤Ë¾®¸¤·¤¯</p>
+<pre>(setq howm-insert-date-pass-through t)</pre>
+<ul>
+<li>ÆüÉÕ¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤Æ¤Ï¸µ¤ÈƱÍÍ</li>
+<li>ÆüÉÕ¥³¥Þ¥ó¥É¤¸¤ã¤Ê¤¤¤È¤¤Ï, ¤¿¤À¤Á¤ËÈ´¤±¤ë.
+ C-c , d hoge ¤È¤« C-c , d C-a ¤È¤«»î¤»¤Ð¤ï¤«¤ê¤Þ¤¹.</li>
+<li>¤·¤Þ¤Ã¤¿. ¡Ö[2004-05-21]+¡×¤È¤«ÆþÎϤ·¤è¤¦¤È¤¹¤ë¤È¤È¤Þ¤É¤¦.
+ ¡Ö+ RET¡×¤Ç¡Ö+¤òÁÞÆþ¡×¤Ë¤Ï¤·¤Æ¤ß¤¿¤±¤É¡Ä</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>1.2.1
+<ul>
+<li>Major
+<ul>
+<li>howm2 ¤Îºî¤êľ¤·? (ext/howmkara)
+<ul>
+<li>ɬÍפˤ»¤Þ¤é¤ì¤Æ¤Ç¤Ã¤Á¤¢¤². ̾Á°¤â¤Æ¤¤È¤¦.
+<ul>
+<li>ɬÍפÏËþ¤¿¤µ¤ì¤¿¤«¤é, ¤Þ¤¿ÊüÃÖ¤«¤â. 狼¤É¤¦¤Ë¤«¤·¤Æ¤¯¤ì¤ì¤Ð¡Ä</li>
+</ul></li>
+<li>µ¡Ç½¤ÏÂಽ. ¥½¡¼¥¹¤ÏÁ°¤è¤ê¤Ï¤Þ¤·.
+<ul>
+<li>magic string ¤¬¤Á¤é¤Ð¤Ã¤Æ¤ë¤Î¤Ï¤±¤·¤«¤é¤ó¤±¤É¡Ä</li>
+</ul></li>
+<li>°ì¥á¥â°ì¥Õ¥¡¥¤¥ë¤Ëʬ³ä¤¹¤ë ext/hsplit.rb ¤â½ñ¤¤¤¿¤±¤É,
+ ¤³¤ì¤Ï¤µ¤é¤Ë¼êÈ´¤</li>
+</ul></li>
+</ul></li>
+<li>Minor
+<ul>
+<li>hcal.rb ¤Î¡Ö[2004-09-02]?¡×Âбþ(¼«Ê¬ÀìÍѤ½¤Î¤Ð¤·¤Î¤®)
+ <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?TangledToDo">ref</a></li>
+<li>M-x howm-return-to-list ¢ª °ìÍ÷ɽ¼¨¤ËÌá¤ë
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/377">thx</a>
+<ul>
+<li>¤È¤êµÞ¤®Ä¶»¨¤Ç¤Ã¤Á¤¢¤². È¿¶Á¤Ë±þ¤¸¤Æ¤Þ¤¿¹Í¤¨¤è¤¦.</li>
+<li><p>°ìÍ÷ɽ¼¨¤Ë¤¤¤Á¤¤¤ÁÌá¤ë¤³¤È¤Ê¤¯, °ìÍ÷¤Î¼¡¹àÌܤòľÀܳ«¤¯:</p>
+<pre>(defun my-howm-next-hit (n)
+ (interactive "p")
+ (let ((buf (save-window-excursion
+ (howm-return-to-list)
+ (when (not (eq major-mode 'howm-view-summary-mode))
+ (error "Sorry. This case is not cared."))
+ (forward-line n)
+ (let ((howm-view-summary-keep-cursor nil))
+ (howm-view-summary-open))
+ (current-buffer))))
+ (switch-to-buffer buf)))
+(defun my-howm-previous-hit (n)
+ (interactive "p")
+ (my-howm-next-hit (- n)))</pre></li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>1.2.2
+<ul>
+<li>Æüì¥Õ¥©¥ë¥À
+<ul>
+<li>namazu folder »îºî
+<ul>
+<li>¥³¡¼¥É»¨¤¹¤®</li>
+<li>+from: ¤Ê¤É¤Ë̤Âбþ</li>
+<li>ľÀܸ¡º÷¤¹¤ë¤Ë¤Ï M-x howm-search-namazu</li>
+</ul></li>
+<li>rot13 folder/page »îºî
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/580">thx</a>
+<ul>
+<li>¤³¤ì¼«ÂΤϤªÍ·¤Ó¤À¤±¤É, ¡Ö¤Õ¤Ä¤¦¤Ç¤Ê¤¤¥Ú¡¼¥¸¡×¤ÎÎý½¬¤È¤·¤Æ</li>
+<li>rot13:xxx ¥Ð¥Ã¥Õ¥¡¤Ï, C-c C-c ¤Ç¡Örot13 ¤·¤ÆÊݸ¡×
+<ul>
+<li>rot13 ¤Ê¥Õ¥¡¥¤¥ë¤ò³«¤¯¤Ë¤Ï, M-x yarot13-find-file</li>
+</ul></li>
+</ul></li>
+<li><p>howm-search-path ¤Ë, Ä̾ï¤Î¡Ö¥Ç¥£¥ì¥¯¥È¥ê¡×°Ê³°¤â½ñ¤±¤ë</p>
+<pre>;; namazu folder ¤È rot13 folder ¤ò¸¡º÷ÂоݤËÄɲÃ
+;; (M-x howm-toggle-search-other-dir ¤Ç͸ú¡¦Ìµ¸ú¤òÀڤ꤫¤¨)
+(let* ((nd "~/PATH/NMZ/Mail") ;; namazu ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê
+ (rd "~/g/r13") ;; ¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤Ï rot13 ¤µ¤ì¤ë
+ (nf (howm-make-folder:namazu nd))
+ (rf (howm-make-folder:rot13dir rd)))
+ (setq howm-search-path (list nf rf)))
+(howm-toggle-search-other-dir 1) ;; 0 ¤Ê¤é½é´ü¾õÂ֤ϡÖ̵¸ú¡×</pre></li>
+</ul></li>
+<li>[2004-12-13]_3 ¤ÎͱͽÆü¿ô¡Ö3¡×¤Î°ÕÌ£¤ò 1 ¤º¤é¤·¤¿
+<ul>
+<li>¤¤¤Þ¤Þ¤Ç¤Ï, ¾Êά¤È 0 ¤È 1 ¤¬Æ±¤¸°ÕÌ£¤Ë¤Ê¤Ã¤Æ¤¤¤¿</li>
+<li>¤¤¤º¤ìµ¤¤¬¸þ¤¤¤¿¤é, ¤â¤Ã¤È¤Þ¤¸¤á¤Ë¼ÂÁõ¤·¤Ê¤ª¤¹¤«¤â
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/522">thx</a></li>
+</ul></li>
+<li>ext/hcal.rb ¤Ë iCalendar ½ÐÎϤòÄɲÃ, ¡Ä¤ÎºÇÄã¸Â¤Î¤È¤Ã¤«¤«¤ê¤À¤±</li>
+</ul></li>
+<li>1.3.1
+<ul>
+<li>¿·¤·¤¤¡Ö¥Ð¥°¤Î»ØŦ¤Î¼ê½ç¡×°Æ
+<ul>
+<li>make test ¤Ç emacs ¤òµ¯Æ°</li>
+<li>¥Ð¥°¤òȯ¾É¤µ¤»¤ë
+<ul>
+<li>ȯ¾É¤·¤Ê¤±¤ì¤Ð, ¼«Ê¬¤Î .emacs ¤«¤é´ØÏ¢¤·¤½¤¦¤Ê¤È¤³¤í¤ò
+ sample/dot.emacs ¤Ø¥³¥Ô¡¼¤·¤Æ, ¤â¤¦°ìÅÙ make test</li>
+</ul></li>
+<li>ȯ¾É¤·¤¿¤é¤¹¤«¤µ¤º M-x howm-bug-shot
+<ul>
+<li>¥Ð¡¼¥¸¥ç¥ó¤ä¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¤Ê¤É¤¬É½¼¨¤µ¤ì¤Þ¤¹</li>
+</ul></li>
+<li>¥³¥á¥ó¥È¤ò²Ã¤¨¤Æ 2ch ¤ËŽ¤ë</li>
+</ul></li>
+</ul></li>
+<li>1.3.3
+<ul>
+<li><p>¿·µ¬¥á¥âºîÀ®¤ò¤¹¤Ù¤Æ howm-remember ¤Ë¤¹¤ë¤Ë¤Ï¡Ä</p>
+<pre>;; howm-create ¤ò¤¹¤Ù¤Æ howm-remember ¤Ë¤¹¤ê¤«¤¨¤ë
+(defadvice howm-create (around remember activate)
+ (if (interactive-p)
+ (howm-remember)
+ ad-do-it))
+(setcdr (assoc "[¿·µ¬]" howm-menu-command-table-ja)
+ '(howm-remember current)) ;; [2006-05-15] ½¤Àµ</pre>
+<ul>
+<li>¥á¥Ë¥å¡¼¾å¤Ç c ¤ò²¡¤·¤¿¤È¤, ¡Ö¥á¥Ë¥å¡¼¤ÎÁ°¤Ëɽ¼¨¤·¤Æ¤¤¤¿¥Ð¥Ã¥Õ¥¡¡×
+ ¤ò½Ð¤¹Êý¤¬¹¥¤ß¤Ê¤é, ¡Öcurrent¡×¤ò¡Öprevious¡×¤Èľ¤·¤Æ¤¯¤À¤µ¤¤</li>
+</ul></li>
+<li>¥«¥Æ¥´¥êÊ̤Πtodo list
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/885">thx</a>
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/890">thx</a>
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/909">thx</a>
+ <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/919">thx</a>
+<ul>
+<li>¡ÖʬÎà¡×¤ÎÍ×˾¤Ï¤Ä¤Ã¤Ñ¤Í¤Æ¤¤¿¤ó¤À¤±¤É, º£Æü¤Ïµ¤¤Þ¤°¤ì¤Ëµ¤¤¬¸þ¤¤¤¿¤Î¤Ç
+ ¤ª»î¤·. Àµ¼°µ¡Ç½¤Ë¤·¤Æ¤¤¤¯¤«¤É¤¦¤«¤Ï̤Äê.</li>
+<li><p>¥á¥Ë¥å¡¼¤Ë¤³¤¦½ñ¤¯¤È, ¡Öfoo¡×¡Öbar¡×¡Öbaz¡×¤ò´Þ¤à todo ¤ò
+ ʬÎष¤Æɽ¼¨</p>
+<pre>%here%(howm-menu-categorized-reminder ("foo" "bar" "baz"))</pre>
+<ul>
+<li>¤Á¤Ê¤ß¤Ë, %here% ¤Ç¤Ï¥¯¥ª¡¼¥È¤ÏÉÔÍפǤ¹</li>
+</ul></li>
+<li><p>¤µ¤é¤Ë, ³Æ¹Ô¤Î¡Öfoo¡×¡Öbar¡×¡Öbaz¡×¤ò¾Ã¤·¤¿¤±¤ì¤Ð</p>
+<pre>%here%(howm-menu-categorized-reminder ("foo" "bar" "baz") nil t)</pre></li>
+<li><p>¡Ömisc.¡×¤òÈóɽ¼¨¤Ë¤·¤¿¤±¤ì¤Ð</p>
+<pre>%here%(howm-menu-categorized-reminder ("foo" "bar" "baz") nil nil t)</pre></li>
+</ul></li>
+<li><p>°ìÍ÷¥Ð¥Ã¥Õ¥¡¤Î¥Þ¥Ã¥ÁÆâÍƤκ¸¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨.
+ ¤Á¤Ê¤ß¤Ë½¾Íè¤Î¤Ï, ¡Ö¥Þ¥Ã¥ÁÆâÍƤΤ«¤ï¤ê¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨¡×.
+ <a href="http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000025.html">thx</a> > Highfly ¤µ¤ó</p>
+<pre>(setq howm-view-list-title-type 2) ;; ¥Þ¥Ã¥ÁÆâÍƤκ¸¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨
+(setq howm-view-summary-format "") ;; ¥Õ¥¡¥¤¥ë̾¤ò¾Ã¤·¤¿¤±¤ì¤Ð</pre></li>
+<li>C-c , M ¤Ç¡Ö¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Æ¥á¥â¤ò³«¤¯¡×
+ <a href="http://lists.sourceforge.jp/mailman/archives/howm-eng/2005/000010.html">thx</a> > Eduardo Ochs ¤µ¤ó</li>
+</ul></li>
+<li>1.3.7
+<ul>
+<li><p>°ìÍ÷»þ¤Ë¥¦¥£¥ó¥É¥¦Ê¬³ä¤ò²õ¤µ¤Ê¤¤ÀßÄê.
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/507">thx</a></p>
+<pre>(setq riffle-keep-window t)
+(setq riffle-window-initializer nil)</pre>
+<ul>
+<li>ÆâÍƥХåե¡¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó.</li>
+<li>¤È¤ê¤¢¤¨¤ºÃ¡¤Âæ. º£¸åÊѹ¹¤Î²ÄǽÀ¤¢¤ê.</li>
+</ul></li>
+<li>M-x howm-list-active-todo ¤Ç, ¸½ºß͸ú¤Ê(¡áÀøÉúÃæ¤Ç¤Ê¤¤) todo ¤Î¤ß¤ò°ìÍ÷.
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/129-131n">thx</a>
+<ul>
+<li>¤Ä¤¤¤Ç¤Ë, M-x howm-list-sleeping-todo ¤Ç, ÀøÉúÃæ¤Î todo ¤Î¤ß¤ò°ìÍ÷.</li>
+<li>¤È¤ê¤¢¤¨¤º´Ø¿ô¤À¤±»îºî. ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î°Æ¤¬¤¢¤ì¤Ð¤ªÊ¹¤«¤»¤¯¤À¤µ¤¤.</li>
+<li>¤Á¤Ê¤ß¤Ë, ¥á¥Ë¥å¡¼¤«¤éÀøÉúÃæ todo ¤ò¾Ã¤¹¤Ë¤Ï,
+ M-x customize-variable RET howm-menu-todo-priority RET ¤Ç
+ ¡ÖHide sleeping reminders¡×¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤.</li>
+</ul></li>
+<li><p>¥Ð¥Ã¥Õ¥¡Ì¾¤ò, ¥Õ¥¡¥¤¥ë̾¤Ç¤Ï¤Ê¤¯¥¿¥¤¥È¥ë¤Ë¤¹¤ë.
+ <a href="http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000020.html">thx</a> > Mielke-san (peter at exegenix.com),
+ <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ExternalTool">thx</a></p>
+<pre>;; emacs ¾å¤Ç¤Î¥Ð¥Ã¥Õ¥¡Ì¾¤ò, ¥Õ¥¡¥¤¥ë̾¤Ç¤Ï¤Ê¤¯¥¿¥¤¥È¥ë¤Ë.
+;; (¥Õ¥¡¥¤¥ë̾¼«ÂΤÏÊѹ¹¤·¤Ê¤¤)
+(add-hook 'howm-mode-hook 'howm-mode-set-buffer-name)
+(add-hook 'after-save-hook 'howm-mode-set-buffer-name)</pre>
+<ul>
+<li><p>¥¿¥¤¥È¥ë¡Ö¤Û¤²¡×¤Î¥á¥â¤Î¥Ð¥Ã¥Õ¥¡Ì¾¤ò¡Ö=¤Û¤²¡×¤Ë
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/333">thx</a></p>
+<pre>;; ¥¿¥¤¥È¥ë¤¬ AAA ¤Ê¤é¥Ð¥Ã¥Õ¥¡Ì¾¤ò =AAA ¤Ë.
+;; ²¼¤Î howm-mode-set-buffer-name ¤òÀßÄꤷ¤¿¾å¤Ç¡Ä
+(setq howm-buffer-name-format "=%s")</pre></li>
+<li>ËÜÅö¤Ï howm ¤ÈÆÈΩ¤·¤¿¥Ä¡¼¥ë¤Ë¤¹¤ëÊý¤¬¤¤¤¤¤±¤É,
+ ¤ª¤Ã¤¯¤¦¤Ê¤Î¤Ç¤Ò¤È¤Þ¤º.</li>
+</ul></li>
+</ul></li>
+<li>1.3.8
+<ul>
+<li>M-x howm-extend-deadlines ¤Ç,
+ »ØÄêÆü¤ò²á¤®¤¿¡ºÀÚ(!)¤ò¤¹¤Ù¤Æ°ìÄêÆü¿ô¸å¤Ø±ä´ü.
+ <a href="http://hibari.2ch.net/test/read.cgi/unix/1141892764/671">thx</a>
+<ul>
+<li>»ÅÍͤ⥤¥ó¥¿¥Õ¥§¡¼¥¹¤â¤Þ¤Àá¤Âæ.</li>
+<li>¥á¥â¤ò¾¡¼ê¤Ë½ñ¤¤«¤¨¤ë´í¸±¤ÊÁàºî¤Ê¤Î¤Ç, ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¤È¤Ã¤Æ¤«¤é!</li>
+</ul></li>
+</ul></li>
+<li>1.3.9
+<ul>
+<li>¥á¥Ë¥å¡¼¤Ë¡Ö%here%(howm-menu-search "[ÃÇ]ÊÒŪ" full t)¡×¤È½ñ¤±¤Ð,
+ ¡ÖÃÇÊÒŪ¡×¤ò´Þ¤à¥á¥â¤ÎÆâÍÆÁ´ÂΤò¥á¥Ë¥å¡¼¤ËËä¤á¹þ¤ß.
+ <a href="http://sourceforge.jp/projects/howm/lists/archive/eng/2010/000097.html">thx</a>
+ > Morgan Veyret ¤µ¤ó (morgan.veyret at gmail.com).
+<ul>
+<li>ñ¤Ë "ÃÇÊÒŪ" ¤È¤·¤Ê¤¤¤Î¤Ï, ¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¼«¿È¤¬¥Ò¥Ã¥È¤¹¤ë¤Î¤òÈò¤±¤ë¾®ºÙ¹©</li>
+</ul></li>
+</ul></li>
+<li>1.4.2
+<ul>
+<li><p>°ìÍ÷¥Ð¥Ã¥Õ¥¡¤Ç¡Ö¥Õ¥¡¥¤¥ë | ¥Þ¥Ã¥Á¹Ô¡×¤Î¤«¤ï¤ê¤Ë¤³¤ó¤Êɽ¼¨¤Ë.
+ ¤³¤Î¤È¤¥¿¥¤¥È¥ëÀèƬ¤Î¡Ö=¡×¤Ïɽ¼¨¤·¤Ê¤¤¤è¤¦¤Ë.
+ (experimental)
+ <a href="http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000107.html">thx</a>
+ <a href="http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000111.html">thx</a>
+ > Albert-san (areiner at tph.tuwien.ac.at)</p>
+<pre>¥¿¥¤¥È¥ë A|
+|¥Þ¥Ã¥Á¹Ô A1
+|¥Þ¥Ã¥Á¹Ô A2
+¥¿¥¤¥È¥ë B|
+|¥Þ¥Ã¥Á¹Ô B1
+|¥Þ¥Ã¥Á¹Ô B2</pre>
+<ul>
+<li><p>ÀßÄê</p>
+<pre>(setq howm-view-list-title-type 2) ;; Show title before summary.
+(setq howm-view-summary-format "") ;; If you want to delete file names.
+(setq howm-entitle-items-style2-max-length 50)
+(setq howm-entitle-items-style2-format "%-0s|%s") ;; for title and summary
+(setq howm-entitle-items-style2-title-line t) ;; independent title line?</pre></li>
+<li>¤µ¤é¤Ë, M-x customize-variable RET howm-list-title RET ¤âÀßÄê¤ò</li>
+<li>À©¸Â: °ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Ç C-c , a (howm-list-all) ¤·¤¿¤È¤¤Ï
+ Âбþ¤¹¤ë¥¿¥¤¥È¥ë¹Ô¤ËÈô¤ó¤Ç¤¯¤ì¤Ê¤¤
+<ul>
+<li>¤½¤â¤½¤â¹Ô»Ø¸þ¤Çºî¤Ã¤Æ¤¤¤¿¤Î¤Ç¼ÂÁõ¤¬ÌµÍýÌðÍý</li>
+<li>¤¤Á¤ó¤Èľ¤¹¤Î¤Ï¤á¤ó¤É¤¦. ¶¯¤¤¼ûÍפ¬¤Ê¤±¤ì¤Ð¡Ä</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>¡ÄÍúÎòÈ´¿è¡Ä (<a href="OLD.rd"><URL:OLD.rd></a> »²¾È)
+<ul>
+<li>[2010-12-30] 1.3.9 Èù½¤Àµ</li>
+<li>[2009-12-31] 1.3.8 ²á¤®¤¿¡ºÀÚ¤ËÃ忧</li>
+<li>[2008-12-31] 1.3.7 ÆâÉô¥³¡¼¥ÉÀ°Íý (ÉûºîÍѤòʬΥ).
+ howm-list-normalizer ¤«¤é howm-normalizer ¤Ø.</li>
+<li>[2008-05-31] 1.3.6 Ã忧¤ÎÉÔ¶ñ¹ç½¤Àµ</li>
+<li>[2007-12-09] 1.3.5 ²Æ»þ´Ö¤ÎÉÔ¶ñ¹ç½¤Àµ</li>
+<li>[2006-12-16] 1.3.4 ¥»¥¥å¥ê¥Æ¥£½¤Àµ</li>
+<li>[2005-08-02] 1.3.0 alias. M-x customize. ¥¿¥¤¥È¥ëɽ¼¨.</li>
+<li>[2005-05-02] 1.2.2 ¥Ð¥Ã¥¯¥¨¥ó¥ÉÀÚ¤êÎ¥¤·. gfunc.el</li>
+<li>[2004-08-24] 1.2 ÊÝα¡Ö~¡×¤Î¸ø¼°²½. howm.el, riffle.el</li>
+<li>[2004-05-06] 1.1.2 make test</li>
+<li>[2004-02-27] <a href="http://pc8.2ch.net/test/read.cgi/unix/1077881095/">2ch howm ¥¹¥ì 2</a></li>
+<li>[2004-02-21] 1.1.1 ¡Ö±£¤·µ¡Ç½¡×À©ÅÙ¤òƳÆþ</li>
+<li>[2004-01-25] <a href="http://howm.sourceforge.jp/">sf.jp</a> ¤Ø°ÜÆ°</li>
+<li>[2005-01-08] <a href="http://www.unixuser.jp/magazine/2004/200402.html">UNIX USER 2004.2</a></li>
+<li>[2003-12-27] <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi">howm wiki</a></li>
+<li>[2003-11-22] 1.1 ¥Ç¥Õ¥©¥ë¥È¤ÎÊѹ¹
+ (¥ê¥ó¥¯¡¦ÆüÉÕ¡¦¥ê¥Þ¥¤¥ó¥À¤Î½ñ¼°, °ì¥á¥â°ì¥Õ¥¡¥¤¥ë, ¥á¥Ë¥å¡¼¤â¥á¥â¤Î°ì¼ï)</li>
+<li>[2003-10-27] 1.0.4.2 ½Å¤¯¤Ê¤ë¥Ð¥°¤ò½¤Àµ. ¤è¤¯¤³¤ó¤Ê¤Î¤ÇÆ°¤¤¤Æ¤¿¤Ê¤¢¡Ä</li>
+<li>[2003-10-02] 1.0.4 ³°Éô viewer, ¥á¥Ë¥å¡¼¤Î²á¾ê¶¯²½</li>
+<li>[2003-09-23] ¡Ö¥Æ¥¹¥ÈÈǡפòƳÆþ</li>
+<li>[2003-09-18] 1.0.2 HTML ²½¥¹¥¯¥ê¥×¥È howm2</li>
+<li>[2003-09-17] <a href="http://pc.2ch.net/test/read.cgi/unix/1063800495/">2ch howm ¥¹¥ì</a></li>
+<li>[2003-09-17] 1.0 ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤ò³¬Áز½</li>
+<li>[2003-09-16] 0.9.7.1 Wiki É÷¥ê¥ó¥¯ [[¤Û¤²]]</li>
+<li>[2003-09-14] 0.9.4.1 grep æµÑ</li>
+<li>[2003-09-09] 0.9 ruby æµÑ</li>
+<li>[2003-08-31] 0.8.5 ¥¿¥¤¥È¥ë°ìÍ÷</li>
+<li>[2003-06-03] 0.8.4 °Âľ¥«¥ì¥ó¥À¡¼ hcal.rb</li>
+<li>[2002-11-03] 0.8 ¥á¥Ë¥å¡¼, ½ÜÅÙ½ç todo @[2003/09/20]+</li>
+<li>[2002-09-17] 0.7 1 Æü 1 ¥Õ¥¡¥¤¥ë, come-from ¥ê¥ó¥¯ <<</li>
+<li>[2002-09-14] 0.6 ¥ê¥ó¥¯ÇÑ»ß(¤¹¤Ù¤Æ¤Ï¡Ö¸¡º÷¡×)</li>
+<li>[2002-06-10] <a href="http://www1.neweb.ne.jp/wa/yamdas/column/technique/clonelist.html">ÆüËÜȯ¤Î wiki ¥¯¥í¡¼¥ó¥ê¥¹¥È</a></li>
+<li>[2002-05-29] 0.1 ¸ø³«</li>
+</ul></li>
+</ul>
+<h3><a name="label-19" id="label-19">¥¢¥É¥ì¥¹</a></h3><!-- RDLabel: "¥¢¥É¥ì¥¹" -->
+<ul>
+<li>ºÇ¿·ÈÇ: <a href="http://howm.sourceforge.jp/"><URL:http://howm.sourceforge.jp/></a></li>
+<li>Ï¢ÍíÀè: email ¥¢¥É¥ì¥¹¤Ï¥½¡¼¥¹¥Õ¥¡¥¤¥ëËÁƬ¤ò»²¾È¤¯¤À¤µ¤¤</li>
+</ul>
+
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>README.rd</title>
+</head>
+<body>
+<h1><a name="label-0" id="label-0">howm tutorial</a></h1><!-- RDLabel: "howm tutorial" -->
+<h2><a name="label-1" id="label-1">First day</a></h2><!-- RDLabel: "First day" -->
+<h3><a name="label-2" id="label-2">Write a note.</a></h3><!-- RDLabel: "Write a note." -->
+<ul>
+<li><p>Type Ctrl-C , , to open the menu.</p>
+<pre>[New] Search([String] [Regexp]) [Dup] [<Title] [<Name] [Date>] [Key>] [Update]
+[All] [Recent] [Schedule] [Todo] [Update Menu]</pre></li>
+<li><p>Confirm the cursor is on [New], and type [return] there to open new note.</p>
+<pre>=
+[2002-09-16 20:08] >>> /home/hira/elisp/howm/howm-mode.el</pre></li>
+<li><p>Write anything.</p>
+<pre>= First note
+[2002-09-16 20:08] >>> /home/hira/elisp/howm/howm-mode.el
+foo
+bar
+baz</pre></li>
+</ul>
+<h2><a name="label-3" id="label-3">Second day</a></h2><!-- RDLabel: "Second day" -->
+<h3><a name="label-4" id="label-4">Write today's note.</a></h3><!-- RDLabel: "Write today's note." -->
+<ul>
+<li>Type Ctrl-C , , and type [return] on [New]. Then, write freely.</li>
+</ul>
+<h3><a name="label-5" id="label-5">Read notes.</a></h3><!-- RDLabel: "Read notes." -->
+<ul>
+<li><p>Type Ctrl-C , , to open the menu.</p>
+<pre>[New] Search([String] [Regexp]) [Dup] [<Title] [<Name] [Date>] [Key>] [Update]
+[All] [Recent] [Schedule] [Todo] [Update Menu]</pre></li>
+<li>Move the cursor to [All] and type [return] there to browse all notes.</li>
+<li>Move the cursor up and down to view each note.</li>
+<li>Type [space] and [backspace] to scroll the note.</li>
+<li>Type [return] to open the note.</li>
+</ul>
+<h3><a name="label-6" id="label-6">Concatenate notes.</a></h3><!-- RDLabel: "Concatenate notes." -->
+<ul>
+<li>Type Ctrl-C , , to open the menu.</li>
+<li>Move the cursor to [All] and type [return].</li>
+<li>Type @ to concatenate all notes.</li>
+<li>Type [space] and [backspace] to scroll the notes.</li>
+<li>Type @ to toggle summary-view and concatenated-view.</li>
+<li>Type [return] to open the note.</li>
+</ul>
+<h3><a name="label-7" id="label-7">Search a word in notes.</a></h3><!-- RDLabel: "Search a word in notes." -->
+<ul>
+<li>Type Ctrl-C , , to open the menu.</li>
+<li><p>Move the cursor to [String] and type [return] there to search for a string.</p>
+<pre>Keyword:</pre></li>
+<li><p>Input a string.</p>
+<pre>Keyword: foo</pre></li>
+<li>Type [return] to browse matched notes.</li>
+</ul>
+<h3><a name="label-8" id="label-8">Search a phrase in notes.</a></h3><!-- RDLabel: "Search a phrase in notes." -->
+<ul>
+<li>Type Ctrl-C , , to open the menu.</li>
+<li>Move the cursor to [String] and type [return].</li>
+<li><p>Input a string. Type Ctrl-q and [space] to input a whitespace.</p>
+<pre>Keyword: hoge fuga</pre></li>
+<li>Type [return] to browse matched notes.</li>
+</ul>
+<h2><a name="label-9" id="label-9">Third day</a></h2><!-- RDLabel: "Third day" -->
+<h3><a name="label-10" id="label-10">Try goto link.</a></h3><!-- RDLabel: "Try goto link." -->
+<ul>
+<li>Ctrl-C , , and [return] on [New] to open new note.</li>
+<li><p>Write '>>> foo'.</p>
+<pre>=
+[2002-09-17 20:15]
+>>> foo</pre></li>
+<li>A line is drawn under it.
+ Move the cursor on it and type [return] to search for 'foo' in all notes.</li>
+</ul>
+<h3><a name="label-11" id="label-11">Try come-from link.</a></h3><!-- RDLabel: "Try come-from link." -->
+<ul>
+<li><p>Write '<<< hoge' in today's note.</p>
+<pre>=
+[2002-09-17 20:15]
+>>> foo
+<<< hoge</pre></li>
+<li>Move the cursor on '<<<' and type [return] to search for 'hoge' in all notes.</li>
+<li>Select the first day's note and type [return] to open it.</li>
+<li>A line is drawn under 'hoge'.
+ Move the cursor on it and type [return] to search for 'hoge' in all notes.</li>
+<li>Remember that '<<< hoge' is always shown first when you search for 'hoge'.
+ Others are sorted by their modification time.</li>
+</ul>
+<h3><a name="label-12" id="label-12">Search come-from keyword with completion.</a></h3><!-- RDLabel: "Search come-from keyword with completion." -->
+<ul>
+<li><p>Ctrl-C , , and [return] on [String] to search for a keyword.</p>
+<pre>Keyword:</pre></li>
+<li><p>Type 'ho' and type [space] to complete come-from keyword 'hoge'.</p>
+<pre>Keyword: hoge</pre></li>
+<li>Type [return] to search for 'hoge'.</li>
+</ul>
+<h2><a name="label-13" id="label-13">Fourth day</a></h2><!-- RDLabel: "Fourth day" -->
+<h3><a name="label-14" id="label-14">Sort notes.</a></h3><!-- RDLabel: "Sort notes." -->
+<ul>
+<li>Ctrl-C , , and [return] on [All] to browse all notes.</li>
+<li><p>Type S to sort notes.</p>
+<pre>Sort by:</pre></li>
+<li>Type [space] to show available criteria.</li>
+<li><p>Type 'da' and type [space] to complete 'date'.</p>
+<pre>Sort by: date</pre></li>
+<li>Type [return] to execute it.</li>
+</ul>
+<h3><a name="label-15" id="label-15">Filter notes.</a></h3><!-- RDLabel: "Filter notes." -->
+<ul>
+<li>Ctrl-C , , and [return] on [All] to browse all notes.</li>
+<li><p>Type f to filter notes.</p>
+<pre>Filter by:</pre></li>
+<li>Type [space] to show available criteria.</li>
+<li><p>Type 'co' and type [space] to complete 'contents'.</p>
+<pre>Filter by: contents</pre></li>
+<li><p>Type [return] and input 'foo'.</p>
+<pre>Search in result (grep): foo</pre></li>
+<li>Type [return] to execute it.</li>
+</ul>
+<h3><a name="label-16" id="label-16">Read help.</a></h3><!-- RDLabel: "Read help." -->
+<ul>
+<li>Ctrl-C , , and [return] on [All] to browse all notes.</li>
+<li>Type ? and read the help message.</li>
+</ul>
+<h3><a name="label-17" id="label-17">Use shortcut.</a></h3><!-- RDLabel: "Use shortcut." -->
+<ul>
+<li>Type Ctrl-C , c to create new note.</li>
+</ul>
+<h2><a name="label-18" id="label-18">Fifth day</a></h2><!-- RDLabel: "Fifth day" -->
+<h3><a name="label-19" id="label-19">Input todo.</a></h3><!-- RDLabel: "Input todo." -->
+<ul>
+<li>Type Ctrl-C , c to create new note.</li>
+<li><p>Write as follows.</p>
+<pre>[2003-09-10]- foo
+[2003-09-10]+ bar
+[2003-09-10]! baz
+[2003-09-10]~ qux</pre></li>
+</ul>
+<h3><a name="label-20" id="label-20">Browse todo.</a></h3><!-- RDLabel: "Browse todo." -->
+<ul>
+<li>Ctrl-C , , and [return] on [Todo] to browse all todo.</li>
+<li>Move cursor and type [return] to open the note.</li>
+<li>Type Ctrl-C , , to show the head of todo under the menu.</li>
+<li><p>Items are sorted by a magic criterion.</p>
+<pre>- sink after the date (reminder)
++ float after the date (todo)
+! float until the date (deadline)
+~ sink and float periodically after the date (defer)</pre></li>
+</ul>
+<h3><a name="label-21" id="label-21">Finish todo.</a></h3><!-- RDLabel: "Finish todo." -->
+<ul>
+<li>Ctrl-C , , and [return] on [Todo] to browse all todo.</li>
+<li><p>Move cursor and type [return] to open the note.</p>
+<pre>[2003-09-10]- foo</pre></li>
+<li><p>Move cursor on - and type [return] to show todo-menu.</p>
+<pre>RET (done), x (cancel), symbol (type), num(laziness): </pre></li>
+<li><p>Type [return] to finish this todo.</p>
+<pre>[2003-09-10]. [2003-09-10]:- foo</pre></li>
+</ul>
+<h3><a name="label-22" id="label-22">Input schedule.</a></h3><!-- RDLabel: "Input schedule." -->
+<ul>
+<li>Type Ctrl-C , c to create new note.</li>
+<li><p>Write as follows.</p>
+<pre>[2003-09-10]@ hoge</pre></li>
+</ul>
+<h3><a name="label-23" id="label-23">Browse schedule.</a></h3><!-- RDLabel: "Browse schedule." -->
+<ul>
+<li>Ctrl-C , , and [return] on [Schedule] to browse all schedule.</li>
+<li>Type [space] and [backspace] to scroll the list.</li>
+<li>Type . to jump to today.</li>
+<li>Type Ctrl-C , , to show the head of schedule under the menu.</li>
+<li>Type [return] on > at the beginning of line to open the corresponding note.</li>
+</ul>
+<h3><a name="label-24" id="label-24">Input recurring tasks.</a></h3><!-- RDLabel: "Input recurring tasks." -->
+<ul>
+<li><p>move cursor to '2003-09-10' on the below form in the opened note.</p>
+<pre>[2003-09-10]@ hoge</pre></li>
+<li><p>Type [return] to show date-menu.</p>
+<pre>[Wed] RET(goto), +num(shift), yymmdd(set), ~yymmdd(repeat), .(today): </pre></li>
+<li><p>Input ~031231 [return] and then type m [return] to the below question.</p>
+<pre>Every? [RET(all), num(days) w(week), m(month), y(year)] </pre></li>
+<li><p>And monthly tasks are added automatically until 2003-12-31.</p>
+<pre>[2003-09-10]@ hoge
+[2003-10-10]@ hoge
+[2003-11-10]@ hoge
+[2003-12-10]@ hoge</pre></li>
+<li>You can use '~1231' instead of '~031231' to input same-year items.</li>
+</ul>
+<h2><a name="label-25" id="label-25">Sixth day</a></h2><!-- RDLabel: "Sixth day" -->
+<h3><a name="label-26" id="label-26">Try action-lock { }.</a></h3><!-- RDLabel: "Try action-lock { }." -->
+<ul>
+<li>Type Ctrl-C , c to create new note.</li>
+<li><p>Write { }.</p>
+<pre>{ }</pre></li>
+<li><p>Move cursor on { } and type [return].</p>
+<pre>{*}</pre></li>
+<li><p>Type [return] again.</p>
+<pre>{-}</pre></li>
+</ul>
+<h3><a name="label-27" id="label-27">Try action-lock {_}.</a></h3><!-- RDLabel: "Try action-lock {_}." -->
+<ul>
+<li>Type Ctrl-C , c to create new note.</li>
+<li><p>Write {_}.</p>
+<pre>{_}</pre></li>
+<li><p>Move cursor on {_} and type [return].</p>
+<pre>[2003-09-10 04:12]</pre></li>
+</ul>
+<h3><a name="label-28" id="label-28">Try aliases.</a></h3><!-- RDLabel: "Try aliases." -->
+<ul>
+<li><p>Write '<<< hoge <<< fuga <<< piyo' in a note.</p>
+<pre>=
+[2002-09-17 20:15]
+<<< hoge <<< fuga <<< piyo</pre></li>
+<li>Write 'hoge' in another note.</li>
+<li>Write 'fuga' in yet another note.</li>
+<li>Put cursor on 'fuga' and type [return].
+ You will see all 'hoge', 'fuga', and 'piyo' are found together.</li>
+</ul>
+<h2><a name="label-29" id="label-29">Seventh day</a></h2><!-- RDLabel: "Seventh day" -->
+<h3><a name="label-30" id="label-30">Try customization.</a></h3><!-- RDLabel: "Try customization." -->
+<ul>
+<li>Type Ctrl-C , , to show the menu.</li>
+<li>Move cursor on [Preference] and type [return].</li>
+<li>Watch customization items and modify them if you like.</li>
+</ul>
+<h3><a name="label-31" id="label-31">Try editing menu.</a></h3><!-- RDLabel: "Try editing menu." -->
+<ul>
+<li>Type Ctrl-C , , to show the menu.</li>
+<li>Move cursor on [Edit Menu] and type [return].</li>
+<li>Delete the line '%random', and type Ctrl-C , , to observe its effect.</li>
+<li>Again try [Edit Menu] and write '%random' to restore it.</li>
+<li>Type Ctrl-C , , and move cursor to '%Editing Menu%' at the bottom.</li>
+<li>Type [return] and read documentation of menu syntax.</li>
+</ul>
+
+</body>
+</html>
--- /dev/null
+=begin
+
+= howm (°ì¿Í¤ª¼ê·Ú Wiki ¤â¤É¤)
+$Id: README.ja.rd,v 1.337 2012-12-29 00:59:48 hira Exp $
+
+Emacs ¤ÇÃÇÊÒŪ¤Ê¥á¥â¤ò¤É¤ó¤É¤ó¤È¤ë¤¿¤á¤Î´Ä¶¤Ç¤¹.
+ʬÎൡǽ¤Ï¤¢¤¨¤Æ¤Ä¤±¤Þ¤»¤ó.
+¤«¤ï¤ê¤Ë, Á´Ê¸¸¡º÷¤È¥á¥â´Ö¥ê¥ó¥¯¤¬¼ê·Ú¤Ë¤Ç¤¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿.
+¼«Í³½ñ¼°¤Ê¤Î¤Ç²þ½¡¤âÉÔÍ× :-)
+
+== Ìܼ¡
+
+* ((<»È¤¤Êý>)) ¡Ä
+ ((<¥á¥â¤ò½ñ¤³¤¦>))¡¿((<¥á¥â¤òÆɤ⤦>))¡¿((<¥ê¥Þ¥¤¥ó¥À>))
+* ((<ƳÆþË¡>)) ¡Ä
+ ((<¥¤¥ó¥¹¥È¡¼¥ë>))¡¿((<¥«¥¹¥¿¥Þ¥¤¥º>))¡¿((<³°Éô¥Ä¡¼¥ë>))
+* ((<¼ÂÁõ>)) ¡Ä
+ ((<¼ÂÁõ¤Ë¤Ä¤¤¤Æ>))¡¿((<Æ°¤¤Þ¤»¤ó¤è?>))
+* ((<È÷¹Í>)) ¡Ä
+ ((<»²¹Í>))¡¿((<¹¹¿·µÏ¿>))¡¿((<¥¢¥É¥ì¥¹>))
+
+== »È¤¤Êý
+
+* ¤¤¤í¤¤¤í¤¢¤ê¤¹¤®¤Æ²¿¤¬²¿¤ä¤é
+ ¢ª Àè¤Ë((<¥Á¥å¡¼¥È¥ê¥¢¥ë|URL:TUTORIAL.ja.rd>))¤ò¤É¤¦¤¾
+* ¼«Í³ÅÙ¤¢¤ê¤¹¤®¤Æ¤É¤¦»È¤¨¤Ð¤¤¤¤¤ä¤é
+ ¢ª ((<¤³¤ó¤Ê¤Õ¤¦¤Ë»È¤¨¤Þ¤¹|URL:index-j.html#hint>))
+
+=== ¥á¥â¤ò½ñ¤³¤¦
+(howm-mode)
+
+* ¼ê½ç
+ * C-c , , (M-x howm-menu) ¤Ç¥á¥Ë¥å¡¼¤ò½Ð¤·,
+ [¿·µ¬] ¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó ¢ª ¡Öº£Æü¤Î¥á¥â¡×¤ò³«¤¯
+ * ¤Þ¤¿¤Ï, ľÀÜ C-c , c (M-x howm-create)
+ * ¤³¤ó¤Ê¥Æ¥ó¥×¥ì¡¼¥È¤¬É½¼¨¤µ¤ì¤ë
+ = ¢£ ¢«(¥¿¥¤¥È¥ëÍó)
+ [2002-09-16 20:08] >>> /home/hira/elisp/howm/howm-mode.el
+ ¢¬(ºîÀ®Æü & ¤½¤ÎÁ°¤Ë¸«¤Æ¤¿¥Õ¥¡¥¤¥ë)
+ * ¸«¤Æ¤¿¥Õ¥¡¥¤¥ë¤¬ÉÔÍפʤé, undo (C-x u ¤À¤« C-_ ¤À¤«) ¤Ç¾Ã¤¹
+ * ¥Æ¥ó¥×¥ì¡¼¥È¼«ÂΤ¬ÉÔÍפʤé, ³¤±¤Æ¤â¤¦°ìÅÙ undo
+ * ¹¥¤¤Ê¤³¤È¤ò¹¥¤¤Ê¤è¤¦¤Ë½ñ¤¯
+ * ¤½¤ó¤À¤±.
+
+* ¥¿¥¤¥È¥ëÍó (1 ¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â)
+ * ¼¡¤Î¤è¤¦¤Ë½ñ¤¯¤È, foo ¤È bar ¤¬¥¿¥¤¥È¥ë
+ = foo
+ (¡Ä ¤Û¤²¤Û¤² ¡Ä)
+ = bar
+ (¡Ä ¤Õ¤¬¤Õ¤¬ ¡Ä)
+ * Ï¢·ëɽ¼¨¤Ç¤Ï, (¡Ä ¤Û¤²¤Û¤² ¡Ä) ¤ä (¡Ä ¤Õ¤¬¤Õ¤¬ ¡Ä) ¤¬¤Ò¤È¤«¤¿¤Þ¤ê
+ * Àµ³Î¤Ê½ñ¼°¤Ï,
+ (¹ÔƬ)=(¶õÇò)(¥¿¥¤¥È¥ë)(¹ÔËö)
+ * ½ñ¼°¤ÏÊѹ¹²Ä (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * ¥¿¥¤¥È¥ë¤Ê¤·¤Ç, ñ¤Ë¥á¥â¤Î¶èÀÚ¤ê¤È¤·¤Æ»È¤¦¤À¤±¤Ç¤â OK
+ (¡Ä ¤Û¤²¤Û¤² ¡Ä)
+ =
+ (¡Ä ¤Õ¤¬¤Õ¤¬ ¡Ä)
+ =
+ (¡Ä ¤Ø¤í¤Ø¤í ¡Ä)
+
+* ¼¡¤Î¤è¤¦¤Ë½ñ¤¯¤È¥ê¥ó¥¯
+ * goto ¥ê¥ó¥¯: ¥Õ¥¡¥¤¥ë(¥Ç¥£¥ì¥¯¥È¥ê)̾ or ´Þ¤Þ¤ì¤ëʸ»úÎó
+ >>> ~/.emacs
+ >>> /usr/src
+ >>> ¤Û¤²¤Û¤²
+ * ËÜʸÃæ¤Ë¡Ö¤Û¤²¤Û¤²¡×¤È¤¤¤¦Ê¸»úÎó¤ò´Þ¤à¥á¥â¤Ø¤Î¥ê¥ó¥¯
+ * come-from ¥ê¥ó¥¯: ¾¤Î¥á¥â¤Ç¡Ö¤Õ¤¬¤Õ¤¬¡×¤È¤¤¤¦Ê¸»úÎ󤬽ФƤ¤¿¤é,
+ ¤¼¤ó¤Ö¤³¤Î¥á¥â¤Ø¤Î¥ê¥ó¥¯¤Ë
+ <<< ¤Õ¤¬¤Õ¤¬
+ * »²¹Í
+ ((<"Jargon: COME-FROM"|URL:http://catb.org/~esr/jargon/html/C/COME-FROM.html>))
+ * Wiki É÷¥ê¥ó¥¯: goto ¤ÈƱ¤¸. ¤¿¤À¤·¡Ö<<< ¤Ø¤í¤Ø¤í¡×¤¬¤â¤·¤Ê¤±¤ì¤Ðºî¤ë.
+ [[¤Ø¤í¤Ø¤í]]
+
+* ¥ê¥ó¥¯¤Ë¤Ï²¼Àþ¤¬°ú¤«¤ì¤ë. ²¼Àþ¤Ë¥«¡¼¥½¥ë»ý¤Ã¤Æ¤Ã¤Æ¥ê¥¿¡¼¥ó¥¡¼!
+ * ³ºÅö¥Õ¥¡¥¤¥ë¤Î°ìÍ÷¤¬É½¼¨¤µ¤ì¤ë (¢ª((<¥á¥â¤òÆɤ⤦>)))
+ * ¤¿¤È¤¨¤Ð, ¡Ö>>> emacs¡×¤Ê¤é¤³¤ó¤Ê°ìÍ÷
+ <<< emacs ¢« ¤º¤Ð¤ê¤Î come-from Àë¸À¤ò¤·¤¿¥á¥â
+ <<< emacs lisp ¢« ¡Öemacs¡×¤ò´Þ¤à come-from ¤òÀë¸À¤·¤¿¥á¥â
+ <<< ¼«ºî emacs lisp
+ grep, ruby, emacs ¤Î regexp ¤Î°ã¤¤ ¢« ËÜʸÃæ¤Ë¡Öemacs¡×¤ò´Þ¤à¥á¥â
+ emacs ÍѸ¡º÷¥Ä¡¼¥ë?[2001-08-13] (¿·¤·¤¤½ç)
+ ¡Ä
+ * Æɤߤ¿¤¤¥á¥â¤Ë¥«¡¼¥½¥ë¤¢¤ï¤»¤Æ¥ê¥¿¡¼¥ó¥¡¼!
+ ¢ª ¤½¤Î¥á¥â¤ò³«¤¯
+ * ΢µ»
+ * come-from ¥ê¥ó¥¯¤Î <<< ¾å¤Ç¥ê¥¿¡¼¥ó ¢ª ¡Ö´ØÏ¢¥¡¼¥ï¡¼¥É¡×¤Ø¤Î¥ê¥ó¥¯
+ * Îã
+ * ¡Ö¼«ºî¡×¡Ölisp¡×¤¬ come-from ¥¡¼¥ï¡¼¥É¤Î¤È¤
+ * ¡Ö<<< ¼«ºî¤Î lisp¡×¤Î¾å¤Ç¥ê¥¿¡¼¥ó
+ ¢ª ¡Ö¼«ºî¡×¡Ölisp¡×¤ò´Þ¤à¥¡¼¥ï¡¼¥É¤¬¥Ò¥Ã¥È
+ * ¥á¥âÃæ¤Ë¡Ö<<< foo <<< bar <<< baz¡×¤È½ñ¤±¤Ð, ¡Öalias¡×
+ * foo, bar, baz ¤Î¤É¤ì¤Ç¥ê¥¿¡¼¥ó¤òᤤ¤Æ¤â
+ ¡Öfoo ¤Þ¤¿¤Ï bar ¤Þ¤¿¤Ï baz¡×¤Î¸¡º÷¤Ë¤Ê¤ê¤Þ¤¹
+ * Tips: ¸ß¤¤¤Ë¤¿¤°¤ê¤¿¤¤¤±¤É alias ¤Çº®¤¼¤ë¤Î¤Ï·ù, ¤È¤¤¤¦¾ì¹ç¤Ë¤Ï¡Ä
+ * ¤É¤³¤«¤Ë¡Ö<<< foo¡×
+ * Ê̤Τɤ³¤«¤Ë¡Öfoo <<< bar¡×
+ * ¤³¤¦¤¹¤ì¤Ð, foo¡¦bar ¤É¤Á¤é¤Ç¸¡º÷¤·¤Æ¤â¡Öfoo <<< bar¡×¤¬¾å°Ì¤Ë
+
+* ¥ê¥ó¥¯¤Î¿¿Áê
+ * ¼Â¤Ïñ¤Ë, ¡Ögrep ¤Õ¤¬¤Õ¤¬¡×¤Î¥·¥ç¡¼¥È¥«¥Ã¥È¤À¤Ã¤¿¤ê
+ * come-from ¥ê¥ó¥¯¤Î¸ú²Ì
+ * ¤³¤Î¥¡¼¥ï¡¼¥É¤¬½Ð¤Æ¤¤¿¤é, ¼«Æ°Åª¤Ë¥ê¥ó¥¯(= ¸¡º÷)¤Ë¤·¤Æ¤¯¤ì
+ * ¤½¤Î¥¡¼¥ï¡¼¥É¤ò¸¡º÷¤·¤¿¤È¤¤Ï, ÀèƬ¤Ëɽ¼¨¤·¤Æ¤¯¤ì
+ * come-from ¥ê¥ó¥¯¤Ï¡Ä
+ * ¤Ê¤¯¤Æ¤â¤è¤·
+ * 1 ¤Ä¤Î¥á¥âÆâ¤Ë 2 ¸Ä 3 ¸Ä¤È¤¢¤Ã¤Æ¤â¤è¤·
+ * Ê̤Υá¥â¤ÈƱ¤¸¥¡¼¥ï¡¼¥É¤¬¤«¤Ö¤Ã¤Æ¤â¤è¤·
+ * ¥¿¥¤¥È¥ë¤È·ó¤Í¤ë¤Ê¤é,
+ = <<< ¤Õ¤¬¤Õ¤¬
+ * come-from, goto ¤È¤â, Âçʸ»ú¾®Ê¸»ú¤ò¶èÊÌ (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * ½ñ¼°¤ÏÊѹ¹²Ä (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ * °Ê²¼, come-from ¥ê¥ó¥¯¤Î¥¡¼¥ï¡¼¥É¤òñ¤Ë¡Ö¥¡¼¥ï¡¼¥É¡×¤Èɽµ
+
+* action-lock
+ * ¼öʸ¤Î¾å¤Ç¥ê¥¿¡¼¥ó¥¡¼¤¿¤¿¤¯¤ÈËâˡȯư
+ * { } ¤È½ñ¤¯¤È¡Ö¥È¥°¥ë¥¹¥¤¥Ã¥Á¡×.
+ ¤¿¤¿¤¯¤¿¤ó¤Ó¤Ë { } ¢ª {*} ¢ª {-} ¢ª { } ¢ª ¡Ä
+ * {_} ¤È½ñ¤¯¤È¡Ö̤½èÍý¡×.
+ ¤¿¤¿¤±¤Ð {_} ¢ª [2002-09-13 02:31]
+ * http://¡Ä ¢ª ¥Ö¥é¥¦¥¶µ¯Æ°
+ * browse-url ¤ò»ÈÍÑ. ɬÍפʤéŬÅö¤ËÀßÄê.
+ (setq browse-url-browser-function 'browse-url-mozilla)
+ * file://¡Ä ¢ª ¥Õ¥¡¥¤¥ë¤ò³«¤¯
+ * C-u RET ¤Ê¤éÁë¤òʬ³ä¤·¤Æ³«¤¯
+ * [2002-10-18] ¤Î¤è¤¦¤ÊÆüÉÕ·Á¼°¤Î¾å¤Ç¥ê¥¿¡¼¥ó ¢ª minibuffer ¤Ç¡Ä
+ * ¤½¤Î¤Þ¤Þ¥ê¥¿¡¼¥ó ¢ª ¤½¤ÎÆüÉÕ¤ò¸¡º÷ (goto link)
+ * ¡Ö+17¡× ¢ª 17 Æü¸å¤ÎÆüÉդ˽ñ¤¤«¤¨
+ * ¡Ö20030921¡× ¢ª [2003-09-21] ¤Ë½ñ¤¤«¤¨
+ * ǯ¤ä·î¤Ï¾Êά²Äǽ
+ * ¡Ö6¡× ¢ª [2002-10-06]
+ * ¡Ö803¡× ¢ª [2002-08-03]
+ * ¡Ö31103¡× ¢ª [2003-11-03]
+ * ¡Ö~20031030¡× ¢ª ¤½¤Î¹Ô¤ÎÊ£À½¤ò [2003-10-30] ʬ¤Þ¤ÇÁÞÆþ
+ * ǯ¤ä·î¤Ï¾Êά²Äǽ (¾å¤ÈƱÍÍ)
+ * ¡ÖEvery?¡×¤ËÂФ·¤Æ
+ * ¤½¤Î¤Þ¤Þ¥ê¥¿¡¼¥ó ¢ª ËèÆü
+ * 3 ¢ª 3Æü¤´¤È
+ * w ¢ª Ëè½µ
+ * m ¢ª Ëè·î
+ * y ¢ª Ëèǯ
+ * ¡Ö.¡× ¢ª º£Æü¤ÎÆüÉդ˽ñ¤¤«¤¨
+ * ¤Á¤Ê¤ß¤Ë, ¥á¥Ë¥å¡¼¤Î [Æü¢] ¤ÇÆüÉÕ·Á¼°¤òÆþÎϤǤ¤Þ¤¹
+ * ¥ê¥ó¥¯¤â¤³¤Î¼öʸ¤Î°ì¼ï
+ * ¾¤Ë¤ª¤â¤·¤í¤¤¥¢¥¤¥Ç¥¢¤¢¤Ã¤¿¤é¶µ¤¨¤Æ¤¯¤À¤µ¤¤
+
+* ¥³¥Þ¥ó¥É (¡ú¤Ï howm-mode °Ê³°¤Ç¤â¾ï¤Ë͸ú)
+ * C-c , , ¢ª ¥á¥Ë¥å¡¼¤ò³«¤¯ ¡ú
+ * ¥á¥Ë¥å¡¼
+ * ¥¡¼
+ * [space] ¤È [backspace] ¢ª ¥¹¥¯¥í¡¼¥ë
+ * TAB (M-TAB) ¢ª ¼¡(Á°)¤Î¹àÌܤØ
+ * [¡û¡û] ¤ä > ¤Î¾å¤Ç¥ê¥¿¡¼¥ó ¢ª ¼Â¹Ô (¥¸¥ã¥ó¥×)
+ * ? ¢ª ¥Ø¥ë¥×
+ * q ¢ª æ½Ð
+ * ¥Ü¥¿¥ó [¡û¡û] (¥³¥Þ¥ó¥É)
+ * ºîÀ®
+ * [®µ] (C-c , e) ¢ª ¤Ñ¤Ñ¤Ã¤È¥á¥â¤È¤ê (C-c C-c ¤ÇÊݸ) ¡ú
+ * [¿·µ¬] (C-c , c) ¢ª ¿·µ¬¥á¥âºîÀ® (¸½¥ê¡¼¥¸¥ç¥ó¤¬¥¿¥¤¥È¥ë) ¡ú
+ * [Ê£À½] (C-c , D) ¢ª ¸½¥á¥â¤òÊ£À½ (½»½êÏ¿¥Æ¥ó¥×¥ì¡¼¥È¤Ê¤É¤ÎÍÑÅÓ¤òÁÛÄê)
+ * °ìÍ÷
+ * [°ìÍ÷] (C-c , a) ¢ª Á´¥á¥â¤Î°ìÍ÷ ¡ú
+ * [ºÇ¶á] (C-c , l) ¢ª ºÇ¶á¤Î¥á¥â¤ÎÏ¢·ëɽ¼¨ ¡ú
+ * (C-u 20 C-c , l) ¢ª ºÇ¶á 20 Æüʬ¤Î°ìÍ÷
+ * [Á°¸å] (C-c , A) ¢ª Á°¸å¤Î¥á¥â (¸«¤Æ¤¿¥á¥â¤òÃæ¿´¤ËÁ´¥á¥â¤ÎÆüÉÕ½ç°ìÍ÷)
+ * Âоݥե¡¥¤¥ë¤ò(ÊÔ½¸¥â¡¼¥É¤Ç)³«¤¤¤¿¾õÂÖ¤«¤é¥á¥Ë¥å¡¼¤ò¸Æ¤Ö¤³¤È
+ * [ÍúÎò] (C-c , h) ¢ª ¸¡º÷ÍúÎò ¡ú
+ * [ͽÄê] (C-c , y) ¢ª ͽÄêɽ: ((<¥ê¥Þ¥¤¥ó¥À>))»²¾È ¡ú
+ * [Todo] (C-c , t) ¢ª todo °ìÍ÷: ((<¥ê¥Þ¥¤¥ó¥À>))»²¾È ¡ú
+ * [Á´¥Ð] (C-c , b) ¢ª ¥Ð¥Ã¥Õ¥¡°ìÍ÷ ¡ú
+ * [mark] (C-c , x) ¢ª ¥Ð¥Ã¥Õ¥¡Æâ¤Î¥Þ¡¼¥¯°ÌÃÖ°ìÍ÷ ¡ú
+ * ¸¡º÷
+ * [Àµµ¬] (C-c , g) ¢ª Àµµ¬É½¸½¤Î¸¡º÷ ¡ú
+ * ´ðËÜŪ¤Ë¤ÏÂçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ʤ·
+ * ¡ÖWiki¡×¤Î¤è¤¦¤ËÌÀ¼¨Åª¤ËÂçʸ»ú¤ò»ØÄꤷ¤¿¤È¤¤Ï¶èÊÌ
+ * [¸ÇÄê] (C-c , s) ¢ª ¥¡¼¥ï¡¼¥É¤òÊä´°ÆþÎϤ·¤Æ¸ÇÄêʸ»úÎó¤Î¸¡º÷ ¡ú
+ * C-u C-c , g ¤ä C-u C-c , m ¤Ç¤â
+ * [roma] (C-c , m) ¢ª ¥í¡¼¥Þ»ú¸¡º÷ (migemo) ¡ú
+ * [º£Æü] (C-c , .) ¢ª º£Æü¤Î¥á¥â ¡ú
+ * (C-u 20 C-c , .) ¢ª 20 ÆüÁ°¤Î¥á¥â
+ * [ºòÆü] (C-c , :) ¢ª ºòÆü¤Î¥á¥â ¡ú
+ * (C-u 20 C-c , :) ¢ª 20 ÆüÁ°¤Î¥á¥â
+ * [¥ÐÆâ] (C-c , o) ¢ª ¥Ð¥Ã¥Õ¥¡Æâ¤òÀµµ¬É½¸½¸¡º÷ ¡ú
+ * ÊÔ½¸: Âоݥե¡¥¤¥ë¤ò(ÊÔ½¸¥â¡¼¥É¤Ç)³«¤¤¤¿¾õÂÖ¤«¤é¥á¥Ë¥å¡¼¤ò¸Æ¤Ö¤³¤È
+ * [¹¹¿·] (C-c , r) ¢ª ²¼Àþ¤ò°ú¤¤Ê¤ª¤¹
+ * [¸°¢] (C-c , i) ¢ª ¥¡¼¥ï¡¼¥É¤òÊä´°ÆþÎϤ·¤ÆŽ¤ê¤Ä¤± ¡ú
+ * Tips: M-v ¤Ç¸õÊä°ìÍ÷¤Ë°Ü¤Ã¤Æ migemo ¸¡º÷¤¹¤ë¤È³Ú
+ * [Æü¢] (C-c , d) ¢ª º£Æü¤ÎÆüÉÕ [yyyy-mm-dd] ¤òŽ¤ê¤Ä¤± ¡ú
+ * [»þ¢] (C-c , T) ¢ª º£Æü¤ÎÆü»þ [yyyy-mm-dd HH:MM] ¤òŽ¤ê¤Ä¤± ¡ú
+ * [Âꢬ] (C-c , K) ¢ª ¸½¥á¥â¤Î¥¿¥¤¥È¥ë¤ò kill ring ¤Ø (C-y ¤ÇŽ¤ê¤Ä¤±) ¡ú
+ * ¥¿¥¤¥È¥ë¤¬¤ß¤Ä¤«¤é¤Ê¤«¤Ã¤¿¤È¤¤Ï¥Õ¥¡¥¤¥ë̾
+ * [̾¢¬] (C-u C-c , K) ¢ª ¥Õ¥¡¥¤¥ë̾¤ò kill ring ¤Ø ¡ú
+ * ÆÃÊÌ
+ * [menu ¹¹¿·] (R) ¢ª ¥á¥Ë¥å¡¼¤ÎͽÄêɽ¤Ê¤É¤ò¹¹¿·
+ * [menu ÊÔ½¸] ¢ª ¥á¥Ë¥å¡¼¤òÊÔ½¸
+ * [Á´¾Ã] (C-c , Q) ¢ª howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¾Ã¤¹ (̤Êݸ¤Ï½ü¤¯) ¡ú
+ * [¿ìÊâ] (C-c , w) ¢ª ¥é¥ó¥À¥à¤Ë¥ê¥ó¥¯¤ò¤¿¤É¤Ã¤Æ¼«Æ°±ÜÍ÷. C-g ¤ÇÄä»ß. ¡ú
+ * ¤½¤Î¾
+ * [return] ¢ª ¥ê¥ó¥¯¾å¤Ê¤é³ºÅö¥Õ¥¡¥¤¥ë¤ò³«¤¯. ¤µ¤â¤Ê¤¯¤Ð²þ¹Ô.
+ * °ÜÆ°
+ * C-c , n ¢ª ¼¡¤Î¥ê¥ó¥¯¤Ø
+ * C-c , p ¢ª Á°¤Î¥ê¥ó¥¯¤Ø
+ * °ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Î¤È¤¡Ä
+ * C-c , N ¢ª ¼¡¤Î¥á¥â¤Ø
+ * C-c , P ¢ª Á°¤Î¥á¥â¤Ø
+ * C-c , H ¢ª ºÇ½é¤Î¥á¥â¤Ø
+ * C-c , L ¢ª ºÇ¸å¤Î¥á¥â¤Ø
+ * ¿·µ¬¥á¥â
+ * C-c , C ¢ª ¤¤¤Þ³«¤¤¤Æ¤ë¥Õ¥¡¥¤¥ë¤ËÄɲÃ
+ * ¥á¥Ë¥å¡¼¤Ë [ÄɲÃ] ¤È½ñ¤¯¤È, ¤³¤ÎÆ°ºî¤Î¥Ü¥¿¥ó.
+ ±Ñ¸ì¥á¥Ë¥å¡¼¤Ê¤é [Add].
+ * C-c , I ¢ª ¥Õ¥¡¥¤¥ë̾¤ò¼êÆ°¤Ç (Èó¿ä¾©)
+ * C-u C-c , I ¤Ê¤é, ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ë
+ * narrow (1 ¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Î¤È¤)
+ * M-x howm-narrow-to-memo ¢ª Á°¸å¤Î¥á¥â¤ò±£¤¹. Ì᤹¤Ë¤Ï M-x widen
+ * M-x howm-toggle-narrow ¢ª ¡Ö±£¤¹¡×¡Ö¸«¤»¤ë¡×¤ò¥È¥°¥ë
+ * C-c , SPC ¢ª howm ¤Ê¥Ð¥Ã¥Õ¥¡¤È howm ¤Ç¤Ê¤¤¥Ð¥Ã¥Õ¥¡¤È¤òÀÚ¤êÂؤ¨ ¡ú
+ * M-x howm-show-buffer-as-howm ¢ª ¸½¥Ð¥Ã¥Õ¥¡¤Î¥³¥Ô¡¼¤ò howm-mode ¤Çɽ¼¨ ¡ú
+ * ¼ûÍ×ÉÔÌÀ¤Ê¤Î¤ÇÍͻҸ«[2003-09-29]
+
+=== ¥á¥â¤òÆɤ⤦
+(°ìÍ÷¥â¡¼¥É)
+
+* ¥³¥Þ¥ó¥É(ºÆ·Ç)
+ * C-c , , (M-x howm-menu) ¢ª ¥á¥Ë¥å¡¼
+ * C-c , a (M-x howm-list-all) ¢ª Á´¥á¥â°ìÍ÷
+ * C-c , g (M-x howm-list-grep) ¢ª Á´¥á¥â¸¡º÷ (Àµµ¬É½¸½)
+ * C-c , s (M-x howm-list-grep-fixed) ¢ª Á´¥á¥â¸¡º÷ (¸ÇÄꥡ¼¥ï¡¼¥É)
+
+* ¸¡º÷¤ä¥ê¥ó¥¯¥¸¥ã¥ó¥×¤ò¤¹¤ë¤È, °ìÍ÷¥â¡¼¥É
+ * ¥Ç¥Õ¥©¥ë¥È¤Ï°ìÍ÷ɽ¼¨
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡ + ÆâÍƥХåե¡
+ * ¥«¡¼¥½¥ë°ÌÃ֤Υá¥â¤ÎÆâÍƤ¬É½¼¨¤µ¤ì¤ë
+ * Ï¢·ëɽ¼¨¤â¤Ç¤¤ë
+ * @ ¤ÇÏ¢·ëɽ¼¨. ¤â¤¦°ìÅÙ @ ¤Ç°ìÍ÷ɽ¼¨¤ËÌá¤ë.
+ * ¥Ò¥Ã¥È¤·¤¿¥á¥â¤ÎÆâÍƤò¤¼¤ó¤Ö¤Ä¤Ê¤²¤Æɽ¼¨
+ * ÃÇÊÒŪ¤Ê¥á¥â¤ò¤É¤ó¤É¤ó½ñ¤¯ ¢ª ¤Ä¤Ê¤²¤ÆÆɤà
+ * [tab] ¤È [alt]-[tab] ¤Ç¼¡/Á°¤Î¥á¥â¤Ø
+ * Tips: ¥á¥â¤òõ¤¹¤È¤, ¸¡º÷¤Ç¤¢¤ëÄøÅÙ¤·¤Ü¤ê¤³¤ó¤À¤é,
+ Ï¢·ëɽ¼¨¤·¤Æ migemo ¸¡º÷¤¹¤ë¤È³Ú
+ * °ìÍ÷ɽ¼¨¤Ç
+ * 0 ¢ª Ï¢·ëɽ¼¨¤Î¥È¥°¥ë (@ ¤ÈƱ¤¸)
+ * 1 ¢ª ÆâÍƥХåե¡¤ò¾Ã¤¹
+ * 2 ¢ª ÆâÍƥХåե¡¤ò½Ð¤¹
+ * v ¢ª ÆâÍƥХåե¡¤ò¥È¥°¥ë
+ * TAB, M-TAB ¢ª ¼¡¡¦Á°¤Î¥Õ¥¡¥¤¥ë¤Ø
+ * T ¢ª ¥¿¥¤¥È¥ëɽ¼¨¤ò¥È¥°¥ë
+ * ¤É¤Á¤é¤Îɽ¼¨¤Ç¤â
+ * n ¤È p ¢ª ¾å²¼
+ * [space] ¤È [backspace] ¢ª ¥¹¥¯¥í¡¼¥ë
+ * j ¤È k ¢ª °ì¹Ô¥¹¥¯¥í¡¼¥ë
+ * [return] ¢ª ¥«¡¼¥½¥ë°ÌÃ֤Υá¥â¤ò³«¤¯
+ * C-u ¤·¤Æ [return] ¢ª ¥á¥â¤ò³«¤¤¤Æ°ìÍ÷¤ò¾Ã¤¹
+ * X ¢ª Dired-X ¤òµ¯Æ° (²þ̾¡¦ºï½ü¤Ê¤É¤Î¥Õ¥¡¥¤¥ëÁàºî)
+ * Dired-X ¤Î»È¤¤Êý¤Ï, info dired-x Åù¤ò»²¾È
+ v ¢ª Ãæ¿È¤ò¸«¤ë (q ¢ª Ìá¤ë)
+ d ¢ª ¡Ö¾Ã¤¹¤¾¡×¥Þ¡¼¥¯
+ x ¢ª ¥Þ¡¼¥¯¤·¤¿¥Õ¥¡¥¤¥ë¤¿¤Á¤òËÜÅö¤Ë¾Ã¤¹
+ * ? ¢ª ¥Ø¥ë¥×
+ * q ¢ª æ½Ð
+
+* ¥½¡¼¥È
+ * S ¢ª ²¿¤Ç¥½¡¼¥È¤¹¤ë¤«Ê¹¤¤¤Æ¤¯¤ë (Êä´°ÆþÎÏ)
+ * name: ¥Õ¥¡¥¤¥ë̾
+ * name-match: »ØÄꤷ¤¿¥Õ¥¡¥¤¥ë̾¤ò¾å°Ì¤Ë°Ü¤¹
+ * date: ºîÀ®Æü
+ * mtime: ¹¹¿·»þ¹ï
+ * summary: °ì¹Ôɽ¼¨¤Îʸ»úÎó
+ * summary-match: »ØÄꤷ¤¿Àµµ¬É½¸½¤ò°ì¹Ôɽ¼¨¤«¤é¸¡º÷¤·¤Æ, ¾å°Ì¤Ë°Ü¤¹
+ * summary-match-string: Ʊ¾å + ¥Þ¥Ã¥Á¤·¤¿Ê¸»úÎó½ç¤Ë¥½¡¼¥È
+ * random: ¥é¥ó¥À¥à¥·¥ã¥Ã¥Õ¥ë
+ * reminder: ¥ê¥Þ¥¤¥ó¥À½ç
+ * numerical-name: ¥Õ¥¡¥¤¥ë̾ (¿ô»ú½ç. ¥á¡¼¥ë¤Î¥½¡¼¥È¤òÁÛÄê)
+ * reverse: ¸½É½¼¨¤ÎµÕ½ç
+ * C-u S ¤Ê¤é¥Ç¥Õ¥©¥ë¥È¤ÎµÕ½ç
+ * R ¢ª reverse
+
+* ¹Ê¤ê¤³¤ß (and ¸¡º÷)
+ * f ¢ª ²¿¤Ç¹Ê¤ê¤³¤à¤«Ê¹¤¤¤Æ¤¯¤ë (Êä´°ÆþÎÏ)
+ * name: ¥Õ¥¡¥¤¥ë̾
+ * date: ºîÀ®Æü
+ * mtime: ¹¹¿·»þ¹ï
+ * summary: °ì¹Ôɽ¼¨¤Îʸ»úÎó
+ * contents: ÆâÍÆ
+ * reminder: ¥ê¥Þ¥¤¥ó¥À¤ÎÆüÉÕÈÏ°Ï
+ * Region: Îΰè
+ * Around: ¥«¡¼¥½¥ë°ÌÃ֤μþÊÕ
+ * C-u 7 f ¢ª Around ¤Ê¤é, Á°¸å 7 ¤Ä
+ * uniq: Ʊ¤¸¥Õ¥¡¥¤¥ëÃæ¤Ç²¿²Õ½ê¥Ò¥Ã¥È¤·¤Æ¤â, ºÇ½é¤Î°ì²Õ½ê¤À¤±É½¼¨
+ * C-u f ¤Ê¤é, ¥Þ¥Ã¥Á¤·¤¿¤â¤Î¤ò¼è¤ê½ü¤¯
+ * G ¢ª contents
+ * u ¢ª uniq
+
+* howm-mode ¤È¶¦ÄÌ
+ * l ¢ª Á´¥á¥â¤Î°ìÍ÷
+ * g ¢ª ¸¡º÷ (grep)
+ * C-u g ¢ª ¥¡¼¥ï¡¼¥É¤òÊä´°ÆþÎϤ·¤Æ¸¡º÷
+ * m ¢ª ¥í¡¼¥Þ»ú¸¡º÷ (migemo)
+ * C-u m ¢ª C-u g ¤ÈƱ¤¸
+ * c ¢ª ¿·µ¬¥Õ¥¡¥¤¥ëºîÀ® (¸½¥ê¡¼¥¸¥ç¥ó¤¬¥¿¥¤¥È¥ë)
+ * Q ¢ª howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¾Ã¤¹ (̤Êݸ¤Ï½ü¤¯)
+
+* ¤½¤Î¾
+ * °ìÍ÷ɽ¼¨¤Ç ! ¢ª shell ¤Ç¥³¥Þ¥ó¥É¼Â¹Ô
+ * ¥á¥â¤ò¼ê¤Ã¼è¤êÁ᤯¼Î¤Æ¤¿¤±¤ì¤Ð, ¤³¤ì¤Ç mv ¤Ê¤ê rm ¤Ê¤ê¤·¤Æ¤¯¤À¤µ¤¤
+ * 2 ²óÌܤ«¤é¤Ï¾®¸¤·¤¤µóÆ°¤ò¤·¤Þ¤¹ :-)
+ * >>> hoge.png ¤Ê¤é³°Éô viewer ¤Ç²èÁü¤ò³«¤¯
+ * ÀßÄê¤Ï((<¥«¥¹¥¿¥Þ¥¤¥º>))»²¾È
+
+=== ¥ê¥Þ¥¤¥ó¥À
+(ͽÄêɽ¡¦todo)
+
+* µ¡Ç½
+ * ¥á¥âÃæ¤Ë
+ [2002-10-20]+ ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦
+ ¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¤ª¤¯¤È, °ìÍ÷¤Ç¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹
+ * C-c , y ¢ª ͽÄêɽ
+ * . ¢ª º£Æü¤Ø
+ * C-c , t ¢ª todo °ìÍ÷
+ * °ìÍ÷Ãæ¤Î¾å²¼¤É¤Î°ÌÃÖ¤Ëɽ¼¨¤µ¤ì¤ë¤«¤Ï, ÆüÉդȼïÎष¤À¤¤
+ * ¡ÖºÇ¶á¤ÎͽÄê¡×¤È¡Ötodo ËÁƬ¡×¤Ï¥á¥Ë¥å¡¼¤Ë¤âɽ¼¨¤µ¤ì¤Þ¤¹
+ (¤³¤È¤¢¤ë¤´¤È¤Ë¤Á¤é¤Ã¤È¸«¤¨¤ë¤Î¤¬½ÅÍפ«¤È)
+ * ¥á¥Ë¥å¡¼¤Ç¤Ï, ¹ÔƬ¤Î¡Ö>¡×¾å¤Ç RET ¤ò᤯¤È¥á¥â¤ËÈô¤Ó¤Þ¤¹
+ (¤½¤ì°Ê³°¤Î°ÌÃ֤Ǥâ, ²¼Àþ¤¬¤Ê¤¤½ê¤Ê¤éƱÍÍ)
+ * ¥«¥ì¥ó¥À¡¼¥½¥Õ¥È plan ¤Ø¤Î export ¤â²Äǽ (¢ª((<³°Éô¥Ä¡¼¥ë>)))
+
+* ½ñ¼°
+ * ³Ð½ñ (-)
+ [2002-10-20]- ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦
+ * »ØÄêÆü¤ËÉ⤤¢¤¬¤ê, °Ê¸å¤Ï½ù¡¹¤ËÄÀ¤à
+ * »ØÄêÆü¤Þ¤Ç¤ÏÄì¤ËÀøÉú
+ * ÄÀ¤à¤Î¤òÃÙ¤¯¤¹¤ë¤Ë¤Ï, ͱͽÆü¿ô¤Ç»ØÄê(¥Ç¥Õ¥©¥ë¥È 1 Æü)
+ [2002-10-20]-14 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦ ¢ª 14 Æü´Ö¤°¤é¤¤¤Ïµ¤¤Ë¤«¤±¤è¤¦
+ * todo (+)
+ [2002-10-20]+ ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤦¤Ù¤·
+ * »ØÄêÆü¤«¤é, ½ù¡¹¤ËÉ⤤¢¤¬¤Ã¤Æ¤¯¤ë
+ * »ØÄêÆü¤Þ¤Ç¤ÏÄì¤ËÀøÉú
+ * É⤤¢¤¬¤ë®¤µ¤Ï, ͱͽÆü¿ô¤Ç»ØÄê(¥Ç¥Õ¥©¥ë¥È 7 Æü)
+ [2002-10-20]+14 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤦¤Ù¤· ¢ª 14 Æü´Ö¤°¤é¤¤¤Î¤¦¤Á¤Ë
+ * ¡ºÀÚ (!)
+ [2002-10-20]! ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± ¡ºÀÚ
+ * »ØÄêÆü¤¬¶á¤Å¤¯¤È, É⤤¢¤¬¤Ã¤Æ¤¯¤ë
+ * »ØÄêÆü°Ê¹ß¤Ï, °ìÈÖ¾å¤ËÉ⤤äѤʤ·
+ * ²¿ÆüÁ°¤«¤éÉ⤤Ϥ¸¤á¤ë¤«¤Ï, ͱͽÆü¿ô¤Ç»ØÄê(¥Ç¥Õ¥©¥ë¥È 7 Æü)
+ [2002-10-20]!14 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± ¡ºÀÚ ¢ª 14 ÆüÁ°¤°¤é¤¤¤«¤é¤Ü¤Á¤Ü¤Á
+ * ͽÄêɽ(¸å½Ò)¤Ë¤âɽ¼¨
+ * ÊÝα (~)
+ [2002-10-20]~ ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦¤«
+ * »ØÄêÆü¤«¤é, Éâ¤ÄÀ¤ß¤ò¤¯¤ê¤«¤¨¤¹
+ * »ØÄêÆü¤Þ¤Ç¤ÏÄì¤ËÀøÉú
+ * ²¿Æü¼þ´ü¤ÇÉâ¤ÄÀ¤ß¤¹¤ë¤«¤Ï, ͱͽÆü¿ô¤Ç»ØÄê(¥Ç¥Õ¥©¥ë¥È 30 Æü)
+ [2002-10-20]!14 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ± Ç㤪¤¦¤« ¢ª 14 Æü¼þ´ü
+ * ͽÄê (@)
+ [2002-10-20]@ ¥Ï¥¤¥¦¥§¥¤ÏÇÀ±
+ * todo °ìÍ÷¤Ç¤Ï¤Ê¤¯, ͽÄêɽ¤Ëɽ¼¨
+ * ºÑ (.)
+ [2002-10-20]. ¥Ï¥¤¥¦¥§¥¤ÏÇÀ±
+ * ¾ï¤ËÄì
+
+* action-lock
+ * Îã
+ [2002-10-20]+9 ¤Û¤²¤Û¤²
+ ¤Î¡Ö+9¡×¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¤¿¤¿¤¯¤È, ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ë¥á¥Ë¥å¡¼¤¬½Ð¤Æ¡Ä
+ * ¤½¤Î¤Þ¤Þ¥ê¥¿¡¼¥ó ¢ª ¡ÖºÑ¡×
+ [2002-10-20]. [2002-10-20]:+9 ¤Û¤²¤Û¤²
+ * x ¤òÆþÎÏ ¢ª ¡Öcancel¡×
+ [2002-10-20]. cancel [2002-10-20]:+9 ¤Û¤²¤Û¤²
+ * - ¤òÆþÎÏ ¢ª ¼ïÎà¤ò³Ð½ñ¤ËÊѹ¹
+ [2002-10-20]-9 ¤Û¤²¤Û¤²
+ * 14 ¤òÆþÎÏ ¢ª ͱͽÆü¿ô¤ò 14 Æü¤ËÊѹ¹
+ [2002-10-20]+14 ¤Û¤²¤Û¤²
+ * ¥á¥Ë¥å¡¼¡¦Í½Äêɽ¡¦todo °ìÍ÷¤«¤é¤âľÀÜᤱ¤Þ¤¹
+
+* Tips (»ä¤Î»È¤¤Êý)
+ * ¡Ötodo¡×¤ä¡Ö¡ºÀڡפÏËÜÅö¤ËɬÍפʤâ¤Î¤À¤±
+ * ¤½¤ì°Ê³°¤Ï¡Ö³Ð½ñ¡×¤ÇÄÀ¤à¤Ë¤Þ¤«¤»¤ë (¤É¤¦¤»Á´Éô¤Ï¤Ç¤¤Þ¤»¤ó :p)
+ * ¸å¤í¤á¤¿¤±¤ì¤Ð, ͱͽÆü¿ô¤ÎŤ¤¡Ö³Ð½ñ¡×¤Ë
+ [2002-11-10]-10 ¥Ï¥¤¥¦¥§¥¤ÏÇÀ±
+ * ¶ÛµÞ¤Ç¤Ï¤Ê¤¤¤¬½ÅÍפʤ³¤È
+ [2002-11-10]-999 ¡ü¥Ï¥¤¥¦¥§¥¤ÏÇÀ±
+ * ÌÜΩ¤¿¤»¤¿¤¤¤³¤È
+ [2002-11-10]! ¡ú¡ú¥Ï¥¤¥¦¥§¥¤ÏÇÀ±
+
+== ƳÆþË¡
+
+=== ¥¤¥ó¥¹¥È¡¼¥ë
+
+==== ¼«Æ°¥¤¥ó¥¹¥È¡¼¥ë¤Î¾ì¹ç
+
+* ¥¤¥ó¥¹¥È¡¼¥ë
+ * ./configure ¤·¤Æ make ¤·¤Æ, root ¤Ë¤Ê¤Ã¤Æ make install
+ * *.el, *.elc ¤Ï /usr/share/emacs/site-lisp/howm/ ¤Ë
+ * doc/, ext/ ¤Ï /usr/local/share/howm/ ¤Ë
+ * xemacs ¤Î¾ì¹ç
+ ./configure --with-xemacs
+ * *.el, *.elc ¤Ï /usr/lib/xemacs/site-lisp/howm/ ¤Ë
+ * ¥¤¥ó¥¹¥È¡¼¥ëÀè¤ÎÊѹ¹Îã
+ ./configure --with-howmdir=$HOME/elisp --prefix=$HOME
+ * *.el, *.elc ¤Ï ~/elisp/ ¤Ë
+ * doc/, ext/ ¤Ï ~/share/howm/ ¤Ë
+ * ¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤Ï ./configure --help ¤ò»²¾È
+* ÀßÄê
+ * ~/.emacs (.emacs.el ¤«¤â)¤ËÄɲÃ
+ * case 1: emacs µ¯Æ°»þ¤ËÆɤ߹þ¤à
+ (setq howm-menu-lang 'ja)
+ (require 'howm)
+ * case 2: ¤Ï¤¸¤á¤Æ C-c , , ¤·¤¿»þ¤ËÆɤ߹þ¤à
+ (setq howm-menu-lang 'ja)
+ (global-set-key "\C-c,," 'howm-menu)
+ (autoload 'howm-menu "howm" "Hitori Otegaru Wiki Modoki" t)
+ * ¤¤¤º¤ì¤â, ¤â¤·¡ÖCannot open load file¡×¤È¤«¥¨¥é¡¼¤¬½Ð¤ë¤Ê¤é,
+ ¾åµ¤ÎÁ°¤Ë¤³¤ì¤òÄɲÃ
+ (add-to-list 'load-path "/usr/share/emacs/site-lisp/howm/")
+ * ~/howm/ ¤ÎºîÀ®¤ä¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤ÏÉÔÍפǤ¹
+ (¥á¥Ë¥å¡¼µ¯Æ°»þ¤Ë¼«Æ°ºîÀ®)
+
+==== ¼êÆ°¥¤¥ó¥¹¥È¡¼¥ë¤Î¾ì¹ç
+
+* *.el ¤òŬÅö¤Ê¾ì½ê¤ËÃÖ¤¯ (Îã: ~/elisp/howm)
+ * ~/.emacs (.emacs.el ¤«¤â)¤Ë
+ * ÃÖ¤¾ì¤Ë±þ¤¸¤Æ, ¢¤Î¤è¤¦¤Ëµ½Ò
+ (add-to-list 'load-path "~/elisp/howm/")
+ * ¤µ¤é¤Ë, ((<¼«Æ°¥¤¥ó¥¹¥È¡¼¥ë¤Î¾ì¹ç>))¤ÈƱÍͤε½Ò¤òÄɲÃ
+ * ¤ª¹¥¤ß¤Ç, ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë
+ cd ~/elisp/howm
+ \emacs -batch -q --no-site-file --eval '(progn (add-to-list (quote load-path) ".") (byte-recompile-directory "." 0))'
+
+==== ¥¤¥ó¥¹¥È¡¼¥ë¤ÎÊäÂ
+
+* ¤ª¹¥¤ß¤Ç, ~/.emacs ¤ËÀßÄê¤òÄɲà (¢ª((<¥«¥¹¥¿¥Þ¥¤¥º>)))
+ ;; ÀßÄêÎã
+ (define-key global-map [katakana] 'howm-menu) ; [¥«¥¿¥«¥Ê] ¥¡¼¤Ç¥á¥Ë¥å¡¼
+ (setq howm-file-name-format "%Y/%m/%Y_%m_%d.txt") ; 1 Æü 1 ¥Õ¥¡¥¤¥ë
+ (setq howm-keyword-case-fold-search t) ; <<< ¤ÇÂçʸ»ú¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤
+ (setq howm-list-title nil) ; °ìÍ÷»þ¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨¤·¤Ê¤¤
+ (setq howm-menu-refresh-after-save nil) ; save »þ¤Ë¥á¥Ë¥å¡¼¤ò¼«Æ°¹¹¿·¤»¤º
+ (setq howm-refresh-after-save nil) ; save »þ¤Ë²¼Àþ¤ò°ú¤Ä¾¤µ¤Ê¤¤
+ (setq howm-menu-expiry-hours 2) ; ¥á¥Ë¥å¡¼¤ò 2 »þ´Ö¥¥ã¥Ã¥·¥å
+
+* ¤Ê¤ª, ¥¡¼¥ï¡¼¥É°ìÍ÷¤Ï ~/.howm-keys ¤ËµÏ¿¤µ¤ì¤ë
+ * Ëü°ì²õ¤ì¤Æ¤â, ºÆ¹½ÃۤϴÊñ. Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤˱þ¤¸¤Æ¡Ä
+ * ¶èÊ̤¹¤ë¾ì¹ç
+ find ~/howm -name '*.txt' -print | xargs ruby -ne '$_ =~ /<<<\s+(.+)$/ and puts $1.split(/\s*<<<\s*/).join "\t"' | sort -u > ~/.howm-keys
+ * ¶èÊ̤·¤Ê¤¤¾ì¹ç
+ find ~/howm -name '*.txt' -print | xargs ruby -ne '$_ =~ /<<<\s+(.+)$/ and puts $1.downcase.split(/\s*<<<\s*/).join "\t"' | sort -u > ~/.howm-keys
+
+* Ãí°Õ
+ * GNU Emacs °Ê³°¤Î¾ì¹ç:
+ »ä¤Ï¤è¤¯¤ï¤«¤é¤Ê¤¤¤Î¤Ç, ¸¡º÷¤·¤Æ¤¯¤À¤µ¤¤
+ * meadow:
+ ((<ÀßÄêºÑ¤ß Meadow|URL:http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=meadowmemo%20edition>))
+ ¤Ê¤éºÇ½é¤«¤é»È¤¨¤Þ¤¹
+ * cygwin + grep »ÈÍѤΤȤ¤Ï,
+ ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤È¥³¥Þ¥ó¥É¤ò¥É¥é¥¤¥Ö¥ì¥¿¡¼¤«¤é»ØÄꤹ¤ë.
+ * ~/.emacs(.emacs.el ¤«¤â) ¤Ç¢¤Î¤è¤¦¤Ë
+ (setq howm-directory "c:/cygwin/home/howm/")
+ * cygwin ¤«¤é¸«¤¿ / ¤È emacs ¤«¤é¸«¤¿ / ¤¬¿©¤¤°ã¤¦¤È¤«¤¤¤¦ÏÃ.
+ * xemacs:
+ * font-lock ¤Î¥á¥Ã¥»¡¼¥¸¤òÍÞÀ©¤¹¤ë¤È®¤¯¤Ê¤ë¤½¤¦.
+ thx > ((<³Þ¸¶¤µ¤ó|URL:http://eron.info/k/diary/>))
+ (setq font-lock-verbose nil)
+ * Linux Zaurus:
+ ((<Wiki|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus>))
+ ¤ò»²¾È¤¯¤À¤µ¤¤.
+ thx > ((<100|URL:http://www.bookshelf.jp/2ch/unix/1063800495.html>))
+ * SKK ¤ò»È¤¦¾ì¹ç
+ * .emacs ¤Ë°Ê²¼¤ò½ñ¤¤¤Æ¤ª¤«¤Ê¤¤¤È, Dired-X ¤Ë C-x C-j ¤òÃ¥¤ï¤ì¤Þ¤¹
+ (setq dired-bind-jump nil)
+ * viper-mode ¤ò»È¤¦¾ì¹ç
+ * viper-mode ¤è¤êÀè¤Ë howm-mode ¤ò¥í¡¼¥É¤·¤Æ¤ª¤¯
+ * post-command-hook ¤Ë°¤µ¤¹¤ë??
+ * ¥³¥ó¥½¡¼¥ë (emacs -nw) ¤Î¾ì¹ç
+ * ²¼Àþ¤¬É½¼¨¤µ¤ì¤Ê¤¤Ã¼Ëö¤Ê¤é
+ (set-face-foreground 'action-lock-face "blue") ;; ²¼Àþ¤Î¤«¤ï¤ê¤Ë¿§¤Ä¤±
+ * ((<RD|URL:http://www.ruby-lang.org/ja/man/html/RD.html>))¤ò»È¤¦¾ì¹ç
+ * <<< ¤¬ RD ¤Î include ¤È¤«¤Ö¤ë
+ * ÂкöÎã
+ * include ¤Ï»È¤ï¤Ê¤¤. ¹Ô¤Î¤Ï¤¸¤á¤Ë <<< ¤ò½ñ¤«¤Ê¤¤¤è¤¦Ãí°Õ¤¹¤ë.
+ * include ¤Ï»È¤ï¤Ê¤¤. rd2 ¤ò¤«¤±¤ëÁ°¤Ë howm2 -type=rd ¤òÄ̤¹.
+ * ¥ê¥ó¥¯µ¹æ¤òÊѹ¹¤¹¤ë
+ ;; Îã: .emacs (howm ¥í¡¼¥É¤è¤êÁ°)¤Ë
+ (setq howm-ref-header "==>") ; goto ¥ê¥ó¥¯
+ (setq howm-keyword-header "<==") ; come-from ¥ê¥ó¥¯
+ * ((<¢ª howm wiki ¤Î¡ÖÊ»Íѥġ¼¥ë¡×|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ExternalTool>))¤â»²¾È
+
+* µìÈǤ«¤é¤Î°Ü¹Ô (ɬ¤º¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¤È¤Ã¤Æ¤«¤é!) ¢ª ((<URL:OLD.rd>))
+ * ¿·¤¿¤Ë make install ¤·¤Æ¤â, ¸Ä¿Í¤Î¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤¹¹¿·¤Ï¤·¤Þ¤»¤ó.
+ ɬÍפʤé, ¥á¥Ë¥å¡¼¤ò¼«Ê¬¤ÇÊÔ½¸¤¹¤ë¤«,
+ ja/0000-00-00-000000.txt ¤ò¼«Ê¬¤Ç¥³¥Ô¡¼¤¹¤ë¤«¤·¤Æ¤¯¤À¤µ¤¤.
+
+=== ¥«¥¹¥¿¥Þ¥¤¥º
+
+´ðËÜŪ¤Ë¤Ï M-x customize ¢ª [Applications] ¢ª [Howm] ¤Ç.
+¤Ô¤ó¤È¤³¤Ê¤¤¹àÌܤâ, [Show] ¤Ç¤¢¤ê¤¬¤Á¤Ê´ûÄêÃͤ«¤éÁªÂò²Äǽ.
+
+¤½¤³¤Ë¤Ê¤¤ÀßÄê¤Ë¤Ä¤¤¤Æ¤Ï, ~/.emacs (~/.emacs.el ¤«¤â)¤Ø, °Ê²¼¤Î¤è¤¦¤ËľÀܽñ¤¯.
+(¤â¤Ã¤ÈÌÖÍåŪ¤À¤¬¸Å¤¤²òÀâ¤Ï, ((<URL:OLD.rd>))¤ò»²¾È)
+
+* ¿§
+ * howm ´ØÏ¢¤ÎÁ´¥Ð¥Ã¥Õ¥¡¤Ë¶¦Ä̤ο§ÀßÄê
+ ;; ¡Ö¤Û¤²¡×¤È¡Ö[¤Õ¤¬]¡×¤ËÃ忧
+ ;; ¡¦ÀßÄêË¡¤Î¾ÜºÙ¤Ï, ÊÑ¿ô font-lock-keywords ¤Î¥Ø¥ë¥×¤ò»²¾È
+ ;; ¡¦face ¤Î°ìÍ÷¤Ï M-x list-faces-display
+ (setq howm-user-font-lock-keywords
+ '(
+ ("¤Û¤²" . (0 'highlight prepend))
+ ("\\[¤Õ¤¬\\]" . (0 'font-lock-doc-face prepend))
+ ))
+ * todo ¤äͽÄê¤Î¿§¤ï¤±¤Ë¤Ç¤â»È¤Ã¤Æ¤Ï¤¤¤«¤¬¤«¤È.
+ * ÆâÍƥХåե¡¤Ë rd-mode ¤Ê¿§¤ò¤Ä¤±¤ë
+ ;; rd-mode.el ¤¬Æɤ߹þ¤Þ¤ì¤Æ¤¤¤ë¤È¤¤¤¦Á°Äó¤Ç
+ (setq howm-view-contents-font-lock-keywords rd-font-lock-keywords)
+
+* ÊØÍø¥¡¼
+ * ¡Ö¥«¥¿¥«¥Ê¡×¤Ç¥á¥Ë¥å¡¼, ¡ÖCtrl-¥«¥¿¥«¥Ê¡×¤Ç¿·µ¬¥á¥â
+ (define-key global-map [katakana] 'howm-menu)
+ (define-key global-map [(control katakana)] 'howm-create)
+ * [tab]([alt]-[tab])¤Ç¼¡(Á°)¤Î¥ê¥ó¥¯¤Ë°ÜÆ°
+ (define-key howm-mode-map [tab] 'action-lock-goto-next-link)
+ (define-key howm-mode-map [(meta tab)] 'action-lock-goto-previous-link)
+ * ËÜÍè¤Î tab ¤Ï C-i ¤Ç
+
+* Êݸ¾ì½ê
+ * ¥á¥âÃÖ¤¾ì/ǯ/ǯ·îÆü-»þʬÉÃ.txt ¤Ë
+ (setq howm-file-name-format "%Y/%Y%m%d-%H%M%S.txt")
+ * ¥Õ¥¡¥¤¥ë̾¼«ÂΤËǯ·îÆü¤¬Æþ¤Ã¤Æ¤¤¤Ê¤¤¤È, filter-by-date ¤¬µ¡Ç½¤·¤Ê¤¤
+ * 1 Æü 1 ¥Õ¥¡¥¤¥ë (¥á¥âÃÖ¤¾ì/ǯ/·î/ǯ_·î_Æü.txt ¤Ë)
+ (setq howm-file-name-format "%Y/%m/%Y_%m_%d.txt")
+ * ÉÔ´°Á´¤ÊÅÀ¤¬¤¢¤ê¤Þ¤¹. ²æËý¤Ç¤¤ë¿Í¤À¤±¤É¤¦¤¾
+ * ¥á¥âñ°Ì¤Ç¤¢¤ë¤Ù¤½èÍý¤Î°ìÉô¤¬¥Õ¥¡¥¤¥ëñ°Ì¤Ë
+ (¥¿¥¤¥È¥ëɽ¼¨, ¹¹¿·½ç°ìÍ÷, ÆâÍƤǤιʤꤳ¤ß, uniq)
+ * ¥¡¼¥ï¡¼¥É°ìÍ÷¤ò ~/howm/.howm-keys ¤ËÃÖ¤¯
+ (setq howm-keyword-file "~/howm/.howm-keys") ;; ¥Ç¥Õ¥©¥ë¥È¤Ï ~/.howm-keys
+ * ¤³¤¦¤·¤Æ¤ª¤±¤Ð, °ã¤¦¥Þ¥·¥ó¤Ç¤â ~/howm/ °Ê²¼¤Î¥³¥Ô¡¼¤À¤±¤ÇºÑ¤à.
+ * ¤¹¤Ç¤Ë½ñ¤¤¤¿¥á¥â¤¬¤¢¤ë¤Ê¤é, mv ~/.howm-keys ~/howm/ ¤ò¤·¤Æ¤ª¤¯¤«,
+ ºÆ¹½ÃÛ¤¹¤ë(¢ª((<¥¤¥ó¥¹¥È¡¼¥ë>))).
+ * ¥Ç¥á¥ê¥Ã¥È: ¸¡º÷¤¬ÃÙ¤¯¤Ê¤ë? (Âδ¶¤Ç¤¤ë¤Û¤É¤«¤Ï, ¤ä¤Ã¤Æ¤ß¤Ê¤¤¤ÈÉÔÌÀ)
+
+* °ìÍ÷
+ * °ìÍ÷¤Ç¡Ö!¡×¤·¤¿¤È¤¤Î½é´ü¥³¥Þ¥ó¥É¤òÊѹ¹
+ (setq howm-view-summary-shell-last-file "_FILE_")
+ (setq howm-view-summary-shell-hist
+ '("mv _FILE_ ~/gomi" "touch _FILE_" "ls -l _FILE_"))
+ * ½é´ü¥³¥Þ¥ó¥É¤Ï¡Ömv ¥Õ¥¡¥¤¥ë̾ ~/gomi¡×
+ * M-p ²¡¤·¤Æ¤¤¤¯¤È, ¡Ötouch ¥Õ¥¡¥¤¥ë̾¡×¤ä¡Öls -l ¥Õ¥¡¥¤¥ë̾¡×
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤Î¿§¤Ä¤±Îã
+ (setq howm-view-summary-font-lock-keywords '(("^2003" . 'highlight)))
+
+* ¥á¥Ë¥å¡¼
+ * ¥á¥Ë¥å¡¼¤ÎÊѹ¹
+ * ¥á¥Ë¥å¡¼¤ò³«¤¤¤Æ [menu ÊÔ½¸] ¾å¤Ç¥ê¥¿¡¼¥ó ¢ª ¼«Í³¤ËÊÔ½¸
+ * ¤è¤¯³«¤¯¥á¥â¤Ø¤Î goto ¥ê¥ó¥¯¤Ê¤É¤ò½ñ¤¤¤Æ¤ª¤±¤ÐÊØÍø¤«¤È
+ * ¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤Ë¡Ö%recent¡×¤ä¡Ö%random¡×¤È½ñ¤¯¤È,
+ ¡ÖºÇ¶á¤Î¥á¥â¡×¤ä¡Ö¥é¥ó¥À¥à¤ËÁª¤ó¤À¥á¥â¡×¤Î¥¿¥¤¥È¥ë°ìÍ÷
+ * ¥«¥¹¥¿¥Þ¥¤¥º
+ (setq howm-menu-recent-num 20) ;; ɽ¼¨¤¹¤ë¸Ä¿ô
+ * ¥á¥Ë¥å¡¼Ãæ¤ËÊÑ¿ô¤ä´Ø¿ô¤ÎÃͤòɽ¼¨
+ * ¥á¥Ë¥å¡¼Ãæ¤Ë¤³¤¦½ñ¤¯¤È¡Ä
+ * %here%foo ¢ª foo ¤ÎÃͤòɽ¼¨
+ * %here%(foo 3) ¢ª (foo '3) ¤Î·ë²Ì¤òɽ¼¨
+ * Îã: %here%(howm-menu-search "¤Û¤²") ¢ª ¡Ö¤Û¤²¡×¤Î¸¡º÷·ë²Ì¤òËä¤á¹þ¤ß
+ * ¤¿¤À¤·, ÅÐÏ¿¤·¤¿´Ø¿ô¤·¤«»È¤¨¤Þ¤»¤ó (¤ª¤Ã¤«¤Ê¤¤¤«¤é)
+ (setq howm-menu-allow
+ (append '(foo bar) howm-menu-allow)) ;; foo ¤È bar ¤òµö²Ä
+ * ¥á¥Ë¥å¡¼¤ò¥á¥â°·¤¤¤·¤Ê¤¤ (¥á¥â°ìÍ÷¡¦¸¡º÷¤ÎÂоݳ°¤Ë)
+ ;; mv ~/howm/0000-00-00-000000.txt ~/hoge/fuga/menu.txt ¤·¤È¤¤¤Æ¡Ä
+ (setq howm-menu-file "~/hoge/fuga/menu.txt")
+ * %reminder ¤Î»ÅÀÚ¤êÎã
+ (setq howm-menu-reminder-separators
+ '(
+ (-1 . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬º£Æü¢¢¬Ä¶²á¨¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ (0 . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬Í½Äꢨ¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ (3 . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬¤â¤Ã¤ÈÀ袢¬3Æü¸å¤Þ¤Ç¨¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ (nil . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬todo¢¨¬¨¬¨¬¨¬¨¬¨¬¨¬") ;ͽÄê¤Ètodo¤Î¶
+ ))
+
+* ¤â¤Ã¤È·Ú¤¯ (cf. ((<ÉÙ¹ëŪ¥×¥í¥°¥é¥ß¥ó¥°|URL:http://pitecan.com/fugo.html>)))
+ * ¾å½Ò¤Î M-x customize ¤Ç [Howm Efficiency] ¤ò»²¾È
+ * ÆäË, Ëܵ¤¤Ç»È¤¦¤Ë¤Ï howm-view-use-grep ¤ÎÀßÄê¤ò¤ª¤¹¤¹¤á¤·¤Þ¤¹
+ * grep »ÈÍÑ»þ¤Î coding system »ØÄê
+ (setq howm-process-coding-system 'euc-japan-unix) ;; Æɤ߽ñ¤¶¦ÄÌ
+ (setq howm-process-coding-system '(utf-8-unix . sjis-unix)) ;; (ÆÉ.½ñ)
+ * Tips: gc-cons-threshold ¤ÎÃͤòÁý¤ä¤¹¤È®¤¯¤Ê¤ë¾ì¹ç¤¬¤¢¤ë.
+ ref > ((<220,234-236|URL:http://www.bookshelf.jp/2ch/unix/1077881095.html>))
+ (setq gc-cons-threshold (* 4000 10000))
+ * Tips: grep-2.5 ¤Ç¤Ï, ´Ä¶ÊÑ¿ô LANG ¤ò C ¤Ë¤·¤Æ¤ª¤¯¤È,
+ ¥Þ¥ë¥Á¥Ð¥¤¥ÈÂбþ¤¬¥ª¥Õ¤Ë¤Ê¤Ã¤Æ®¤¯¤Ê¤ë
+ ((<ref|URL:http://search.luky.org/vine-users.5/msg06363.html>))
+
+* ¸¡º÷
+ * Âоݥǥ£¥ì¥¯¥È¥ê¤ÎÄɲÃ
+ * Á´Ê¸¸¡º÷¤Î¤È¤, ¥á¥â¤Ë²Ã¤¨¤Æ»ØÄê¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤âºÆµ¢Åª¤Ëõ¤¹
+ (setq howm-search-path '("~/Mail" "~/News"))
+ (setq howm-search-other-dir t) ;; ²¼µ¤Î¥È¥°¥ë¤Î½é´üÃÍ (t ¤« nil)
+ * M-x howm-toggle-search-other-dir ¤Ç,
+ ¾åµ¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷Âоݤˤ¹¤ë¤«¤·¤Ê¤¤¤«¥È¥°¥ë
+ * ¥¡¼¥Ð¥¤¥ó¥É¤·¤¿¤±¤ì¤Ð³Æ¼«¤Ç (¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹ÌϺ÷Ãæ¤Ë¤Ä¤¡Ä)
+
+* ̤Êݸ¤À¤í¤¦¤È°ÑºÙ¹½¤ï¤º, howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¶¯À©ºï½ü¤¹¤ë¥³¥Þ¥ó¥É
+ (¤ª¤¹¤¹¤á¤·¤Þ¤»¤ó. »È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤.)
+ * C-u C-c , Q
+ * ¥á¥Ë¥å¡¼¤Ë½ñ¤¯¤Ê¤é [¶¯À©Á´¾Ã]
+ * ʪÁû¤Ê¤Î¤Ç, ¢¤ò½ñ¤¤¤È¤«¤Ê¤¤¤È̵¸ú
+ (setq howm-kill-all-enable-force t)
+
+* ¥Æ¥ó¥×¥ì¡¼¥È¤ÎÊѹ¹Îã
+ * ¤³¤ó¤Ê¤Õ¤¦¤Ë
+ Subject: ¥¿¥¤¥È¥ë¥Ð¡¼¤Ë»þ·×¤òɽ¼¨ ¢«Ä¾Á°¤Î¥ê¡¼¥¸¥ç¥ó¤ÎÆâÍÆ
+ Date: Thu, 12 Sep 2002 15:45:59 +0900
+ In-Reply-To: </home/hira/sawfish/rich-title/rich-title.jl> ¢«Ä¾Á°¥Õ¥¡¥¤¥ë
+
+ ¢£ ¢« ¥«¡¼¥½¥ë
+ * ~/.emacs ¤Ë
+ (setq howm-template "Subject: %title\nDate: %date\n%file\n%cursor")
+ (setq howm-template-date-format "%a, %d %b %Y %H:%M:%S %z")
+ (setq howm-template-file-format "In-Reply-To: <%s>\n")
+ * ¥Æ¥ó¥×¥ì¡¼¥È¤òÊ£¿ô»ØÄê
+ ;; C-u 2 C-c , c ¢ª 2 ÈÖÌܤΥƥó¥×¥ì¡¼¥È¤Ç¿·µ¬¥á¥â
+ ;; ¥á¥Ë¥å¡¼¤«¤é C-u 2 c ¤Ç¤âƱÍÍ
+ (setq howm-template
+ '("= %title%cursor\n%date %file\n\n" "%date: %title%cursor"))
+ * ¤Ä¤¤¤Ç¤Ë, howm-template ¤ÎÃͤ¬´Ø¿ô¤Ê¤é
+ ¡Öuniversal-argument ¤ÈľÁ°¤Î¥Ð¥Ã¥Õ¥¡¤ò°ú¿ô¤Ë¤·¤Æ¤½¤¤¤Ä¤ò¸Æ¤Ö¡×
+ ¤Ã¤Æ¤¤¤¦¤Î¤â»Å¹þ¤ß¤Þ¤·¤¿
+
+* ½ñ¼°¤ÎÊѹ¹Îã (howm-*.el ¤Î load ¤è¤êÁ°¤Ë)
+ * ¥¿¥¤¥È¥ë(¥á¥â¶èÀÚ¤ê) @@@ ¡Ä
+ (setq howm-view-title-header "@@@")
+ * goto ¥ê¥ó¥¯ ==>¡Ä, come-from ¥ê¥ó¥¯ <==¡Ä
+ (setq howm-ref-header "==>")
+ (setq howm-keyword-header "<==")
+ * goto ¥ê¥ó¥¯ ((¡ã¡Ä¡ä)), come-from ¥ê¥ó¥¯ ((¡§¡Ä¡§))
+ ;; ¡ã¡ä¡§¤ÏȾ³Ñ¤Ëľ¤·¤Æ¤¯¤À¤µ¤¤
+ (setq howm-ref-regexp "((¡ã\\([^¡ä\r\n]+\\)¡ä))")
+ (setq howm-ref-regexp-pos 1)
+ (setq howm-keyword-format "((¡§%s¡§))")
+ (setq howm-keyword-regexp "\\(((¡§\\)\\([^¡§\r\n]+\\)¡§))")
+ (setq howm-keyword-regexp-hilit-pos 1) ;; ¡Ö´ØÏ¢¥¡¼¥ï¡¼¥É¡×ÍÑ
+ (setq howm-keyword-regexp-pos 2)
+ (setq howm-keyword-regexp-format "%s") ;; M-x describe-variable »²¾È
+ * Ãí: come-from ¥¡¼¥ï¡¼¥É¤Î alias ¤Ç¤Ï,
+ ¼¡¤Î¤É¤Á¤é¤«¤·¤«ÁÛÄꤷ¤Æ¤¤¤Þ¤»¤ó.
+ * ¡Ö¡Ä¤«¤é¸å¡×·¿: <<< foo <<< bar <<< baz
+ * ¡Ö¡Ä¤«¤é¡Ä¤Þ¤Ç¡×·¿: ((¡§foo¡§)) ((¡§bar¡§)) ((¡§baz¡§))
+ * wiki É÷¥ê¥ó¥¯ [[hoge]] ¤Î²¼Àþ¤ò¡Ö]]¡×¤À¤±¤Ë
+ * ¡Ö<<< hoge¡×¤ÎºîÀ®¸å¤Ï, ¡Öhoge¡×¤Ë¤â²¼Àþ
+ (setq howm-wiki-regexp "\\[\\[\\([^]\r\n]+\\)\\(\\]\\]\\)")
+ (setq howm-wiki-regexp-hilit-pos 2)
+ (setq howm-wiki-regexp-pos 1)
+
+* ¤³¤Þ¤´¤Þ
+ * ÆüÉÕÆþÎÏ(C-c , d ¤Þ¤¿¤Ï [Æü¢])¤Çǯ¤ä·î¤òά¤·¤¿¤é, ¡Ö̤Íè¡×¤È²ò¼á
+ (setq howm-insert-date-future t)
+ * ¿·µ¬ÆþÎÏ»þ¤Î¤ß¤Ç¤¹. ¡Ö[2003-12-27]¡×¾å¤Ç RET ¤·¤¿¤È¤¤ÎÆ°ºî¤Ï½¾Íè¤É¤ª¤ê.
+ * ¡Öhttp://¡×¤Ç¥ê¥¿¡¼¥ó²¡¤·¤¿¤é, URL ¤ò kill-ring ¤Ø
+ (setq action-lock-no-browser t)
+
+* ͽÄêɽ¡¦todo °ìÍ÷
+ * ¥ê¥Þ¥¤¥ó¥Àµ¹æ(!+-~@.)¤«¤é RET °ìȯ¤Ç¡ÖºÑ¡×¤Ë
+ (setq howm-action-lock-reminder-done-default "")
+ * ¤³¤Î¾ì¹ç, C-u RET ¤Ç½¾Íè¤ÎÆ°ºî (¥¥ã¥ó¥»¥ë, µ¹æÊѹ¹, ¡Ä)
+ * ͽÄêɽ¡¦todo °ìÍ÷¤«¤é¥ê¥Þ¥¤¥ó¥Àµ¹æ¾å¤ÇľÀÜ RET ¤·¤¿¤È¤,
+ ᤫ¤ìÀè¥Ð¥Ã¥Õ¥¡¤ò¼«Æ° save
+ (setq howm-action-lock-forward-save-buffer t)
+ * ¡Ö¼«Æ° save¡×¤ËÄñ¹³¤Ê¤¤Êý¤À¤±¤É¤¦¤¾
+ * ¼êÆ°¤Ç C-x s (̤Êݸ¥Ð¥Ã¥Õ¥¡¤¿¤Á¤ò save)¤Ê¤ê¤¹¤ëÊý¤¬ÀµÆ»¤«¤È
+ * ÊÝα¤ÎÉâÄÀÈÏ°Ï
+ (setq howm-todo-priority-defer-init -14) ;; ½é´üÃÍ = ²¼¸Â
+ (setq howm-todo-priority-defer-peak 0) ;; ¾å¸Â
+ * !+-~. ¤Î½ÜÅ٤Υ«¥¹¥¿¥Þ¥¤¥º
+ * Îã: ¥á¥Ë¥å¡¼¤Ç, ¡ÖÀøÉúÃæ¤ÏÈóɽ¼¨¡×¡ÖºÑ¤Ïɽ¼¨¡×
+ (setq howm-menu-todo-priority -50000)
+ (setq howm-todo-priority-done-bottom -44444)
+ * howm-todo-priority-normal-bottom Åù. ¥½¡¼¥¹(howm-reminder.el)»²¾È.
+ * todo °ìÍ÷(M-x howm-list-todo)¤Î»ÅÀÚ¤êÎã
+ (setq howm-todo-separators
+ '(
+ (0 . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬¢¬Ä¶²á¨¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ (nil . "¨¬¨¬¨¬¨¬¨¬¨¬¨¬ÀøÉúÃ梨¬¨¬¨¬¨¬¨¬¨¬¨¬")
+ ))
+ * Ï¢·ëɽ¼¨¤ä¥½¡¼¥È¤ò¤¹¤ë¾ì¹ç¤Ë¤Ï¤¸¤ã¤Þ¤«¤â¡Ä
+
+* action-lock
+ * { } (¥È¥°¥ë¥¹¥¤¥Ã¥Á)¤ÎÊѹ¹
+ ;; howm ¤Î load Á°¤Ë
+ (setq action-lock-switch-default '("{ }" "{*}" "{-}")) ;; ²¿¸Ä¤Ç¤â
+ * {_} (̤½èÍý)¤ÎÊѹ¹
+ (setq howm-dtime-format "[%a %b %d %H:%M:%S %Y]") ;; {_}
+ (setq howm-template-date-format "[%Y-%m-%d %H:%M]") ;; ¥Æ¥ó¥×¥ì¡¼¥È
+ * ¡Öfile://¡Ä¡×¤ä¡Öhttp://¡Ä¡×¤ÎÊѹ¹ (¤Þ¤·¤ÊÀßÄêÊ罸)
+ thx > ((<945|URL:http://www.bookshelf.jp/2ch/unix/1063800495.html>))
+ ;; howm (Àµ³Î¤Ë¤Ï action-lock.el) ¤Î¥í¡¼¥É¤è¤êÁ°¤Ë.
+ ;; ¡¦file://¡Ä
+ (setq action-lock-open-regexp
+ "\\<file://\\(localhost\\)?\\([-!@#$%^&*()_+|=:~/?a-zA-Z0-9.,;]*[-!@#$%^&*()_+|=:~/?a-zA-Z0-9]+\\)\\>")
+ (setq action-lock-open-regexp-pos 2) ;; 2 ¸ÄÌܤΡÖ\\(¡Ä\\)¡×¤¬¥Õ¥¡¥¤¥ë̾
+ ;; ¡¦http://¡Ä
+ (setq action-lock-browse-regexp
+ "\\<\\([htp]\\{3,5\\}s?\\|ftp\\)://\\([-!@#$%^&*()_+|=:~/?a-zA-Z0-9.,;]*[-!@#$%^&*()_+|=:~/?a-zA-Z0-9]+\\)\\>"
+ (setq action-lock-browse-regexp-pos 0) ;; ¥Þ¥Ã¥Á¤·¤¿Á´ÂΤ¬ URL
+ * action-lock ÄɲÃÎã:
+ ¡ÖMessage-ID: ¡Ä¡×¤Ç¥ê¥¿¡¼¥ó²¡¤·¤¿¤é, ³ºÅö¥á¡¼¥ë¤ò namazu ¤Ç¸¡º÷
+ ;; howm ¤ò load ¤·¤¿¸å¤Ë
+ (defun my-howm-search-message-id (id)
+ (message "Searching...")
+ (let* ((query (format "+message-id:%s" id))
+ (args `("-l" "-n" "1" ,query "/home/hoge/NMZ/Mail"))
+ (found (car (howm-call-process "namazu" args))))
+ (if found
+ (progn
+ (find-file found)
+ (re-search-forward "^$" nil t)
+ (message "Done."))
+ (message "No match."))))
+ (setq action-lock-default-rules
+ (cons (action-lock-general 'my-howm-search-message-id
+ "Message-[Ii][Dd]: \\(.*\\)$"
+ 1)
+ action-lock-default-rules))
+
+* ((<RD|URL:http://www.ruby-lang.org/ja/man/html/RD.html>))¤ò»È¤¦¾ì¹ç:
+ ¹ÔƬ¤Î * ¤Ç¥¨¥ó¥È¥ê¤Î³«ÊĤ¬¤Ç¤¤ë¤è¤¦¤Ë
+ ¢ª ((<237-238|URL:http://www.bookshelf.jp/2ch/unix/1063800495.html>))
+
+* ¤ª¤Þ¤±
+ (setq howm-congrats-format
+ '(
+ "(¡¡¦¦Ø¡¦¡®) %s"
+ "(¡®¡¦¦Ø¡¦¡) %s"
+ ;; ¡Ä°Ê²¼Î¬¡Ä
+ ))
+ (setq howm-congrats-command '("play" "~/sound/fanfare.wav"))
+
+* ¤â¤Ã¤È¤¤¤í¤¤¤í¤¤¤¸¤ë¤Ë¤Ï, *.el ËÁƬ¤ò»²¾È
+
+=== ³°Éô¥Ä¡¼¥ë
+(Ʊº¥Ä¡¼¥ë¤Ï ext/ ¤Ë)
+
+* HTML ¤Ø¤ÎÊÑ´¹: howm2 (Ʊº. Í× ruby)
+ * Îã
+ * ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê ~/howm/ ¤òÊÑ´¹¤·¤Æ ~/converted/ ¤ËÅǤ¯
+ ./howm2 ~/howm/ ~/converted/
+ * <<< ¤ÎÂçʸ»ú¾®Ê¸»ú¤ò̵»ë
+ ./howm2 -i ~/howm/ ~/converted/
+ * ¥ê¥ó¥¯½ñ¼°¤Î»ØÄê
+ ./howm2 -comefrom='<<<' -goto='>>>' ~/howm/ ~/converted/
+ * ¡Ö¤Û¤²¡×¤ò´Þ¤à¥Õ¥¡¥¤¥ë¤À¤± HTML ²½
+ grep -rl '¤Û¤²' ~/howm/ | howm2 -list ~/converted/
+ * ²¿¤â¹©Éפ·¤Æ¤Ê¤¤¤Î¤Ç, ·ãÃÙ¤«¤Ä¥á¥â¥ê¤É¤«¿©¤¤
+ * alias ¤Î¡ÖºÆµ¢Åª¤Ê¡×Ÿ³«¤Ï̤¥µ¥Ý¡¼¥È
+
+* ¥«¥ì¥ó¥À¡¼ & todo °ìÍ÷: hcal.rb (Ʊº. Í× ruby)
+ * ¥«¥ì¥ó¥À¡¼(ͽÄꡦ¡ºÀÚ¡¦ºÑ¤ß¤Î°ìÍ÷)¤ò½ÐÎÏ
+ hcal.rb -schedule_mark='¡û' -deadline_mark='¡ü' -done_mark='¡¿' ~/howm/*/*/*.txt
+ * ¤³¤ó¤Ê´¶¤¸¤Ç¤º¤é¤º¤é
+ ----------------<6>---------------- 2003
+ 01 Sun
+ 02 Mon ¡üÅÄÃæÀèÀ¸¤ËÏ¢Íí ¡ûB4ÎØ¹Ö ¾®ÎÓ ¡û¹©³Ø´ðÁü¸³ 12:40 <<<<##>>>>
+ ¡Ä
+ * ¡ü¤Ï¡ºÀÚ(@[2003-06-02]!), ¡û¤ÏͽÄê(@[2003-06-02]@), ¡¿¤ÏºÑ(@[2003-06-02].)
+ * <<<<# ¤Ï¡Öº£Æü¡×, #>>>> ¤Ï¡ÖËèǯ¤ÎƱ·îƱÆü¡×
+ * ¤³¤ó¤Ê´¶¤¸¤Ç alias ¤·¤È¤¯¤ÈÊØÍø
+ alias hcal="hcal.rb -schedule_mark='¡û' -deadline_mark='¡ü' -done_mark='¡¿' ~/howm/*/*/*.txt | less '+/<<<<#'"
+ * ¡Ö½ÜÅÙ½ç todo °ìÍ÷¡×¤ò½ÐÎÏ
+ (howm ¤ò»È¤¦¤Ê¤éÉÔÍ×. ChangeLog ÇɤʿͤؤΤª¤Þ¤±¤Ç¤¹)
+ * ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç
+ hcal.rb -l memo.txt
+ * emacs ¤«¤é M-x grep ¤·¤Æ
+ Run grep (like this): hcal.rb -l ~/memo/*.txt
+
+* ²Õ¾ò½ñ¤»Ù±ç:
+ * ((<org-mode ¤È¤ÎÊ»ÍÑ|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?OrgMode>))
+
+* ´Ê°×¾®¸¯¤¤Ä¢
+ * ¥¡¼¥ï¡¼¥É¤ò·è¤á¤Æ, ÆüµÃæ¤Ë½ñ¤¤¤Æ¤ª¤¯
+ $¿©Èñ$ 500±ß ¥é¡¼¥á¥ó
+ * ¡Ö<<< $¿©Èñ$¡×¤Ê¤ê¡Ö>>> $¿©Èñ$¡×¤Ê¤ê¤Ç°ìÍ÷¤òɽ¼¨.
+ ¹Ê¤ê¹þ¤ß¡¦¥½¡¼¥È¤·¤ÆÈÏ°Ï»ØÄê.
+ * M-x yen-region ¤Ç, ¡Ö¢þ¢þ±ß¡×¤ò¹ç·×
+ ¢ª ((<yen.el|URL:http://howm.sourceforge.jp/a/yen.el>))
+
+* ((<¢ª howm wiki ¤Î¡ÖÊ»Íѥġ¼¥ë¡×|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ExternalTool>))¤â»²¾È
+
+== ¼ÂÁõ
+
+=== ¼ÂÁõ¤Ë¤Ä¤¤¤Æ
+
+* ¥Õ¥¡¥¤¥ë³«¤¯¤¿¤ó¤Ó¤Ë¥¹¥¥ã¥ó¤Ã¤Æ¤¤¤¦°Â°×¼ÂÁõ
+ * ~/.howm-keys ¤Ë¥¡¼¥ï¡¼¥É¤Î°ìÍ÷
+ * ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤È¤¤Ï¡Ä
+ * .howm-keys ¤Î³Æ¥¡¼¥ï¡¼¥É¤Ë¤Ä¤¤¤Æ, ½Ð¸½¤ÎÍ̵¤ò¸¡º÷
+ * ½Ð¸½¥¡¼¥ï¡¼¥É¤ò or ¤Ç¤Ä¤Ê¤¤¤ÀÀµµ¬É½¸½¤òºîÀ®
+ * ¤½¤ÎÀµµ¬É½¸½¤ò font-lock ¤È action-lock ¤ËÀßÄê
+ * ¥Õ¥¡¥¤¥ëÊݸ»þ¤ËÆâÍƤò¥¹¥¥ã¥ó¤·¤Æ, ~/.howm-keys ¤ò¹¹¿·
+
+* ¸¡º÷
+ * ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê ~/howm/ °Ê²¼¤òºÆµ¢Åª¤ËÁ´¸¡º÷.
+ ¥Õ¥¡¥¤¥ë̾¤â³ÈÄ¥»Ò¤â ~/howm/ °Ê²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤â, ¤É¤¦¤Ç¤â¤è¤¤.
+ * ¥Õ¥¡¥¤¥ë̾¤ÎÀ©Ìó¤Ï,
+ * ¥Õ¥¡¥¤¥ë̾¤Ëǯ·îÆü¤¬Æþ¤Ã¤Æ¤¤¤ë (filter-by-date ¤Î¤¿¤á)
+ * string<= ¤Ç¥½¡¼¥È¤·¤¿¤éÆü»þ½ç¤Ë¤Ê¤ë
+ * ¸ß´¹¤Ê¸¡º÷´Ø¿ô¤òÆóËÜÍÑ°Õ. ¹¥¤¤ÊÊý¤ò»È¤¨¤ë.
+ * real-grep (grep ¤ò¸Æ¤Ö)
+ * fake-grep (elisp ¤Î¤ß)
+
+* ¥Õ¥¡¥¤¥ë¹½À®
+ * howm ËÜÂΤȤÏÆÈΩ
+ * bcomp.el
+ * make »þ¤Ë»È¤¦¤À¤±
+ * navi2ch-cvs-0.0.20031209 ¤«¤é¼ÚÍÑ
+ * cheat-font-lock.el
+ * font-lock-keywords ¤ò¸å¤«¤éÊѹ¹¤¹¤ë¤¿¤á¤Î´Ø¿ô
+ * font-lock.el ¤ÎÆâÉô¼ÂÁõ¤Ë°Í¸
+ * action-lock.el
+ * action-lock-mode (minor-mode)
+ * ¼öʸ(Àµµ¬É½¸½)¤ÈËâË¡(´Ø¿ô)¤ÎÁȤòÅÐÏ¿
+ * ¥ê¥¿¡¼¥ó¥¡¼Ã¡¤¤¤¿¤é
+ * ¼öʸ¤Î¾å ¢ª ËâË¡¤¬È¯Æ°
+ * ¤½¤ì°Ê³° ¢ª ËÜÍè¤Î¥ê¥¿¡¼¥ó¥¡¼
+ * riffle.el
+ * riffle-{summary|contents}-mode
+ * °ìÍ÷¡¦ÆâÍƤΤѤé¤Ñ¤éɽ¼¨, ÆâÍƤÎÏ¢·ëɽ¼¨
+ * °ìÍ÷¤Ç¤Ï, post-command-hook ¤Ç°ÜÆ°¸¡½Ð ¢ª ÆâÍÆɽ¼¨¤ò¹¹¿·
+ * ¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ëÊÑ¿ô riffle-item-list ¤Ë¹àÌܤòÊÝ»ý
+ * gfunc.el ¤ò»ÈÍÑ
+ * gfunc.el
+ * °Âľ generic function
+ * illusion.el
+ * illusion-mode (minor-mode)
+ * ¤Õ¤Ä¤¦¤Î¡Ö¥Õ¥¡¥¤¥ë¡×¤Ç¤Ê¤¤Âоݤò, ³«¤¤¤ÆÊÔ½¸¤·¤ÆÊݸ
+ * º£¤Î¤È¤³¤í³èÍѤµ¤ì¤Æ¤¤¤Ê¤¤
+ * honest-report.el
+ * ¥Ð¥°¥ì¥Ý¡¼¥È¤ÎÀ¸À®
+ * howm ËÜÂÎ
+ * ¼çÌò
+ * howm-backend.el
+ * ¥Ð¥Ã¥¯¥¨¥ó¥É¤ÎʬΥ
+ * Ãê¾Ý²½
+ * ¥Ç¥£¥ì¥¯¥È¥ê ¢ª folder
+ * ¥Õ¥¡¥¤¥ë ¢ª page
+ * ¥Þ¥Ã¥Á²Õ½ê ¢ª item
+ * howm-view.el
+ * howm-view-{summary|contents}-mode (major-mode)
+ * riffle-{summary|contents}-mode ¤«¤éÇÉÀ¸
+ * ¸¡º÷¤Î¼Â¹Ô
+ * howm-mode.el (howm-mode-mode.el ¤«¤é²þ̾[2004-07-14])
+ * howm-mode (minor-mode)
+ * ¾å½Ò¤Î¥¹¥¥ã¥ó¤Ê¤É
+ * ÏÆÌò
+ * howm-date.el
+ * ÆüÉÕÆþÎϤλٱç
+ * howm-reminder.el
+ * ÉâÄÀ¼° todo
+ * howm-menu.el
+ * howm-menu-mode (major-mode)
+ * ÀßÄê
+ * howm-version.el
+ * Äê¿ô howm-version ¤òÀßÄꤹ¤ë¤À¤±
+ * howm-vars.el
+ * defvar, defcustom, Åù
+ * howm-lang-*.el
+ * ¸À¸ì°Í¸¤ÎÊÑ¿ô
+ * howm-menu-*.el
+ * ½é´ü¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¤ÎÆâÍƤòʸ»úÎóÄê¿ô¤È¤·¤ÆÄêµÁ
+ * howm-mkmenu.el
+ * howm-menu-*.el ¤ò ja/0000-00-00-000000.txt Åù¤«¤éÀ¸À®¤¹¤ë¥¹¥¯¥ê¥×¥È
+ * ºî¼Ô°Ê³°¤Ï»È¤¦É¬Íפʤ¤¤Ï¤º
+ * Ȭ
+ * howm-cl.el
+ * cl ¥Ñ¥Ã¥±¡¼¥¸¤Ø¤Î°Í¸¤ò¤Þ¤È¤á¤¿¤À¤±
+ * howm-common.el
+ * howm-*.el ¤Ç require
+ * ÆäË, ¥Õ¥¡¥¤¥ë¤Þ¤¿¤¤¤Ç»È¤¦¥Þ¥¯¥í¤Ï¤³¤³¤Ø (¢è byte-compile Âкö)
+ * howm-misc.el
+ * Ȭ
+ * howm.el (howm-mode.el ¤«¤é²þ̾[2004-07-14])
+ * ¥á¥¤¥ó¥Õ¥¡¥¤¥ë. require ¤¹¤ë¤À¤±.
+
+=== Æ°¤¤Þ¤»¤ó¤è?
+
+(¥Ð¥°¤Î»ØŦ¤ò¤¯¤À¤µ¤ëÊý¤Ø)
+
+* °Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ¤¤¤¿¤À¤¯¤È, Ä´ºº¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹
+ * ¤Ç¤¤ë¤À¤± make test ¤ò¤ª´ê¤¤¤·¤Þ¤¹
+ cd howm-¡û.¡û.¡û
+ make test
+ * win ¤Ê¤é, test.bat ¤ò¤ª´ê¤¤¤·¤Þ¤¹
+ * test.bat Ãæ¤Î¡ÖHOWM_EMACS=¡Ä¡×¤ò´Ä¶¤Ë¤¢¤ï¤»¤Æ½¤Àµ
+ * test.bat ¤ò¼Â¹Ô
+ * ¤É¤Á¤é¤â, emacs ¤¬Î©¤Á¤¢¤¬¤ê, ¼ÁÌäɼ¤¬É½¼¨¤µ¤ì¤Þ¤¹
+ * ((<¤Ê¤ó¤Ç¤ï¤¶¤ï¤¶? ¢ª ¥Ð¥°¥ì¥Ý¡¼¥ÈFAQ|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportFAQ>))
+
+* ÊäÂ: ¥¬¥¤¥·¥å¥Ä¾åÅù
+ * ¡Ö»ÅÍͤ«¡×¡Ö´ûÃΤΥХ°¤«¡×¤Î¥Á¥§¥Ã¥¯¤Ã¤Æ, ¤ª¤Ã¤¯¤¦¤Ç¤¹¤è¤Í¤¨.
+ * howm ¤Ë´Ø¤·¤Æ¤Ï, ¤³¤Î¥Á¥§¥Ã¥¯¤ÏÉÔÍפǤ¹.
+ ¤½¤ì¤è¤ê¤â, µ¤·Ú¤Ë¤É¤ó¤É¤ó»ØŦ¤·¤Æ¤¤¤¿¤À¤¯Êý¤¬¤¢¤ê¤¬¤¿¤¤¤Ç¤¹.
+ * ¤¼¤Ò, ºî¼Ô¤ÎÌܤ¬ÆϤ¯¤È¤³¤í(2ch ¤« howm wiki)¤Ë¤¿¤ì¹þ¤ó¤Ç¤¯¤À¤µ¤¤.
+ * cf.
+ ((<¥Ð¥°¥ì¥Ý¡¼¥ÈFAQ|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportFAQ>)),
+ ((<YASWiki:¥ª¡¼¥×¥ó¥½¡¼¥¹¤Ï²¼Ä®µ¤¼Á|URL:http://web.archive.org/web/20041018232953/http://nnri.dip.jp/~yf/cgi-bin/yaswiki.cgi?name=%A5%AA%A1%BC%A5%D7%A5%F3%A5%BD%A1%BC%A5%B9%A4%CF%B2%BC%C4%AE%B5%A4%BC%C1>))
+
+* ºî¼Ô³Ð½ñ
+ * ¥Ç¥Ð¥Ã¥°ÍÑÊÑ¿ô howm-call-process-last-command
+ * C-u M-x howm-bug-report ¤Ç´ØÏ¢ÊÑ¿ô¤Î°ìÍ÷
+ * M-x howm-elp ¤Ç, ¥×¥í¥Õ¥¡¥¤¥é elp ¤Î½àÈ÷
+
+== È÷¹Í
+
+=== »²¹Í
+
+((<¸µ¥Í¥¿|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?IdeaSource>))»²¾È.
+ÆäË, Q-pocket¡¦HashedWiki¡¦ChangeLog ¥á¥â¤«¤é¤¤¤Ã¤Ñ¤¤¤Þ¤Í¤·¤Æ¤Þ¤¹. ´¶¼Õ.
+
+* ¹À¥ÍºÆóÃø¡Ö¤ä¤µ¤·¤¤ Emacs-Lisp ¹ÖºÂ¡×(¥«¥Ã¥È¥·¥¹¥Æ¥à, 1999)
+ ISBN 4-906391-70-2
+ ¢ª
+ ((<¥ª¥ó¥é¥¤¥óÈÇ (¾¶?)|URL:http://www.gentei.org/~yuuji/elisp/>))
+ * elisp ¤Ï¤¸¤á¤ë¤Ê¤é°µÅÝŪ¤Ë¤ª¤¹¤¹¤á
+ * 6.4 ¾ÏËöÌäÂê¤Î¡Ö¥µ¥¯¥µ¥¯ dired¡×¤ò»²¹Í¤Ë¤µ¤»¤Æ¤¤¤¿¤À¤¤Þ¤·¤¿
+
+=== ¹¹¿·µÏ¿
+
+thx > patch¡¦²þÎÉ°Æ¡¦»ØŦ¤ò¤¯¤À¤µ¤Ã¤¿³§ÍÍ
+
+* ¥Æ¥¹¥ÈÈÇ
+ * [2016-01-01]
+ * ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë»þ¤Î·Ù¹ð¤ò²óÈò
+ * cl ¤ò¤ä¤á¤Æ cl-lib ¤ò»È¤¦
+ * howm-ime-fix (howm-1.1.1 °ÊÁ°¤Î canna, egg, yc, anthy ¸ÄÊÌÂкö) ¤òÇÑ»ß
+ * ¤½¤Î¾¤³¤Þ¤´¤Þ
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.4.3 [2015-12-31]
+ * emacs 25.1.50.1 (2015-12-27 »þÅÀ¤Î git Àèü = de88375) ¤Çµ¯Æ°¤ò³Îǧ
+ * howm-1.4.3rc1 ¤ÈƱ¤¸ÆâÍƤǤ¹
+ * fix
+ * git Àèü emacs ¤Ç¤Î¥¨¥é¡¼ (void-function ed)
+ * C-c , A (howm-list-around) ¤Ç howm-list-title ¤ÎÀßÄ꤬¸ú¤¤¤Æ¤¤¤Ê¤«¤Ã¤¿
+ ((<thx|URL:http://peace.2ch.net/test/read.cgi/unix/1397477663/39>))
+ * ((<howm-recentf|URL:http://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?Recentf>))¤Ê¤É¤Ç̵Â̤˥ê¥â¡¼¥È¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¥ï¡¼¥É¤òʹ¤¤¤Æ¤³¤Ê¤¤¤è¤¦¤Ë.
+ thx > ¸ñ¹¾±Ñ䤵¤ó (hide at koie.org)
+ * ¥É¥¥å¥á¥ó¥È¤Î¥Õ¥¡¥¤¥ë¥â¡¼¥É¤ÎÄûÀµ
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.4.2 [2013-12-31]
+ * Note
+ * emacs 24.3 ¤ËÂбþ. 2013-12-25 »þÅÀ¤Î trunk (24.3.50.1) ¤Ç¤âµ¯Æ°¤ò³Îǧ.
+ * howm-test130321 ¤ä howm-1.4.2rc1 ¤ÈƱ¤¸ÆâÍƤǤ¹
+ * ²þÎÉ
+ * C-c , a (howm-list-all) ¤ò¹â®²½
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste>))
+ * fix
+ * emacs 24.3.1 ¤Ç¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤»¤º¤Ë¼Â¹Ô¤·¤¿¤È¤¤Î¥¨¥é¡¼
+ "Can't detect type of ..."
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste>))
+ * ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯²¼¤Ç¿·µ¬¥á¥â¤¬ howm-mode ¤Ë¤Ê¤é¤Ê¤¤¥Ð¥°
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste>))
+ * ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë»þ¤Î·Ù¹ð
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.4.1 [2012-12-27]
+ * ~/.howm-keys ¤¬Ìµ¤«¤Ã¤¿¤é, Á´¥á¥â¤ò¥¹¥¥ã¥ó¤·¤ÆºÆÀ¸À®
+ ((<thx|URL:http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000099.html>))
+ > Albert-san (areiner at tph.tuwien.ac.at)
+ * fix: *.txt ¤È *.howm ¤¬º®ºß¤·¤Æ¤â°ìÍ÷¥â¡¼¥É¤Îɽ¼¨¤¬¤º¤ì¤Ê¤¤¤è¤¦¤Ë
+ ((<thx|URL:http://toro.2ch.net/test/read.cgi/unix/1141892764/940>))
+
+* ¥ê¥ê¡¼¥¹ÈÇ howm-1.4.0 [2012-08-16]
+ * Note
+ * ((*Èó¸ß´¹Êѹ¹*))¤ËÃí°Õ!
+ * 1.3.* ¤É¤ª¤ê¤ÎµóÆ°¤ò˾¤à¤Ê¤é¢
+ (setq howm-compatible-to-ver1dot3 t) ;; (require 'howm) ¤è¤êÁ°¤Ë!
+ * ¸ÄÊ̤ËÀßÄꤷ¤¿¤±¤ì¤Ð, M-x customize-group RET howm-compatibility RET
+ * Ť¤¤³¤È±£¤·µ¡Ç½¤À¤Ã¤¿¤â¤Î¤ò¸ø¼°µ¡Ç½¤Ë¤·¤Þ¤·¤¿.
+ * emacs-24 Âбþ
+ * howm-1.4.0rc2 ¤ÈƱÆâÍƤǤ¹.
+ * Êѹ¹
+ * howm-file-name-format ¤Î¥Ç¥Õ¥©¥ë¥È¤ò *.howm ¤«¤é *.txt ¤ËÊѹ¹
+ * ³ÈÄ¥»Ò¤Î¤»¤¤¤Ç¾¥Ä¡¼¥ë¤È¤ÎÏ¢·È¤Ëº¤¤Ã¤Æ¤¤¤ë¤é¤·¤¤»öÎã¤ò¸«¤«¤±¤ë¤Î¤Ç
+ * °ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Î¤È¤¤â, ¹Ê¤ê¹þ¤ßÅù¤ò¥Õ¥¡¥¤¥ëñ°Ì¤¸¤ã¤Ê¤¯¥á¥âñ°Ì¤Ë.
+ ¤¿¤À¤·, date ¤Ç¤Î¹Ê¤ê¹þ¤ß¤Ï¥Õ¥¡¥¤¥ëñ°Ì¤Î¤Þ¤Þ.
+ * ¥¿¥¤¥È¥ë¤¬¶õ¤Î¤È¤¤ÏËÜʸ¤Î°ì¹ÔÌܤò¥¿¥¤¥È¥ë¤Ë.
+ * ¤³¤Þ¤´¤Þ²þÎÉ
+ * ¥á¥Ë¥å¡¼¤Ë°Ê²¼¤ò½ñ¤±¤Ð, ¥¿¥¤¥à¥¹¥¿¥ó¥×½ç¤Ç¤Ê¤¯¥Õ¥¡¥¤¥ë̾½ç¤Î¾å°Ì¤òɽ¼¨.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/890>))
+ %here%(howm-menu-recent identity)
+ * ¥Ç¥£¥ì¥¯¥È¥ê¤ËÂФ·¤Æ¤â¥Ó¥å¡¼¥¢¤òÀßÄê¤Ç¤¤ë¤è¤¦¤Ë.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/891>))
+ ;; ¡Öfile://¡Ä/¡×¤ä¡Ö>>> ¡Ä/¡×¤Ï open ¥³¥Þ¥ó¥É(mac ÍÑ)¤Ç³«¤¯
+ (setq howm-view-external-viewer-assoc '(("/$" . "open %s")))
+ * ÊÑ¿ô howm-normalizer ¤Î¤¢¤ê¤¬¤Á¤ÊÀßÄê¥ß¥¹¤ò»¡¤¹¤ë¤è¤¦¤Ë
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/865-870n>))
+ * ¥É¥¥å¥á¥ó¥È¤Î¸Å¤¤²Õ½ê¤ò¼êľ¤·
+ * rast ¤Þ¤ï¤ê¤Î»îºî¤òºï½ü
+ * ±£¤·µ¡Ç½¤Î¸ø¼°²½
+ * ¥³¥Þ¥ó¥É
+ * C-c , e (howm-remember)
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/24-25n>))
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/61>))
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/72-75n>))
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/92-93n>))
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/99>))
+ * C-c , b (howm-list-buffers)
+ * C-c , x (howm-list-mark-ring)
+ * C-c , o (howm-occur)
+ * ¥ê¥Þ¥¤¥ó¥À
+ * ¥á¥Ë¥å¡¼¤Ë¡Ö%reminder¡×¤È½ñ¤¯¤È, ͽÄê¤È todo ¤ÎÅý¹ç°ìÍ÷
+ * ͽÄê¡Ö@¡×¤Ï,
+ howm-menu-schedule-days-before ÆüÁ°¤«¤é
+ howm-menu-schedule-days Æü¸å¤Þ¤Ç¤òÀèƬ¤Ëɽ¼¨
+ * [2004-12-03]@5 ¤Ê¤É¤È½ñ¤¯¤È, ¡Ö5 Æü´Ö¡×¤Î°Õ
+ (ÅöÆü¤â´Þ¤à¤Î¤Ç¡Ö12·î3Æü¤«¤é12·î7Æü¤Þ¤Ç¡×).
+ °ìÍ÷¤«¤é¾Ã¤¨¤ë¤Î¤¬¤½¤ì¤À¤±Í±Í½¤µ¤ì¤ë.
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/516>))
+ * ¡ºÀÚ¡Ö!¡×¤â, ¡ºÀÚÆü¤¬¤½¤ÎÈϰϤޤǤʤé°ì½ï¤Ëɽ¼¨
+ * ¤½¤ì¤è¤ê²¼¤Ï½¾Íè¤É¤ª¤ê
+ * ½¾Íè¤Î %schedule + %todo ¤È¤¯¤é¤Ù¤ë¤È, ¥¹¥¥ã¥ó¤¬°ì²ó¤Ç¤¹¤à¤Ö¤ó¸úΨŪ
+ * [2005-05-15 21:37]@ ¤Î¤è¤¦¤Ê½ñ¼°¤ÎͽÄê¤Ï, »þ¹ï½ç¤Ë¥½¡¼¥È
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/141>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/148>))
+ ((<thx|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/597>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/683>))
+ * ¥á¥Ë¥å¡¼¤«¤é¥ê¥Þ¥¤¥ó¥À¤òľá¤¤·¤¿¤È¤¤Ë,
+ Âбþ¥Ð¥Ã¥Õ¥¡¤Î¹Ô¿ô¤¬Â¿¾¯¤º¤ì¤Æ¤¤¤Æ¤âµö¤¹.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/519>))
+ (setq howm-action-lock-forward-fuzziness 5) ;; ²¿¹Ô¤Þ¤Ç¤º¤ì¤Æ¤âµö¤¹¤«
+ * ((<¥«¥¹¥¿¥Þ¥¤¥º>))
+ * ¾åµ %reminder ¤ä todo list Ãæ¤Î»ÅÀÚ¤ê
+ * grep »ÈÍÑ»þ¤Î coding system »ØÄê
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/784>))
+ * howm ´ØÏ¢¤ÎÁ´¥Ð¥Ã¥Õ¥¡¤Ë¶¦Ä̤ο§ÀßÄê
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/42>))
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Idea>))
+ > taku ¤µ¤ó
+ * todo ¤òºÑ¤Þ¤»¤¿¤È¤¤Ë»ØÄꥳ¥Þ¥ó¥É¤ò¼Â¹Ô (howm-congrats-command)
+ * fix: 2012-01-21 °Ê¹ß¤Î emacs-24 ¤Ç¥¨¥é¡¼ (void-variable inhibit-first-line-modes-regexps)
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste>))
+ thx > º´¡¹ÌÚ ´² ¤µ¤ó (sasaki at fcc.ad.jp)
+
+* ±£¤·µ¡Ç½ (experimental)
+ * 1.1.1.* °ÊÁ°¤«¤é
+ * ¥½¡¼¥¹¥³¡¼¥É¤ÎÆɤ߽ñ¤¤â howm ¤Ç
+ * ((<GNU global|URL:http://www.tamacom.com/global-j.html>))
+ (((<Îã|URL:http://www.tamacom.com/tour/lang/ruby/S/21.html>)))
+ ¤â¤É¤¤Î on the fly ÈǤᤶ¤·¤Æ
+ * ¤Þ¤À³«È¯Ãæ. Ì£¸«¤¹¤ë¤Ë¤Ï¡Ä
+ * ÊÑ¿ô howm-configuration-for-major-mode ¤òÀßÄê
+ * major-mode ¤Ë±þ¤¸¤Æ, come-from ¥ê¥ó¥¯Åù¤Î½ñ¼°¤òÊѤ¨¤ë
+ * howm-misc.el ¤Î¥³¥á¥ó¥È»²¾È
+ * M-x howm-open-directory-independently ¤·¤Æ ~/elisp/howm ¤Ê¤É¤ÈÆþÎÏ
+ * ÀµÂΤϷë¶É grep ¤Ê¤ó¤À¤«¤é, ¤¢¤Þ¤ê¸¤¤Æ°ºî¤ò´üÂÔ¤·¤Æ¤Ï¤¤¤±¤Ê¤¤
+ * elisp, tex ¤Ç¤ÏÊØÍø¤À¤±¤É, ruby ¤¸¤ã»È¤¤¤â¤Î¤Ë¤Ê¤é¤º.
+ * ¢è elisp ¤Î´Ø¿ô̾¤ä tex ¤Î¥é¥Ù¥ë¤ÏÂç°èŪ¤Ë°ì°Õ. ruby ¤ÏÈÝ.
+ * 1.2
+ * °ìÍ÷»þ¤ÎÆâÍƥХåե¡¤Ë¥Õ¥¡¥¤¥ëÁ´ÂΤòɽ¼¨¤µ¤»¤ë
+ (setq howm-view-preview-narrow nil)
+ * Ï¢·ë»þ¤Ï½¾Íè¤É¤ª¤ê(¥á¥â¶èÀÚ¤ê¤ÎÈϰϤΤß)
+ * howm-configuration-for-major-mode °Ê³°¤Ç»È¤¦¾ìÌ̤Ï, ¤Þ¤¢¤Ê¤¤¤Ç¤·¤ç¤¦
+ * ¥ê¥Þ¥¤¥ó¥À
+ * ¥ê¥Þ¥¤¥ó¥À¤Î¥«¥¹¥¿¥Þ¥¤¥º
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/296>))
+ ;; ¿·¤·¤¤·¿¤Î¥ê¥Þ¥¤¥ó¥À¡Ö*¡×¤òÄêµÁ¤¹¤ëÎã:
+ ;; ¡Ö[2004-07-11]* ¤Û¤²¡×¤Ï, »ØÄêÆü¤Þ¤Ç¾å¾º¤·, ¤½¤Î¤¢¤È²¼¹ß.
+ ;; (½ÜÅÙ = - |ÃÙ¤ì / ͱͽÆü¿ô|. ͱͽÆü¿ô¤Î¥Ç¥Õ¥©¥ë¥È¤Ï 3)
+ ;; 1. ½ÜÅٴؿô¤ò½àÈ÷ (ÃÙ¤ì¤ÈͱͽÆü¿ô(¤È¥¢¥¤¥Æ¥à)¤ò¿©¤Ã¤Æ½ÜÅÙ¤òÅǤ¯)
+ ;; ÃÙ¤ì: »ØÄêÆü¤«¤éº£Æü¤Þ¤Ç¤ÎÆü¿ô. ¤Þ¤À¤Ê¤é¥Þ¥¤¥Ê¥¹.
+ ;; ͱͽ: ¡Ö[2004-07-11]*8¡×¤Ê¤é 8. ¡Ö[2004-07-11]*¡×¤À¤±¤Ê¤é nil.
+ ;; ½ÜÅÙ: Â礤¤¤Û¤É¾å. ¡Ö³Ð½ñ¡×¤Ê¤é½éÆü¤¬ 0 ¤ÇËèÆü 1 ¤º¤Ä¸º¤ë.
+ ;; (¥¢¥¤¥Æ¥à: ¤Õ¤Ä¤¦¤Ï»È¤ï¤Ê¤¤¤±¤É¤Ä¤¤¤Ç¤Ë. howm-backend.el »²¾È)
+ (defun my-priority (late lazy item)
+ (let ((r (howm-todo-relative-late late lazy 3)))
+ ;; r = late / lazy. ̵»ØÄê»þ¤Ï lazy = 3.
+ (- (abs r))))
+ ;; 2. face ¤ò½àÈ÷
+ (defface my-face '((t (:foreground "cyan"))) "my face")
+ (setq my-face 'my-face)
+ ;; 3. µ¹æ, ½ÜÅٴؿô, face ¤òÅÐÏ¿.
+ ;; »Ä¤ê¤Î°ú¿ôÆó¤Ä¤Ï, ¡ÖͽÄêɽ¤Ëɽ¼¨¤¹¤ë¤«¡×¡Ötodo ¥ê¥¹¥È¤Ëɽ¼¨¤¹¤ë¤«¡×.
+ (howm-define-reminder "*" #'my-priority 'my-face nil t)
+ * »²¹Í: ´û¸¤Î½ÜÅٴؿô¤Î¥°¥é¥Õ¤¬
+ ((<UNIX USER »ï¤Îµ»ö|URL:http://howm.sourceforge.jp/uu/#label:11>))
+ ¤Ë½Ð¤Æ¤Þ¤¹
+ * ¥Ð¥°
+ * °ìÉô¤Îµ¹æ¤Ï¤³¤±¤½¤¦ (Àµµ¬É½¸½ [¡Ä] Æâ¤ÇÆÃÊ̤ʰÕÌ£¤ò»ý¤Äµ¹æ¤Ï¡ß)
+ * ¡Ö[2004-07-11]- ¤Û¤²¡×¤«¤é¡Ö-¡×¾å¤Ç RET ¤·¤Æ¡Ö*¡×¤òÆþÎϤ¹¤ë¤È¥¨¥é¡¼
+ * ¤È¤ê¤¢¤¨¤ºÃ¡¤Âæ. ¤³¤ó¤Ê¤ó¤Ç¤¤¤¤¤ó¤Ç¤·¤ç¤¦¤«?
+ * ÆüÉÕ·Á¼°
+ * ÆüÉÕ¾å¤Ç RET¡ß2 ¤·¤Æ¤«¤é¡Ä
+ -, + ¢ª Á°Æü, ÍâÆü
+ (, ) ¢ª Á°Æü, ÍâÆü
+ {, } ¢ª Á°·î, Íâ·î
+ [, ] ¢ª Á°Ç¯, Íâǯ
+ * C-u 20 - ¢ª 20ÆüÁ°
+ * ¥Ò¥Ã¥È¤·¤Ê¤«¤Ã¤¿¤é¤½¤ÎÀè¤ÎÆüÉÕ¤ò½ç¤Ëõ¤¹
+ (setq howm-date-forward-ymd-limit 90) ;; 90ÆüÀè¤Ç give up
+ * ¤â¤Ã¤È¤Þ¤·¤Ê¥¡¼ÀßÄê¤Ê¤¤¤«¤Í¤¨
+ * ÆüÉÕÆþÎÏ¡ÖC-c , d¡×¤·¤¿¤È¤¤ÎÆ°ºî¤ò¤µ¤é¤Ë¾®¸¤·¤¯
+ (setq howm-insert-date-pass-through t)
+ * ÆüÉÕ¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤Æ¤Ï¸µ¤ÈƱÍÍ
+ * ÆüÉÕ¥³¥Þ¥ó¥É¤¸¤ã¤Ê¤¤¤È¤¤Ï, ¤¿¤À¤Á¤ËÈ´¤±¤ë.
+ C-c , d hoge ¤È¤« C-c , d C-a ¤È¤«»î¤»¤Ð¤ï¤«¤ê¤Þ¤¹.
+ * ¤·¤Þ¤Ã¤¿. ¡Ö[2004-05-21]+¡×¤È¤«ÆþÎϤ·¤è¤¦¤È¤¹¤ë¤È¤È¤Þ¤É¤¦.
+ ¡Ö+ RET¡×¤Ç¡Ö+¤òÁÞÆþ¡×¤Ë¤Ï¤·¤Æ¤ß¤¿¤±¤É¡Ä
+ * 1.2.1
+ * Major
+ * howm2 ¤Îºî¤êľ¤·? (ext/howmkara)
+ * ɬÍפˤ»¤Þ¤é¤ì¤Æ¤Ç¤Ã¤Á¤¢¤². ̾Á°¤â¤Æ¤¤È¤¦.
+ * ɬÍפÏËþ¤¿¤µ¤ì¤¿¤«¤é, ¤Þ¤¿ÊüÃÖ¤«¤â. 狼¤É¤¦¤Ë¤«¤·¤Æ¤¯¤ì¤ì¤Ð¡Ä
+ * µ¡Ç½¤ÏÂಽ. ¥½¡¼¥¹¤ÏÁ°¤è¤ê¤Ï¤Þ¤·.
+ * magic string ¤¬¤Á¤é¤Ð¤Ã¤Æ¤ë¤Î¤Ï¤±¤·¤«¤é¤ó¤±¤É¡Ä
+ * °ì¥á¥â°ì¥Õ¥¡¥¤¥ë¤Ëʬ³ä¤¹¤ë ext/hsplit.rb ¤â½ñ¤¤¤¿¤±¤É,
+ ¤³¤ì¤Ï¤µ¤é¤Ë¼êÈ´¤
+ * Minor
+ * hcal.rb ¤Î¡Ö[2004-09-02]?¡×Âбþ(¼«Ê¬ÀìÍѤ½¤Î¤Ð¤·¤Î¤®)
+ ((<ref|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?TangledToDo>))
+ * M-x howm-return-to-list ¢ª °ìÍ÷ɽ¼¨¤ËÌá¤ë
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/377>))
+ * ¤È¤êµÞ¤®Ä¶»¨¤Ç¤Ã¤Á¤¢¤². È¿¶Á¤Ë±þ¤¸¤Æ¤Þ¤¿¹Í¤¨¤è¤¦.
+ * °ìÍ÷ɽ¼¨¤Ë¤¤¤Á¤¤¤ÁÌá¤ë¤³¤È¤Ê¤¯, °ìÍ÷¤Î¼¡¹àÌܤòľÀܳ«¤¯:
+ (defun my-howm-next-hit (n)
+ (interactive "p")
+ (let ((buf (save-window-excursion
+ (howm-return-to-list)
+ (when (not (eq major-mode 'howm-view-summary-mode))
+ (error "Sorry. This case is not cared."))
+ (forward-line n)
+ (let ((howm-view-summary-keep-cursor nil))
+ (howm-view-summary-open))
+ (current-buffer))))
+ (switch-to-buffer buf)))
+ (defun my-howm-previous-hit (n)
+ (interactive "p")
+ (my-howm-next-hit (- n)))
+ * 1.2.2
+ * Æüì¥Õ¥©¥ë¥À
+ * namazu folder »îºî
+ * ¥³¡¼¥É»¨¤¹¤®
+ * +from: ¤Ê¤É¤Ë̤Âбþ
+ * ľÀܸ¡º÷¤¹¤ë¤Ë¤Ï M-x howm-search-namazu
+ * rot13 folder/page »îºî
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/580>))
+ * ¤³¤ì¼«ÂΤϤªÍ·¤Ó¤À¤±¤É, ¡Ö¤Õ¤Ä¤¦¤Ç¤Ê¤¤¥Ú¡¼¥¸¡×¤ÎÎý½¬¤È¤·¤Æ
+ * rot13:xxx ¥Ð¥Ã¥Õ¥¡¤Ï, C-c C-c ¤Ç¡Örot13 ¤·¤ÆÊݸ¡×
+ * rot13 ¤Ê¥Õ¥¡¥¤¥ë¤ò³«¤¯¤Ë¤Ï, M-x yarot13-find-file
+ * howm-search-path ¤Ë, Ä̾ï¤Î¡Ö¥Ç¥£¥ì¥¯¥È¥ê¡×°Ê³°¤â½ñ¤±¤ë
+ ;; namazu folder ¤È rot13 folder ¤ò¸¡º÷ÂоݤËÄɲÃ
+ ;; (M-x howm-toggle-search-other-dir ¤Ç͸ú¡¦Ìµ¸ú¤òÀڤ꤫¤¨)
+ (let* ((nd "~/PATH/NMZ/Mail") ;; namazu ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê
+ (rd "~/g/r13") ;; ¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤Ï rot13 ¤µ¤ì¤ë
+ (nf (howm-make-folder:namazu nd))
+ (rf (howm-make-folder:rot13dir rd)))
+ (setq howm-search-path (list nf rf)))
+ (howm-toggle-search-other-dir 1) ;; 0 ¤Ê¤é½é´ü¾õÂ֤ϡÖ̵¸ú¡×
+ * [2004-12-13]_3 ¤ÎͱͽÆü¿ô¡Ö3¡×¤Î°ÕÌ£¤ò 1 ¤º¤é¤·¤¿
+ * ¤¤¤Þ¤Þ¤Ç¤Ï, ¾Êά¤È 0 ¤È 1 ¤¬Æ±¤¸°ÕÌ£¤Ë¤Ê¤Ã¤Æ¤¤¤¿
+ * ¤¤¤º¤ìµ¤¤¬¸þ¤¤¤¿¤é, ¤â¤Ã¤È¤Þ¤¸¤á¤Ë¼ÂÁõ¤·¤Ê¤ª¤¹¤«¤â
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/522>))
+ * ext/hcal.rb ¤Ë iCalendar ½ÐÎϤòÄɲÃ, ¡Ä¤ÎºÇÄã¸Â¤Î¤È¤Ã¤«¤«¤ê¤À¤±
+ * 1.3.1
+ * ¿·¤·¤¤¡Ö¥Ð¥°¤Î»ØŦ¤Î¼ê½ç¡×°Æ
+ * make test ¤Ç emacs ¤òµ¯Æ°
+ * ¥Ð¥°¤òȯ¾É¤µ¤»¤ë
+ * ȯ¾É¤·¤Ê¤±¤ì¤Ð, ¼«Ê¬¤Î .emacs ¤«¤é´ØÏ¢¤·¤½¤¦¤Ê¤È¤³¤í¤ò
+ sample/dot.emacs ¤Ø¥³¥Ô¡¼¤·¤Æ, ¤â¤¦°ìÅÙ make test
+ * ȯ¾É¤·¤¿¤é¤¹¤«¤µ¤º M-x howm-bug-shot
+ * ¥Ð¡¼¥¸¥ç¥ó¤ä¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¤Ê¤É¤¬É½¼¨¤µ¤ì¤Þ¤¹
+ * ¥³¥á¥ó¥È¤ò²Ã¤¨¤Æ 2ch ¤ËŽ¤ë
+ * 1.3.3
+ * ¿·µ¬¥á¥âºîÀ®¤ò¤¹¤Ù¤Æ howm-remember ¤Ë¤¹¤ë¤Ë¤Ï¡Ä
+ ;; howm-create ¤ò¤¹¤Ù¤Æ howm-remember ¤Ë¤¹¤ê¤«¤¨¤ë
+ (defadvice howm-create (around remember activate)
+ (if (interactive-p)
+ (howm-remember)
+ ad-do-it))
+ (setcdr (assoc "[¿·µ¬]" howm-menu-command-table-ja)
+ '(howm-remember current)) ;; [2006-05-15] ½¤Àµ
+ * ¥á¥Ë¥å¡¼¾å¤Ç c ¤ò²¡¤·¤¿¤È¤, ¡Ö¥á¥Ë¥å¡¼¤ÎÁ°¤Ëɽ¼¨¤·¤Æ¤¤¤¿¥Ð¥Ã¥Õ¥¡¡×
+ ¤ò½Ð¤¹Êý¤¬¹¥¤ß¤Ê¤é, ¡Öcurrent¡×¤ò¡Öprevious¡×¤Èľ¤·¤Æ¤¯¤À¤µ¤¤
+ * ¥«¥Æ¥´¥êÊ̤Πtodo list
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/885>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/890>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/909>))
+ ((<thx|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/919>))
+ * ¡ÖʬÎà¡×¤ÎÍ×˾¤Ï¤Ä¤Ã¤Ñ¤Í¤Æ¤¤¿¤ó¤À¤±¤É, º£Æü¤Ïµ¤¤Þ¤°¤ì¤Ëµ¤¤¬¸þ¤¤¤¿¤Î¤Ç
+ ¤ª»î¤·. Àµ¼°µ¡Ç½¤Ë¤·¤Æ¤¤¤¯¤«¤É¤¦¤«¤Ï̤Äê.
+ * ¥á¥Ë¥å¡¼¤Ë¤³¤¦½ñ¤¯¤È, ¡Öfoo¡×¡Öbar¡×¡Öbaz¡×¤ò´Þ¤à todo ¤ò
+ ʬÎष¤Æɽ¼¨
+ %here%(howm-menu-categorized-reminder ("foo" "bar" "baz"))
+ * ¤Á¤Ê¤ß¤Ë, %here% ¤Ç¤Ï¥¯¥ª¡¼¥È¤ÏÉÔÍפǤ¹
+ * ¤µ¤é¤Ë, ³Æ¹Ô¤Î¡Öfoo¡×¡Öbar¡×¡Öbaz¡×¤ò¾Ã¤·¤¿¤±¤ì¤Ð
+ %here%(howm-menu-categorized-reminder ("foo" "bar" "baz") nil t)
+ * ¡Ömisc.¡×¤òÈóɽ¼¨¤Ë¤·¤¿¤±¤ì¤Ð
+ %here%(howm-menu-categorized-reminder ("foo" "bar" "baz") nil nil t)
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤Î¥Þ¥Ã¥ÁÆâÍƤκ¸¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨.
+ ¤Á¤Ê¤ß¤Ë½¾Íè¤Î¤Ï, ¡Ö¥Þ¥Ã¥ÁÆâÍƤΤ«¤ï¤ê¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨¡×.
+ ((<thx|URL:http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000025.html>)) > Highfly ¤µ¤ó
+ (setq howm-view-list-title-type 2) ;; ¥Þ¥Ã¥ÁÆâÍƤκ¸¤Ë¥¿¥¤¥È¥ë¤òɽ¼¨
+ (setq howm-view-summary-format "") ;; ¥Õ¥¡¥¤¥ë̾¤ò¾Ã¤·¤¿¤±¤ì¤Ð
+ * C-c , M ¤Ç¡Ö¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Æ¥á¥â¤ò³«¤¯¡×
+ ((<thx|URL:http://lists.sourceforge.jp/mailman/archives/howm-eng/2005/000010.html>)) > Eduardo Ochs ¤µ¤ó
+ * 1.3.7
+ * °ìÍ÷»þ¤Ë¥¦¥£¥ó¥É¥¦Ê¬³ä¤ò²õ¤µ¤Ê¤¤ÀßÄê.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/507>))
+ (setq riffle-keep-window t)
+ (setq riffle-window-initializer nil)
+ * ÆâÍƥХåե¡¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó.
+ * ¤È¤ê¤¢¤¨¤ºÃ¡¤Âæ. º£¸åÊѹ¹¤Î²ÄǽÀ¤¢¤ê.
+ * M-x howm-list-active-todo ¤Ç, ¸½ºß͸ú¤Ê(¡áÀøÉúÃæ¤Ç¤Ê¤¤) todo ¤Î¤ß¤ò°ìÍ÷.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/129-131n>))
+ * ¤Ä¤¤¤Ç¤Ë, M-x howm-list-sleeping-todo ¤Ç, ÀøÉúÃæ¤Î todo ¤Î¤ß¤ò°ìÍ÷.
+ * ¤È¤ê¤¢¤¨¤º´Ø¿ô¤À¤±»îºî. ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î°Æ¤¬¤¢¤ì¤Ð¤ªÊ¹¤«¤»¤¯¤À¤µ¤¤.
+ * ¤Á¤Ê¤ß¤Ë, ¥á¥Ë¥å¡¼¤«¤éÀøÉúÃæ todo ¤ò¾Ã¤¹¤Ë¤Ï,
+ M-x customize-variable RET howm-menu-todo-priority RET ¤Ç
+ ¡ÖHide sleeping reminders¡×¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤.
+ * ¥Ð¥Ã¥Õ¥¡Ì¾¤ò, ¥Õ¥¡¥¤¥ë̾¤Ç¤Ï¤Ê¤¯¥¿¥¤¥È¥ë¤Ë¤¹¤ë.
+ ((<thx|URL:http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000020.html>)) > Mielke-san (peter at exegenix.com),
+ ((<thx|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ExternalTool>))
+ ;; emacs ¾å¤Ç¤Î¥Ð¥Ã¥Õ¥¡Ì¾¤ò, ¥Õ¥¡¥¤¥ë̾¤Ç¤Ï¤Ê¤¯¥¿¥¤¥È¥ë¤Ë.
+ ;; (¥Õ¥¡¥¤¥ë̾¼«ÂΤÏÊѹ¹¤·¤Ê¤¤)
+ (add-hook 'howm-mode-hook 'howm-mode-set-buffer-name)
+ (add-hook 'after-save-hook 'howm-mode-set-buffer-name)
+ * ¥¿¥¤¥È¥ë¡Ö¤Û¤²¡×¤Î¥á¥â¤Î¥Ð¥Ã¥Õ¥¡Ì¾¤ò¡Ö=¤Û¤²¡×¤Ë
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/333>))
+ ;; ¥¿¥¤¥È¥ë¤¬ AAA ¤Ê¤é¥Ð¥Ã¥Õ¥¡Ì¾¤ò =AAA ¤Ë.
+ ;; ²¼¤Î howm-mode-set-buffer-name ¤òÀßÄꤷ¤¿¾å¤Ç¡Ä
+ (setq howm-buffer-name-format "=%s")
+ * ËÜÅö¤Ï howm ¤ÈÆÈΩ¤·¤¿¥Ä¡¼¥ë¤Ë¤¹¤ëÊý¤¬¤¤¤¤¤±¤É,
+ ¤ª¤Ã¤¯¤¦¤Ê¤Î¤Ç¤Ò¤È¤Þ¤º.
+ * 1.3.8
+ * M-x howm-extend-deadlines ¤Ç,
+ »ØÄêÆü¤ò²á¤®¤¿¡ºÀÚ(!)¤ò¤¹¤Ù¤Æ°ìÄêÆü¿ô¸å¤Ø±ä´ü.
+ ((<thx|URL:http://hibari.2ch.net/test/read.cgi/unix/1141892764/671>))
+ * »ÅÍͤ⥤¥ó¥¿¥Õ¥§¡¼¥¹¤â¤Þ¤Àá¤Âæ.
+ * ¥á¥â¤ò¾¡¼ê¤Ë½ñ¤¤«¤¨¤ë´í¸±¤ÊÁàºî¤Ê¤Î¤Ç, ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¤È¤Ã¤Æ¤«¤é!
+ * 1.3.9
+ * ¥á¥Ë¥å¡¼¤Ë¡Ö%here%(howm-menu-search "[ÃÇ]ÊÒŪ" full t)¡×¤È½ñ¤±¤Ð,
+ ¡ÖÃÇÊÒŪ¡×¤ò´Þ¤à¥á¥â¤ÎÆâÍÆÁ´ÂΤò¥á¥Ë¥å¡¼¤ËËä¤á¹þ¤ß.
+ ((<thx|URL:http://sourceforge.jp/projects/howm/lists/archive/eng/2010/000097.html>))
+ > Morgan Veyret ¤µ¤ó (morgan.veyret at gmail.com).
+ * ñ¤Ë "ÃÇÊÒŪ" ¤È¤·¤Ê¤¤¤Î¤Ï, ¥á¥Ë¥å¡¼¥Õ¥¡¥¤¥ë¼«¿È¤¬¥Ò¥Ã¥È¤¹¤ë¤Î¤òÈò¤±¤ë¾®ºÙ¹©
+ * 1.4.2
+ * °ìÍ÷¥Ð¥Ã¥Õ¥¡¤Ç¡Ö¥Õ¥¡¥¤¥ë | ¥Þ¥Ã¥Á¹Ô¡×¤Î¤«¤ï¤ê¤Ë¤³¤ó¤Êɽ¼¨¤Ë.
+ ¤³¤Î¤È¤¥¿¥¤¥È¥ëÀèƬ¤Î¡Ö=¡×¤Ïɽ¼¨¤·¤Ê¤¤¤è¤¦¤Ë.
+ (experimental)
+ ((<thx|URL:http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000107.html>))
+ ((<thx|URL:http://sourceforge.jp/projects/howm/lists/archive/eng/2012/000111.html>))
+ > Albert-san (areiner at tph.tuwien.ac.at)
+ ¥¿¥¤¥È¥ë A|
+ |¥Þ¥Ã¥Á¹Ô A1
+ |¥Þ¥Ã¥Á¹Ô A2
+ ¥¿¥¤¥È¥ë B|
+ |¥Þ¥Ã¥Á¹Ô B1
+ |¥Þ¥Ã¥Á¹Ô B2
+ * ÀßÄê
+ (setq howm-view-list-title-type 2) ;; Show title before summary.
+ (setq howm-view-summary-format "") ;; If you want to delete file names.
+ (setq howm-entitle-items-style2-max-length 50)
+ (setq howm-entitle-items-style2-format "%-0s|%s") ;; for title and summary
+ (setq howm-entitle-items-style2-title-line t) ;; independent title line?
+ * ¤µ¤é¤Ë, M-x customize-variable RET howm-list-title RET ¤âÀßÄê¤ò
+ * À©¸Â: °ì¥Õ¥¡¥¤¥ëÊ£¿ô¥á¥â¤Ç C-c , a (howm-list-all) ¤·¤¿¤È¤¤Ï
+ Âбþ¤¹¤ë¥¿¥¤¥È¥ë¹Ô¤ËÈô¤ó¤Ç¤¯¤ì¤Ê¤¤
+ * ¤½¤â¤½¤â¹Ô»Ø¸þ¤Çºî¤Ã¤Æ¤¤¤¿¤Î¤Ç¼ÂÁõ¤¬ÌµÍýÌðÍý
+ * ¤¤Á¤ó¤Èľ¤¹¤Î¤Ï¤á¤ó¤É¤¦. ¶¯¤¤¼ûÍפ¬¤Ê¤±¤ì¤Ð¡Ä
+
+* ¡ÄÍúÎòÈ´¿è¡Ä (((<URL:OLD.rd>)) »²¾È)
+ * [2010-12-30] 1.3.9 Èù½¤Àµ
+ * [2009-12-31] 1.3.8 ²á¤®¤¿¡ºÀÚ¤ËÃ忧
+ * [2008-12-31] 1.3.7 ÆâÉô¥³¡¼¥ÉÀ°Íý (ÉûºîÍѤòʬΥ).
+ howm-list-normalizer ¤«¤é howm-normalizer ¤Ø.
+ * [2008-05-31] 1.3.6 Ã忧¤ÎÉÔ¶ñ¹ç½¤Àµ
+ * [2007-12-09] 1.3.5 ²Æ»þ´Ö¤ÎÉÔ¶ñ¹ç½¤Àµ
+ * [2006-12-16] 1.3.4 ¥»¥¥å¥ê¥Æ¥£½¤Àµ
+ * [2005-08-02] 1.3.0 alias. M-x customize. ¥¿¥¤¥È¥ëɽ¼¨.
+ * [2005-05-02] 1.2.2 ¥Ð¥Ã¥¯¥¨¥ó¥ÉÀÚ¤êÎ¥¤·. gfunc.el
+ * [2004-08-24] 1.2 ÊÝα¡Ö~¡×¤Î¸ø¼°²½. howm.el, riffle.el
+ * [2004-05-06] 1.1.2 make test
+ * [2004-02-27] ((<"2ch howm ¥¹¥ì 2"|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/>))
+ * [2004-02-21] 1.1.1 ¡Ö±£¤·µ¡Ç½¡×À©ÅÙ¤òƳÆþ
+ * [2004-01-25] ((<"sf.jp"|URL:http://howm.sourceforge.jp/>)) ¤Ø°ÜÆ°
+ * [2005-01-08] ((<"UNIX USER 2004.2"|URL:http://www.unixuser.jp/magazine/2004/200402.html>))
+ * [2003-12-27] ((<howm wiki|URL:http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi>))
+ * [2003-11-22] 1.1 ¥Ç¥Õ¥©¥ë¥È¤ÎÊѹ¹
+ (¥ê¥ó¥¯¡¦ÆüÉÕ¡¦¥ê¥Þ¥¤¥ó¥À¤Î½ñ¼°, °ì¥á¥â°ì¥Õ¥¡¥¤¥ë, ¥á¥Ë¥å¡¼¤â¥á¥â¤Î°ì¼ï)
+ * [2003-10-27] 1.0.4.2 ½Å¤¯¤Ê¤ë¥Ð¥°¤ò½¤Àµ. ¤è¤¯¤³¤ó¤Ê¤Î¤ÇÆ°¤¤¤Æ¤¿¤Ê¤¢¡Ä
+ * [2003-10-02] 1.0.4 ³°Éô viewer, ¥á¥Ë¥å¡¼¤Î²á¾ê¶¯²½
+ * [2003-09-23] ¡Ö¥Æ¥¹¥ÈÈǡפòƳÆþ
+ * [2003-09-18] 1.0.2 HTML ²½¥¹¥¯¥ê¥×¥È howm2
+ * [2003-09-17] ((<2ch howm ¥¹¥ì|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/>))
+ * [2003-09-17] 1.0 ¥á¥â¥Ç¥£¥ì¥¯¥È¥ê¤ò³¬Áز½
+ * [2003-09-16] 0.9.7.1 Wiki É÷¥ê¥ó¥¯ [[¤Û¤²]]
+ * [2003-09-14] 0.9.4.1 grep æµÑ
+ * [2003-09-09] 0.9 ruby æµÑ
+ * [2003-08-31] 0.8.5 ¥¿¥¤¥È¥ë°ìÍ÷
+ * [2003-06-03] 0.8.4 °Âľ¥«¥ì¥ó¥À¡¼ hcal.rb
+ * [2002-11-03] 0.8 ¥á¥Ë¥å¡¼, ½ÜÅÙ½ç todo @[2003/09/20]+
+ * [2002-09-17] 0.7 1 Æü 1 ¥Õ¥¡¥¤¥ë, come-from ¥ê¥ó¥¯ <<
+ * [2002-09-14] 0.6 ¥ê¥ó¥¯ÇÑ»ß(¤¹¤Ù¤Æ¤Ï¡Ö¸¡º÷¡×)
+ * [2002-06-10] ((<"ÆüËÜȯ¤Î wiki ¥¯¥í¡¼¥ó¥ê¥¹¥È"|URL:http://www1.neweb.ne.jp/wa/yamdas/column/technique/clonelist.html>))
+ * [2002-05-29] 0.1 ¸ø³«
+
+=== ¥¢¥É¥ì¥¹
+
+* ºÇ¿·ÈÇ: ((<URL:http://howm.sourceforge.jp/>))
+* Ï¢ÍíÀè: email ¥¢¥É¥ì¥¹¤Ï¥½¡¼¥¹¥Õ¥¡¥¤¥ëËÁƬ¤ò»²¾È¤¯¤À¤µ¤¤
+
+=end
--- /dev/null
+=begin
+
+= howm tutorial
+
+== First day
+
+=== Write a note.
+
+* Type Ctrl-C , , to open the menu.
+ [New] Search([String] [Regexp]) [Dup] [<Title] [<Name] [Date>] [Key>] [Update]
+ [All] [Recent] [Schedule] [Todo] [Update Menu]
+* Confirm the cursor is on [New], and type [return] there to open new note.
+ =
+ [2002-09-16 20:08] >>> /home/hira/elisp/howm/howm-mode.el
+* Write anything.
+ = First note
+ [2002-09-16 20:08] >>> /home/hira/elisp/howm/howm-mode.el
+ foo
+ bar
+ baz
+
+
+== Second day
+
+=== Write today's note.
+
+* Type Ctrl-C , , and type [return] on [New]. Then, write freely.
+
+=== Read notes.
+
+* Type Ctrl-C , , to open the menu.
+ [New] Search([String] [Regexp]) [Dup] [<Title] [<Name] [Date>] [Key>] [Update]
+ [All] [Recent] [Schedule] [Todo] [Update Menu]
+* Move the cursor to [All] and type [return] there to browse all notes.
+* Move the cursor up and down to view each note.
+* Type [space] and [backspace] to scroll the note.
+* Type [return] to open the note.
+
+=== Concatenate notes.
+
+* Type Ctrl-C , , to open the menu.
+* Move the cursor to [All] and type [return].
+* Type @ to concatenate all notes.
+* Type [space] and [backspace] to scroll the notes.
+* Type @ to toggle summary-view and concatenated-view.
+* Type [return] to open the note.
+
+=== Search a word in notes.
+
+* Type Ctrl-C , , to open the menu.
+* Move the cursor to [String] and type [return] there to search for a string.
+ Keyword:
+* Input a string.
+ Keyword: foo
+* Type [return] to browse matched notes.
+
+=== Search a phrase in notes.
+
+* Type Ctrl-C , , to open the menu.
+* Move the cursor to [String] and type [return].
+* Input a string. Type Ctrl-q and [space] to input a whitespace.
+ Keyword: hoge fuga
+* Type [return] to browse matched notes.
+
+
+== Third day
+
+=== Try goto link.
+
+* Ctrl-C , , and [return] on [New] to open new note.
+* Write '>>> foo'.
+ =
+ [2002-09-17 20:15]
+ >>> foo
+* A line is drawn under it.
+ Move the cursor on it and type [return] to search for 'foo' in all notes.
+
+=== Try come-from link.
+
+* Write '<<< hoge' in today's note.
+ =
+ [2002-09-17 20:15]
+ >>> foo
+ <<< hoge
+* Move the cursor on '<<<' and type [return] to search for 'hoge' in all notes.
+* Select the first day's note and type [return] to open it.
+* A line is drawn under 'hoge'.
+ Move the cursor on it and type [return] to search for 'hoge' in all notes.
+* Remember that '<<< hoge' is always shown first when you search for 'hoge'.
+ Others are sorted by their modification time.
+
+=== Search come-from keyword with completion.
+
+* Ctrl-C , , and [return] on [String] to search for a keyword.
+ Keyword:
+* Type 'ho' and type [space] to complete come-from keyword 'hoge'.
+ Keyword: hoge
+* Type [return] to search for 'hoge'.
+
+
+== Fourth day
+
+=== Sort notes.
+
+* Ctrl-C , , and [return] on [All] to browse all notes.
+* Type S to sort notes.
+ Sort by:
+* Type [space] to show available criteria.
+* Type 'da' and type [space] to complete 'date'.
+ Sort by: date
+* Type [return] to execute it.
+
+=== Filter notes.
+
+* Ctrl-C , , and [return] on [All] to browse all notes.
+* Type f to filter notes.
+ Filter by:
+* Type [space] to show available criteria.
+* Type 'co' and type [space] to complete 'contents'.
+ Filter by: contents
+* Type [return] and input 'foo'.
+ Search in result (grep): foo
+* Type [return] to execute it.
+
+=== Read help.
+
+* Ctrl-C , , and [return] on [All] to browse all notes.
+* Type ? and read the help message.
+
+=== Use shortcut.
+
+* Type Ctrl-C , c to create new note.
+
+
+== Fifth day
+
+=== Input todo.
+
+* Type Ctrl-C , c to create new note.
+* Write as follows.
+ [2003-09-10]- foo
+ [2003-09-10]+ bar
+ [2003-09-10]! baz
+ [2003-09-10]~ qux
+
+=== Browse todo.
+
+* Ctrl-C , , and [return] on [Todo] to browse all todo.
+* Move cursor and type [return] to open the note.
+* Type Ctrl-C , , to show the head of todo under the menu.
+* Items are sorted by a magic criterion.
+ - sink after the date (reminder)
+ + float after the date (todo)
+ ! float until the date (deadline)
+ ~ sink and float periodically after the date (defer)
+
+=== Finish todo.
+
+* Ctrl-C , , and [return] on [Todo] to browse all todo.
+* Move cursor and type [return] to open the note.
+ [2003-09-10]- foo
+* Move cursor on - and type [return] to show todo-menu.
+ RET (done), x (cancel), symbol (type), num(laziness):
+* Type [return] to finish this todo.
+ [2003-09-10]. [2003-09-10]:- foo
+
+=== Input schedule.
+
+* Type Ctrl-C , c to create new note.
+* Write as follows.
+ [2003-09-10]@ hoge
+
+=== Browse schedule.
+
+* Ctrl-C , , and [return] on [Schedule] to browse all schedule.
+* Type [space] and [backspace] to scroll the list.
+* Type . to jump to today.
+* Type Ctrl-C , , to show the head of schedule under the menu.
+* Type [return] on > at the beginning of line to open the corresponding note.
+
+=== Input recurring tasks.
+
+* move cursor to '2003-09-10' on the below form in the opened note.
+ [2003-09-10]@ hoge
+* Type [return] to show date-menu.
+ [Wed] RET(goto), +num(shift), yymmdd(set), ~yymmdd(repeat), .(today):
+* Input ~031231 [return] and then type m [return] to the below question.
+ Every? [RET(all), num(days) w(week), m(month), y(year)]
+* And monthly tasks are added automatically until 2003-12-31.
+ [2003-09-10]@ hoge
+ [2003-10-10]@ hoge
+ [2003-11-10]@ hoge
+ [2003-12-10]@ hoge
+* You can use '~1231' instead of '~031231' to input same-year items.
+
+
+== Sixth day
+
+=== Try action-lock { }.
+
+* Type Ctrl-C , c to create new note.
+* Write { }.
+ { }
+* Move cursor on { } and type [return].
+ {*}
+* Type [return] again.
+ {-}
+
+=== Try action-lock {_}.
+
+* Type Ctrl-C , c to create new note.
+* Write {_}.
+ {_}
+* Move cursor on {_} and type [return].
+ [2003-09-10 04:12]
+
+=== Try aliases.
+
+* Write '<<< hoge <<< fuga <<< piyo' in a note.
+ =
+ [2002-09-17 20:15]
+ <<< hoge <<< fuga <<< piyo
+* Write 'hoge' in another note.
+* Write 'fuga' in yet another note.
+* Put cursor on 'fuga' and type [return].
+ You will see all 'hoge', 'fuga', and 'piyo' are found together.
+
+
+== Seventh day
+
+=== Try customization.
+
+* Type Ctrl-C , , to show the menu.
+* Move cursor on [Preference] and type [return].
+* Watch customization items and modify them if you like.
+
+=== Try editing menu.
+
+* Type Ctrl-C , , to show the menu.
+* Move cursor on [Edit Menu] and type [return].
+* Delete the line '%random', and type Ctrl-C , , to observe its effect.
+* Again try [Edit Menu] and write '%random' to restore it.
+* Type Ctrl-C , , and move cursor to '%Editing Menu%' at the bottom.
+* Type [return] and read documentation of menu syntax.
+
+=end
--- /dev/null
+=begin
+
+= Tutorial
+
+¤³¤ì¤òÆɤà¤è¤ê¤â, ¢¤ÎÊý¤¬¤ï¤«¤ê¤ä¤¹¤¯¤Æ¤ª¤¹¤¹¤á¤Ç¤¹
+
+* ((<"Meadow/Emacs memo ¤Ç¤Î¾Ò²ð"|URL:http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=howm>))
+* ((<UNIX USER »ï¤Îµ»ö|URL:http://howm.sourceforge.jp/uu/>))
+
+== ¥á¥â¤ò½ñ¤¯
+
+¡ÖChangeLog É÷¡×¡ÖWiki É÷¡×¤Î¤É¤Á¤é¤«¹¥¤¤ÊÊý¤ò¤Þ¤º¤ª»î¤·¤¯¤À¤µ¤¤
+
+=== ChangeLog É÷¤Ë
+
+* ¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤¬³«¤¯
+* [¿·µ¬] ¤Î¾å¤Ë¥«¡¼¥½¥ë¤òÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¥¡¼ ¢ª ¥á¥â¤¬³«¤¯
+ =
+ [2003-09-16 06:16]
+
+* ŬÅö¤ËÊÔ½¸¡¦Êݸ
+ = ºÇ½é¤Î¥á¥â
+ [2003-09-16 06:16]
+ »È¤Ã¤Æ¤ß¤¿¤è
+
+* °ìö, Ê̤Υե¡¥¤¥ë¤ò³«¤¯
+* ¤Þ¤¿¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤ò³«¤, [¿·µ¬] ¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¥¡¼
+ ¢ª ¼¡¤Î¥á¥â¤¬³«¤¯
+ =
+ [2003-09-16 06:18] >>> /home/hoge/gomi/kuzu
+
+* ŬÅö¤ËÊÔ½¸¡¦Êݸ
+ = ¼¡¤Î¥á¥â
+ [2003-09-16 06:18] >>> /home/hoge/gomi/kuzu
+ ³«¤¤¤Æ¤¿¥Õ¥¡¥¤¥ë¤¬¤³¤ó¤Ê¤È¤³¤Ë½ñ¤¤¤Æ¤¢¤ë¤Í¢¬
+
+* ¡Ö>>> /home/hoge/gomi/kuzu¡×¤Ë¤Ï²¼Àþ¤¬¤Ä¤¯. ¤½¤³¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¥¡¼¡ß2
+ ¢ª ¤½¤Î¥Õ¥¡¥¤¥ë¤ËÈô¤Ö
+
+=== Wiki É÷¤Ë
+
+* ¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤¬³«¤¯
+* [menu ÊÔ½¸] ¤Î¾å¤Ë¥«¡¼¥½¥ë¤òÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¥¡¼
+ ¢ª ¥á¥Ë¥å¡¼¤Î¸µ¥Õ¥¡¥¤¥ë¤¬³«¤¯
+* ¸µ¥Õ¥¡¥¤¥ë¤òÊÔ½¸¡¦Êݸ. ¤¿¤È¤¨¤Ð¼¡¤Î¤è¤¦¤Ë.
+ ¤¿¤á¤·¤Ë[[SandBox]]¤È½ñ¤¤¤Æ¤ß¤¿.
+ [¿·µ¬] ¸¡º÷([¸ÇÄê] [Àµµ¬] [roma]) [Ê£À½] [Âꢬ] [̾¢¬] [¹¹¿·] [¸°¢]
+ ¡Ä
+* [[SandBox]]¤ÎÊĤ¸³ç¸Ì¤Ë¤Ï²¼Àþ¤¬¤Ä¤¯. ¤½¤Î¾å¤Ë¥«¡¼¥½¥ë¤òÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¥¡¼
+ ¢ª ¡ÖSandBox¡×¤Î¥á¥â¤¬ºî¤é¤ì¤ë.
+ = <<< SandBox
+ [2003-09-16 05:50]
+
+* ŬÅö¤ËÊÔ½¸¡¦Êݸ
+ = <<< SandBox
+ [2003-09-16 05:50]
+ [[Îý½¬]]¤·¤è¤¦.
+
+* ¤³¤Î[[Îý½¬]]¤ÎÊĤ¸³ç¸Ì(²¼Àþ¤¬¤Ä¤¯)¤Ë¥«¡¼¥½¥ë¤òÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¥¡¼
+ ¢ª ¡ÖÎý½¬¡×¤Î¥á¥â¤¬ºî¤é¤ì¤ë
+ = <<< Îý½¬
+ [2003-09-16 05:53]
+
+* ŬÅö¤ËÊÔ½¸¡¦Êݸ
+ = <<< Îý½¬
+ [2003-09-16 05:53]
+ SandBox ¤Ï¤É¤¦¤«¤Ê?
+
+* ¡ÖSandBox¡×¤Ë¤Ï²¼Àþ¤¬¤Ä¤¯ (Wiki ¤Ç¸À¤¦ AutoLink)
+ * ¤Ä¤«¤Ê¤¤¤È¤¤Ï, ¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤ò³«¤, [¹¹¿·] ¤Ç¥ê¥¿¡¼¥ó¥¡¼
+* ¡ÖSandBox¡×¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¥¡¼¡ß2 ¢ª ¡ÖSandBox¡×¤Î¥á¥â¤ËÈô¤Ö
+ * ¥ê¥¿¡¼¥ó¥¡¼ 1 ²óÌܤǡÖSandBox¡×¤ÎÁ´Ê¸¸¡º÷
+ * ¥ê¥¿¡¼¥ó¥¡¼ 2 ²óÌܤǤ½¤ÎÀèƬ¤ò³«¤¯
+ * ÀèƬ¤Ïɬ¤º¡Ö<<< SandBox¡×¤Ê¤Î¤Ç¿´ÇÛ̵ÍÑ
+
+* ¤µ¤Ã¤¤Î [[Îý½¬]] ¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¥¡¼¡ß2 ¢ª ¡ÖÎý½¬¡×¤Î¥á¥â¤ËÈô¤Ö
+
+== ¥á¥â¤òÆɤà
+
+* ¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤ò³«¤, [°ìÍ÷] ¤Î¾å¤Ë¥«¡¼¥½¥ëÃÖ¤¤¤Æ¥ê¥¿¡¼¥ó¥¡¼
+ ¢ª Á´¥á¥â¤Î°ìÍ÷¤¬½Ð¤ë (°ìÍ÷¥Ð¥Ã¥Õ¥¡ + ÆâÍƥХåե¡)
+ * ¥«¡¼¥½¥ë¾å²¼¤Ç¥Õ¥¡¥¤¥ë¤òÁªÂò (¥ê¥¢¥ë¥¿¥¤¥à¤ËÆâÍƤòɽ¼¨)
+ * SPC ¤È BS ¤ÇÆâÍƤò¥¹¥¯¥í¡¼¥ë
+ * ¥ê¥¿¡¼¥ó¤Ç¤½¤Î¥Õ¥¡¥¤¥ë¤ò³«¤¯
+
+* ¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤ò³«¤, ¡Ö¸¡º÷¡×¤Î [¸ÇÄê] ¤Ç¥ê¥¿¡¼¥ó¥¡¼
+ ¢ª ¸¡º÷¸ì¤òÆþÎÏ
+ Keyword: ¤Û¤²
+ ¢ª °ìÍ÷¤¬½Ð¤ë. Áàºî¤ÏƱÍÍ.
+
+* ¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤ò³«¤, [ºÇ¶á] ¤Ç¥ê¥¿¡¼¥ó¥¡¼
+ ¢ª ºÇ¶á½ñ¤¤¤¿¥á¥â¤ÎÏ¢·ëɽ¼¨. ¡Ö@¡×¤Ç°ìÍ÷ɽ¼¨¤ÈÏ¢·ëɽ¼¨¤ò¥È¥°¥ë.
+
+* ¤µ¤é¤Ë¥½¡¼¥È¡¦¹Ê¤ê¹þ¤ß¤â¤Ç¤¤ë¤ó¤À¤±¤É, ά.
+
+== ¥ê¥ó¥¯¤òÄ¥¤ë
+
+* ¡Ö>>> ¤Û¤²¡×¤È½ñ¤¤¤Æ, ¤½¤Î¾å¤Ç¥ê¥¿¡¼¥ó¥¡¼
+ ¢ª ¡Ö¤Û¤²¡×¤ò´Þ¤à¥á¥â¤Î°ìÍ÷
+
+* ¡Ö>>> /etc/services¡×¤È½ñ¤¤¤Æ, ¤½¤Î¾å¤Ç¥ê¥¿¡¼¥ó¥¡¼¡ß2
+ ¢ª /etc/services ¤ò³«¤¯
+ * ¥ê¥¿¡¼¥ó¥¡¼ 1 ²óÌܤǡÖ/etc/services¡×¤ÎÁ´Ê¸¸¡º÷
+ * ¥ê¥¿¡¼¥ó¥¡¼ 2 ²óÌܤǤ½¤ÎÀèƬ¤ò³«¤¯
+ * ÀèƬ¤Ïɬ¤º /etc/services ¼«¿È¤Ê¤Î¤Ç¿´ÇÛ̵ÍÑ
+
+* ¡Ö<<< ¤Û¤²¡×¤È½ñ¤¯¤È, Á´¥á¥âÃæ¤Î¡Ö¤Û¤²¡×¤Ë²¼Àþ¤¬¤Ä¤¯
+ * ¤Ä¤«¤Ê¤¤¤È¤¤Ï, ¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤ò³«¤, [¹¹¿·] ¤Ç¥ê¥¿¡¼¥ó¥¡¼
+* ¡Ö¤Û¤²¡×¤Î¾å¤Ç¥ê¥¿¡¼¥ó¥¡¼
+ ¢ª ¡Ö¤Û¤²¡×¤ò´Þ¤à¥á¥â¤Î°ìÍ÷
+ * ¡Ö<<< ¤Û¤²¡×¤Ïɬ¤ºÀèƬ
+
+== action-lock ¤ÇÍ·¤Ö
+
+* ¥á¥âÃæ¤Ë { } ¤È½ñ¤¯¤È¡Ö¥È¥°¥ë¥¹¥¤¥Ã¥Á¡×
+ * ¤½¤Î¾å¤Ç¥ê¥¿¡¼¥ó᤯¤È, ᤯¤¿¤ó¤Ó¤Ëµ¹æ¤¬ÊѲ½
+ { } ¢ª {*} ¢ª {-} ¢ª { } ¢ª ¡Ä
+
+* ¥á¥âÃæ¤Ë {_} ¤È½ñ¤¯¤È¡Ö̤½èÍý¡×
+ * ¤½¤Î¾å¤Ç¥ê¥¿¡¼¥ó᤯¤È, Æü»þ¤òÁÞÆþ
+ {_} ¢ª [2002-09-13 02:31]
+
+== ÆüÉÕ¤òÆþ¤ì¤ë
+
+* ¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤ò³«¤, [Æü¢] ¤Ç¥ê¥¿¡¼¥ó¥¡¼
+ * º£Æü¤ÎÆüÉÕ [2003-10-04] ¤¬ÁÞÆþ¤µ¤ì, ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤¬ÆþÎÏÂÔ¤Á¤Ë
+ Command? [RET (ok), +num (shift), yymmdd (set), ~yymmdd(repeat), .(today)]
+ * ¤½¤Î¤Þ¤Þ¥ê¥¿¡¼¥ó¥¡¼ ¢ª ³ÎÄê
+
+* ¡ÖC-c , ,¡×¤Ç¥á¥Ë¥å¡¼¤ò³«¤, [Æü¢] ¤Ç¥ê¥¿¡¼¥ó¥¡¼Ã¡¤¤¤Æ,
+ ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ç 7 ¤ÈÆþÎÏ ¢ª [2003-10-07] ¤¬ÁÞÆþ¤µ¤ì¤ë
+
+* ƱÍͤË, [Æü¢] ¤«¤é¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ç¡Ä (¢¨)
+ * 25 ¢ª [2003-10-25]
+ * 401 ¢ª [2003-04-01]
+ * 1224 ¢ª [2003-12-24]
+ * 10203 ¢ª [2001-02-03]
+ * +3 ¢ª [2003-10-07] (3 Æü¸å)
+ * -14 ¢ª [2003-09-20] (14 ÆüÁ°)
+
+* ÆüÉդˤϲ¼Àþ¤¬°ú¤«¤ì¤ë. ¤½¤Î¾å¤Ç¥ê¥¿¡¼¥ó¥¡¼
+ * ¤Þ¤¿¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤¬ÆþÎÏÂÔ¤Á¤Ë
+ Command? [RET (goto), +num (shift), yymmdd (set), ~yymmdd(repeat), .(today)]
+ * ¤½¤Î¤Þ¤Þ¥ê¥¿¡¼¥ó¥¡¼ ¢ª ¡Ö2003-10-04¡×¤òÁ´¥á¥â¤«¤é¸¡º÷
+
+* ƱÍͤË, ÆüÉÕ¾å¤Ç¥ê¥¿¡¼¥ó¥¡¼Ã¡¤¤¤Æ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ç¡Ä
+ * (¢¨)¤Î¤è¤¦¤ËÆþÎÏ ¢ª ÆüÉÕ¤òÊѹ¹
+ * . ¢ª º£Æü¤ÎÆüÉÕ¤ËÊѹ¹
+ * d ¢ª ¸½ºß¤ÎÆü»þ¤ËÊѹ¹
+
+* ¼¡¤Î¤è¤¦¤ËÆþÎϤ·¤Æ¤ª¤¤¤Æ, ÆüÉÕ¾å¤Ç¥ê¥¿¡¼¥ó¥¡¼
+ [2003-10-30] ¤Û¤²¤Û¤²
+ * ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ç¡Ö~20031102¡×¤ÈÆþÎÏ
+ * ¤Þ¤¿¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤¬ÆþÎÏÂÔ¤Á¤Ë
+ Every? [RET(all), num(days), w(week), m(month), y(year)]
+ * ¤½¤Î¤Þ¤Þ¥ê¥¿¡¼¥ó ¢ª ¤½¤Î¹Ô¤ÎÊ£À½¤ò [2003-11-02] ʬ¤Þ¤ÇÁÞÆþ
+ [2003-10-30] ¤Û¤²¤Û¤²
+ [2003-10-31] ¤Û¤²¤Û¤²
+ [2003-11-01] ¤Û¤²¤Û¤²
+ [2003-11-02] ¤Û¤²¤Û¤²
+
+* º£¤Î [2003-11-02] ¤Î¾å¤Ç¥ê¥¿¡¼¥ó¥¡¼Ã¡¤¤¤Æ, ¡Ö~1231¡×¤ÈÆþÎÏ
+ * ¡ÖEvery?¡×¤ËÂФ·¤Æ¡Ä
+ * 9 ¢ª 9Æü¤´¤È
+ [2003-11-02] ¤Û¤²¤Û¤²
+ [2003-11-11] ¤Û¤²¤Û¤²
+ [2003-11-20] ¤Û¤²¤Û¤²
+ ¡Ä
+ [2003-12-26] ¤Û¤²¤Û¤²
+ * w ¢ª Ëè½µ
+ [2003-11-02] ¤Û¤²¤Û¤²
+ [2003-11-09] ¤Û¤²¤Û¤²
+ [2003-11-16] ¤Û¤²¤Û¤²
+ ¡Ä
+ [2003-12-28] ¤Û¤²¤Û¤²
+ * ƱÍͤË,
+ * m ¢ª Ëè·î
+ * y ¢ª Ëèǯ
+
+== ¥¹¥±¥¸¥å¡¼¥ë¡¦todo list ¤ò»È¤¦
+
+* ¤Þ¤À
+* ÉâÄÀÊý¼°
+ * ³Ð½ñ: ½ù¡¹¤ËÄÀ¤à
+ * todo: ½ù¡¹¤ËÉ⤫¤Ö
+ * ¡ºÀÚ: »ØÄêÆü¤¬¶á¤Å¤¯¤ÈÉ⤫¤Ö
+ * ÊÝα: ¼þ´üŪ¤ËÉâ¤ÄÀ¤ß
+
+=end
--- /dev/null
+<html> <head>
+<title>howm: Hitori Otegaru Wiki Modoki</title>
+</head>
+
+<body>
+
+<a href="index.html">English</a>
+<hr>
+
+<h1><a href="http://howm.sourceforge.jp/index-j.html">howm: °ì¿Í¤ª¼ê·Ú Wiki ¤â¤É¤</a></h1>
+
+<p>
+Emacs ¤ÇÃÇÊÒŪ¤Ê¥á¥â¤ò¤É¤ó¤É¤ó¤È¤ë¤¿¤á¤Î´Ä¶¤Ç¤¹.
+ʬÎൡǽ¤Ï¤¢¤¨¤Æ¤Ä¤±¤Þ¤»¤ó.
+¤«¤ï¤ê¤Ë, Á´Ê¸¸¡º÷¤È¥á¥â´Ö¥ê¥ó¥¯¤¬¼ê·Ú¤Ë¤Ç¤¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿.
+¼«Í³½ñ¼°¤Ê¤Î¤Ç²þ½¡¤âÉÔÍ× :-)
+</p>
+
+<ul>
+ <li> ¥À¥¦¥ó¥í¡¼¥É:
+ <a href="http://howm.sourceforge.jp/a/howm-1.4.3.tar.gz">1.4.3</a>
+ (<a href="README-j.html#label-18">¹¹¿·µÏ¿</a>)
+ [2015-12-31]
+ <li> »È¤¤Êý:
+ <a href="http://howm.sourceforge.jp/uu/">UNIX USER »ï¤Îµ»ö</a>
+ /
+ <a href="TUTORIAL.ja.rd">¥Á¥å¡¼¥È¥ê¥¢¥ë</a>
+ /
+ <a href="README-j.html">¾ÜºÙ</a>
+ /
+ ¢ª ¤¤¤í¤¤¤í(<a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi">howm wiki</a>)
+ <ul>
+ <li> ¢ª
+ <a href="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=howm">Meadow memo ¤Ç¤Î¾Ò²ð</a>
+ </ul>
+ <li> (
+ <a href="README-j.html#label-15">¥Ð¥°¤Î»ØŦ¤ò¤¯¤À¤µ¤ëÊý¤Ø</a>
+ /
+ <a href="CL-HOWM.ja.rd">ChangeLog Memo ¤È howm</a>
+ )
+ <hr>
+<!--
+ <li> ¥ê¥ê¡¼¥¹Í½ÄêÈÇ
+ <a href="http://howm.sourceforge.jp/a/howm-1.4.3rc1.tar.gz">1.4.3rc1</a>
+ (<a href="README-test-j.html#label-18">¹¹¿·µÏ¿</a>)
+ : git Àèü emacs ¤ËÂбþ [2015-12-27]
+-->
+ <li> <a href="http://howm.sourceforge.jp/a/howm-test.tar.gz">¥Æ¥¹¥ÈÈÇ</a>
+ (<a href="README-test-j.html#label-18">¹¹¿·µÏ¿</a>)
+ : ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë»þ¤Î·Ù¹ð¤ò²óÈò [2016-01-01]
+ <li> µìÈÇ:
+ <a href="http://howm.sourceforge.jp/a/howm-1.3.9.2.tar.gz">1.3.9.2</a>
+ /
+ <a href="http://howm.sourceforge.jp/a/howm-1.3.2.tar.gz">1.3.2</a>
+ /
+ <a href="http://howm.sourceforge.jp/a/howm-1.2.4.tar.gz">1.2.4</a>
+ /
+ <a href="http://howm.sourceforge.jp/a/howm-1.2.1.tar.gz">1.2.1</a>
+ /
+ <a href="http://howm.sourceforge.jp/a/howm-1.1.2.1.tar.gz">1.1.2.1</a>
+ /
+ <a href="http://howm.sourceforge.jp/a/howm-1.1.1.3.tar.gz">1.1.1.3</a>
+ /
+ <a href="http://howm.sourceforge.jp/a/howm-1.1.0.4.tar.gz">1.1.0.4</a>
+ /
+ <a href="http://howm.sourceforge.jp/a/howm-1.0.4.2.tar.gz">1.0.4.2</a>
+ <li>°Ü¿¢
+ <ul>
+ <li> vim:
+ <a href="http://sites.google.com/site/fudist/Home/qfixhowm">¢ª QFixHowm</a>
+ (fuenor ¤µ¤ó)
+ ¡¿
+ <a
+ href="http://web.archive.org/web/20100826042656/http://sworddancer.funkyboy.jp/howm_vim/">howm-mode.vim</a>
+ (¼·Å礵¤ó)
+ <li> xyzzy:
+ <a href="http://homepage3.nifty.com/~ko-ji/">¢ª howm-wrap</a>
+ (kimura ¤µ¤ó)
+ ¡¿
+ <a href="http://www.geocities.co.jp/Milano-Cat/2067/howm-init.html">howm-helper</a>
+ (deecay ¤µ¤ó)
+ <li> ½¨´Ý:
+ <a href="http://mrm.seesaa.net/category/789739.html">¢ª howm.mac</a>
+ (Mr.M ¤µ¤ó)
+ <li> Android:
+ <a href="http://homepage1.nifty.com/ray-mizuki/software/howmm_jp.html">¢ª howmm</a>
+ (³¤·îÎèÆ󤵤ó)
+ </ul>
+</ul>
+</p>
+
+<hr>
+
+<h2>¤³¤ó¤ÊÊ·°Ïµ¤</h2>
+
+<a href="screen-shot.png"><img alt="screen shot" src="s-screen-shot.png">
+¥á¥â´Ö¥ê¥ó¥¯ (Wiki É÷)</a><br>
+<a href="search.png"><img alt="screen shot" src="s-search.png">
+Á´Ê¸¸¡º÷ (°ìÍ÷ɽ¼¨ + ÆâÍÆɽ¼¨)</a><br>
+<a href="cat.png"><img alt="screen shot" src="s-cat.png">
+Ï¢·ëɽ¼¨ (¸¡º÷¤µ¤ì¤¿¥á¥â¤ÎÆâÍƤò¤Ä¤Ê¤²¤Æ)</a><br>
+<!--
+<a href="source.png"><img alt="screen shot" src="s-source.png">
+¤ª¤Þ¤±: ¥½¡¼¥¹¥³¡¼¥É¤Ë¤â (ÄêµÁ¡¦»ÈÍѲսê°ìÍ÷¤Ø¤Î¥ê¥ó¥¯)
+¡Ä³«È¯Ãæ</a><br>
+-->
+<br>
+
+<h3>¼¡¤Î¤è¤¦¤Ë½ñ¤¯¤À¤±¤Ç¥ê¥ó¥¯</h3>
+<ul>
+ <li> goto ¥ê¥ó¥¯: ¥Õ¥¡¥¤¥ë̾ or ´Þ¤Þ¤ì¤ëʸ»úÎó
+ <pre>
+ >>> ~/BabyloniaWave.txt
+ >>> ¥Ï¥¤¥¦¥§¥¤ÏÇÀ±
+ </pre>
+ <li> come-from ¥ê¥ó¥¯
+ <ul>
+ <li> ¥Õ¥¡¥¤¥ë A ¤Ë
+ <pre>
+ <<< ·ë¾½À±ÃÄ
+ </pre>
+ ¤È½ñ¤¤¤Æ¤ª¤¯¤È¡Ä
+ <li> ¾¤Î¥Õ¥¡¥¤¥ëÃæ¤Î¡Ö·ë¾½À±ÃġפȤ¤¤¦Ê¸»úÎó¤Ï¤¹¤Ù¤Æ A ¤Ø¤Î¥ê¥ó¥¯¤Ë
+ </ul>
+ <li> Wiki É÷¥ê¥ó¥¯: goto ¤ÈƱ¤¸. ¤¿¤À¤·, Âбþ¤¹¤ë come-from ¤¬¤Ê¤±¤ì¤Ðºî¤ë
+ <pre>
+ [[·ë¾½À±ÃÄ]]
+ </pre>
+</ul>
+<img src="go.png" alt="goto link">
+<img src="come.png" alt="come-from link">
+
+<h3>Á´Ê¸¸¡º÷¤ò¥Õ¥ë³èÍÑ</h3>
+<ul>
+ <li> ¾å¤Îʸ»úÎó¥ê¥ó¥¯¤â, ¼Â¤ÏÁ´Ê¸¸¡º÷¤Î¥·¥ç¡¼¥È¥«¥Ã¥È
+ <li> ¥Ò¥Ã¥È¤·¤¿¥Õ¥¡¥¤¥ë¤òÁ´Éô¤Ä¤Ê¤²¤Æɽ¼¨¤¹¤ëµ¡Ç½
+ (¢ª ÃÇÊÒŪ¥á¥â¤ò¤Ð¤ó¤Ð¤ó¤È¤Ã¤Æ OK)
+</ul>
+
+<h3>²þ½¡ÉÔÍ×. ´·¤ì¤¿¥¹¥¿¥¤¥ë¤ËÁȤ߹ç¤ï¤»¤Æ.</h3>
+<ul>
+ <li> ¤Ù¤¿¥Æ¥¥¹¥È¥Õ¥¡¥¤¥ë¼«Í³½ñ¼°
+ <li> ¥Þ¥¤¥Ê¡¼¥â¡¼¥É¤Ç¼ÂÁõ ¢ª ¾¤Î¥â¡¼¥É¤ÈÊ»ÍѲÄ
+ <li> ¥ê¥ó¥¯½ñ¼°¤âÊѹ¹²Ä
+<!-- <li> Îã: <a href="CL-HOWM.ja.rd">ChangeLog Memo ¾å¤Ç howm ¤ò»È¤¦</a> -->
+</ul>
+
+<h3>HTML ¤Ø¤ÎÊÑ´¹¤¬²Äǽ</h3>
+<ul>
+ <li> ¾Íè¤ä¤á¤Æ¤â, ¥á¥â¤Ï¤à¤À¤Ë¤Ê¤ê¤Þ¤»¤ó
+</ul>
+
+<hr>
+
+<h2>ͽÄêɽ¡¦todo</h2>
+
+<a href="menu.png"><img alt="screen shot" src="s-menu.png">
+¡Ö½ÜÅÙ¡×½ç (¡â½ÅÍ×½ç, ÆüÉÕ½ç)</a>
+
+<h3>¥«¥ì¥ó¥À¡¼¤Ø¤Îžµ¤Ê¤ó¤ÆÉÔÊØ</h3>
+<ul>
+ <li> ¼¡¤Î·Á¼°¤Ç¥á¥âÃæ¤Ë½ñ¤±¤Ð, ¼«Æ°Ãê½Ð
+<pre>
+ [2002-10-22]@ ¤Û¤²¤Û¤²
+</pre>
+ <li> °ìÍ÷¤«¤é¥á¥â¤Ø°ìȯ¥¸¥ã¥ó¥×
+ <li> ¥«¥ì¥ó¥À¡¼¥½¥Õ¥È¤Ø¤Î export ¤â
+</ul>
+<img src="todo.png" alt="todo list">
+<h3>¸«¤è¤¦¤È¤·¤Ê¤¤¤È¸«¤¨¤Ê¤¤¤ó¤¸¤ã¸«¤Ê¤¤</h3>
+<ul>
+ <li> ¥á¥Ë¥å¡¼¤ËͽÄêɽ¡¦todo ¤òɽ¼¨ ¢ª ¤³¤È¤¢¤ë¤´¤È¤ËÌܤË
+ <li> ¡ÖʬÎà¡×¤Ï¤·¤Ê¤¤
+</ul>
+<h3>todo ¥ê¥¹¥È¤Ê¤ó¤Æ¤¹¤°¤¢¤Õ¤ì¤ë</h3>
+·ï¿ô¤Õ¤¨¤ë ¢ª ¡Ö½ÅÍספ·¤«¸«¤Ê¤¤ ¢ª ¤Á¤ç¤Ã¤È¤·¤¿¤Î¤â¡Ö½ÅÍספÇÅÐÏ¿
+¢ª ¥¤¥ó¥Õ¥ì ¢ª ÇËþ
+<ul>
+ <li> ¡Ö½ÅÍ×Å١פÏÇÑ»ß
+ <li> ¤«¤ï¤ê¤Ë¡ÖÉâÄÀÊý¼°¡×¤Çɽ¼¨½ç¤ò¹©É×
+ <ul>
+ <li> ³Ð½ñ: ½ù¡¹¤ËÄÀ¤à (¤É¤¦¤»Á´Éô¤Ï¤Ç¤¤Þ¤»¤ó :p)
+ <li> todo: ½ù¡¹¤ËÉ⤫¤Ö
+ <li> ¡ºÀÚ: »ØÄêÆü¤¬¶á¤Å¤¯¤ÈÉ⤫¤Ö
+ </ul>
+</ul>
+<img src="updown.png" alt="magic sorting">
+
+<hr>
+
+<h2><a name="hint">¤³¤ó¤Ê¤Õ¤¦¤Ë»È¤¨¤Þ¤¹</a></h2>
+
+<h3>Æüµ¤Îµ¤Ê¬¤Ç</h3>
+<ul>
+ <li> ¤¤¤Ä¤Ç¤â C-c , c ¤Ç¿·µ¬¥á¥â
+ <li> ½ñ¤¤¤¿¥á¥â¤òÆüÉÕ½ç°ìÍ÷¤Çį¤á¤ë
+</ul>
+
+<h3>ChangeLog ¥á¥â¤Îµ¤Ê¬¤Ç</h3>
+<ul>
+ <li> C-c , c ¢ª ¥á¥â¤ò³«¤, Æü»þ¤ä¸«¤Æ¤¿¥Õ¥¡¥¤¥ë̾¤ò¼«Æ°ÁÞÆþ
+ <li> ¥á¥â¥Õ¥¡¥¤¥ë¤Î̾Á°¤ä½ñ¤¯¾ì½ê¤Ç̤¦¤³¤È¤Ê¤·.
+ Ï¢·ëɽ¼¨¤Ç¼Â¼ÁŪ¤Ë¡Ö¥Ý¥±¥Ã¥È°ì¤Ä»þ´Ö½çÇÛÃÖ¡×.
+ <li> clgrep ÁêÅö¤Î¡Ö¸¡º÷ ¢ª ¥Ò¥Ã¥È¤·¤¿¥á¥â¤òÆüÉս祽¡¼¥È ¢ª Ï¢·ëɽ¼¨¡×
+</ul>
+
+<h3>¥ê¥ó¥¯¤Ä¤¥Æ¥¥¹¥È¤Îµ¤Ê¬¤Ç</h3>
+<ul>
+ <li> ¡Ö>>> ~/BabyloniaWave.txt¡×¤Î¾å¤Ç¥ê¥¿¡¼¥ó¡ß2
+ ¢ª BabyloniaWave.txt ¤ò³«¤¯
+ <li> ¡Ö>>> ~/BabyloniaWave.png¡×¤Î¾å¤Ç¥ê¥¿¡¼¥ó¡ß2
+ ¢ª ²èÁü viewer ¤òµ¯Æ°
+ <li> ¡Ö>>> ¥Ï¥¤¥¦¥§¥¤ÏÇÀ±¡×¤Î¾å¤Ç¥ê¥¿¡¼¥ó
+ ¢ª ¡Ö¥Ï¥¤¥¦¥§¥¤ÏÇÀ±¡×¤ò¸¡º÷
+ <li> ÆäË, ¡Ö¸¦µæ¥á¥â¤Ë¤Ïɬ¤º {S} ¤È½ñ¤¯¡×¤Î¤è¤¦¤Êµ¹æ¤ò·è¤á¤Æ¤ª¤±¤Ð,
+ ¡Ö¸¦µæ¥á¥â°ìÍ÷ >>> {S}¡×¤Î¤è¤¦¤Ê¥·¥ç¡¼¥È¥«¥Ã¥È¤¬¤Ç¤¤ë
+</ul>
+
+<h3>Wiki ¤Îµ¤Ê¬¤Ç</h3>
+<ul>
+ <li> ¡Ö[[·ë¾½À±ÃÄ]]¡×¤Î¾å¤Ç¥ê¥¿¡¼¥ó¤¿¤¿¤¯¤È, WikiName ¡Ö·ë¾½À±ÃġפΥڡ¼¥¸¤òºîÀ®
+ <li> ¾¤Î¥Ú¡¼¥¸¤Î¡Ö·ë¾½À±Ãġפˤϲ¼Àþ¤¬¤Ä¤¯.
+ ¥ê¥¿¡¼¥ó 2 ²ó¤¿¤¿¤¯¤È¾å¤Î¥Ú¡¼¥¸¤Ø¥¸¥ã¥ó¥×.
+</ul>
+
+<!--
+<h3>³¬ÁØʬÎà(¥Ä¥ê¡¼¥á¥â)¤Îµ¤Ê¬¤Ç</h3>
+<ul>
+ <li> ¡ÖWiki ¤Îµ¤Ê¬¤Ç¡×¤ò³¬ÁØŪ¤Ë¸ÂÄꤷ¤Æ»È¤¦¤À¤±?
+</ul>
+-->
+
+<h3>¤³¤Å¤«¤¤Ä¢¤Îµ¤Ê¬¤Ç</h3>
+<ul>
+ <li> ¤³¤Å¤«¤¤µ¹æ(Îã: $$$)¤ò·è¤á¤Æ, ¤É¤³¤«¤Ë¡Ö<<< $$$¡×¤È½ñ¤¤¤Æ¤ª¤¯
+ <li> ¤³¤Å¤«¤¤¤ò»È¤Ã¤¿¤é, ÆüµÃæ¤Ë¡Ö$$$ 651±ß ¥Ð¥Ó¥í¥Ë¥¢¥¦¥§¡¼¥Ö¡×¤Î¤è¤¦¤Ë½ñ¤¯
+ (Æüµ¤ËËä¤á¹þ¤à¤Î¤¬¥ß¥½)
+ <li> ¡Ö$$$¡×¤Ë¤Ï²¼Àþ¤¬¤Ä¤¯. ¥ê¥¿¡¼¥ó 1 ²ó¤¿¤¿¤¯¤È¤³¤Å¤«¤¤°ìÍ÷¤¬½Ð¤ë.
+ <li> ÆüÉÕÈϰϤäÀµµ¬É½¸½¤Ç¹Ê¤ê¤³¤ß
+ <li> °ìÍ÷¾å¤Ç¥ê¥¿¡¼¥ó¤¿¤¿¤¯¤È³ºÅöÆüµ¤Ø¥¸¥ã¥ó¥×
+</ul>
+
+<h3>¥Æ¡¼¥ÞÊ̷Ǽ¨ÈĤε¤Ê¬¤Ç</h3>
+<ul>
+ <li> ¥Æ¡¼¥Þ¤´¤È¤Ë, ¡Ö<<< ¥Æ¡¼¥Þ̾¡×¤È½ñ¤¤¤¿¥á¥â¤òºî¤Ã¤Æ¤ª¤¯
+ <li> ¥Æ¡¼¥Þ¡Ö·ë¾½À±ÃġפηǼ¨ÈĤËÅê¹Æ¤¹¤ë¤Ë¤Ï,
+ ¥á¥â¤ò½ñ¤, ¤É¤³¤«¤Ë¡Ö·ë¾½À±ÃġפȽñ¤¤¤Æ¤ª¤¯
+ <li> ¡Ö·ë¾½À±Ãġפˤϲ¼Àþ¤¬¤Ä¤¯. ¥ê¥¿¡¼¥ó 1 ²ó¤¿¤¿¤¯¤È°ìÍ÷¤¬½Ð¤ë¤Î¤Ç,
+ @ ¤ÇÏ¢·ëɽ¼¨ ¢ª ¿·¤·¤¤½ç¤ÇÅê¹Æ¤¬Ê¤Ö
+</ul>
+
+<h3>¡Ö»ñÎÁ(¥¹¥È¥Ã¥¯·¿¥á¥â) + ¥³¥á¥ó¥È(¥Õ¥í¡¼·¿¥á¥â)¡×¤Îµ¤Ê¬¤Ç</h3>
+<ul>
+ <li> »ñÎÁ¤ò½ñ¤, ¤É¤³¤«¤Ë¡Ö<<< »ñÎÁ̾¡×¤È½ñ¤¤¤Æ¤ª¤¯
+ <li> »ñÎÁ¡Ö·ë¾½À±Ãġפ˥³¥á¥ó¥È¤¹¤ë¤Ë¤Ï,
+ ¥á¥â¤ò½ñ¤, ¤É¤³¤«¤Ë¡Ö·ë¾½À±ÃġפȽñ¤¤¤Æ¤ª¤¯
+ <li> °ìÍ÷ ¢ª Ï¢·ëɽ¼¨¤Ç, ÀèƬ¤Ë»ñÎÁ, ¸å¤Ë¿·¤·¤¤½ç¤Ç¥³¥á¥ó¥È¤¬Ê¤Ö
+</ul>
+
+<!--
+<ul>
+ <li> Emacs ¾å¤Ç, Wiki É÷¤Î¥¡¼¥ï¡¼¥É¥ê¥ó¥¯¤¬¤Ç¤¤Þ¤¹
+ <ul>
+ <li> ¾¤Î¥Õ¥¡¥¤¥ë¤ÎÂê̾¤Ë°ìÃפ·¤¿¸ÀÍդˤϲ¼Àþ
+ <li> ²¼Àþ¤Î¾å¤Ç [return] ¢ª Âбþ¥Õ¥¡¥¤¥ë¤Ë¥¸¥ã¥ó¥×
+ </ul>
+ <li> Ä㵡ǽ¤¬Çä¤ê¤Ç¤¹
+ <dl>
+ <dt> ¥Õ¥©¡¼¥Þ¥Ã¥Èµ¡Ç½¤Ê¤·
+ <dd> rd-mode ¤Ê¤ê¤Ê¤ó¤Ê¤ê, ¤ª¹¥¤ß¤Î´Ä¶¤ÈÁȤ߹ç¤ï¤»¤Æ<br>
+ (minor-mode ¤È¤·¤Æ¼ÂÁõ)
+ <dt> WikiName ¤Ê¤·
+ <dd> ¡Ö¥ê¥¹¥È¡×¤È¤¤¤¦Âê̾¤¬¤¢¤ì¤Ð, ¡Ö¥¢¥ê¥¹¥È¥Æ¥ì¥¹¡×¤Ç¤â¥ê¥ó¥¯¤Ë<br>
+ (ͽÄê³°¥ê¥ó¥¯¤â¤Þ¤¿³Ú¤·)
+ <dt> ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ê¤·
+ <dd> ¥Ç¥£¥ì¥¯¥È¥ê¤òËè²ó¥¹¥¥ã¥ó<br>
+ (µ¤·Ú¤ËƳÆþ, µ¤·Ú¤ËÇÑ»ß)
+ </dl>
+</ul>
+-->
+
+<hr>
+$Id: index-j.html,v 1.279 2012-12-29 08:57:18 hira Exp $<br>
+email ¥¢¥É¥ì¥¹¤Ï¥½¡¼¥¹¥Õ¥¡¥¤¥ëËÁƬ¤ò»²¾È¤¯¤À¤µ¤¤
+<!-- ºî¼Ô¢¡IsNd58WHgU -->
+<a href="http://sourceforge.jp/"><img src="http://sourceforge.jp/sflogo.php?group_id=913" width="96" height="31" border="0" alt="SourceForge.jp"></a>
+</body> </html>
--- /dev/null
+<html> <head>
+<title>howm: note-taking tool on Emacs</title>
+</head>
+
+<body>
+
+<a href="index-j.html">Japanese</a>
+<hr>
+
+<h1><a href="http://howm.sourceforge.jp/">howm: Write fragmentarily and read collectively.</a></h1>
+
+<ul>
+<li> Download
+ <a href="http://howm.sourceforge.jp/a/howm-1.4.3.tar.gz">howm-1.4.3.tar.gz</a>
+<li> <a href="README.html">Tutorial</a>
+<li> <a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?e.FrontPage">Wiki, BBS, mailing list</a>
+</ul>
+
+<hr>
+
+Howm is a note-taking tool on Emacs.
+It is similar to emacs-wiki.el;
+you can enjoy hyperlinks and full-text search easily.
+It is not similar to emacs-wiki.el;
+it can be combined with any format.
+
+<p>
+<a href="screen-shot.png"><img alt="screen shot" src="s-screen-shot.png"></a>
+<a href="search.png"><img alt="screen shot" src="s-search.png"></a>
+<a href="cat.png"><img alt="screen shot" src="s-cat.png"></a>
+<a href="menu.png"><img alt="screen shot" src="s-menu.png"></a>
+<br>
+(<a href="http://howm.sourceforge.jp/a/rich-title/">Title bar? See rich-title.</a>)
+</p>
+
+<hr>
+
+<h2>Hyperlinks</h2>
+
+<ul>
+<li>goto link: file name or keyword
+<pre>
+ >>> ~/BabyloniaWave.txt
+ >>> highway planet
+</pre>
+<li> come-from link:
+ If you write
+<pre>
+ <<< crystal star cluster
+</pre>
+ in file A,
+ all strings 'crystal star cluster' in other files are automatically linked to A.
+</ul>
+<img src="go.png" alt="goto link">
+<img src="come.png" alt="come-from link">
+
+<h2>Full-text search</h2>
+
+<ul>
+<li>Everything is based on full-text search (grep);
+ the above 'links' are shortcuts to grep.
+<li>Write fragmentarily and read collectively;
+ you can concatenate all matched notes into a single buffer.
+</ul>
+
+<h2>No conversion</h2>
+You can keep your favorite style. :-)
+<ul>
+<li>text file and free format
+<li>implemented as a minor mode; can be combined with other modes.
+</ul>
+
+<h2>Todo list with magic sorting</h2>
+<ul>
+<li>Reminder: sinks slowly.
+<li>Todo: floats slowly.
+<li>Deadline: floats rapidly when the date is approaching.
+</ul>
+
+<hr>
+
+<h2>Install</h2>
+
+<ul>
+ <li> './configure', 'make', and 'make install'.
+ Files are installed to /usr/share/emacs/site-lisp/howm/
+ and /usr/local/share/howm/.
+ <li> Write below in your .emacs.
+ <pre>
+ (require 'howm)
+ </pre>
+ <li> If you see 'cannot open load file' error, put this before
+ the above description.
+ <pre>
+ (add-to-list 'load-path "/usr/share/emacs/site-lisp/howm/")
+ </pre>
+ <li> (Optional)
+ When howm runs too slow, try
+ 'M-x customize-group RET howm-efficiency RET'.
+ In particular, the below settings will be necessary for heavy users.
+ <pre>
+ (setq howm-view-use-grep t) ;; use external grep
+ (setq howm-menu-refresh-after-save nil)
+ (setq howm-menu-expiry-hours 6) ;; cache menu N hours
+ (setq howm-menu-file "0000-00-00-000000.txt") ;; don't *search*
+ </pre>
+</ul>
+
+<h2>Update from old version</h2>
+
+<h3>1.4.2 to 1.4.3</h3>
+
+<p>
+fix for emacs-25, etc.
+</p>
+
+<h3>1.4.1 to 1.4.2</h3>
+
+<p>
+fix for emacs-24.3, etc.
+</p>
+
+<h3>1.4.0 to 1.4.1</h3>
+
+<p>
+small bug fix, etc.
+</p>
+
+<h3>1.3.9.2 to 1.4.0</h3>
+
+<p>
+INCOMPATIBLE update.
+If you need compatibility with 1.3.*,
+put (setq howm-compatible-to-ver1dot3 t) before (require 'howm) in your .emacs.
+See M-x customize-group RET howm-compatibility RET for details.
+</p>
+
+<p>
+Though howm-1.4.0 has a new menu file,
+your old menu file is not updated automatically.
+Copy en/0000-00-00-000000.txt into howm/ directory if you like.
+Alternatively, you can cut and paste some parts of it to your
+howm/0000-00-00-000000.txt by hand.
+</p>
+
+<h3>1.3.9.1 to 1.3.9.2</h3>
+
+<p>
+small bug fix.
+</p>
+
+<h3>1.3.9 to 1.3.9.1</h3>
+
+<p>
+bug fix for emacs-24.0.50.
+</p>
+
+<h3>1.3.8 to 1.3.9</h3>
+
+<p>
+small bug fix, etc.
+</p>
+
+<h3>1.3.7 to 1.3.8</h3>
+
+<p>
+highlight late deadlines.
+small bug fix, etc.
+</p>
+
+<h3>1.3.6 to 1.3.7</h3>
+
+<p>
+Maintenance release (internal cleaning).
+The variable howm-list-normalizer is obsolete now.
+Use howm-normalizer instead:
+<ul>
+ <li>(Case 0) What is howm-list-normalizer? I don't know it at all.
+ --- You need to do nothing. :-)
+ <li>(Case 1) I've set it in M-x customize-variable.
+ --- M-x customize-variable howm-list-normalizer RET and select Off.
+ Then M-x customize-variable howm-normalizer RET and select
+ the corresponding item again.
+ <li>(Case 2) I've written (setq howm-list-normalizer 'howm-view-sort-by-XXX)
+ in my .emacs.
+ --- Rewrite it to
+ (setq howm-normalizer 'howm-sort-items-by-XXX).
+ <li>(Case 3) I've written (setq howm-list-normalizer ...my_original_elisp...).
+ --- Modify it correspondingly with the below change.
+ <ul>
+ <li>Old (howm-list-normalizer):
+ Specify a function that sorts and REDISPLAYS CURRENT items.
+ <li>New (howm-normalizer):
+ Specify a function that RETURNS the sorted list of items
+ for the GIVEN items.
+ </ul>
+ Or, Ask me in
+ <a href="http://lists.sourceforge.jp/mailman/archives/howm-eng/">
+ howm-eng ML</a>.
+</ul>
+</p>
+
+<h3>1.3.5 to 1.3.6</h3>
+
+<p>
+Maintenance release.
+Font-lock problem was fixed for CVS-head emacs.
+</p>
+
+<h3>1.3.4 to 1.3.5</h3>
+
+<p>
+Maintenance release.
+Today's schedule didn't appear on menu on the last day of DST.
+(cf. <a href="http://howm.sourceforge.jp/a/howm-1.3.4_DST.patch">patch for 1.3.4</a>)
+</p>
+
+<h3>1.3.3 to 1.3.4</h3>
+
+<p>
+Maintenance release (security fix).
+All symbols are marked as risky-local-variable.
+</p>
+
+<h3>1.3.2 to 1.3.3</h3>
+
+<p>
+Maintenance release.
+Several bugs are fixed (for CVS-head emacs, etc).
+From this version, sleeping reminders can appear in todo list
+in menu buffer.
+If you don't like this behavior, please try
+M-x customize-variable howm-menu-todo-priority.
+</p>
+
+<h3>1.3.1 to 1.3.2</h3>
+
+<p>
+Maintenance release.
+A few bugs are fixed (mainly for xemacs).
+Default value of an option is changed so that
+[Today] function will show titles instead of matched lines themselves.
+If you don't like this change, try below steps.
+<ul>
+ <li> M-x customize-variable RET howm-list-title RET
+ <li> Remove check mark on howm-action-lock-date-search.
+ <li> [Save for Future Sessions]
+</ul>
+</p>
+
+<h3>1.3.0 to 1.3.1</h3>
+
+<p>
+Maintenance release.
+A few bugs (locale, xemacs) are fixed.
+</p>
+
+<h3>1.2.* to 1.3.0</h3>
+
+<!--
+If you have already used howm-1.2.*, you may want to add these codes
+into .emacs for backward compatibility.
+<pre>
+;; no title in summary buffer
+(setq howm-list-title nil)
+;; no search history
+(setq howm-history-limit 0)
+(setq howm-history-unique nil)
+;; not 'grep -E/-F' but 'egrep/fgrep'
+(setq howm-view-grep-command "egrep")
+(setq howm-view-fgrep-command "fgrep")
+(setq howm-view-grep-extended-option nil)
+(setq howm-view-grep-fixed-option nil)
+(setq howm-view-grep-file-stdin-option nil)
+;; misc.
+(setq howm-template-receive-buffer nil)
+(setq howm-view-summary-keep-cursor nil)
+</pre>
+-->
+
+<p>
+Though howm-1.3.0 has a new menu file,
+your old menu file is not updated automatically.
+Copy en/0000-00-00-000000.txt into howm/ directory if you like.
+Alternatively, you can cut and paste some parts of it to your
+howm/0000-00-00-000000.txt by hand.
+</p>
+
+<p>
+Among several new features in howm-1.3.0,
+the most useful one will be 'aliases'.
+See <a href="README.rd">README</a> for details.
+</p>
+
+<h2>Customization</h2>
+
+For customization, try 'M-x customize-group RET howm RET'.
+
+<hr>
+
+<h2>Contact</h2>
+
+My email address is written at the beginning of source files.
+
+<hr>
+$Id: index.html,v 1.47 2012-12-27 03:23:31 hira Exp $
+<a href="http://sourceforge.jp/"><img src="http://sourceforge.jp/sflogo.php?group_id=913" width="96" height="31" border="0" alt="SourceForge.jp"></a>
+</body> </html>
--- /dev/null
+#!/bin/sh
+# Copyright (C) 1995, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+scriptversion=2005-05-14.22
+
+# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1995.
+#
+# 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, 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
+# 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 this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+ '')
+ echo "$0: No files. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: elisp-comp [--help] [--version] FILES...
+
+This script byte-compiles all `.el' files listed as FILES using GNU
+Emacs, and put the resulting `.elc' files into the current directory,
+so disregarding the original directories used in `.el' arguments.
+
+This script manages in such a way that all Emacs LISP files to
+be compiled are made visible between themselves, in the event
+they require or load-library one another.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "elisp-comp $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test -z "$EMACS" || test "$EMACS" = "t"; then
+ # Value of "t" means we are running in a shell under Emacs.
+ # Just assume Emacs is called "emacs".
+ EMACS=emacs
+fi
+
+tempdir=elc.$$
+
+# Cleanup the temporary directory on exit.
+trap 'ret=$?; rm -rf "$tempdir" && exit $ret' 0
+trap '(exit $?); exit' 1 2 13 15
+
+mkdir $tempdir
+cp "$@" $tempdir
+
+(
+ cd $tempdir
+ echo "(setq load-path (cons nil load-path))" > script
+ $EMACS -batch -q -l script -f batch-byte-compile *.el || exit $?
+ mv *.elc ..
+) || exit $?
+
+(exit 0); exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- /dev/null
+= <<< %menu%
+ %"e"[Remember] %"c"[New] %"D"[Dup] Search(%"s"[String] %"g"[Regexp] %"o"[Occur])
+ %"a"[All] %"l"[Recent] %"A"[Around] %"y"[Schedule] %"t"[Todo] %"b"[Buffers] %"x"[Marks]
+ %"K"[<Title] [<Name] %"d"[Date>] %"i"[Key>] %"r"[Update] %"w"[Random Walk] [Killall]
+ %"."[Today] %":"[Yesterday] %"h"[History] %"R"[Update Menu] [Edit Menu] [Preference]
+-------------------------------------
+[Schedule, Todo] -- @schedule, !deadline (until %sdays days from now)
+!deadline, +todo, -reminder, ~defer (top %tnum entries)
+%reminder
+-------------------------------------
+Recent
+%recent
+-------------------------------------
+Random -- If you do not like this, [Edit Menu] to erase it.
+%random
+-------------------------------------
+
+Format of schedule and todo (Please replace {} with []):
+{2002-10-21}@1 schedule -- (shown in schedule part. @3 = "3 days schedule to 10-23")
+{2002-10-21}+7 todo -- float up slowly from the date in 7 days
+{2002-10-21}!7 deadline -- float up fast from 7 days before the date
+{2002-10-21}-1 reminder -- float at the date and sink slowly one unit per 1 day
+{2002-10-21}~30 defer -- float at the date and repeat sinking and floating with 30 days period
+{2002-10-21}. done -- sink forever
+(Numbers after marks are default values.)
+
+How to remember:
+* Schedule at(@) the date
+* Reminder sinks down(-).
+* Todo floats up(+).
+* Deadline needs attention!
+* Defer waves(~) up and down.
+* Done is the end(.).
+
+-------------------------------------
+
+You can edit this menu itself.
+>>> %Editing Menu%
+
+
+= <<< %Editing Menu%
+[Edit Menu] Hit RET on the left button to edit this menu.
+[Update Menu] Hit RET on the left button to update this menu.
+--------------------------------------------------------
+
+*** Format of the menu file ***
+(Please hit RET on [Edit Menu] and read the source file.)
+
+== Basic format
+
+As you see...
+
+* [xxx] is button.
+* %REMINDER (in small letters) is schedule and todo list.
+* %RECENT (in small letters) is list of recent entries.
+* %RANDOM (in small letters) is list of random entries.
+
+You can arrange their places as you like.
+Writing favorite files or goto links may be also convenient.
+(ex) file:///etc/services >>> wiki
+
+== Shortcut
+
+%"foo"[All]
+This is displayed as foo[All], and the key "f" executes [All].
+Exactly speaking, it executes the following sequence:
+(1) move to closing ", (2) move to next underline, and (3) hit it.
+
+%"bar%"
+If you put % at the tail like this, the key "b" means "move cursor here".
+
+== For lispers
+
+Display:
+%here%howm-congrats-count ;; embed value of variable howm-congrats-count
+%here%(howm-menu-search "search")
+;; embed result of (...), that is, search "search" and embed matched lines
+Functions must be registered for safety.
+(setq howm-menu-allow (append '(foo bar) howm-menu-allow)) ;; allow foo, bar
+
+Action:
+%eval%(message (buffer-name)) ;; evaluate S expr
+%call%find-file ;; call function interactively
+Both are evaluated in the previous buffer before raising menu.
+
+== Hiding
+
+'%' + '|' toggles invisibility
+like this: visible%|invisible%|appear%|disappear - until the end of line
+(Newline is removed when the end of line is invisible.)
+
+== Multiple menus
+
+Links to %xxx% open "<< < %xxx%" with menu-mode: >>> %menu%
+When you add new menu, [[%menu%]] may be more convenient because corresponding
+entry is generated automatically.
+
+%eval%(howm-menu-open "00000000-000000.txt") -- open file with menu-mode
--- /dev/null
+2011-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.txt: support new commands.
+
+2010-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.txt: use %reminder instead of %schedule and %todo.
+
+2005-12-09 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * Makefile.am: no need to install 0000-00-00-000000.howm.
+
+2005-05-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.howm: added [Preference], %recent, %random
+
+2005-05-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.howm: bind R = [Update Menu]
+
--- /dev/null
+EXTRA_DIST = 0000-00-00-000000.txt
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
--- /dev/null
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = en
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/mkinstalldirs ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CVS = @CVS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EMACS = @EMACS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+extdir = @extdir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+howmdir = @howmdir@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+packagedir = @packagedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = 0000-00-00-000000.txt
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu en/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu en/Makefile
+.PRECIOUS: Makefile
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am
+
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null
+2010-12-29 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * tag2plan: removed (not maintained)
+
+2008-02-12 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm2 (ls_R): fix.
+ string =~ string is obsolete.
+ thx > dareka
+ http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReport
+
+ * howmkara
+ (ls_R): ditto.
+ (Book::interpret): ditto.
+
+2005-10-05 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howmkara
+ (String::offsets): avoid warning.
+ (Book::search): escape $ in regexp.
+
+2005-09-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * hcal.rb (ical_item): don't use Date
+
+2005-07-18 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * hcal.rb
+ (ical): fix.
+ iCalendar PRODID was merely copied from output of vPim
+ without consideration.
+ (usage): update URL
+
+2005-05-20 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * howm2: support aliases of come-from keywords
+
+2005-05-15 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * Makefile.am (EXTRA_DIST):
+ howmkara, hsplit.rb, howm-rast-register.rb, howm-rast-search.rb
+ are added.
+
+
--- /dev/null
+EXTRA_DIST = \
+ hcal.rb \
+ howm2 \
+ howmkara \
+ hsplit.rb
+
+ext_DATA = $(EXTRA_DIST)
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
--- /dev/null
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = ext
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/mkinstalldirs ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(extdir)"
+DATA = $(ext_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CVS = @CVS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EMACS = @EMACS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+extdir = @extdir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+howmdir = @howmdir@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+packagedir = @packagedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ hcal.rb \
+ howm2 \
+ howmkara \
+ hsplit.rb
+
+ext_DATA = $(EXTRA_DIST)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu ext/Makefile
+.PRECIOUS: Makefile
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-extDATA: $(ext_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(ext_DATA)'; test -n "$(extdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(extdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(extdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(extdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(extdir)" || exit $$?; \
+ done
+
+uninstall-extDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(ext_DATA)'; test -n "$(extdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(extdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(extdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-extDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-extDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-extDATA install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am \
+ uninstall-extDATA
+
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null
+#!/usr/bin/ruby -sKe
+# -*- Ruby -*-
+
+# require 'jcode'
+require 'iconv'
+require 'date'
+
+def usage
+ name = File::basename $0
+ print <<EOU
+#{name}: ͽÄê¤ä todo ¤Î°ìÍ÷¤ò½ÐÎÏ
+(Îã)
+ #{name} *.memo ¢ª ¥«¥ì¥ó¥À¡¼(ͽÄꡦ¡ºÀÚ¡¦ºÑ¤ß¤Î°ìÍ÷)¤ò½ÐÎÏ
+ #{name} -l *.memo ¢ª ½ÜÅÙ½ç¤Î todo °ìÍ÷¤ò½ÐÎÏ
+ #{name} -i *.memo ¢ª iCalendar ·Á¼°¤Ç½ÐÎÏ (ºîÀ®Ãæ)
+ #{name} -h ¤Þ¤¿¤Ï #{name} -help ¢ª ¤³¤Î¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ
+(¹àÌܤνñ¼°)
+ http://howm.sourceforge.jp/ »²¾È
+EOU
+end
+
+############################################
+# const
+
+$schedule_types ||= '[@!.]'
+$type_alias = {'' => '-'}
+$date_sep = '-'
+
+def item_regexp(types)
+ x = $date_sep
+ if $format == 'old'
+ $todo_types ||= '[-+~!.]?'
+ %r|(@\[(\d\d\d\d)#{x}(\d\d)#{x}(\d\d)\](#{types})(\d*)\s+(.*))$|
+ else
+ $todo_types ||= '[-+~!.]'
+ %r|(\[(\d\d\d\d)#{x}(\d\d)#{x}(\d\d)\](#{types})(\d*)\s+(.*))$|
+ end
+end
+
+# calendar
+
+$comment_width ||= 12
+$comment_width = $comment_width.to_i
+
+$schedule_mark ||= '@'
+$deadline_mark ||= '!'
+$done_mark ||= '.'
+$type_display = {
+ '@' => $schedule_mark,
+ '!' => $deadline_mark,
+ '.' => $done_mark,
+ '?' => '¢¥'
+}
+$type_order = {'@' => 2, '!' => 1, '.' => 3, '?' => 4}
+$today_mark ||= ' <<<<##>>>>'
+$same_day_mark ||= ' #>>>>'
+
+# todo
+
+$priority_func = {
+# '' => lambda{|lt, lz| pr_normal lt, lz},
+ '-' => lambda{|lt, lz| pr_normal lt, lz},
+ '+' => lambda{|lt, lz| pr_todo lt, lz},
+ '~' => lambda{|lt, lz| pr_defer lt, lz},
+ '!' => lambda{|lt, lz| pr_deadline lt, lz},
+ '@' => lambda{|lt, lz| pr_schedule lt, lz},
+ '.' => lambda{|lt, lz| pr_done lt, lz},
+ '?' => lambda{|lt, lz| 0},
+}
+
+# defaults
+$lz_normal = 1
+$lz_todo = 7
+$lz_defer = 30
+$lz_deadline = 7
+
+# init
+$pr_todo = -7
+$pr_defer = -14
+$pr_defer_peak = 0
+$pr_deadline = -2
+
+$huge = 77777
+$huger = 88888
+$pr_normal_bottom = - $huge
+$pr_todo_bottom = - $huge
+$pr_defer_bottom = - $huge
+$pr_deadline_bottom = - $huge
+$pr_deadline_top = $huge
+$pr_done_bottom = - $huger
+
+# misc
+
+$now = Time::now.to_f
+$daysec = 60 * 60 * 24
+
+############################################
+# func
+
+def late(time)
+ ($now - time.to_f) / $daysec
+end
+
+# def late(y, m, d, now)
+# ($now - Time::local(y,m,d,0,0,0).to_f) / $daysec
+# end
+
+def relative_late(late, laziness, default)
+ laziness = default if laziness == 0
+ late / laziness
+end
+
+def pr_normal(lt, lz)
+ r = relative_late lt, lz, $lz_normal
+ r >= 0 ? - r : $pr_normal_bottom + r
+end
+
+def pr_todo(lt, lz)
+ r = relative_late lt, lz, $lz_todo
+ c = - $pr_todo
+ r >= 0 ? c * (r - 1) : $pr_todo_bottom + r
+end
+
+def pr_defer(lt, lz)
+ r = relative_late lt, lz, $lz_defer
+ c = $pr_defer_peak - $pr_defer
+ v = 2 * (((r % 1) - 0.5).abs)
+ r >= 0 ? $pr_defer_peak - c * v : $pr_defer_bottom + r
+end
+
+def pr_deadline(lt, lz)
+ r = relative_late lt, lz, $lz_deadline
+ c = - $pr_deadline
+ if r > 0
+ $pr_deadline_top + r
+ elsif r < -1
+ $pr_deadline_bottom + r
+ else
+ c * r
+ end
+end
+
+# dummy
+def pr_schedule(lt, lz)
+ 0
+end
+
+def pr_done(lt, lz)
+ $pr_done_bottom + lt
+end
+
+############################################
+# main
+
+if ($help || $h)
+ usage
+ exit 0
+end
+
+def item(types)
+ ARGF.grep(item_regexp(types)){|x|
+ h = Hash::new
+ h[:text] = $1
+ y, m, d = [$2, $3, $4].map{|s| s.to_i}
+# h[:y] = y = $2.to_i
+# h[:m] = m = $3.to_i
+# h[:d] = d = $4.to_i
+ h[:time] = time = Time::mktime(y, m, d)
+ h[:type] = type = $type_alias[$5] || $5
+ h[:laziness] = laziness = $6.to_i
+ h[:comment] = $7
+ h[:priority] = - $priority_func[type].call(late(time), laziness)
+ h[:file] = ARGF.filename
+ h[:line] = ARGF.file.lineno
+ h
+ }
+end
+
+# def select_type(item, types)
+# item.select{|h| types.member? h[:type]}
+# end
+
+### todo
+
+def todo()
+ item($todo_types).sort{
+ |a, b| a[:priority] <=> b[:priority]
+ }.each{|a|
+ puts "#{a[:file]}:#{a[:line]}:#{a[:text]}"
+ }
+end
+
+### ical
+
+$conv = Iconv.new("UTF-8", "EUC-JP")
+
+def ical()
+ puts <<_EOS_
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//howm.sourceforge.jp//hcal.rb $Revision: 1.12 $//EN
+CALSCALE:Gregorian
+#{item($schedule_types).map{|h| ical_item h}.select{|z| z}.join.chomp}
+END:VCALENDAR
+_EOS_
+end
+
+def ical_item(h)
+# if !Date.valid_date?(h[:y], h[:m], 1)
+# $stderr.puts 'Invalid date:#{h[:file]}:#{h[:line]}:#{h[:text]}'
+# return nil
+# end
+# # convert 2005-09-31 to 2005-10-01
+# d = Date.new(h[:y], h[:m], 1) + (h[:d] - 1)
+# d = Date.new h[:y], h[:m], h[:d]
+# s, e = [d, d+1].map{|z| z.strftime '%Y%m%d'}
+ s, e = [h[:time], h[:time] + 86400].map{|z| z.strftime '%Y%m%d'}
+ return <<_EOS_
+BEGIN:VEVENT
+DTSTART:#{s}
+DTEND:#{e}
+SUMMARY:#{$conv.iconv(h[:type] + h[:comment])}
+END:VEVENT
+_EOS_
+end
+
+### schedule
+
+def schedule()
+ cal = Hash::new
+ item($schedule_types).each{|h|
+ t = h[:time]
+ cal[t] ||= Array::new
+ cal[t].push h
+ # [2004-12-25]@3 ==> [2004-12-25]@ [2004-12-26]@ [2004-12-27]@
+ if h[:type] == '@' && h[:laziness] > 1
+ (1...h[:laziness]).each{|d|
+ td = t + 60 * 60 * 24 * d
+ cal[td] ||= Array::new
+ cal[td].push h
+ }
+ end
+ }
+ min_time = cal.keys.min
+ max_time = cal.keys.max
+ t = min_time
+ while t <= max_time
+ c = cal[t] || []
+ puts if t.wday == 0
+ puts "----------------<#{t.month}>---------------- #{t.year}" if t.day == 1
+ day = t.strftime '%d %a'
+ text = c.sort{|a,b|
+ x, y = [a, b].map{|z| [$type_order[z[:type]], z[:comment]]}
+ x <=> y
+# $type_order[a[:type]] <=> $type_order[b[:type]]
+ }.map{|h|
+ h[:comment].sub!(%r|^(cancel)? *\[[#{$date_sep}0-9]+\][!+]?[0-9]*\s*|){|s| $1 ? 'x' : ''} if h[:type] == '.' # adhoc!
+ $type_display[h[:type]] + h[:comment].split(//)[0, $comment_width].join
+ }.join ' '
+ mark = if t.strftime('%Y%m%d') == Time::now.strftime('%Y%m%d')
+ $today_mark
+ elsif t.strftime('%m%d') == Time::now.strftime('%m%d')
+ $same_day_mark
+ else
+ ''
+ end
+ puts "#{day} #{text}#{mark}"
+ t += 60*60*24
+ end
+end
+
+### main
+
+if $l
+ todo
+elsif $i
+ ical
+else
+ schedule
+end
--- /dev/null
+#!/usr/bin/ruby -s
+# -*- coding: euc-jp -*-
+# -*- Ruby -*-
+# $Id: howm2,v 1.10 2010-12-31 12:12:47 hira Exp $
+
+# Convert ~/howm/ to HTML or other formats.
+# Only RD format is supported unless you will give me patches. :p
+
+require 'cgi'
+
+def usage
+ name = File::basename $0
+ print <<EOU
+#{name}: howm ¥á¥â¤ò¥Õ¥©¡¼¥Þ¥Ã¥È
+¡¦¤ä¤Ð¤¤Ê¸»ú¤ò¥¨¥¹¥±¡¼¥×
+¡¦¥¡¼¥ï¡¼¥É¤ò¥ê¥ó¥¯¤ËÊÑ´¹
+¡¦¥Ø¥Ã¥À¤È¥Õ¥Ã¥¿¤ò¤Ä¤±¤ë
+(Îã)
+ #{name} ~/howm/ ~/converted/
+ #{name} -type=rd ~/howm/ ~/converted/
+ ls ~/howm/*/*/*7-*.txt | #{name} -list ~/converted/
+ grep -rl '¤Û¤²' ~/howm/ | #{name} -list ~/converted/
+(¥ª¥×¥·¥ç¥óÎã)
+ -type=rd ¤Þ¤¿¤Ï -t=rd ¢ª ¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¼ïÎà¤ò»ØÄê
+ html ¡Ä ¥Ç¥Õ¥©¥ë¥È
+ rd ¡Ä see http://www2.pos.to/~tosh/ruby/rdtool/ja/
+ rdbody ¡Ä rd ¤Î =begin ¤È =end ¤¬¤Ê¤¤¤â¤Î¤òÆþÎÏ. ¤³¤ì¤é¤òÊä¤Ã¤ÆÀ¸À®.
+ -list ¢ª ¥á¥â¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤òɸ½àÆþÎϤ«¤éÆɤà
+ -exclude='^[.]|CVS' ¢ª Âоݳ°¤Î¥Õ¥¡¥¤¥ë¤òÀµµ¬É½¸½¤Ç»ØÄê
+ -r ¢ª ¥á¥â°ìÍ÷¤ò¿·¤·¤¤½ç¤Ëʤ٤ë
+ -i ¢ª <<< ¤ÇÂçʸ»ú¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤
+ -title='Index' ¢ª index ¥Ú¡¼¥¸¤ÎÂê̾
+ -silent ¤Þ¤¿¤Ï -s ¢ª ¿ÊĽɽ¼¨¤ò¤·¤Ê¤¤
+ -goto='>>>' ¢ª goto link ¤Î½ñ¼°
+ -comefrom='<<<' ¢ª come-from link ¤Î½ñ¼°
+ -no_alias ¢ª come-from ¥¡¼¥ï¡¼¥É¤Î alias ¤ò̵»ë
+ -help ¤Þ¤¿¤Ï -h ¢ª ¤³¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨
+ (-debug ¢ª ¥Ç¥Ð¥Ã¥°ÍѽÐÎÏ)
+EOU
+end
+
+argv_len = $list ? 1 : 2
+if ($help || $h || ARGV.length != argv_len)
+ usage
+ exit 0
+end
+
+#####################################
+
+$type ||= $t || 'html'
+$exclude ||= "^[.\#]|CVS|~$"
+$silent ||= $s
+$title ||= 'Index'
+#$r_text_width = 40
+$progress = '.'
+$goto = '>>>'
+$comefrom = '<<<'
+$url_regexp = %r!((http|file)://\S+)!
+
+def come_go_match(str)
+ case str
+ when /#$comefrom|#$goto/
+ s = str
+ r = []
+ while s =~ /((#$comefrom|#$goto) *(.+?)) *($|(#$comefrom|#$goto).*)/
+ raw = $1
+ type = ($2 == $comefrom) ? :comefrom : :goto
+ key = $3
+ s = $4
+ r.push [type, key, raw]
+ end
+ return r
+ else
+ return false
+ end
+end
+
+def title_match(str)
+ if str =~ /^= +(.+)$/
+ return $1
+ else
+ return false
+ end
+end
+
+#####################################
+
+def empty(); lambda{|*dummy| ""}; end
+def constant(str); lambda{|*dummy| str}; end
+def appender(str); lambda{|x| x + str}; end
+def no_change(); lambda{|*x| x[0]}; end
+
+$formatter = Hash::new
+
+$formatter['html'] = {
+ :escaper => lambda{|str| CGI::escapeHTML str},
+ :unescaper => lambda{|str| CGI::unescapeHTML str},
+ # body page
+ :namer => appender('.b.html'),
+ :header => lambda{|file|
+ %!<HTML><TITLE>#{file}</TITLE><BODY><H1>#{file}</A></H1><HR><PRE>\n!
+ },
+ :come_tag => lambda{|a|
+ # Fix me.
+ %!<A NAME="#{a[:occur][0][:anch]}"></A><A HREF="#{a[:rpath]}\##{a[:anch_n]}" NAME="#{a[:anch]}">#{a[:orig]}</A>!
+ },
+ :come_jump => lambda{|a|
+ %!<A HREF="#{a[:path]}\##{a[:anch]}">#{a[:orig]}</A>!
+ },
+ :come_anchor => lambda{|a|
+ %!<A NAME="#{a[:occur][0][:anch]}"></A>!
+ },
+ :go_tag => lambda{|a|
+ %!<A NAME="#{a[:occur][0][:anch]}"></A><A HREF="#{a[:rpath]}\##{a[:anch]}" NAME="#{a[:anch]}">#{a[:orig]}</A>!
+ },
+ :go_anchor => lambda{|a|
+ %!<A NAME="#{a[:occur][0][:anch]}"></A>!
+# %!<A NAME="#{a[:occur][0][:anch]}">#{a[:key]}</A>!
+ },
+ :url => lambda{|a|
+ %!<A HREF="#{a[:url]}">#{CGI::unescapeHTML a[:url]}</A>!
+ },
+ :footer => lambda{|file|
+ %!</PRE><HR><A HREF="#{to_index file}">index</A></BODY></HTML>\n!
+ },
+ # reference page
+ :ref_namer => appender('.r.html'),
+ :ref_header => lambda{|file|
+ "<HTML><TITLE>#{file}</TITLE><BODY><H1>References: #{file}</H1>\n"
+ },
+ :ref_itemer => lambda{|a|
+ go = a[:goto_file]
+ url = go ? "file://#{a[:goto_file]}" : "#{a[:path]}\##{a[:anch]}"
+ ocs = a[:occur]
+ %!<A HREF="#{url}" NAME="#{a[:anch]}"><H2>#{a[:key]} (#{ocs.length})</H2></A>\n<OL>\n! +
+ ocs.map{|oc|
+ %!<LI><A HREF="#{oc[:path]}\##{oc[:anch]}">#{oc[:file]}</A> #{oc[:text]}\n!
+ }.join +
+ "</OL>\n"
+ },
+ :ref_footer => constant("</BODY></HTML>\n"),
+ # index page
+ :index_namer => constant('index.html'),
+ :index_header => constant("<HTML><TITLE>#{$title}</TITLE><BODY><H1>#{$title}</H1>\n"),
+ :index_keyworder => lambda{|as|
+ "<H2>Keywords (#{as.length})</H2>\n" +
+ as.map{|a| %!<A HREF="#{a[:dest]}\##{a[:anch]}">#{a[:key]}</A>!}.join(" /\n") +
+ "\n"
+ },
+ :index_filer => lambda{|as|
+ "<H2>Files (#{as.length})</H2>\n<OL>\n" +
+ as.map{|a| %!<LI><A HREF="#{a[:dest]}">#{a[:file]}</A>: #{a[:title]}\n!}.join +
+ "</OL>\n"
+ },
+ :index_footer => constant("</BODY></HTML>\n"),
+}
+
+$formatter['rd'] = { # RD doesn't have anchor?
+ :escaper => no_change,
+ :unescaper => no_change,
+ # body page
+ :namer => appender('.b.rd'),
+ :header => empty,
+ :come_tag => lambda{|a| %!((<"#{a[:orig]}"|URL:#{a[:rpath]}>))!},
+ :come_jump => lambda{|a| %!((<"#{a[:orig]}"|URL:#{a[:path]}>))!},
+ :come_anchor => constant(''),
+ :footer => empty,
+ :go_tag => lambda{|a| %!((<"#{a[:orig]}"|URL:#{a[:rpath]}>))!},
+ :go_anchor => constant(''),
+ :url => lambda{|a| %!((<"#{a[:url]}"|URL:#{a[:url]}>))!},
+ # reference page
+ :ref_namer => appender('.r.rd'),
+ :ref_header => lambda{|file| "=begin\n= References: #{file}\n"},
+ :ref_itemer => lambda{|a|
+ go = a[:goto_file]
+ url = go ? "file://#{go}" : "#{a[:path]}"
+ %!== ((<"#{a[:key]}"|URL:#{url}>))\n! +
+ a[:occur].map{|oc|
+ %!* ((<"#{oc[:file]}"|URL:#{oc[:path]}>)) #{oc[:text]}\n!
+ }.join +
+ "\n"
+ },
+ :ref_footer => constant("=end\n"),
+ # index page
+ :index_namer => constant('index.rd'),
+ :index_header => constant("=begin\n= #{$title}\n"),
+ :index_keyworder => lambda{|as|
+ "== Keywords (#{as.length})\n" +
+ as.map{|a| %!((<"#{a[:key]}"|URL:#{a[:dest]}>))!}.join(" /\n") +
+ "\n"
+ },
+ :index_filer => lambda{|as|
+ "== Files (#{as.length})\n" +
+ as.map{|a| %!* ((<"#{a[:file]}"|URL:#{a[:dest]}>)): #{a[:title]}\n!}.join
+ },
+ :index_footer => constant("=end\n"),
+}
+
+b = $formatter['rd'].dup
+b[:header] = constant "=begin\n"
+b[:footer] = constant "=end\n"
+$formatter['rdbody'] = b
+
+#####################################
+
+class String
+ def indices(substr)
+ a = Array::new
+ pos = 0
+ while (i = index substr, pos)
+ a.push(substr.is_a?(Regexp) ? [i, $&] : i)
+ pos = i + 1
+ end
+ return a
+ end
+end
+
+class HashList < Hash
+ def cons(key, val)
+ self[key] ||= Array::new
+ self[key].push val
+ end
+end
+
+def ls_R(dir)
+ a = Array::new
+ Dir::open(dir){|d| d.each{|f| a.push f}} # map doesn't work??
+ b = Array::new
+ a.each{|f|
+ next if f =~ /#$exclude/
+ path = File::expand_path f, dir
+ b.push f if FileTest::file? path
+ b += ls_R(path).map{|g| "#{f}/#{g}"} if FileTest::directory? path
+ }
+ return b
+end
+
+# FixMe :-(
+def bundle(file_list)
+ fs = file_list.map{|f| File::expand_path f}
+ ds = fs.map{|f| File::dirname f}
+ common = ds[0] || ''
+ ds.each{|d|
+ while common != d
+ if common.length <= d.length
+ d = File::dirname d
+ else
+ common = File::dirname common
+ end
+ end
+ }
+ rs = fs.map{|f| f[(common.length + 1)..-1]} # +1 for '/'
+ return [common, rs]
+end
+
+# Fixme :-(
+def mkdir_p(path)
+ parent = File::dirname path
+ return true if parent == path # root dir
+ mkdir_p parent
+ if !FileTest::exist? path
+ Dir::mkdir path
+ end
+end
+
+# Fixme :-(
+def relative_path(target, origin)
+ return target if origin == '.'
+ sep = '/'
+ parent = '..'
+ root = origin.split(sep).map{|any| parent}.join(sep)
+ return root + sep + target
+end
+
+def to_index(origin)
+ relative_path $formatter[$type][:index_namer].call, File::dirname(origin)
+end
+
+$unique_id = ':000000'
+def unique_name(base)
+ base + $unique_id.succ!.dup
+end
+
+#####################################
+
+$titles_in_file = HashList::new # dirty!
+def come_go_master(files, dir, formatter)
+ h = HashList::new # key => master files
+ aliases = []
+ files.each{|f|
+ open(File::expand_path(f, dir)){|io|
+ io.each_line{|line|
+ if (t = title_match line)
+ $titles_in_file.cons f, t
+ end
+ if (found = come_go_match line)
+ equiv_key = []
+ equiv_raw = []
+ found.each{|m|
+ type, key, raw = m
+ s = formatter[:escaper].call raw
+ k = formatter[:escaper].call key
+ g = formatter[:namer].call f
+ r = formatter[:ref_namer].call f
+ a = CGI::escape(k)
+ arg = {
+ :type => type,
+ :raw => s,
+ :key => k,
+ :occur => Array::new,
+ :file => f,
+ :dest => g,
+ :ref => r,
+ :anch => a,
+ }
+ case type
+ when :comefrom
+ h.cons s, [:come_tag, arg]
+ h.cons k, [:come_jump, arg]
+ h.cons k, [:come_anchor, arg]
+ equiv_key.push k
+ equiv_raw.push s
+ when :goto
+ h.cons s, [:go_tag, arg]
+ h.cons k, [:go_anchor, arg]
+ end
+ }
+ if equiv_key.length > 1
+ aliases += [equiv_key, equiv_raw]
+ end
+ end
+ }
+ }
+ }
+ return h, aliases
+end
+
+def format_line(line, prog)
+ match = HashList::new # pos => key
+ prog.each{|rule|
+ regexp, func, greedy = [:regexp, :func, :greedy].map{|k| rule[k]}
+ line.indices(regexp).each{|r|
+ i, k = r
+ match.cons i, [k, func, greedy]
+ }
+ }
+ p match if $debug
+ cursor = 0
+ done = ""
+ match.keys.sort.each{|i|
+ skipping = (i < cursor)
+ if !skipping
+ done += line[cursor..(i - 1)] if i > 0 # 'foobar'[0..-1] is 'foobar'
+ cursor = i
+ end
+ match[i].each{|com|
+ key, func, greedy = com
+ next if greedy && skipping
+ done += func.call(key, line)
+ if greedy
+ cursor = i + key.length
+ break
+ end
+ }
+ }
+ if (cursor <= (len = line.length))
+ done += line[cursor..len]
+ end
+ return done
+end
+
+def format_io(input, output, prog_src, compiler, escaper)
+ a = input.readlines.map{|s| escaper.call s}
+ whole = a.join
+ matched_rules = prog_src.select{|rule|
+ whole =~ rule[:regexp]
+ }
+ prog = matched_rules.map{|r| compiler.call r}
+ a.each{|line|
+ output.print format_line(line, prog)
+ }
+end
+
+#####################################
+
+def notice(str)
+ STDERR.print str if !$silent
+end
+
+if $list
+ dest_dir = ARGV.shift
+ src_dir, files = bundle(STDIN.readlines.map{|s| s.chomp})
+else
+ src_dir, dest_dir = ARGV
+ files = ls_R src_dir
+end
+notice "#{files.length} files "
+fmt = $formatter[$type]
+k2m, aliases = come_go_master files, src_dir, fmt
+aliases = [] if $no_alias
+notice "(#{k2m.length} entries)\n"
+p k2m if $debug
+
+aliases.each{|equiv|
+ key0 = equiv.shift
+ type0, arg0 = k2m[key0][0]
+ equiv.each{|key|
+ k2m[key].each{|m|
+ type, arg = m
+ [:occur, :file, :dest, :ref].each{|x|
+ arg[x] = arg0[x]
+ }
+ arg[:anch_alias] = arg0[:anch] if type == :come_tag
+ }
+ }
+}
+
+notice 'body pages: '
+greedy = Array::new
+nongreedy = Array::new
+k2m.each_pair{|k, v|
+ v.each{|m|
+ type, arg = m
+ r = /#{Regexp::escape k}/
+ g = [:come_tag, :come_jump, :go_tag].member?(type)
+ z = g ? greedy : nongreedy
+ h = {:raw => k, :regexp => r, :type => type, :arg => arg, :greedy => g}
+ z.push h
+ }
+}
+greedy.sort!{|x, y| x[:raw].length <=> y[:raw].length}
+greedy.reverse!
+p greedy if $debug
+p nongreedy if $debug
+u = {:regexp => $url_regexp, :type => :url, :arg => Hash::new, :greedy => true}
+prog_src = nongreedy + [u] + greedy
+files.each{|f|
+ notice $progress
+ g = fmt[:namer].call f
+ r = fmt[:ref_namer].call f
+ spath = File::expand_path f, src_dir
+ dpath, rpath = [g, r].map{|x| File::expand_path x, dest_dir}
+ mkdir_p File::dirname(dpath)
+ compiler = lambda{|h|
+ func = lambda{|k, s|
+ type = h[:type]
+ arg = h[:arg]
+ if type == :url
+ arg[:url] = k
+ else
+ dir = File::dirname(f)
+ arg[:path] = relative_path arg[:dest], dir
+ arg[:rpath] = relative_path arg[:ref], dir
+ a = unique_name arg[:anch]
+ path = relative_path(g, dir)
+ occur = {
+ :file => f, :path => path, :text => s.chop,
+ :anch => a, :type => type,
+ }
+ arg[:occur].unshift occur
+ arg[:orig] = k
+ arg[:anch_n] = arg[:anch_alias] || arg[:anch]
+ end
+ fmt[type].call arg
+ }
+ reg = h[:regexp]
+ ignore_case = [:come_tag, :come_jump, :come_anchor].member?(h[:type]) && $i
+ reg = /#{reg.source}/i if ignore_case
+ {:regexp => reg, :func => func, :greedy => h[:greedy]}
+ }
+ open(spath){|input|
+ open(dpath, 'w'){|output|
+ output.print fmt[:header].call(f)
+ format_io input, output, prog_src, compiler, fmt[:escaper]
+ output.print fmt[:footer].call(f)
+ }
+ }
+}
+notice "\n"
+
+notice 'reference pages: '
+m2a = HashList::new
+k2m.each_pair{|k, v|
+ v.each{|z|
+ type, arg = z
+ next if arg[:anch_alias]
+ m2a.cons arg[:file], arg if [:come_anchor, :go_anchor].member? type
+ }
+}
+m2a.each_pair{|f, v|
+ notice $progress
+ body = fmt[:namer].call f
+ ref = fmt[:ref_namer].call f
+ rpath = File::expand_path ref, dest_dir
+ mkdir_p File::dirname(rpath)
+ open(rpath, 'w'){|output|
+ output.print fmt[:ref_header].call(f)
+ v.each{|arg|
+ g = fmt[:unescaper].call arg[:key]
+ arg[:goto_file] = g if arg[:type] == :goto && FileTest::exist?(g)
+ arg[:occur].reject!{|oc| ![:come_anchor, :go_anchor].member? oc[:type]}
+ arg[:occur].sort!{|a,b| - (a[:file] <=> b[:file])}
+ output.print fmt[:ref_itemer].call(arg)
+ }
+ output.print fmt[:ref_footer].call(f)
+ }
+}
+notice "\n"
+
+notice 'index page: '
+path = File::expand_path fmt[:index_namer].call(), dest_dir
+open(path, 'w'){|output|
+ output.print fmt[:index_header].call
+ output.print fmt[:index_keyworder].call(k2m.keys.sort.map{|k|
+ k2m[k].map{|m|
+ type, arg = m
+ [:come_anchor].member?(type) ? arg : nil
+ }.select{|a| a}
+ }.flatten)
+ # alphabet files precede numerical files
+ z = files.sort{|f, g|
+ a, b = [f, g].map{|h| (h =~ /^[0-9]/ ? 'z' : 'a') + h}
+ a <=> b
+ }
+ z.reverse! if $r
+ output.print fmt[:index_filer].call(z.map{|f|
+ g = fmt[:namer].call f
+# ts = $titles_in_file[f].reject{|t| t =~ /^\s*$/} || []
+ ts = $titles_in_file[f] || []
+ {:file => f, :dest => g, :title => ts.join(' / ')}
+ })
+ output.print fmt[:index_footer].call
+}
+notice ".\n"
--- /dev/null
+#!/usr/bin/ruby -s
+# -*- coding: euc-jp -*-
+# -*- Ruby -*-
+# $Id: howmkara,v 1.7 2010-12-31 12:12:47 hira Exp $
+
+# Convert ~/howm/ to HTML or other formats.
+# Only RD format is supported unless you will give me patches. :p
+
+#############################################################
+
+require 'cgi'
+
+def usage
+ name = File::basename $0
+ print <<EOU
+#{name}: howm ¥á¥â¤ò HTML ²½
+¡¦¤ä¤Ð¤¤Ê¸»ú¤ò¥¨¥¹¥±¡¼¥×
+¡¦¥¡¼¥ï¡¼¥É¤ò¥ê¥ó¥¯¤ËÊÑ´¹
+¡¦¥Ø¥Ã¥À¤È¥Õ¥Ã¥¿¤ò¤Ä¤±¤ë
+(Îã)
+ #{name} ~/howm/ ~/converted/
+ ls ~/howm/*/*/*7-*.txt | #{name} -list ~/converted/
+ grep -rl '¤Û¤²' ~/howm/ | #{name} -list ~/converted/
+(¥ª¥×¥·¥ç¥óÎã)
+ -list ¢ª ¥á¥â¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤òɸ½àÆþÎϤ«¤éÆɤà
+ -exclude='^[.]|CVS' ¢ª Âоݳ°¤Î¥Õ¥¡¥¤¥ë¤òÀµµ¬É½¸½¤Ç»ØÄê
+ -home='index.html' ¢ª ¡ÖHome¡×¤Î¥ê¥ó¥¯Àè
+ -silent ¤Þ¤¿¤Ï -s ¢ª ¿ÊĽɽ¼¨¤ò¤·¤Ê¤¤
+ -help ¤Þ¤¿¤Ï -h ¢ª ¤³¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨
+ (-debug ¢ª ¥Ç¥Ð¥Ã¥°ÍѽÐÎÏ)
+EOU
+end
+
+argv_len = $list ? 1 : 2
+if ($help || $h || ARGV.length != argv_len)
+ usage
+ exit 0
+end
+
+#############################################################
+
+$exclude ||= "^[.\#]|CVS|~$"
+$silent ||= $s
+$summary_length ||= 70
+$come_from ||= "<<< *(.+)$"
+$come_from_pos ||= 1
+
+#############################################################
+
+def notice(str)
+ STDERR.print str if !$silent
+end
+
+def ls_R(dir)
+ a = Array::new
+ Dir::open(dir){|d| d.each{|f| a.push f}} # map doesn't work??
+ b = Array::new
+ a.each{|f|
+ next if f =~ /#$exclude/
+ path = File::expand_path f, dir
+ b.push f if FileTest::file? path
+ b += ls_R(path).map{|g| "#{f}/#{g}"} if FileTest::directory? path
+ }
+ return b
+end
+
+# FixMe :-(
+def mkdir_p(path)
+ parent = File::dirname path
+ return true if parent == path # root dir
+ mkdir_p parent
+ if !FileTest::exist? path
+ Dir::mkdir path
+ end
+end
+
+# FixMe :-(
+def split_base(file_list)
+ fs = file_list.map{|f| File::expand_path f}
+ ds = fs.map{|f| File::dirname f}
+ common = ds[0] || ''
+ ds.each{|d|
+ while common != d
+ if common.length <= d.length
+ d = File::dirname d
+ else
+ common = File::dirname common
+ end
+ end
+ }
+ rs = fs.map{|f| f[(common.length + 1)..-1]} # +1 for '/'
+ return [common, rs]
+end
+
+class HashList < Hash
+ def cons(key, val)
+ self[key] ||= Array::new
+ self[key].push val
+ end
+end
+
+# class Array
+# def flatten
+# ret = []
+# self.each{|x| ret += x}
+# ret
+# end
+# end
+
+class String
+ def offsets(pattern)
+ a = Array::new
+ pos = 0
+ # necessary for use of last_match. sigh...
+ pattern = Regexp::new(Regexp::quote(pattern)) if pattern.is_a? String
+ while (i = index pattern, pos)
+ a.push Regexp.last_match.offset(0)
+ pos = i + 1
+ end
+ return a
+ end
+end
+
+module Bundle
+ def expand_readlines(f)
+ open(File::expand_path(f, base_dir), 'r'){|io| io.readlines.join}
+# open(File::expand_path(f, base_dir), 'r'){|io| io.read} # for ruby-1.7?
+ end
+ def first_line(f)
+ open(File::expand_path(f, base_dir), 'r'){|io| io.gets.chop}
+ end
+ def link_tag(f) # Clean me. ²¿ÅÙ¤â¸Æ¤Ö¤Î¤Ï¤«¤Ã¤³°¤¤.
+ fline = first_line f
+ [:link, f + '.b', f + ': ' + fline[0, $summary_length]]
+ end
+end
+
+#############################################################
+
+class Formatter
+ attr_accessor :home
+ def initialize(home = nil)
+ @home = home
+ end
+ def newpage
+ @result = ''
+ end
+ def put(*com)
+ com.each{|c| put_one c}
+ end
+ def put_one(command)
+ type = command.shift
+ case type
+ when :pre
+ items = command.shift
+ @result += "<pre>\n"
+ put *items
+ @result += "</pre>\n"
+ when :as_is
+ @result += CGI::escapeHTML(command.shift)
+ when :link
+ link, str = command
+ url = link.is_a?(String) ? link + '.html' : link[1]
+ @result += %!<a href="#{url}">#{CGI::escapeHTML str}</a>!
+ when :list
+ items = command.shift
+ @result += "<ol>\n"
+ items.each{|i| @result += ' <li>'; put_one i; @result += "\n"}
+ @result += "</ol>\n"
+ end
+ end
+ def wrapped_result(title)
+ etitle = CGI::escapeHTML title
+ <<_EOS_
+<html>
+<head><title>#{etitle}</title></head>
+<body>
+<h1>#{etitle}</h1>
+<hr>
+#{@result}
+<hr>
+<a href="#{@home}">Home</a>
+<a href="book.h.html">Files</a>
+<a href="index.h.html">Keywords</a>
+</body>
+</html>
+_EOS_
+ end
+ def write(title, file, dir)
+ f = File::expand_path(file, dir) + '.html'
+ mkdir_p File::dirname(f)
+ open(f, 'w'){|io| io.puts wrapped_result(title)}
+ end
+end
+
+class Book
+ include Bundle
+ attr_accessor :files, :base_dir
+ def initialize(files, base_dir)
+ @files = files
+ @base_dir = base_dir
+ end
+ def first_page
+ link_tag(@files[0])
+ end
+ def write(dest_dir, formatter)
+ index = Index::new @files, @base_dir
+ write_each dest_dir, formatter, index
+ write_list dest_dir, formatter
+ index.write dest_dir, formatter
+ end
+ def write_list(dest_dir, formatter)
+ formatter.newpage
+ formatter.put [:list, @files.sort.map{|f|
+ link_tag f
+# first_line = open(File::expand_path f, @base_dir){|io| io.gets.chop}
+# [:link, f + '.b', f + ': ' + first_line[0, $summary_length]]
+ }]
+ formatter.write 'Files', 'book.h', dest_dir
+ notice ".\n"
+ end
+ def write_each(dest_dir, formatter, index)
+ @files.each{|f|
+ formatter.newpage
+ formatter.put [:pre, interpret(expand_readlines(f), index, f)]
+ formatter.write first_line(f), f + '.b', dest_dir
+# formatter.write f, f + '.b', dest_dir
+ notice '.'
+ }
+ notice "\n"
+ end
+ def interpret(src, index, f)
+ hit = search src, index, f
+ cursor = 0
+ ret = []
+ while !hit.empty?
+ h = hit.shift
+ b, e, key = h
+ case cursor <=> b
+ when -1 # eat until beginning of this hit, and retry
+ ret.push [:as_is, src[cursor...b]]
+ hit.unshift h
+ cursor = b
+ when 0 # expand this hit
+ s = src[b...e]
+ if key == :url
+ link = [:url, s]
+ elsif key == :decl
+ s =~ /#$come_from/
+ w = Regexp::last_match[$come_from_pos]
+ link = CGI::escape(CGI::escape(w)) + '.i'
+ else
+ decl = index.decl[key]
+ link = decl.member?(f) ? nil : decl[0] + '.b'
+ end
+ ret.push(link ? [:link, link, s] : [:as_is, s])
+ cursor = e
+ when 1 # discard this hit
+ end
+ end
+ ret.push [:as_is, src[cursor..-1]]
+ ret
+ end
+ def search(src, index, f)
+ hit = []
+ index.decl.each_key{|k|
+ offsets = src.offsets k
+ index.used.cons k, f if !offsets.empty? && !index.decl[k].member?(f)
+ hit += offsets.map{|o| o.push k}
+ }
+ hit += src.offsets(%r{http://[-!@#\$%^&*()_+|=:~/?a-zA-Z0-9.,;]*[-!@#\$%^&*()_+|=:~/?a-zA-Z0-9]+}).map{|o| o.push :url}
+ hit += src.offsets($come_from).map{|o| o.push :decl}
+ hit.sort{|h1, h2| earlier_longer h1, h2}
+ end
+ def earlier_longer(h1, h2)
+ [h1[0], - h1[1]] <=> [h2[0], - h2[1]]
+ end
+end
+
+class Index
+ include Bundle
+ attr_accessor :files, :base_dir
+ attr_reader :decl, :used
+ def initialize(files, base_dir)
+ @files = files
+ @base_dir = base_dir
+ @decl = HashList::new
+ @used = HashList::new
+ search_decl
+ end
+ def search_decl
+ @files.each{|f|
+ expand_readlines(f).scan($come_from){|hit| @decl.cons hit[0], f}
+ }
+ end
+ def write(dest_dir, formatter)
+ write_each dest_dir, formatter
+ write_list dest_dir, formatter
+ end
+ def write_list(dest_dir, formatter)
+ formatter.newpage
+ formatter.put [
+ :list,
+ @decl.keys.sort.map{|key|
+ [:link, CGI::escape(CGI::escape(key)) + '.i', key + " (#{(@used[key]||[]).length})"]
+ }
+ ]
+ formatter.write 'Keywords', 'index.h', dest_dir
+ notice ".\n"
+ end
+ def write_each(dest_dir, formatter)
+ @decl.each_key{|key|
+ f = CGI::escape(key) + '.i'
+ to_decl = @decl[key].map{|g| link_tag g}
+ to_used = (@used[key] || []).map{|g| link_tag g}
+ to_rel = related_keys(key).map{|g| [:link, @decl[g][0] + '.b', g]}
+# to_decl = @decl[key].map{|g| [:link, g + '.b', g]}
+# to_used = (@used[key] || []).map{|g| [:link, g + '.b', g]}
+# to_rel = related_keys(key).map{|g| [:link, @decl[g][0] + '.b', g]}
+ formatter.newpage
+ c = [
+ [:as_is, "Declared:\n"],
+ [:list, to_decl],
+ [:as_is, "Linked:\n"],
+ [:list, to_used],
+ [:as_is, "Related:\n"],
+ [:list, to_rel],
+ ]
+ formatter.put *c
+ formatter.write key, f, dest_dir
+ notice '.'
+ }
+ notice "\n"
+ end
+ def related_keys(key)
+ sub = included_keys key
+ sub.map{|k| @decl.keys.select{|x| x.include? k and x != key}}.flatten.uniq.sort
+ end
+ def included_keys(key)
+ @decl.keys.select{|k| key.include? k}
+ end
+end
+
+#############################################################
+
+if $list
+ dest_dir = ARGV.shift
+ src_dir, files = split_base(STDIN.readlines.map{|s| s.chomp})
+else
+ src_dir, dest_dir = ARGV
+ files = ls_R src_dir
+end
+notice "#{files.length} files "
+
+b = Book::new files, src_dir
+i = Index::new files, src_dir
+notice "(#{i.decl.length} entries)\n"
+
+$home ||= b.first_page[1] + '.html'
+fmt = Formatter::new $home
+b.write dest_dir, fmt
--- /dev/null
+#!/usr/bin/ruby -s
+# -*- coding: euc-jp -*-
+# -*- Ruby -*-
+
+def usage
+ name = File::basename $0
+ print <<EOU
+#{name}: howm ¥á¥â¤ò, °ì¥á¥â°ì¥Õ¥¡¥¤¥ë¤Ëʬ³ä (¼êÈ´¤»ÅÍÍ)
+(Îã)
+ #{name} 2004_10_10.txt
+ ¢ª 2004_10_10.txt.aa, 2004_10_10.txt.ab, ¡Ä ¤¬¤Ç¤¤ë
+(¥ª¥×¥·¥ç¥óÎã)
+ -prefix=hoge. ¢ª hoge.aa, hoge.ab, ¡Ä ¤¬¤Ç¤¤ë
+ -help ¤Þ¤¿¤Ï -h ¢ª ¤³¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨
+EOU
+end
+
+#####################################
+
+if ($help || $h || ARGV.length == 0)
+ usage
+ exit 0
+end
+
+$prefix ||= ARGV[0] + '.'
+ext = 'aa'
+
+ARGF.readlines.join.split(/^= /).each_with_index{|x, i|
+ next if x.empty?
+ x = '= ' + x if i > 0
+ open($prefix + ext, 'w'){|io| io.print x}
+ ext.succ!
+}
--- /dev/null
+;;; gfunc.el --- support for generic function
+;;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: gfunc.el,v 1.16 2011-12-31 15:07:29 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;;--------------------------------------------------------------------
+
+;; sample
+;;
+;; (defun less-than:num (x y)
+;; (< x y))
+;; (defun less-than:str (x y)
+;; (string< x y))
+;; (defun type-of (x y)
+;; (cond ((numberp x) ':num)
+;; ((stringp x) ':str)))
+;; (defvar disp-list (list #'type-of))
+;; (gfunc-define-function less-than (x y) disp-list) ;; --- <*>
+;; (less-than 3 8) ;; (less-than:num 3 8) ==> t
+;; (less-than "xyz" "abc") ;; (less-than:str "xyz" "abc") ==> nil
+;; (pp (macroexpand '(gfunc-def less-than (x y) disp-list)))
+;;
+;; ;; This is equivalent to above <*>.
+;; (gfunc-with disp-list
+;; (gfunc-def less-than (x y))
+;; ;; You can insert more methods here. For example...
+;; ;; (less-or-equal (x y))
+;; ;; (more-than (x y))
+;; )
+
+(defvar *gfunc-dispatchers-var* nil
+ "For internal use")
+(put '*gfunc-dispatchers-var* 'risky-local-variable t)
+
+;; loop version
+(defun gfunc-call (base-name dispatchers args)
+ (let (type)
+ (catch 'done
+ (while dispatchers
+ (setq type (apply (car dispatchers) args))
+ (if type
+ (throw 'done
+ (apply (intern-soft (format "%s%s" base-name type))
+ args))
+ (setq dispatchers (cdr dispatchers))))
+ (error "Can't detect type of %s for %s." args base-name))))
+
+;; (defun gfunc-call (base-name dispatchers args)
+;; (if (null dispatchers)
+;; (error "Can't detect type of %s for %s." args base-name)
+;; (let ((type (apply (car dispatchers) args)))
+;; (if (null type)
+;; (gfunc-call base-name (cdr dispatchers) args)
+;; (let ((f (intern-soft (format "%s%s" base-name type))))
+;; (apply f args))))))
+
+;; (put 'gfunc-def 'lisp-indent-hook 2)
+(defmacro gfunc-define-function (base-name args-declaration dispatchers-var
+ &optional description)
+ "Define generic function.
+BASE-NAME is name of generic function.
+ARGS-DECLARATION has no effect; it is merely note for programmers.
+DISPATCHERS-VAR is name of variable whose value is list of type-detectors.
+Type-detector receives arguments to the function BASE-NAME, and returns
+its 'type' symbol.
+Then, BASE-NAME + type is the name of real function.
+Type detector must return nil if it cannot determine the type, so that
+the task is chained to next detector."
+ (let ((desc-str (format "%s
+
+ARGS = %s
+
+Internally, %s___ is called according to the type of ARGS.
+The type part ___ is determined by functions in the list `%s'.
+This function is generated by `gfunc-define-function'."
+ (or description "Generic function.")
+ args-declaration
+ base-name
+ dispatchers-var)))
+ `(defun ,base-name (&rest args)
+ ,desc-str
+ (gfunc-call (quote ,base-name) ,dispatchers-var args))))
+
+(defmacro gfunc-def (base-name args-declaration &optional description)
+ "Define generic function like `gfunc-define-function'.
+The only difference is omission of dispatchers; it must be specified
+by `gfunc-with' outside."
+ (declare (indent 2))
+ `(gfunc-define-function ,base-name ,args-declaration ,*gfunc-dispatchers-var*
+ ,description))
+
+(defmacro gfunc-with (dispatchers-var &rest body)
+ "With the defalut DISPATCHERS-VAR, execute BODY.
+BODY is typically a set of `gfunc-def', and DISPATCHERS-VAR is used
+as their dispatchers.
+This macro cannot be nested."
+ (declare (indent 1))
+ ;; Be careful to etc/NEWS in Emacs 24.3 or
+ ;; http://www.masteringemacs.org/articles/2013/03/11/whats-new-emacs-24-3/
+ ;; "Emacs tries to macroexpand interpreted (non-compiled) files during load."
+ (setq *gfunc-dispatchers-var* dispatchers-var)
+ `(eval-and-compile
+ ,@body))
+
+(provide 'gfunc)
+
+;;; gfunc.el ends here
--- /dev/null
+;;; honest-report.el --- make bug report with screenshot and keylog
+
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;; $Id: honest-report.el,v 1.13 2011-12-31 15:07:29 hira Exp $
+;;
+;; 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 1, 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
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; The GNU General Public License is available by anonymouse ftp from
+;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;; USA.
+
+;;; Commentary:
+
+;; (For users)
+;; This small tool helps you write clear bug report.
+;; Just type M-x honest-report to show recent keys and screen shots.
+;; Copy them into your bug report.
+
+;; (For programmers)
+;; Write a wrapper of `honest-report' with your favorite header and footer.
+
+;; (Bug)
+;; Text properties are ignored in screen shot.
+;; In particular, too large region can be copied for outline-mode
+;; because all closed items are shown as opened.
+
+;;; Code:
+
+(defun honest-report (&optional header footer)
+ (interactive)
+ (let ((ver (honest-report-version))
+ (key (honest-report-recent-keys))
+ (msg (honest-report-message))
+ (scr (honest-report-screenshot)))
+ (honest-report-setup)
+ (mapc (lambda (a) (apply #'honest-report-insert a))
+ `(
+ ("Header" ,header)
+ ("Emacs version" ,ver)
+ ("Recent keys" ,key)
+ ("Recent messages" ,msg)
+ ("Screen shot" ,scr)
+ ("Footer" ,footer)
+ ))
+ (goto-char (point-max))))
+
+(defun honest-report-insert (title content)
+ (when content
+ (insert "* " title ":\n\n" content "\n\n")))
+
+;;;;;;;;;;;;;
+
+(defun honest-report-setup ()
+ (let ((report-buf (format-time-string "honest-report-%Y%m%d-%H%M%S")))
+ (switch-to-buffer report-buf)))
+
+;; snap:///usr/share/emacs/21.4/lisp/mail/emacsbug.el#136:(insert (mapconcat (lambda (key)
+(defun honest-report-recent-keys ()
+ (mapconcat (lambda (key)
+ (if (or (integerp key)
+ (symbolp key)
+ (listp key))
+ (single-key-description key)
+ (prin1-to-string key nil)))
+ (recent-keys)
+ " "))
+
+(defun honest-report-screenshot ()
+ (mapconcat (lambda (w)
+ (with-current-buffer (window-buffer w)
+ (let ((b (max (window-start w) (point-min)))
+ (e (min (window-end w t) (point-max))))
+ (format "--- %s ---\n%s"
+ w
+ (buffer-substring-no-properties b e)))))
+ (honest-report-window-list)
+ "\n"))
+
+(defun honest-report-window-list ()
+ "Mimic `window-list'.
+This function exists only for emacs20 (and meadow-1.15),
+which lack `window-list'."
+ (let ((ws nil))
+ (walk-windows (lambda (w) (setq ws (cons w ws))))
+ (reverse ws)))
+
+(defun honest-report-message ()
+ (with-current-buffer (or (get-buffer "*Messages*")
+ (get-buffer " *Message-Log*"))
+ (save-excursion
+ (goto-char (point-max))
+ (forward-line -10)
+ (buffer-substring-no-properties (point) (point-max)))))
+
+(defun honest-report-version ()
+ (mapconcat (lambda (sv) (format "[%s] %s" (car sv) (cdr sv)))
+ (honest-report-version-assoc)
+ "\n"))
+
+(defun honest-report-version-assoc ()
+ (remove nil
+ `(
+ ("Emacs" . ,(format "%s (%s) of %s"
+ emacs-version
+ system-configuration
+ (honest-report-emacs-build-time)))
+ ("system" . ,system-type)
+ ("window system" . ,window-system)
+ ,(let ((f 'Meadow-version))
+ ;; cheat to avoid warning while byte-compilation.
+ (and (fboundp f)
+ (cons "Meadow" (funcall f))))
+ ("ENV" . ,(mapconcat (lambda (v) (format "%s=%s" v (getenv v)))
+ '("LC_ALL" "LC_CTYPE" "LANGUAGE" "LANG")
+ ", "))
+ )))
+
+(defun honest-report-emacs-build-time ()
+ (if (stringp emacs-build-time)
+ emacs-build-time ;; xemacs
+ (format-time-string "%Y-%m-%d"
+ emacs-build-time)))
+
+;;;;;;;;;;;;;
+
+(provide 'honest-report)
+
+;;; honest-report.el ends here
--- /dev/null
+;;; howm-backend.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-backend.el,v 1.50 2012-12-29 08:57:18 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+(provide 'howm-backend)
+(require 'howm)
+
+;; in preparation at now.
+;; many WRONG COMMENTS and TENTATIVE CODES.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; class Folder
+
+(defun howm-folder ()
+ (howm-make-folder:files (howm-search-path)))
+
+;; * class Folder: abstraction of directory
+
+;; (Wrong comments. Ignore me.)
+;; * grep(pattern, fixed, case_insensitive)
+;; * list of items
+;; * new_page
+;; * all_pages
+;; * all_keys
+;; * add_keys
+;; * keys_in(page)
+;; * This method is optional.
+
+(defun howm-folder-type (folder &rest r)
+ (cond ((stringp folder) ':dir)
+ ((eq folder 'buf) ':buf)
+ ((listp folder) (car folder))))
+
+(howm-defvar-risky howm-folder-dispatchers (list #'howm-folder-type))
+
+(gfunc-with howm-folder-dispatchers
+ (gfunc-def howm-folder-items (folder &optional recursive-p)
+ "All pages in FOLDER is returned as list of items.
+When RECURSIVE-P is non-nil, pages in subfolders are also listed.")
+ (gfunc-def howm-folder-grep-internal (folder pattern &optional fixed-p)
+ "In FOLDER, PATTERN is searched.
+Result is returned as list of items. When FIXED-P is nil, PATTERN is
+regarded as regular expression.")
+ ;; need to suppor below for howm-directory
+ (gfunc-def howm-folder-get-page-create (folder page-name)
+ "In FOLDER, get page whose name is PAGE-NAME.
+If corresponding page does not exist, new page is created.
+Return value is a cons pair of page and flag.
+Flag is non-nil if new page is created.")
+ (gfunc-def howm-folder-territory-p (folder name)
+ "Non nil if FOLDER should own NAME.")
+ )
+
+;; (gfunc-def-with howm-folder-dispatchers
+;; (howm-folder-items (folder &optional recursive-p)
+;; "All pages in FOLDER is returned as list of items.
+;; When RECURSIVE-P is non-nil, pages in subfolders are also listed.")
+;; (howm-folder-grep-internal (folder pattern &optional fixed-p)
+;; "In FOLDER, PATTERN is searched.
+;; Result is returned as list of items. When FIXED-P is nil, PATTERN is
+;; regarded as regular expression.")
+;; )
+
+(defun howm-folder-match-under-p (dir regexp filename)
+ (and (eq (howm-folder-type dir) ':dir)
+ (string-match regexp (file-relative-name filename dir))))
+
+(defun howm-make-folder-from-items (items)
+ (howm-make-folder:pages (howm-cl-remove-duplicates* (mapcar #'howm-item-page
+ items)
+ :test #'howm-page=)))
+
+;;;
+;;; dir folder: single directory
+;;;
+
+(defun howm-make-folder:dir (dir)
+ dir)
+
+(defun howm-folder-items:dir (dir &optional recursive-p)
+ (let ((files (if recursive-p
+ (howm-files-in-directory dir)
+ (directory-files dir t))))
+ (howm-folder-items:files (howm-make-folder:files files))))
+
+(defun howm-folder-grep-internal:dir (folder pattern &optional fixed-p)
+ (howm-grep-items pattern folder fixed-p #'howm-exclude-p))
+
+(defun howm-files-in-directory (path &optional dummy-exclusion-checker)
+ "List files in PATH recursively, when PATH is a directory.
+When PATH is a file, list of it is returned.
+Some files and directories are ignored according to `howm-exclude-p'.
+DUMMY-EXCLUSION-CHECKER has no effect; it should be removed soon."
+ (howm-files-in-directory-sub (expand-file-name path)))
+
+(defun howm-files-in-directory-sub (full-path &optional under)
+ (let* ((top-call-p (null under))
+ (excluded-p (if top-call-p
+ nil
+ (or (howm-exclude-p full-path)
+ ;; exclude "." & ".."
+ (not (howm-subdirectory-p under full-path
+ 'strict))))))
+ (cond (excluded-p
+ nil)
+ ((file-directory-p full-path)
+ (cl-mapcan (lambda (s)
+ (howm-files-in-directory-sub s full-path))
+ (directory-files full-path t)))
+ ((file-exists-p full-path)
+ (list full-path))
+ (t
+ nil))))
+
+;; ;; list files recursively
+;; (defun howm-files-in-directory (dir &optional exclusion-checker)
+;; (when (null exclusion-checker)
+;; (setq exclusion-checker (lambda (x) nil)))
+;; (cond ((file-directory-p dir) (howm-files-in-directory-sub dir
+;; exclusion-checker))
+;; ((file-exists-p dir) (list dir))
+;; (t nil)))
+
+;; (defun howm-files-in-directory-sub (dir exclusion-checker)
+;; (cl-mapcan (lambda (f)
+;; (cond
+;; ((funcall exclusion-checker f) nil)
+;; ((file-directory-p f) (if (howm-subdirectory-p dir f t)
+;; (howm-files-in-directory f exclusion-checker)
+;; nil)) ;; exclude "." & ".."
+;; ((file-regular-p f) (list f))
+;; (t nil)))
+;; (directory-files dir t)))
+
+(defun howm-folder-get-page-create:dir (folder page-name)
+ (let* ((file (expand-file-name page-name folder))
+ (dir (file-name-directory file))
+ (createp (not (file-exists-p file))))
+ (make-directory dir t)
+ (cons (howm-make-page:file file) createp)))
+
+(defun howm-folder-territory-p:dir (folder name)
+ (howm-subdirectory-p folder name))
+
+;;;
+;;; pages folder: list of 'pages'
+;;;
+
+(defun howm-make-folder:pages (pages)
+ (cons ':pages pages))
+
+(defun howm-folder-pages:pages (folder)
+ (cdr folder))
+
+(defun howm-folder-items:pages (folder &optional recursive-p)
+ (let ((summary ""))
+ (mapcar (lambda (p) (howm-make-item p summary))
+ (howm-folder-pages:pages folder))))
+
+;; should be removed, or renamed at least
+(defun howm-folder-files:pages (folder &optional exclusion-checker)
+ (remove nil (mapcar #'howm-page-name (howm-folder-pages:pages folder))))
+
+(defun howm-folder-grep-internal:pages (folder pattern &optional fixed-p)
+ (let ((h (howm-classify #'howm-page-type (howm-folder-pages:pages folder) t)))
+ ;; get result for each type
+ (apply #'append (mapcar (lambda (p)
+ (let ((type (car p))
+ (searcher (cdr p)))
+ (let ((pages (reverse (cdr (assoc type h)))))
+ (funcall searcher pages pattern fixed-p))))
+ howm-folder-grep-internal:pages-searcher))))
+
+(howm-defvar-risky howm-folder-grep-internal:pages-searcher
+ '((:file . howm-folder-grep-internal:pages-files)
+ (:buf . howm-folder-grep-internal:pages-buffers)))
+(defun howm-folder-grep-internal:pages-files (pages pattern fixed-p)
+ (let ((files (mapcar #'howm-page-name pages)))
+ (howm-folder-grep-internal:files (howm-make-folder:files files)
+ pattern fixed-p)))
+(defun howm-folder-grep-internal:pages-buffers (pages pattern fixed-p)
+ (let ((bufs pages)
+ (r (howm-fake-grep-regexp pattern fixed-p))
+ (c *howm-view-force-case-fold-search*))
+ (let ((grep-result (cl-mapcan
+ (lambda (b)
+ (if (howm-buffer-killed-p b)
+ nil
+ (with-current-buffer b
+ (howm-fake-grep-current-buffer r b c))))
+ bufs)))
+ (mapcar (lambda (g)
+ (let ((buf (car g))
+ (place (cadr g))
+ (content (cl-caddr g)))
+ (howm-make-item (howm-make-page:buf buf) content place)))
+ grep-result))))
+
+(defun howm-list-buffers (&optional all)
+ "Show buffer list. If ALL is non-nil, hidden buffers are also listed."
+ (interactive "P")
+ (let* ((bufs (if all
+ (buffer-list)
+ (cl-remove-if
+ (lambda (b)
+ (let ((name (buffer-name b)))
+ (or (null name)
+ (string-match "^ " name)
+ (member name howm-list-buffers-exclude)
+ (with-current-buffer b
+ (member major-mode
+ '(howm-view-summary-mode
+ howm-view-contents-mode))))))
+ (buffer-list))))
+ (pages (mapcar (lambda (b) (howm-make-page:buf b)) bufs))
+ (folder (howm-make-folder:pages pages)))
+ (howm-view-directory folder)))
+(defun howm-occur (regexp)
+ "Show all lines in the current buffer containing a match for REGEXP."
+ (interactive "sSearch (regexp): ")
+ (let ((howm-view-use-grep (if howm-occur-force-fake-grep
+ nil
+ howm-view-use-grep)))
+ (howm-view-search-folder regexp
+ (howm-make-folder:pages
+ (list (howm-make-page:buf (current-buffer)))))))
+(defun howm-list-mark-ring ()
+ "Show all marks in the current buffer."
+ (interactive)
+ (let* ((page (howm-make-page:buf (current-buffer)))
+ (items (mapcar (lambda (m)
+ (let ((place (riffle-get-place m))
+ (summary (save-excursion
+ (goto-char m)
+ (let ((b (line-beginning-position))
+ (e (line-end-position)))
+ (buffer-substring b e)))))
+ (howm-make-item page summary place)))
+ (howm-cl-remove-duplicates*
+ (cons (mark-marker) mark-ring)
+ :test #'howm-mark-same-line-p))))
+ (howm-view-summary "<marks>" items)))
+(defun howm-mark-same-line-p (m1 m2)
+ (apply #'=
+ (mapcar (lambda (m)
+ (save-excursion
+ (goto-char m)
+ (line-beginning-position)))
+ (list m1 m2))))
+
+;;;
+;;; files folder: list of file names
+;;;
+
+;;; This folder is treated specially for efficient search.
+
+;;; Fix me: [2005-02-17]
+;;; Sorry. I can't remember whether 'file' means really 'file' only.
+;;; It may be 'file or directory'.
+
+;; Try this to check it.
+;; (setq howm-menu-top nil)
+;; (setq howm-menu-file (expand-file-name "sample/0000-00-00-000000.howm"))
+;; (setq howm-directory (howm-make-folder:files (mapcar (lambda (f) (expand-file-name f "sample/")) '("top.txt" "search.txt"))))
+
+(defun howm-make-folder:files (files)
+ (cons ':files files))
+
+(defun howm-folder-items:files (folder &optional recursive-p)
+ (let ((summary ""))
+ (mapcar (lambda (f)
+ (howm-make-item (howm-make-page:file f) summary))
+ (howm-folder-files:files folder))))
+
+(defun howm-folder-grep-internal:files (folder pattern &optional fixed-p)
+ (howm-grep-items pattern (howm-folder-files:files folder) fixed-p))
+
+;; should be removed, or renamed at least
+(defun howm-folder-files:files (folder &optional exclusion-checker)
+ (cdr folder))
+
+;;;
+;;; nest folder: list of folders
+;;;
+
+;; Try this to check it.
+;; (setq howm-menu-top nil)
+;; (setq howm-menu-file (expand-file-name "sample/0000-00-00-000000.howm"))
+;; (setq howm-directory (howm-make-folder:nest (mapcar #'expand-file-name '("sample" "/usr/share/emacs/site-lisp/navi2ch"))))
+
+(defun howm-make-folder:nest (list-of-folders)
+ (cons ':nest list-of-folders))
+
+(defun howm-folder-subfolders (self)
+ (cdr self))
+
+(defun howm-folder-items:nest (folder &optional recursive-p)
+ (cl-mapcan (lambda (f) (howm-folder-items f recursive-p))
+ (howm-folder-subfolders folder)))
+
+(defun howm-folder-grep-internal:nest (folder pattern &optional fixed-p)
+ (cl-mapcan (lambda (f) (howm-folder-grep-internal f pattern fixed-p))
+ (howm-folder-subfolders folder)))
+
+;;;
+;;; namazu folder: namazu index directory
+;;;
+
+;; (cf.) Namazu: a Full-Text Search Engine http://www.namazu.org/index.html.en
+
+;; test:
+(defun howm-search-namazu (dir pattern)
+ (interactive "Dindex directory:
+ssearch: ")
+ (let ((folder (howm-make-folder:namazu (expand-file-name dir))))
+ (howm-view-summary "<namazu>"
+ (howm-view-search-folder-items pattern folder))))
+
+(defun howm-make-folder:namazu (index-dir)
+ (cons ':namazu (expand-file-name index-dir)))
+
+(defun howm-folder-items:namazu (folder &optional recursive-p)
+ (let ((files (howm-folder-files:namazu folder)))
+ (howm-folder-items:files (howm-make-folder:files files))))
+
+;; should be removed, or renamed at least
+(defun howm-folder-files:namazu (folder &optional exclusion-checker)
+ (with-temp-buffer
+ (insert-file-contents (expand-file-name "NMZ.r"
+ (cdr folder)))
+ (split-string (buffer-substring-no-properties (point-min)
+ (point-max))
+ "[\n\r\v]+")))
+
+(defun howm-folder-grep-internal:namazu (folder pattern-list &optional fixed-p)
+ (let* ((index-dir (cdr folder))
+ (namazu-pattern (mapconcat #'identity pattern-list " or "))
+ (hits (with-temp-buffer
+ (call-process "namazu" nil t nil
+ "-l" "-a" namazu-pattern index-dir)
+ (split-string (buffer-substring-no-properties (point-min)
+ (point-max))
+ "[\n\r\v]+")))
+ (files (cl-remove-if (lambda (f) (not (file-exists-p f))) hits)))
+ ;; grep again
+ (let ((howm-view-use-grep nil)) ;; Japanese encoding is annoying.
+ (howm-folder-grep-internal (howm-make-folder:files files)
+ pattern-list fixed-p))))
+
+;;;
+;;; rot13dir folder: almost same as dir folder except that files are rot13ed.
+;;;
+
+(defun howm-make-folder:rot13dir (dir)
+ (cons ':rot13dir dir))
+
+(defun howm-folder-items:rot13dir (folder &optional recursive-p)
+ (let ((files (if recursive-p
+ (howm-files-in-directory (cdr folder))
+ (directory-files (cdr folder) t))))
+ (mapcar (lambda (f)
+ (howm-make-item (howm-make-page:rot13file f)))
+ files)))
+
+(defun howm-folder-grep-internal:rot13dir (folder pattern-list &optional fixed-p)
+ (let* ((dir (cdr folder))
+ (ps (mapcar (lambda (p) (yarot13-rotate-string p)) pattern-list))
+ (is (howm-folder-grep-internal:dir dir ps fixed-p)))
+ (mapc (lambda (i)
+ (let ((file (howm-page-name (howm-item-page i)))
+ (summary (howm-item-summary i)))
+ (howm-item-set-page i (howm-make-page:rot13file file))
+ (howm-item-set-summary i (yarot13-rotate-string summary))))
+ is)
+ is))
+
+;;; For backward compatibility. Don't use it any more.
+
+(defalias 'howm-view-directory-items #'howm-folder-items)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Grep
+
+;; Fix me:
+;; Name of arguments are inappropriate.
+;; Pattern and str may be list of strings.
+;; File-list may be a string.
+
+(defun howm-folder-grep (folder pattern &optional fixed-p)
+ (when (stringp pattern)
+ (setq pattern (list pattern)))
+ (howm-folder-grep-internal folder pattern fixed-p))
+
+(defvar *howm-view-force-case-fold-search* nil) ;; dirty!
+(howm-defvar-risky howm-view-grep-log-file nil)
+(defvar howm-view-grep-log-format "> %s | %s")
+
+(defun howm-grep-items (str file-list &optional fixed-p exclusion-checker)
+ (let* ((found (howm-grep str file-list fixed-p))
+ (items (mapcar (lambda (z)
+ (let ((file (car z))
+ (place (cadr z))
+ (content (cl-caddr z)))
+ (if (and exclusion-checker
+ (funcall exclusion-checker file))
+ nil
+ (howm-make-item file content place))))
+ found)))
+ (if exclusion-checker
+ (remove nil items)
+ items)))
+
+(defun howm-grep (str file-list &optional fixed-p)
+ (when howm-view-grep-log-file
+ (howm-write-log str howm-view-grep-log-format howm-view-grep-log-file))
+ (when (stringp file-list)
+ (setq file-list (list file-list)))
+ (let ((grep-func (cond ((eq howm-view-use-grep t) 'howm-real-grep)
+ ((null howm-view-use-grep) 'howm-fake-grep)
+ ((functionp howm-view-use-grep) howm-view-use-grep)
+ (t (error "No function %s." howm-view-use-grep)))))
+ (funcall grep-func
+ str file-list fixed-p *howm-view-force-case-fold-search*)))
+
+(defun howm-real-grep (str file-list &optional fixed-p force-case-fold)
+ "Call grep and parse its result.
+'((file line-number line) (file line-number line) ...)
+"
+ (if (howm-grep-multi-p)
+ (howm-real-grep-multi str file-list fixed-p force-case-fold)
+ (howm-real-grep-single str file-list fixed-p force-case-fold)))
+
+(defun howm-grep-multi-p ()
+ howm-view-grep-file-stdin-option)
+
+;; obsolete
+(defun howm-real-grep-single (str file-list
+ &optional fixed-p force-case-fold)
+ "Call grep and parse its result.
+'((file line-number line) (file line-number line) ...)
+"
+ (when (listp str)
+ (if (null (cdr str))
+ (setq str (car str))
+ (error "Multiple patterns are not supported: %s" str)))
+ (let ((grep-command (or (and fixed-p howm-view-fgrep-command)
+ howm-view-grep-command))
+ (opt (split-string howm-view-grep-option))
+ (eopt (and howm-view-grep-expr-option
+ (list howm-view-grep-expr-option)))
+ (case-fold (or force-case-fold
+ (not (let ((case-fold-search nil))
+ (string-match "[A-Z]" str))))))
+ (cl-labels ((add-opt (pred x) (when (and pred x) (setq opt (cons x opt)))))
+ (add-opt case-fold howm-view-grep-ignore-case-option)
+ (add-opt fixed-p howm-view-grep-fixed-option)
+ (add-opt (not fixed-p) howm-view-grep-extended-option))
+ (with-temp-buffer
+ (let* ((fs (howm-expand-file-names file-list))
+ (lines (howm-call-process* grep-command
+ `(,@opt ,@eopt ,str) fs))
+ (parsed (mapcar 'howm-grep-parse-line lines)))
+ (remove nil parsed)))))
+
+(defun howm-real-grep-multi (str file-list &optional fixed-p force-case-fold)
+ (let ((grep-command (or (and fixed-p howm-view-fgrep-command)
+ howm-view-grep-command))
+ (opt (split-string howm-view-grep-option))
+ (eopt (split-string howm-view-grep-file-stdin-option)))
+ (let* ((str-list (cond ((stringp str) (list str))
+ ((listp str) str)
+ (t (error "Wrong type: %s" str))))
+ (caps-p (cl-member-if (lambda (s) (howm-capital-p s)) str-list))
+ (case-fold (or force-case-fold (not caps-p))))
+ (cl-labels ((add-opt (pred x) (when (and pred x) (setq opt (cons x opt)))))
+ (add-opt case-fold howm-view-grep-ignore-case-option)
+ (add-opt fixed-p howm-view-grep-fixed-option)
+ (add-opt (not fixed-p) howm-view-grep-extended-option))
+ (with-temp-buffer
+ (let* ((fs (howm-expand-file-names file-list))
+ (pat (apply #'concat
+ (mapcar (lambda (s) (concat s "\n")) str-list)))
+ (lines (howm-call-process* grep-command
+ `(,@opt ,@eopt) fs
+ nil pat))
+ (parsed (mapcar 'howm-grep-parse-line lines)))
+ (remove nil parsed))))))
+
+(defun howm-fake-grep (str file-list &optional fixed-p force-case-fold)
+ "Search STR in files.
+Return a list ((name number str) (name number str) ...), where
+name is file name, number is line number, and str is line content.
+FILE-LIST is list of file names.
+If FIXED-P is non-nil, regexp search is performed.
+If FIXED-P is nil, fixed string search is performed.
+When STR has no capital letters or FORCE-CASE-FOLD is non-nil,
+difference of capital letters and small letters are ignored.
+
+Extended feature:
+STR can be list of strings. They are regarded as 'or' pattern of all elements."
+ (cl-mapcan (lambda (file)
+ (howm-fake-grep-file (howm-fake-grep-regexp str fixed-p)
+ file force-case-fold))
+ (cl-mapcan #'howm-files-in-directory file-list)))
+
+(defun howm-fake-grep-regexp (str &optional fixed-p)
+ (let ((str-list (if (stringp str) (list str) str)))
+ (if fixed-p
+ (regexp-opt str-list)
+ (mapconcat (lambda (s) (format "\\(%s\\)" s)) str-list "\\|"))))
+
+(defun howm-fake-grep-file (reg file force-case-fold)
+ (let ((b (get-file-buffer file)))
+ (if (and b howm-view-watch-modified-buffer)
+ (with-current-buffer b
+ (howm-fake-grep-current-buffer reg file force-case-fold))
+ (with-temp-buffer
+ (insert-file-contents file)
+ (howm-fake-grep-current-buffer reg file force-case-fold)))))
+
+(defun howm-fake-grep-current-buffer (reg file force-case-fold)
+ (save-excursion
+ (save-restriction
+ (widen)
+ (goto-char (point-max))
+ (let* ((found nil)
+ (case-fold-search (or force-case-fold (not (howm-capital-p reg)))))
+ (while (re-search-backward reg nil t)
+ (beginning-of-line)
+ (setq found
+ (cons (list file
+ (riffle-get-place)
+ (buffer-substring-no-properties (point)
+ (line-end-position)))
+ found)))
+ found))))
+
+(defun howm-grep-parse-line (line)
+ (if (string-match "^\\(\\([a-zA-Z]:/\\)?[^:]*\\):\\([0-9]*\\):\\(.*\\)$"
+ line)
+ (let ((file (match-string 1 line))
+ (line (string-to-number (match-string 3 line)))
+ (content (match-string 4 line)))
+ (list file line content))
+ nil))
+
+;; For backward compatibility. Don't use them any more.
+(defalias 'howm-view-grep #'howm-grep)
+(defalias 'howm-view-call-process #'howm-call-process)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; class Page
+
+;; * class Page: abstraction of file
+
+;; Fix me: confusion between 'page name' and 'file name',
+;; especially for a buffer.
+
+;; (Wrong comments. Ignore me.)
+;; * folder
+;; * name
+;; * created_time
+;; * modified_time
+;; * load
+;; * save(text)
+
+(defun howm-page-type (page &rest r)
+ (cond ((stringp page) ':file)
+ ((bufferp page) ':buf)
+ ((null page) ':nil)
+ ((listp page) (car page))))
+
+(howm-defvar-risky howm-page-dispatchers (list #'howm-page-type))
+
+(gfunc-with howm-page-dispatchers
+ (gfunc-def howm-page-name (page))
+ (gfunc-def howm-page-mtime (page))
+ (gfunc-def howm-page-open (page))
+ (gfunc-def howm-page-insert (page))
+ (gfunc-def howm-page-viewer (page))
+ (gfunc-def howm-page-set-configuration (page))
+ )
+
+(defun howm-page= (x y)
+ (equal x y))
+
+(defun howm-page-abbreviate-name (page)
+ (howm-abbreviate-file-name (format "%s" (howm-page-name page))))
+
+(defalias 'howm-save-buffer #'save-buffer)
+
+(defun howm-insert-buffer-contents (buffer)
+ (insert (with-current-buffer buffer
+ (save-restriction
+ (widen)
+ (let ((limit (point-max)))
+ (when howm-view-contents-limit
+ (setq limit (min limit howm-view-contents-limit)))
+ (buffer-substring-no-properties (point-min) limit))))))
+
+;; (defun howm-page-insert-range ()
+;; (let ((limit (point-max)))
+;; (when howm-view-contents-limit
+;; (setq limit (min limit howm-view-contents-limit)))
+;; (list (point-min) limit)))
+
+;; (defun howm-page-save (&optional args)
+;; (interactive "p")
+;; (with-current-buffer (get-file-buffer (howm-page-name howm-buffer-page))
+;; (apply #'save-buffer args)))
+
+;; (defun howm-save-buffer (&optional args)
+;; (interactive "p")
+;; (prog1
+;; (save-buffer args)
+;; (howm-after-save)))
+
+;;;
+;;; file page: name of file
+;;;
+
+(defun howm-make-page:file (filename)
+ filename)
+
+(defun howm-page-name:file (page)
+ page)
+
+(defun howm-page-mtime:file (page)
+ (nth 5 (file-attributes (howm-page-name page))))
+
+(defun howm-page-open:file (page)
+ (find-file (howm-page-name page))
+ ;; widen is desired when corresponding file is already opened and
+ ;; its buffer is narrowed.
+ (widen))
+
+(defun howm-page-insert:file (page)
+ (let ((b (get-file-buffer page)))
+ (if (and b
+ howm-view-watch-modified-buffer
+ (not howm-view-use-grep))
+ (howm-insert-buffer-contents b)
+ (howm-insert-file-contents page))))
+
+(defun howm-page-viewer:file (page)
+ (let* ((ls (lambda (dir)
+ (with-temp-buffer
+ (insert-directory dir "-l")
+ (buffer-substring-no-properties (point-min) (point-max)))))
+ (dir-viewer (and (file-directory-p page)
+ (howm-make-viewer:func #'find-file ls)))
+ (viewer (cdr (cl-assoc-if (lambda (reg) (string-match reg page))
+ howm-view-external-viewer-assoc))))
+ (or viewer dir-viewer
+ (and howm-view-use-mailcap
+ (let* ((ext (if (string-match "\\.[^\\.]+$" page)
+ (match-string 0 page)
+ ""))
+ (type (howm-funcall-if-defined
+ (mailcap-extension-to-mime ext)))
+ (type-match (lambda (r) (string-match r type))))
+ (cond ((null type)
+ nil)
+ ((cl-member-if type-match howm-view-open-by-myself)
+ nil)
+ (t
+ (howm-funcall-if-defined
+ (mailcap-mime-info type)))))))))
+
+(defun howm-page-set-configuration:file (page)
+ (howm-set-configuration-for-file-name page))
+
+;;;
+;;; buffer page: buffer object
+;;;
+
+(defun howm-make-page:buf (buf)
+ buf)
+
+(defun howm-page-name:buf (page)
+ (buffer-name page))
+
+(defconst howm-dummy-mtime (encode-time 0 0 9 1 1 1970)
+ "Dummy mtime which has no meaning.")
+
+(defun howm-page-mtime:buf (page)
+ howm-dummy-mtime)
+
+(defun howm-page-open:buf (page)
+ (switch-to-buffer page))
+
+(defun howm-page-insert:buf (page)
+ (when (not (howm-buffer-killed-p page))
+ (howm-insert-buffer-contents page)))
+
+(defun howm-page-viewer:buf (page)
+ nil)
+;; (howm-make-viewer:func #'switch-to-buffer))
+
+(defun howm-page-set-configuration:buf (page)
+ (when (buffer-file-name page)
+ (howm-set-configuration-for-file-name (buffer-file-name page))))
+
+;;;
+;;; nil page: dummy page
+;;;
+
+(defun howm-make-page:nil ()
+ nil)
+
+(defun howm-page-name:nil (page)
+ "")
+
+(defun howm-page-mtime:nil (page)
+ howm-dummy-mtime)
+
+(defun howm-page-open:nil (page)
+ "Do nothing."
+ nil)
+
+(defun howm-page-insert:nil (page)
+ "Do nothing."
+ nil)
+
+(defun howm-page-viewer:nil (page)
+ nil)
+
+(defun howm-page-set-configuration:nil (page)
+ "Do nothing."
+ nil)
+
+;;;
+;;; rot13file page: almost same as file except that it is rot13ed
+;;;
+
+(defun howm-make-page:rot13file (filename)
+ (cons ':rot13file filename))
+
+(defun howm-page-name:rot13file (page)
+ (howm-page-name (cdr page)))
+
+(defun howm-page-mtime:rot13file (page)
+ (howm-page-mtime:file (cdr page)))
+
+(defun howm-page-open:rot13file (page)
+ (yarot13-find-file (howm-page-name page))
+ )
+
+(defun howm-page-insert:rot13file (page)
+ (yarot13-insert-file-contents (howm-page-name page)))
+
+(defun howm-page-viewer:rot13file (page)
+ nil)
+
+(defun howm-page-set-configuration:rot13file (page)
+ (howm-set-configuration-for-file-name (howm-page-name page)))
+
+;;; Clean me.
+
+;; (defun howm-file-path (&optional time)
+;; (expand-file-name (howm-file-name time) howm-directory))
+
+(defun howm-create-file (&optional keep-cursor-p)
+ (let* ((pc (howm-folder-get-page-create howm-directory (howm-file-name)))
+ (page (car pc))
+ (createp (cdr pc)))
+ (howm-page-open page)
+ (when (not keep-cursor-p)
+ (widen)
+ (goto-char (point-max)))
+ (when createp
+ (run-hooks 'howm-create-file-hook))
+ createp))
+
+;; (defun howm-create-file (&optional keep-cursor-p)
+;; (let* ((file (howm-file-path))
+;; (dir (file-name-directory file))
+;; (createp (not (file-exists-p file))))
+;; (make-directory dir t)
+;; (howm-page-open file)
+;; (when createp
+;; (run-hooks 'howm-create-file-hook))
+;; (when (not keep-cursor-p)
+;; (widen)
+;; (goto-char (point-max)))
+;; createp))
+
+;;; viewer
+
+;; Viewer is one of the following.
+;; func ==> (func) is called after (find-file page).
+;; (func) ==> (func page) is called.
+;; (func . previewer)
+;; ==> (func page) and (previewer page) are called for open and preview
+;; (previewer must return a string).
+;; "str" ==> (format "str" page) is externally executed on shell.
+
+(defun howm-viewer-type (viewer &rest r)
+ (cond ((stringp viewer) ':str)
+ ((functionp viewer) ':func0)
+ ((listp viewer) ':func)))
+
+(howm-defvar-risky howm-viewer-dispatchers (list #'howm-viewer-type))
+
+(gfunc-with howm-viewer-dispatchers
+ (gfunc-def howm-viewer-call (viewer page))
+ (gfunc-def howm-viewer-indicator (viewer page))
+)
+
+(defun howm-make-viewer:func (f &optional previewer)
+ (cons f previewer))
+
+(when howm-view-use-mailcap
+ (require 'mailcap)
+ (howm-funcall-if-defined (mailcap-parse-mailcaps))
+ (howm-funcall-if-defined (mailcap-parse-mimetypes)))
+
+(defun howm-viewer-call:str (viewer page)
+ (start-process "howm-view-external-viewer" nil
+ shell-file-name
+ shell-command-switch
+ (format viewer (howm-page-name page))))
+(defun howm-viewer-call:func0 (viewer page)
+ (howm-page-open page)
+ (funcall viewer))
+(defun howm-viewer-call:func (viewer page)
+ (funcall (car viewer) page))
+
+(defvar howm-viewer-indicator-format "%%%%%% %s %%%%%%")
+(defun howm-viewer-indicator-gen (fmt &rest args)
+ (format howm-viewer-indicator-format
+ (apply #'format (cons fmt args))))
+(defun howm-viewer-indicator:str (viewer page)
+ (howm-viewer-indicator-gen viewer (howm-page-name page)))
+(defun howm-viewer-indicator:func0 (viewer page)
+ (howm-viewer-indicator-gen "%S %S" viewer page))
+(defun howm-viewer-indicator:func (viewer page)
+ (let ((func (car viewer))
+ (previewer (cdr viewer)))
+ (if previewer
+ (funcall previewer page)
+ (howm-viewer-indicator-gen "(%S %S)" func page))))
+
+(defadvice action-lock-find-file (around external-viewer (f u) activate)
+ (let ((viewer (howm-page-viewer f)))
+ (if viewer
+ (howm-viewer-call viewer (expand-file-name f))
+ ad-do-it)))
+
+;; For backward compatibility. Don't use them any more.
+(defalias 'howm-view-external-viewer #'howm-page-viewer)
+(defalias 'howm-view-call-external-viewer #'howm-viewer-call)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; class Item
+
+;; Fix me: confusion between howm-item-page and howm-item-name
+
+;; * class Item: abstraction of hit position in file
+;; * page
+;; * place
+;; * and conventional properties
+
+(defun howm-make-item (page &optional summary place offset home privilege)
+ (list page summary place offset home privilege))
+(defun howm-item-page (item) (nth 0 item)) ;; page can be nil.
+(defun howm-item-summary (item) (howm-item-nth 1 item ""))
+(defun howm-item-place (item) (howm-item-nth 2 item nil))
+(defun howm-item-offset (item) (howm-item-nth 3 item nil))
+(defun howm-item-home (item) (howm-item-nth 4 item nil))
+(defun howm-item-privilege (item) (howm-item-nth 5 item nil))
+(defun howm-item-nth (n item default)
+ (or (nth n item) default))
+(defun howm-item-set-page (item val)
+ (setf (nth 0 item) val))
+(defun howm-item-set-summary (item val)
+ (setf (nth 1 item) val))
+(defun howm-item-set-offset (item val)
+ (setf (nth 3 item) val))
+(defun howm-item-set-home (item val)
+ (setf (nth 4 item) val))
+(defun howm-item-set-privilege (item val)
+ (setf (nth 5 item) val))
+
+(defun howm-item-name (item)
+ (format "%s" (howm-page-name (howm-item-page item))))
+
+(defun howm-item-dup (item) (mapcar #'identity item))
+
+;; For backward compatibility. Don't use them any more.
+;; ;; item = (filename summary place offset home)
+(defun howm-view-make-item (filename &rest r)
+ (apply #'howm-make-item (cons (howm-make-page:file filename) r)))
+(defalias 'howm-view-item-filename #'howm-item-name)
+(defalias 'howm-view-item-summary #'howm-item-summary)
+(defalias 'howm-view-item-place #'howm-item-place)
+(defalias 'howm-view-item-offset #'howm-item-offset)
+(defalias 'howm-view-item-home #'howm-item-home)
+(defalias 'howm-view-item-privilege #'howm-item-privilege)
+(defalias 'howm-view-item-set-summary #'howm-item-set-summary)
+(defalias 'howm-view-item-set-offset #'howm-item-set-offset)
+(defalias 'howm-view-item-set-home #'howm-item-set-home)
+(defalias 'howm-view-item-set-privilege #'howm-item-set-privilege)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; search path
+
+;; historical & awkward mechanism
+
+(howm-defvar-risky howm-search-path nil)
+(defvar howm-search-other-dir nil)
+(defvar *howm-independent-directories* nil) ;; for internal use
+
+(defun howm-independent-search-path ()
+ (let ((c default-directory))
+ (and c
+ (car (cl-member-if (lambda (dir) (howm-subdirectory-p dir c))
+ *howm-independent-directories*)))))
+
+(defun howm-search-path (&optional ignore-independent-search-path)
+ (let ((d (howm-independent-search-path)))
+ (cond ((and d (not ignore-independent-search-path)) (list d))
+ (howm-search-other-dir (howm-search-path-multi))
+ (t (howm-search-path-single)))))
+(defun howm-search-path-single ()
+ (list howm-directory))
+(defun howm-search-path-multi ()
+ (cons howm-directory howm-search-path))
+
+(defun howm-search-path-folder (&optional ignore-independent-search-path)
+ (howm-make-folder:nest (howm-search-path ignore-independent-search-path)))
+
+(defun howm-toggle-search-other-dir (&optional arg)
+ "Change whether `howm-search-path' is searched or not.
+With arg, search `howm-search-path' iff arg is positive."
+ (interactive "P")
+ (setq howm-search-other-dir
+ (if arg
+ (> (prefix-numeric-value arg) 0)
+ (not howm-search-other-dir)))
+ (message "howm search-path = %s" (howm-search-path)))
+
+(defun howm-open-directory-independently (dir)
+ (interactive "DDirectory: ")
+ (add-to-list '*howm-independent-directories*
+ (expand-file-name dir))
+ (let ((default-directory dir))
+ (howm-normalize-show "" (howm-folder-items dir t))
+ (howm-keyword-add-items (howm-view-item-list))))
+
+(defvar howm-keyword-buffer-name-format " *howm-keys:%s*")
+(defun howm-keyword-buffer ()
+ (let* ((dir (howm-independent-search-path))
+ (buffer-name (format howm-keyword-buffer-name-format
+ (if dir (expand-file-name dir) ""))))
+ (if dir
+ (get-buffer-create buffer-name)
+ (howm-get-buffer-for-file (howm-keyword-file) buffer-name))))
+
+;;; exclusion
+
+;; Fix me on inefficiency.
+;;
+;; [2005-02-18] I can't remember why I checked relative path in old versions.
+;; [2005-04-24] Now I remember the reason.
+;; Some people like ~/.howm/ rather than ~/howm/ as their howm-directory.
+;; It must be included even if it matches to howm-excluded-file-regexp.
+;;
+;; Bug: (howm-exclude-p "~/howm/CVS") != (howm-exclude-p "~/howm/CVS/")
+(defun howm-exclude-p (filename)
+ (not (cl-find-if-not
+ (lambda (dir) (howm-folder-match-under-p dir
+ howm-excluded-file-regexp
+ filename))
+ (howm-search-path))))
+
+;;; howm-backend.el ends here
--- /dev/null
+;;; howm-common.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-common.el,v 1.90 2012-12-29 08:57:18 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+(require 'howm-vars)
+
+(defun howm-cl-remove-duplicates* (&rest args)
+ ":from-end version of `remove-duplicates'"
+ (apply #'cl-remove-duplicates `(,@args :from-end t)))
+
+(defun howm-sort (evaluator comparer obj-list)
+ (let* ((orig (mapcar (lambda (obj) (cons (funcall evaluator obj) obj))
+ obj-list))
+ (sorted (sort orig (lambda (x y)
+ (funcall comparer (car x) (car y))))))
+ (mapcar #'cdr sorted)))
+
+(defun howm-subdirectory-p (dir target &optional strict)
+ "For the directory DIR, check whether TARGET is under it.
+When TARGET and DIR are same, (not STRICT) is returned."
+ (and (stringp dir)
+ ;; avoid unnecessary password prompting
+ ;; (I'm not sure about the return value of file-remote-p.)
+ (eq (not (file-remote-p dir)) (not (file-remote-p target)))
+ (progn
+ (setq target (howm-normalize-file-name target))
+ (setq dir (howm-normalize-file-name dir))
+ (if (string= target dir)
+ (not strict)
+ (and (string-match (regexp-quote dir) target)
+ (= 0 (match-beginning 0)))))))
+
+(defun howm-normalize-file-name (filename)
+ (let* ((r (file-remote-p filename))
+ (f (if r
+ (concat r filename)
+ (file-truename (expand-file-name filename)))))
+ ;; for meadow
+ (if (string-match "^[A-Z]:" f)
+ (let ((drive (substring f 0 1))
+ (rest (substring f 1)))
+ (concat (downcase drive) rest))
+ f)))
+
+(defvar howm-abbreviate-file-name t)
+(defun howm-abbreviate-file-name (f)
+ (if (howm-abbreviate-file-name-p)
+ (abbreviate-file-name f)
+ f))
+;; for compatibility (incomplete)
+(howm-dont-warn-free-variable howm-template-file-abbrev)
+(howm-dont-warn-free-variable howm-view-header-abbrev)
+(defun howm-abbreviate-file-name-p ()
+ (cond ((boundp 'howm-template-file-abbrev) howm-template-file-abbrev)
+ ((boundp 'howm-view-header-abbrev) howm-view-header-abbrev)
+ (t howm-abbreviate-file-name)))
+;; (defun howm-abbreviate-file-name-p () howm-abbreviate-file-name)
+
+(defun howm-expand-file-names (file-list)
+ (mapcar (lambda (f) (directory-file-name (expand-file-name f)))
+ file-list))
+
+(defun howm-insert-file-contents (file)
+ (insert-file-contents file nil nil howm-view-contents-limit))
+
+;;; for XEmacs fallback
+;; (if (not (fboundp 'font-lock-fontify-block))
+;; (defalias 'font-lock-fontify-block 'font-lock-fontify-buffer))
+;;; If you use APEL, you can replace a below block with (require 'poe).
+(if (not (fboundp 'line-beginning-position))
+ (defalias 'line-beginning-position 'point-at-bol))
+(if (not (fboundp 'line-end-position))
+ (defalias 'line-end-position 'point-at-eol))
+;;; Imported from APEL 10.6
+(if (not (fboundp 'match-string-no-properties))
+ ;; Emacs 20.3 and later: (match-string-no-properties NUM &optional STRING)
+ (defun match-string-no-properties (num &optional string)
+ "Return string of text matched by last search, without text properties.
+NUM specifies which parenthesized expression in the last regexp.
+ Value is nil if NUMth pair didn't match, or there were less than NUM pairs.
+Zero means the entire text matched by the whole regexp or whole string.
+STRING should be given if the last search was by `string-match' on STRING."
+ (if (match-beginning num)
+ (if string
+ (let ((result
+ (substring string (match-beginning num) (match-end num))))
+ (set-text-properties 0 (length result) nil result)
+ result)
+ (buffer-substring-no-properties (match-beginning num)
+ (match-end num))))))
+
+(defmacro howm-message-time (name &rest body)
+ (declare (indent 1))
+ `(let ((howm-message-time-0 (current-time)))
+ (prog1
+ (progn
+ ,@body)
+ (when howm-message-time
+ (message "%s (%s: %.2f sec)"
+ (or (current-message) "")
+ ,name
+ (howm-time-difference-second (current-time)
+ howm-message-time-0))))))
+;; (defun howm-message-time-from (ti0)
+;; (when howm-message-time
+;; (let ((ti1 (current-time)))
+;; (message "took %.2f sec."
+;; (howm-time-difference-second ti1 ti0)))))
+(defun howm-time-difference-second (ti1 ti0)
+ (let ((h (- (car ti1) (car ti0)))
+ (l (- (cadr ti1) (cadr ti0)))
+ (m (- (cl-caddr ti1) (cl-caddr ti0)))
+ )
+ (+ (* h 65536) l
+ (* m 1e-6)
+ )))
+
+(defun howm-xor (a b)
+ (if a (not b) b))
+(defun howm-buffer-empty-p (&optional buf)
+ ;; emacs20 doesn't have (buffer-size buf)
+ (with-current-buffer (or buf (current-buffer))
+ (= (buffer-size) 0)))
+(defun howm-point-beginning-of-line ()
+ (save-excursion
+ (beginning-of-line)
+ (point)))
+(defun howm-point-end-of-line ()
+ (save-excursion
+ (end-of-line)
+ (point)))
+
+(defun howm-inhibit-warning-in-compilation (&rest dummy)
+ (error "This is dummy function to inhibit warning in compilation."))
+
+;; (defvar howm-reminder-quick-check-key ";")
+
+(defun howm-get-value (z)
+ (if (functionp z)
+ (funcall z)
+ z))
+
+;; (howm-map-with-index #'cons '(a b c)) ==> ((a . 0) (b . 1) (c . 2))
+(defun howm-map-with-index (f seq)
+ "Map with index. For example,
+(howm-map-with-index #'cons '(a b c)) returns ((a . 0) (b . 1) (c . 2))."
+ (let ((howm-map-with-index-count -1))
+ (mapcar (lambda (x)
+ (setq howm-map-with-index-count (1+ howm-map-with-index-count))
+ (apply f (list x howm-map-with-index-count)))
+ seq)))
+
+(defun howm-capital-p (str)
+ "Return nil iff STR has no capital letter."
+ (let ((case-fold-search nil))
+ (string-match "[A-Z]" str)))
+
+(defun howm-single-element-p (a)
+ (and a (null (cdr a))))
+
+(defun howm-read-string (prompt &optional immediate-chars continued-chars
+ pass-through pass-ret-through)
+ "Read a string from minibuffer with some extensions to `read-string'.
+(1) When the first input char is in IMMEDIATE-CHARS string,
+this function returns the char as one letter string
+without waiting for rest input and RET key.
+(2) Otherwise, when the char is in CONTINUED-CHARS,
+this function is equivalent to read-string.
+(3) When the char is not in either IMMEDIATE-CHARS or CONTINUED-CHARS,
+the behavior depends on PASS-THROUGH.
+If PASS-THROUGH is nil, error is raised.
+If PASS-THROUGH is non-nil, the input event is unread and nil is returned.
+(4) Note that RET key at the first char is the special case.
+If PASS-RET-THROUGH is nil, empty string is returned.
+If PASS-RET-THROUGH is non-nil, RET is unread and nil is returned.
+"
+ (if (null immediate-chars)
+ (read-string prompt)
+ (save-window-excursion
+ (message "%s" prompt)
+ (select-window (minibuffer-window))
+ (let* ((ev (howm-read-event))
+ (ch (howm-event-to-character ev)))
+ (cond ((howm-characterp ch)
+ (howm-read-string-sub ev ch
+ prompt immediate-chars continued-chars
+ pass-through pass-ret-through))
+ (t
+ (howm-read-string-fail ev pass-through pass-ret-through)))))))
+
+(defun howm-read-string-sub (event char
+ prompt immediate-chars continued-chars
+ pass-through pass-ret-through)
+ (let* ((ichars (string-to-list (or immediate-chars "")))
+ (cchars (string-to-list (or continued-chars "")))
+ (first-char char)
+ (first-str (char-to-string first-char)))
+ (cond ((member first-char ichars)
+ first-str)
+ ((member first-char cchars)
+ (read-string prompt (cons first-str (1+ (length first-str)))))
+ (t
+ (howm-read-string-fail event pass-through pass-ret-through)))))
+
+(defun howm-read-string-fail (event pass-through pass-ret-through)
+ (cond ((and (howm-ret-key-event-p event) (not pass-ret-through))
+ "")
+ (pass-through
+ (progn
+ (howm-unread-event event)
+ nil))
+ (t
+ (error "Invalid input."))))
+
+(defun howm-unread-event (event)
+ (setq unread-command-events
+ (cons event unread-command-events)))
+
+(defun howm-first-n (seq n)
+ "Return the subsequence of SEQ from start to N-th item.
+(howm-first-n '(a b c d e) 3) ==> (a b c)
+(howm-first-n '(a b c d e) 10) ==> (a b c d e)
+"
+ ;; GNU emacs: (subseq '(a b c d e) 0 7) ==> (a b c d e nil nil)
+ ;; xemacs: (subseq '(a b c d e) 0 7) ==> Args out of range
+ (if (<= (length seq) n)
+ seq
+ (cl-subseq seq 0 n)))
+
+;; check
+(let ((seq '(a b c d e))
+ (qa '((0 . nil)
+ (4 . (a b c d))
+ (5 . (a b c d e))
+ (7 . (a b c d e)))))
+ (mapc (lambda (z)
+ (let ((ans (howm-first-n seq (car z))))
+ (when (not (equal ans (cdr z)))
+ (error "howm-first-n is wrong: %s for %s" ans z))))
+ qa))
+
+(defun howm-replace-region (beg end val)
+ (delete-region beg end)
+ ;; `format' in xemacs doesn't keep text properties.
+ (insert (if (stringp val)
+ val
+ (format "%s" val))))
+
+(defmacro howm-edit-read-only-buffer (&rest body)
+ (declare (indent 0))
+ `(progn
+ (buffer-disable-undo)
+ (setq buffer-read-only nil)
+ ,@body
+ (set-buffer-modified-p nil)
+ (setq buffer-read-only t)))
+
+(defmacro howm-rewrite-read-only-buffer (&rest body)
+ (declare (indent 0))
+ `(howm-edit-read-only-buffer
+ (erase-buffer)
+ ,@body))
+
+;; (put 'howm-rewrite-read-only-buffer 'lisp-indent-hook 0)
+;; (defmacro howm-rewrite-read-only-buffer (&rest body)
+;; `(progn
+;; (setq buffer-read-only nil)
+;; (erase-buffer)
+;; ,@body
+;; (set-buffer-modified-p nil)
+;; (setq buffer-read-only t)))
+
+(defun howm-get-buffer-for-file (file &optional buffer-name)
+ "Get buffer for FILE, and rename buffer if BUFFER-NAME is given."
+ ;; This may cause "File XXX no longer exists!" message if the file
+ ;; is deleted and the corresponding buffer still exists.
+ (let ((buf (find-file-noselect file)))
+ (when buffer-name
+ (with-current-buffer buf
+ (rename-buffer buffer-name)))
+ buf))
+
+(defun howm-basic-save-buffer ()
+ "Silent version of `basic-save-buffer' without \"Wrote ...\" message."
+ (let ((original-write-region (symbol-function 'write-region)))
+ ;; make silent `write-region', which doesn't say "Wrote ...".
+ ;; I borrowed the idea from Okuyama's auto-save-buffers. thx.
+ ;; http://homepage3.nifty.com/oatu/emacs/misc.html
+ (cl-flet ((write-region (start end filename
+ &optional append visit lockname must)
+ (funcall original-write-region
+ start end filename append
+ 'dont-say-wrote-foobar
+ lockname must)))
+ (basic-save-buffer)))
+ ;; As a side effect, basic-save-buffer does not update buffer-modified-p.
+ (set-visited-file-modtime)
+ (set-buffer-modified-p nil))
+
+(defvar howm-log-buffer-name-format " *howm-log:%s*")
+(defun howm-write-log (message fmt file &optional limit remove-fmt)
+ "Write MESSAGE with format FMT to the top of FILE.
+FORMAT must have two %s; the formar is time and the latter is message.
+When LIMIT is non-nil, only that number of recent messages are recorded.
+When REMOVE-FMT is non-nil, it is used to generate regular expression
+to remove matched lines. REMOVE-FMT must have one %s."
+ (save-excursion
+ (let ((buffer-name (format howm-log-buffer-name-format
+ (file-name-nondirectory file))))
+ (with-current-buffer (howm-get-buffer-for-file file buffer-name)
+ (goto-char (point-min))
+ (when remove-fmt
+ (save-excursion
+ (flush-lines (format remove-fmt (regexp-quote message)))))
+ (insert (format fmt
+ (format-time-string howm-dtime-format (current-time))
+ message)
+ "\n")
+ (when limit
+ ;; Since I don't understand `selective-display' in goto-line,
+ ;; I avoid it.
+ (goto-char (point-min))
+ (when (= (forward-line limit) 0) ;; buffer lines > LIMIT
+ (delete-region (point) (point-max))))
+ (howm-basic-save-buffer)))))
+
+(defun howm-get-symbol (soft &rest args)
+ "Return the canonical symbol for a specified name.
+If SOFT is non-nil, return nil when the corresponding symbol does not exist.
+Name of returned symbol is concatenation of ARGS.
+Both strings and symbols are acceptable in ARGS."
+ (funcall (if soft #'intern-soft #'intern)
+ (mapconcat (lambda (s)
+ (cond ((sequencep s) s)
+ ((symbolp s) (symbol-name s))
+ (t (error "Not supported: %S" s))))
+ args
+ "")))
+
+;; snap://Info-mode/elisp#Killing Buffers
+(defun howm-buffer-killed-p (buffer)
+ "Return t if BUFFER is killed."
+ (not (buffer-name buffer)))
+
+(defun howm-classify (classifier lis &optional reverse)
+ "Classify elements in given list.
+CLASSIFIER is criterion of classification for list LIS.
+If REVERSE is non-nil, order of elements are reversed (faster).
+For example,
+ (howm-classify (lambda (s) (substring s 0 1)) '(\"aaa\" \"abc\" \"xyz\"))
+returns ((\"a\" \"aaa\" \"abc\") (\"x\" \"xyz\"))."
+ (let ((ans nil))
+ (mapc (lambda (x)
+ (let* ((label (funcall classifier x))
+ (pair (assoc label ans)))
+ (if (null pair)
+ (setq ans (cons (cons label (list x)) ans))
+ (setcdr pair (cons x (cdr pair))))))
+ lis)
+ (if reverse
+ ans
+ (reverse (mapcar (lambda (pair) (cons (car pair) (reverse (cdr pair))))
+ ans)))))
+;; (howm-classify (lambda (s) (substring s 0 1)) '("aaa" "abc" "xyz"))
+
+(defun howm-message-nolog (str &rest args)
+ (let ((message-log-max nil))
+ (apply #'message `(,str ,@args))))
+
+(defun howm-decode-time (&optional specified-time)
+ "Decode SPECIFIED-TIME and remove DOW, DST, ZONE.
+When we do something like (encode-time (decode-time)), we use this function
+instead of the original `decode-time', so that we can force
+current timezone rule uniformly to avoid inconsistency."
+ (butlast (decode-time specified-time) 3))
+
+(defmacro howm-with-need (&rest body)
+ "Execute BODY where (need xxx) exits from this form if xxx is nil."
+ (declare (indent 0))
+ (let ((g (cl-gensym)))
+ `(catch ',g
+ (cl-labels ((need (x) (or x (throw ',g nil))))
+ ,@body))))
+
+(defun howm-goto-line (n)
+ ;; see the document of `goto-line'
+ (goto-char (point-min)) (forward-line (1- n)))
+
+;; view-in-background
+
+(defvar *howm-view-in-background* nil
+ "for internal use.
+Don't set this variable directly.
+Use `howm-view-in-background' and `howm-view-in-background-p' instead.")
+
+(defmacro howm-view-in-background (&rest body)
+ "Obsolete. Do not use this any more."
+ (declare (indent 0))
+ `(let ((*howm-view-in-background* t))
+ ,@body))
+
+(defun howm-view-in-background-p ()
+ *howm-view-in-background*)
+
+;;; history of search
+
+(defvar howm-history-format "> %s | %s")
+(defvar howm-history-remove-format "| %s$")
+
+(defun howm-write-history (message)
+ (when (and howm-history-file
+ (or (null howm-history-limit) (> howm-history-limit 0)))
+ (howm-write-log message howm-history-format howm-history-file
+ howm-history-limit
+ (and howm-history-unique howm-history-remove-format))))
+
+;;; call process
+
+(defvar howm-call-process-last-command nil
+ "List of arguments for last `howm-call-process'.
+This variable exists only for debug. You can reproduce the last call
+with the below code.
+ (apply #'howm-call-process howm-call-process-last-command)")
+
+(defmacro howm-with-coding-system (coding-system &rest body)
+ "With CODING-SYSTEM, execute BODY.
+examples:
+ (howm-with-coding-system 'euc-jp-unix ...) ;; for both read and write
+ (howm-with-coding-system '(utf-8-unix . sjis-unix) ...) ;; (read . write)
+ (howm-with-coding-system nil ...) ;; howm-process-coding-system is used."
+ (declare (indent 1))
+ (let ((g (cl-gensym))
+ (cs (or coding-system 'howm-process-coding-system)))
+ `(let* ((,g ,cs)
+ (coding-system-for-read (or (car-safe ,g) ,g))
+ (coding-system-for-write (or (cdr-safe ,g) ,g)))
+ ,@body)))
+
+(defun howm-call-process (command args
+ &optional expected-return-value stdin-string)
+ (setq howm-call-process-last-command (list command args
+ expected-return-value
+ stdin-string))
+ (with-temp-buffer
+ (howm-with-coding-system nil
+ (let ((r (howm-call-process-here command args stdin-string)))
+ (when (and expected-return-value
+ (not (= expected-return-value r)))
+ (error "Process returns %s instead of expected %s."
+ r expected-return-value))
+ (howm-buffer-lines)))))
+
+(defun howm-call-process-here (command args &optional stdin-string)
+ (let* ((beg (point))
+ (end (progn
+ (insert (or stdin-string ""))
+ (point)))
+ (a `(,beg ,end ,command t (t nil) nil ,@args)))
+ (howm-with-coding-system nil
+ (apply #'call-process-region a))))
+
+(defun howm-buffer-lines (&optional buf)
+ (save-excursion
+ (when buf
+ (set-buffer buf))
+ (split-string (buffer-substring (point-min) (point-max)) "\n")))
+
+(defun howm-call-process* (command common-args rest-args &rest options)
+ ;; (howm-call-process* "grep" '("pattern") '("001" ... "999"))
+ ;; is expanded to concatenation of
+ ;; (howm-call-process "grep" '("pattern" "001" ... "099"))
+ ;; (howm-call-process "grep" '("pattern" "101" ... "199"))
+ ;; ..., depending on howm-command-length-limit.
+ (cl-labels ((div (a limit measure)
+ ;; (div '(3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8) 20 #'identity)
+ ;; ==> ((3 1 4 1 5) (9 2 6) (5 3 5) (8 9) (7 9 3) (2 3 8))
+ ;; [create new group when sum >= 20]
+ (let ((sum limit) ;; measure >= 0 is assumed.
+ (ans nil))
+ (mapc (lambda (x)
+ (let* ((w (funcall measure x))
+ (new-sum (+ sum w)))
+ (if (< new-sum limit)
+ (setq sum new-sum
+ ans (cons (cons x (car ans)) (cdr ans)))
+ (setq sum w
+ ans (cons (list x) ans)))))
+ a)
+ (reverse (mapcar #'reverse ans)))))
+ ;; XEmacs 21.4 lacks "string-bytes".
+ (let* ((len (symbol-function
+ (cl-find-if #'fboundp '(string-bytes length))))
+ (limit (apply #'- howm-command-length-limit
+ (mapcar len (cons command common-args))))
+ (as (div rest-args limit len)))
+ (cl-mapcan (lambda (args)
+ (apply #'howm-call-process
+ command (append common-args args) options))
+ as))))
+
+;;; schedule-interval & reminder-setting (clean me)
+
+(defvar howm-reminder-schedule-interval nil
+ "For internal use. Do not setq this variable.
+Use `howm-with-schedule-interval' instead.")
+(defun howm-reminder-schedule-interval-from ()
+ (car howm-reminder-schedule-interval))
+(defun howm-reminder-schedule-interval-to ()
+ (cdr howm-reminder-schedule-interval))
+(defmacro howm-with-schedule-interval (interval &rest body)
+ "Set the interval of visible schedule items in reminder list on menu.
+INTERVAL is a form like (-1 2), which means 'from yesterday to the day
+after tomorrow'. BODY is evaluated under this setting;
+`howm-reminder-schedule-interval-from' returns -1 and
+`howm-reminder-schedule-interval-to' returns 2."
+ (declare (indent 1))
+ `(let ((howm-reminder-schedule-interval ,(cons 'cons interval)))
+ ,@body))
+
+(defmacro howm-with-reminder-setting (&rest body)
+ (declare (indent 0))
+ `(howm-with-schedule-interval
+ (howm-menu-schedule-days-before howm-menu-schedule-days)
+ (let ((howm-todo-menu-types howm-reminder-menu-types)) ;; dirty!
+ ,@body)))
+
+;;; xemacs
+
+;; http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=switch%20config
+;; http://pc2.2ch.net/test/read.cgi/software/1056601345/510
+(eval-and-compile
+ (defun howm-xemacsp ()
+ (featurep 'xemacs)))
+
+(defmacro howm-defun-xemacs (func args emacs-f xemacs-f)
+ (declare (indent 'defun))
+ `(defun ,func ,args
+ ,(if (howm-xemacsp)
+ xemacs-f
+ emacs-f)))
+
+(howm-defun-xemacs howm-deactivate-mark ()
+ (deactivate-mark)
+ (zmacs-deactivate-region))
+
+(howm-defun-xemacs howm-read-event ()
+ (read-event)
+ ;; We have to skip #<magic-event Expose> when howm-action-lock-date is
+ ;; called (RET is hit on date format like [2005-10-15]) in menu buffer.
+ ;;
+ ;; Though (make-event 'key-press `(key ,(read-char))) looks to be a simpler
+ ;; solution, it causes error when RET RET is hit in the above situation.
+ ;; I don't have enough time to examine it now.
+ (let ((ev (next-event)))
+ (if (key-press-event-p ev)
+ ev
+ (howm-read-event))))
+
+;; Though this function is used only once, I dare to define it
+;; with howm-defun-xemacs macro in order to avoid warning
+;; in byte-compilation on GNU emacs. I don't have enough energy now.
+(howm-defun-xemacs howm-ret-key-event ()
+ (event-convert-list '(return))
+ (make-event 'key-press '(key return)))
+
+(defvar howm-ret-key-event (howm-ret-key-event))
+
+(defun howm-ret-key-event-p (event)
+ (or (equal event 13) (equal event howm-ret-key-event)))
+
+(howm-defun-xemacs howm-event-to-character (event)
+ (and (howm-characterp event) event)
+ (event-to-character event))
+
+(howm-defun-xemacs howm-characterp (x)
+ (numberp x)
+ (characterp x))
+
+(defvar howm-infinity
+ (if (howm-xemacsp)
+ 1.0e+100 ;; xemacs info on my machine is broken :(
+ 1.0e+INF))
+
+;;; cl
+
+;; (defmacro howm-define-maybe (fname fargs &rest fbody)
+;; (when (not (fboundp fname))
+;; `(defun ,fname ,fargs
+;; ,@fbody)))
+
+;; (howm-define-maybe caddr (x)
+;; (car (cdr (cdr x))))
+
+;; (howm-define-maybe second (x)
+;; (cadr x))
+
+;; (howm-define-maybe third (x)
+;; (caddr x))
+
+;;; regexp
+
+;; (defun howm-regexp-opt (strings &optional paren)
+;; "Imitation of `regexp-opt' without optimization.
+;; This is used for large set of strings when `regexp-opt' causes an error
+;; \"Variable binding depth exceeds max-specpdl-size\"."
+;; (let* ((open (if paren "\\(" ""))
+;; (close (if paren "\\)" ""))
+;; (re (concat open (mapconcat 'regexp-quote strings "\\|") close)))
+;; (if (eq paren 'words)
+;; (concat "\\<" re "\\>")
+;; re)))
+
+;;;
+
+(provide 'howm-common)
+
+;;; howm-common.el ends here
--- /dev/null
+;;; howm-date.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-date.el,v 1.35 2011-12-31 15:07:29 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+(provide 'howm-date)
+(require 'howm)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; insert & action-lock
+
+(defvar howm-insert-date-pass-through nil)
+
+(defun howm-insert-date ()
+ (interactive)
+ (let ((date (format-time-string howm-date-format)))
+ (insert (format howm-insert-date-format date))
+ (howm-action-lock-date date t howm-insert-date-future)))
+
+(defun howm-insert-dtime ()
+ (interactive)
+ (insert (format-time-string howm-dtime-format)))
+
+;; Sorry for ugly behavior around "new" to keep backward compatibility.
+(defun howm-action-lock-date (date &optional new future-p)
+ (let* ((pass-through (and new howm-insert-date-pass-through))
+ (prompt (howm-action-lock-date-prompt date new pass-through))
+ (immediate-chars (if pass-through "" "."))
+ (c (howm-read-string prompt immediate-chars "+-~0123456789"
+ pass-through pass-through)))
+ (cond
+ ((null c) nil) ;; pass through
+ ((string= c "")
+ (if new
+ t
+ (howm-action-lock-date-search date)))
+ ((string-match "^[-+][0-9]+$" c)
+ (howm-action-lock-date-shift (string-to-number c) date))
+ ((string-match "^[0-9]+$" c)
+ (howm-action-lock-date-set c date future-p))
+ ((string-match "^~\\([0-9]+\\)$" c)
+ (howm-action-lock-date-repeat (match-string-no-properties 1 c) date))
+ ((string-match "^[.]$" c)
+ (howm-datestr-replace (howm-time-to-datestr)))
+ ((and (string-match "^[-+~]$" c) pass-through)
+ (insert c))
+ (t (error (format "Can't understand %s." c))))))
+
+(defun howm-action-lock-date-prompt (date new pass-through)
+ (let* ((dow (howm-datestr-day-of-week date))
+ (common-help "+num(shift), yymmdd(set), ~yymmdd(repeat)")
+ (today-help ", .(today)")
+ (help (cond ((and new pass-through)
+ common-help)
+ ((and new (not pass-through))
+ (concat "RET(ok), " common-help today-help))
+ ((not new)
+ (concat "RET(list), " common-help today-help))
+ (t
+ (error "Can't happen.")))))
+ (format "[%s] %s: " dow help)))
+
+(defvar howm-date-current nil)
+(make-variable-buffer-local 'howm-date-current)
+
+(defun howm-action-lock-date-search (date)
+ (howm-set-command 'howm-action-lock-date-search)
+ (prog1
+ (howm-search date t)
+ (howm-action-lock-forward-escape)
+ (setq howm-date-current date)))
+
+(defun howm-search-today ()
+ (interactive)
+ (howm-search-past 0))
+
+(defun howm-search-past (&optional days-before)
+ (interactive "P")
+ (let* ((n (or days-before 0))
+ (today (format-time-string howm-date-format))
+ (target (howm-datestr-shift today 0 0 (- n))))
+ (howm-action-lock-date-search target)))
+
+(defun howm-action-lock-date-shift (n date)
+ (howm-datestr-replace (howm-datestr-shift date 0 0 n)))
+
+(defun howm-action-lock-date-set (val date &optional future-p)
+ (howm-datestr-replace (howm-datestr-expand val date future-p)))
+
+(defvar howm-action-lock-date-repeat-max 200)
+(defun howm-action-lock-date-repeat (until date)
+ (let ((every (read-from-minibuffer "Every? [RET(all), num(days), w(week), m(month), y(year)] ")))
+ (let ((max-d (howm-datestr-expand until date t))
+ (offset-y (if (string= every "y") 1 0))
+ (offset-m (if (string= every "m") 1 0))
+ (offset-d (or (cdr (assoc every '(("y" . 0) ("m" . 0) ("w" . 7))))
+ (max (string-to-number every) 1))))
+ (let ((d date)
+ (i 0)
+ (check t))
+ (catch 'too-many
+ (while (progn
+ (setq d (howm-datestr-shift d offset-y offset-m offset-d))
+ (howm-datestr<= d max-d))
+ (when (and check (>= i howm-action-lock-date-repeat-max))
+ (if (y-or-n-p (format "More than %d lines. Continue? " i))
+ (setq check nil)
+ (throw 'too-many nil)))
+ (howm-duplicate-line)
+ (howm-datestr-replace d)
+ (setq i (+ i 1))))))))
+
+(defun howm-make-datestr (y m d)
+ (let ((ti (encode-time 0 0 0 d m y)))
+ (format-time-string howm-date-format ti)))
+
+(defun howm-datestr-parse (date)
+ (string-match howm-date-regexp date)
+ (mapcar (lambda (pos)
+ (string-to-number (match-string-no-properties pos date)))
+ (list howm-date-regexp-year-pos
+ howm-date-regexp-month-pos
+ howm-date-regexp-day-pos)))
+
+(defun howm-datestr-to-time (date)
+ (let* ((ymd (howm-datestr-parse date))
+ (y (car ymd))
+ (m (cadr ymd))
+ (d (cl-caddr ymd)))
+ (encode-time 0 0 0 d m y)))
+
+(defun howm-time-to-datestr (&optional time)
+ (let ((x (decode-time time)))
+ (howm-make-datestr (nth 5 x) (nth 4 x) (nth 3 x))))
+
+(defun howm-datestr-day-of-week (date)
+ (format-time-string "%a" (howm-datestr-to-time date)))
+
+(defun howm-datestr-expand (date base &optional future-p)
+ (if future-p
+ (howm-datestr-expand-future date base)
+ (howm-datestr-expand-general date base future-p)))
+
+(defun howm-datestr-expand-future (date base)
+ (let ((raw (howm-datestr-expand-general date base nil))
+ (future (howm-datestr-expand-general date base t)))
+ (when (not (string= raw future))
+ (message "Future date"))
+ future))
+
+(defun howm-datestr-expand-general (date base &optional future-p)
+ (let* ((base-ymd (howm-datestr-parse base))
+ (nval (format "%8s" date))
+ (given-ymd-str (mapcar (lambda (r)
+ (substring nval (car r) (cadr r)))
+ '((0 4) (4 6) (6 8))))
+ (ys (car given-ymd-str))
+ (ms (cadr given-ymd-str))
+ (ds (cl-caddr given-ymd-str)))
+ (when (string-match "^ +0+$" ys)
+ (setq ys "2000"))
+ (let* ((given-ymd (mapcar #'string-to-number (list ys ms ds)))
+ (carry nil) ;; to force future date
+ (dmy (cl-mapcar (lambda (ox nx)
+ (when future-p
+ (when (and carry (= nx 0))
+ (setq ox (+ ox 1)))
+ (setq carry
+ (cond ((= nx 0) nil)
+ ((= nx ox) carry)
+ ((< nx ox) t)
+ (t nil))))
+ (if (= nx 0) ox nx))
+ (reverse base-ymd) (reverse given-ymd)))
+ (d (car dmy))
+ (m (cadr dmy))
+ (y (cl-caddr dmy)))
+ (howm-make-datestr (if (<= y 99) (+ y 2000) y) m d))))
+
+(defun howm-datestr-shift (date y m d)
+ (let* ((ymd (howm-datestr-parse date))
+ (oy (car ymd))
+ (om (cadr ymd))
+ (od (cl-caddr ymd)))
+ (howm-make-datestr (+ oy y) (+ om m) (+ od d))))
+
+(defun howm-datestr<= (date1 date2)
+ (or (string< date1 date2)
+ (string= date1 date2)))
+
+(defun howm-datestr-replace (date)
+ (let ((p (point)))
+ (while (not (looking-at howm-date-regexp))
+ (backward-char))
+ (replace-match date t t)
+ (goto-char p)))
+
+(defun howm-duplicate-line ()
+ (let ((c (current-column))
+ (s (buffer-substring (line-beginning-position) (line-end-position))))
+ (end-of-line)
+ (insert "\n" s)
+ (move-to-column c)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; search for next/previous date
+
+(defvar howm-date-forward-ymd-msg "Searching %s...")
+(defvar howm-date-forward-ymd-limit 35)
+(defun howm-date-forward-ymd (y m d)
+ (when (not howm-date-current)
+ (error "Not in date search."))
+ (let* ((new-date (howm-datestr-shift howm-date-current y m d))
+ (b (current-buffer))
+ (step (if (> (+ y m d) 0) +1 -1))
+ (c 0))
+ (when (catch :found
+ (while (progn
+ (when (howm-action-lock-date-search new-date)
+ (throw :found t))
+ (< c howm-date-forward-ymd-limit))
+ (setq new-date (howm-datestr-shift new-date 0 0 step))
+ (setq c (1+ c))
+ (when howm-date-forward-ymd-msg
+ (format howm-date-forward-ymd-msg new-date)))
+ (error "Not found within %d days." howm-date-forward-ymd-limit))
+ (when (not (eq (current-buffer) b))
+ (with-current-buffer b
+ (howm-view-kill-buffer)))
+ (howm-view-summary-check t))))
+
+(defmacro howm-date-defun-f/b (func y m d)
+ `(defun ,func (&optional k)
+ (interactive "P")
+ (let ((n (or k 1)))
+ (howm-date-forward-ymd ,y ,m ,d))))
+
+(howm-date-defun-f/b howm-date-forward 0 0 n)
+(howm-date-defun-f/b howm-date-forward-month 0 n 0)
+(howm-date-defun-f/b howm-date-forward-year n 0 0)
+(howm-date-defun-f/b howm-date-backward 0 0 (- n))
+(howm-date-defun-f/b howm-date-backward-month 0 (- n) 0)
+(howm-date-defun-f/b howm-date-backward-year (- n) 0 0)
+
+(let ((m howm-view-summary-mode-map))
+ (define-key m "+" 'howm-date-forward)
+ (define-key m "-" 'howm-date-backward)
+ (define-key m ")" 'howm-date-forward)
+ (define-key m "(" 'howm-date-backward)
+ (define-key m "}" 'howm-date-forward-month)
+ (define-key m "{" 'howm-date-backward-month)
+ (define-key m "]" 'howm-date-forward-year)
+ (define-key m "[" 'howm-date-backward-year)
+ )
+
+;;; howm-date.el ends here
--- /dev/null
+;;; howm-lang-en.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-lang-en.el,v 1.11 2011-12-31 15:07:29 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+(require 'howm-common)
+
+(defvar howm-day-of-week-en '("Sun" "Mon" "Tue" "Wed" "Thu" "Fri" "Sat"))
+
+(defvar howm-menu-command-table-en
+ `(
+ ("[Remember]" howm-remember previous)
+ ("[New]" (lambda () (howm-create ,howm-menu-action-arg)))
+ ("[Add]" (lambda () (howm-create-here ,howm-menu-action-arg)))
+ ("[Dup]" howm-dup)
+ ("[Update]" howm-initialize-buffer previous)
+ ("[Regexp]" howm-list-grep)
+ ("[String]" howm-list-grep-fixed)
+ ;; ("[roma]" howm-list-migemo)
+ ("[Today]" howm-find-today)
+ ("[Yesterday]" howm-find-yesterday)
+ ("[All]" howm-list-all)
+ ("[Recent]" howm-list-recent)
+ ("[Around]" howm-list-around)
+ ("[Schedule]" howm-list-schedule)
+ ("[Occur]" (lambda () (call-interactively 'howm-occur)) previous)
+ ("[Buffers]" (lambda () (howm-list-buffers ,howm-menu-action-arg)))
+ ("[Marks]" howm-list-mark-ring previous)
+ ("[History]" howm-history)
+ ("[<Title]" howm-keyword-to-kill-ring)
+ ("[<Name]" (lambda () (howm-keyword-to-kill-ring t)))
+ ("[Key>]" howm-insert-keyword previous)
+ ("[Date>]" howm-insert-date previous)
+ ("[DTime>]" howm-insert-dtime previous)
+ ("[Todo]" howm-list-todo)
+ ("[Killall]" howm-kill-all)
+ ("[Force Killall]" (lambda () (interactive) (howm-kill-all t)))
+ ("[Edit Menu]" howm-menu-edit current)
+ ("[Update Menu]" howm-menu-refresh current)
+ ("[Preference]" (lambda () (customize-group 'howm)))
+ ("[Random Walk]" howm-random-walk previous)
+ ))
+
+(provide 'howm-lang-en)
+
+;;; howm-lang-en.el ends here
--- /dev/null
+;;; howm-lang-ja.el --- Wiki-like note-taking tool
+;;; -*- Coding: iso-2022-7bit -*-
+;;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-lang-ja.el,v 1.11 2011-12-31 15:07:29 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+(require 'howm-common)
+
+(defvar howm-day-of-week-ja '("\e$BF|\e(B" "\e$B7n\e(B" "\e$B2P\e(B" "\e$B?e\e(B" "\e$BLZ\e(B" "\e$B6b\e(B" "\e$BEZ\e(B"))
+
+(defvar howm-menu-command-table-ja
+ `(
+ ("[\e$BB.5-\e(B]" howm-remember previous)
+ ("[\e$B?75,\e(B]" (lambda () (howm-create ,howm-menu-action-arg)))
+ ("[\e$BDI2C\e(B]" (lambda () (howm-create-here ,howm-menu-action-arg)))
+ ("[\e$BJ#@=\e(B]" howm-dup)
+ ("[\e$B99?7\e(B]" howm-initialize-buffer previous)
+ ("[\e$B@55,\e(B]" howm-list-grep)
+ ("[\e$B8GDj\e(B]" howm-list-grep-fixed)
+ ("[roma]" howm-list-migemo)
+ ("[\e$B:#F|\e(B]" howm-find-today)
+ ("[\e$B:rF|\e(B]" howm-find-yesterday)
+ ("[\e$B0lMw\e(B]" howm-list-all)
+ ("[\e$B:G6a\e(B]" howm-list-recent)
+ ("[\e$BA08e\e(B]" howm-list-around)
+ ("[\e$BM=Dj\e(B]" howm-list-schedule)
+ ("[\e$B%PFb\e(B]" (lambda () (call-interactively 'howm-occur)) previous)
+ ("[\e$BA4%P\e(B]" (lambda () (howm-list-buffers ,howm-menu-action-arg)))
+ ("[mark]" howm-list-mark-ring previous)
+ ("[\e$BMzNr\e(B]" howm-history)
+ ("[\e$BBj",\e(B]" howm-keyword-to-kill-ring)
+ ("[\e$BL>",\e(B]" (lambda () (howm-keyword-to-kill-ring t)))
+ ("[\e$B80"-\e(B]" howm-insert-keyword previous)
+ ("[\e$BF|"-\e(B]" howm-insert-date previous)
+ ("[\e$B;~"-\e(B]" howm-insert-dtime previous)
+ ("[Todo]" howm-list-todo)
+ ("[\e$BA4>C\e(B]" howm-kill-all)
+ ("[\e$B6/@)A4>C\e(B]" (lambda () (interactive) (howm-kill-all t)))
+ ("[menu \e$BJT=8\e(B]" howm-menu-edit current)
+ ("[menu \e$B99?7\e(B]" howm-menu-refresh current)
+ ("[\e$B@_Dj\e(B]" (lambda () (customize-group 'howm)))
+ ("[\e$B?lJb\e(B]" howm-random-walk previous)
+ ))
+
+(provide 'howm-lang-ja)
+
+;;; howm-lang-ja.el ends here
--- /dev/null
+;;; automatically generated from en/0000-00-00-000000.txt
+;;; by howm-mkmenu.el.
+
+(require 'howm-vars)
+
+(howm-defconst-risky howm-menu-en "= <<< %menu%
+ %\"e\"[Remember] %\"c\"[New] %\"D\"[Dup] Search(%\"s\"[String] %\"g\"[Regexp] %\"o\"[Occur])
+ %\"a\"[All] %\"l\"[Recent] %\"A\"[Around] %\"y\"[Schedule] %\"t\"[Todo] %\"b\"[Buffers] %\"x\"[Marks]
+ %\"K\"[<Title] [<Name] %\"d\"[Date>] %\"i\"[Key>] %\"r\"[Update] %\"w\"[Random Walk] [Killall]
+ %\".\"[Today] %\":\"[Yesterday] %\"h\"[History] %\"R\"[Update Menu] [Edit Menu] [Preference]
+-------------------------------------
+[Schedule, Todo] -- @schedule, !deadline (until %sdays days from now)
+!deadline, +todo, -reminder, ~defer (top %tnum entries)
+%reminder
+-------------------------------------
+Recent
+%recent
+-------------------------------------
+Random -- If you do not like this, [Edit Menu] to erase it.
+%random
+-------------------------------------
+
+Format of schedule and todo (Please replace {} with []):
+{2002-10-21}@1 schedule -- (shown in schedule part. @3 = \"3 days schedule to 10-23\")
+{2002-10-21}+7 todo -- float up slowly from the date in 7 days
+{2002-10-21}!7 deadline -- float up fast from 7 days before the date
+{2002-10-21}-1 reminder -- float at the date and sink slowly one unit per 1 day
+{2002-10-21}~30 defer -- float at the date and repeat sinking and floating with 30 days period
+{2002-10-21}. done -- sink forever
+(Numbers after marks are default values.)
+
+How to remember:
+* Schedule at(@) the date
+* Reminder sinks down(-).
+* Todo floats up(+).
+* Deadline needs attention!
+* Defer waves(~) up and down.
+* Done is the end(.).
+
+-------------------------------------
+
+You can edit this menu itself.
+>>> %Editing Menu%
+
+
+= <<< %Editing Menu%
+[Edit Menu] Hit RET on the left button to edit this menu.
+[Update Menu] Hit RET on the left button to update this menu.
+--------------------------------------------------------
+
+*** Format of the menu file ***
+(Please hit RET on [Edit Menu] and read the source file.)
+
+== Basic format
+
+As you see...
+
+* [xxx] is button.
+* %REMINDER (in small letters) is schedule and todo list.
+* %RECENT (in small letters) is list of recent entries.
+* %RANDOM (in small letters) is list of random entries.
+
+You can arrange their places as you like.
+Writing favorite files or goto links may be also convenient.
+(ex) file:///etc/services >>> wiki
+
+== Shortcut
+
+%\"foo\"[All]
+This is displayed as foo[All], and the key \"f\" executes [All].
+Exactly speaking, it executes the following sequence:
+(1) move to closing \", (2) move to next underline, and (3) hit it.
+
+%\"bar%\"
+If you put % at the tail like this, the key \"b\" means \"move cursor here\".
+
+== For lispers
+
+Display:
+%here%howm-congrats-count ;; embed value of variable howm-congrats-count
+%here%(howm-menu-search \"search\")
+;; embed result of (...), that is, search \"search\" and embed matched lines
+Functions must be registered for safety.
+(setq howm-menu-allow (append '(foo bar) howm-menu-allow)) ;; allow foo, bar
+
+Action:
+%eval%(message (buffer-name)) ;; evaluate S expr
+%call%find-file ;; call function interactively
+Both are evaluated in the previous buffer before raising menu.
+
+== Hiding
+
+'%' + '|' toggles invisibility
+like this: visible%|invisible%|appear%|disappear - until the end of line
+(Newline is removed when the end of line is invisible.)
+
+== Multiple menus
+
+Links to %xxx% open \"<< < %xxx%\" with menu-mode: >>> %menu%
+When you add new menu, [[%menu%]] may be more convenient because corresponding
+entry is generated automatically.
+
+%eval%(howm-menu-open \"00000000-000000.txt\") -- open file with menu-mode
+")
+
+(provide 'howm-menu-en)
--- /dev/null
+;;; -*- Coding: iso-2022-7bit -*-
+;;; automatically generated from ja/0000-00-00-000000.txt
+;;; by howm-mkmenu.el.
+
+(require 'howm-vars)
+
+(howm-defconst-risky howm-menu-ja "= <<< %menu%
+ %\"e\"[\e$BB.5-\e(B] %\"c\"[\e$B?75,\e(B] %\"D\"[\e$BJ#@=\e(B] \e$B8!:w\e(B(%\"s\"[\e$B8GDj\e(B] %\"g\"[\e$B@55,\e(B] %\"m\"[roma] %\"o\"[\e$B%PFb\e(B]) %\":\"[\e$B:rF|\e(B] %\".\"[\e$B:#F|\e(B]
+ %\"a\"[\e$B0lMw\e(B] %\"l\"[\e$B:G6a\e(B] %\"A\"[\e$BA08e\e(B] %\"h\"[\e$BMzNr\e(B] %\"y\"[\e$BM=Dj\e(B] %\"t\"[Todo] %\"b\"[\e$BA4%P\e(B] %\"x\"[mark] %\"w\"[\e$B?lJb\e(B] [\e$B@_Dj\e(B]
+ %\"K\"[\e$BBj",\e(B] [\e$BL>",\e(B] %\"d\"[\e$BF|"-\e(B] %\"T\"[\e$B;~"-\e(B] %\"i\"[\e$B80"-\e(B] %\"r\"[\e$B99?7\e(B] %\"R\"[menu \e$B99?7\e(B] [menu \e$BJT=8\e(B] [\e$BA4>C\e(B]
+-------------------------------------
+[\e$BM=Dj!&\e(BTodo] \e$B!D\e(B \e$BM=Dj\e(B@, \e$B!:@Z\e(B! \e$B$r\e(B %sdays \e$BF|@h$^$GI=<(\e(B.
+\e$B!:@Z\e(B!, todo+, \e$B3P=q\e(B-, \e$BJ]N1\e(B~ \e$B$r>e0L\e(B %tnum \e$B8D$^$GI=<(\e(B.
+%reminder
+-------------------------------------
+\e$B:G6a$N%a%b\e(B
+%recent
+-------------------------------------
+\e$B%i%s%@%`%;%l%/%H\e(B (\e$BITMW$J$i\e(B[menu \e$BJT=8\e(B]\e$B$G3:Ev2U=j$r:o=|$7$F$/$@$5$$\e(B)
+%random
+-------------------------------------
+
+\e$BM=Dj!&\e(Btodo \e$B$N=q<0\e(B (\e$B<B:]$OH>3Q$G\e(B)
+[2002-10-21]\e$B!w\e(B1 \e$BM=Dj\e(B (\e$BM=DjI=$KI=<(!#$b$7!w\e(B3\e$B$J$i\e(B3\e$BF|4V$NM=Dj!"$D$^$j\e(B23\e$BF|$^$G$N0UL#\e(B)
+[2002-10-21]\e$B!\\e(B7 todo \e$B;XDjF|$K$J$C$F$+$i\e(B7\e$BF|4V$+$1$F=y!9$KIb$+$SB3$1$k\e(B
+[2002-10-21]\e$B!*\e(B7 \e$B!:@Z\e(B \e$B;XDjF|$N\e(B7\e$BF|A0$+$i=y!9$KIb$+$S!";XDjF|0J9_Ib$-$C$Q$J$7\e(B
+[2002-10-21]\e$B!]\e(B1 \e$B3P=q\e(B \e$B;XDjF|$KIb$+$S>e$,$j!"0J9_\e(B1\e$BF|$+$1$FC10LNL$@$1=y!9$KD@$`\e(B
+[2002-10-21]\e$B!A\e(B30 \e$BJ]N1\e(B \e$B;XDjF|$KIb$+$S>e$,$j!"0J9_\e(B30\e$BF|<~4|$GIb$-D@$_$r$/$j$+$($9\e(B
+[2002-10-21]\e$B!%\e(B \e$B:Q$_\e(B \e$B>o$KDl\e(B
+(\e$B5-9f$N8e$N?t;z$O%G%U%)%k%HCM\e(B)
+
+\e$B3P$(J}\e(B
+\e$B!&M=Dj$O$=$NF|$K7k$SIU$1$i$l$F$k$+$i\e(B@(at)
+\e$B!&3P=q$OD@$s$G$$$/$+$i\e(B-
+\e$B!&\e(Btodo\e$B$OIb$+$S>e$,$C$F$/$k$+$i\e(B+
+\e$B!&!:@Z$O$=$NF|$KCm0U$7$J$1$l$P$J$i$J$$$+$i\e(B!
+\e$B!&J]N1$OGHBG$D$+$i\e(B~
+\e$B!&:Q$_$O=*$o$j$@$+$i\e(B.
+
+-------------------------------------
+
+[\e$B!{!{\e(B]\e$B$O2?\e(B? >>> %\e$B%\%?%s$N@bL@\e(B%
+\e$B$3$N%a%K%e!<<+BN$rJT=8$G$-$^$9\e(B >>> %\e$B%a%K%e!<$NJT=8$K$D$$$F\e(B%
+\e$B%a%b$,A}$($F$-$?$i!D\e(B >>> %\e$B9bB.2=$K$D$$$F\e(B%
+
+
+= <<< %\e$B%\%?%s$N@bL@\e(B%
+
+\e$B"!\e(B \e$B:n@.\e(B
+
+[\e$B?75,\e(B] \e$B"*\e(B \e$B?75,%a%b:n@.\e(B (\e$B8=%j!<%8%g%s$,%?%$%H%k\e(B)
+[\e$BJ#@=\e(B] \e$B"*\e(B \e$B8=%a%b$rJ#@=\e(B (\e$B=;=jO?%F%s%W%l!<%H$J$I$NMQES$rA[Dj\e(B)
+
+\e$B"!\e(B \e$B0lMw\e(B
+
+[\e$B0lMw\e(B] \e$B"*\e(B \e$BA4%a%b$N0lMw\e(B
+[\e$B:G6a\e(B] \e$B"*\e(B \e$B:G6a$N%a%b$NO"7kI=<(\e(B
+[\e$BA08e\e(B] \e$B"*\e(B \e$BA08e$N%a%b\e(B (\e$B8+$F$?%a%b$rCf?4$KA4%a%b$NF|IU=g0lMw\e(B)
+* \e$BBP>]%U%!%$%k$r\e(B(\e$BJT=8%b!<%I$G\e(B)\e$B3+$$$?>uBV$+$i%a%K%e!<$r8F$V$3$H\e(B
+[\e$BMzNr\e(B] \e$B"*\e(B \e$B8!:wMzNr\e(B
+[\e$BM=Dj\e(B] \e$B"*\e(B \e$BM=DjI=\e(B
+[todo] \e$B"*\e(B todo \e$B0lMw\e(B
+
+\e$B"!\e(B \e$B8!:w\e(B
+
+[\e$B@55,\e(B] \e$B"*\e(B \e$B@55,I=8=$N8!:w\e(B
+* \e$B4pK\E*$K$OBgJ8;z>.J8;z$N6hJL$J$7\e(B
+ * \e$B!V\e(BWiki\e$B!W$N$h$&$KL@<(E*$KBgJ8;z$r;XDj$7$?$H$-$O6hJL\e(B
+[\e$B8GDj\e(B] \e$B"*\e(B \e$B%-!<%o!<%I$rJd40F~NO$7$F8GDjJ8;zNs$N8!:w\e(B
+[roma] \e$B"*\e(B \e$B%m!<%^;z8!:w\e(B (migemo)
+[\e$B:#F|\e(B] \e$B"*\e(B \e$B:#F|$N%a%b\e(B
+[\e$B:rF|\e(B] \e$B"*\e(B \e$B:rF|$N%a%b\e(B
+
+\e$B"!\e(B \e$BJT=8\e(B: \e$BBP>]%U%!%$%k$r\e(B(\e$BJT=8%b!<%I$G\e(B)\e$B3+$$$?>uBV$+$i%a%K%e!<$r8F$V$3$H\e(B
+
+[\e$B99?7\e(B] \e$B"*\e(B \e$B2<@~$r0z$-$J$*$9\e(B
+[\e$B80"-\e(B] \e$B"*\e(B \e$B%-!<%o!<%I$rJd40F~NO$7$FE=$j$D$1\e(B
+* Tips: M-v \e$B$G8uJd0lMw$K0\$C$F\e(B migemo \e$B8!:w$9$k$H3Z\e(B
+
+[\e$BF|"-\e(B] \e$B"*\e(B \e$B:#F|$NF|IU\e(B [yyyy-mm-dd] \e$B$rE=$j$D$1\e(B
+[\e$B;~"-\e(B] \e$B"*\e(B \e$B:#F|$NF|;~\e(B [yyyy-mm-dd HH:MM] \e$B$rE=$j$D$1\e(B
+[\e$BBj",\e(B] \e$B"*\e(B \e$B8=%a%b$N%?%$%H%k$r\e(B kill ring \e$B$X\e(B (C-y \e$B$GE=$j$D$1\e(B)
+* \e$B%?%$%H%k$,$_$D$+$i$J$+$C$?$H$-$O%U%!%$%kL>\e(B
+[\e$BL>",\e(B] \e$B"*\e(B \e$B%U%!%$%kL>$r\e(B kill ring \e$B$X\e(B
+
+\e$B"!\e(B \e$BFCJL\e(B
+
+[menu \e$B99?7\e(B] \e$B"*\e(B \e$B%a%K%e!<$NM=DjI=$J$I$r99?7\e(B
+[menu \e$BJT=8\e(B] \e$B"*\e(B \e$B%a%K%e!<$rJT=8\e(B
+[\e$BA4>C\e(B] \e$B"*\e(B howm-mode \e$B$J%P%C%U%!$r$9$Y$F>C$9\e(B (\e$BL$J]B8$O=|$/\e(B)
+[\e$B?lJb\e(B] \e$B"*\e(B \e$B%i%s%@%`$K%j%s%/$r$?$I$C$F<+F01\Mw\e(B. C-g \e$B$GDd;_\e(B.
+
+= <<< %\e$B9bB.2=$K$D$$$F\e(B%
+
+\e$B%a%b$,A}$($F8!:w$,CY$/$J$C$F$-$?$i\e(B, \e$B9bB.2=$N$?$a$N%*%W%7%g%s@_Dj$r\e(B
+\e$B8!F$$7$F$/$@$5$$\e(B.
+
+\e$B:G$b8z2L$,Bg$-$$$N$O\e(B, \e$B8!:w$K\e(B grep \e$B%3%^%s%I$r;H$&$3$H$G$9\e(B.
+Unix \e$B7O$NI8=`E*$J4D6-$J$i\e(B, \e$B$?$$$F$$LdBj$J$/;H$($k$G$7$g$&\e(B.
+\e$B$=$l0J30$N4D6-$G$O\e(B, \e$B2?$i$+$N=`Hw$,I,MW$K$J$k$+$b$7$l$^$;$s\e(B.
+
+\e$B3F4D6-$G6qBNE*$K$I$&$9$l$P$h$$$+$O!D>pJs$r$*BT$A$7$F$$$^$9\e(B.
+\e$B!&\e(Bhttp://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Windows
+\e$B!&\e(Bhttp://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus
+
+grep \e$B$N;HMQ$r@_Dj$9$k$K$O\e(B,
+ M-x customize-variable howm-view-use-grep
+\e$B$HF~NO$9$k$+\e(B, \e$B=i4|2=%U%!%$%k\e(B(.emacs \e$BEy\e(B)\e$B$KD>@\\e(B
+ (setq howm-view-use-grep t)
+\e$B$H=q$/$+\e(B, \e$B$"$k$$$O:#$3$N2hLL$G!V\e(B%\"!\e$B!W$r2!$7$F$/$@$5$$\e(B.\" %| %eval%(customize-variable 'howm-view-use-grep) %|
+
+\e$B$=$NB>$N%*%W%7%g%s$K$D$$$F$O\e(B,
+[\e$B@_Dj\e(B] \e$B$+$i!V\e(BHowm Efficiency\e$B!W$N9`L\$r;2>H$/$@$5$$\e(B.
+
+
+= <<< %\e$B%a%K%e!<$NJT=8$K$D$$$F\e(B%
+[menu \e$BJT=8\e(B] \e$B$G$3$N%a%K%e!<$rJT=8\e(B
+[menu \e$B99?7\e(B] \e$B$G$3$N%a%K%e!<$r99?7\e(B
+--------------------------------------------------------
+
+\e$B%a%K%e!<$N=q$-J}\e(B
+([menu \e$BJT=8\e(B] \e$B>e$G%j%?!<%s$rC!$-\e(B, \e$B85%U%!%$%k$rFI$s$G$/$@$5$$\e(B)
+
+\e$B"!\e(B \e$B4pK\\e(B
+\e$B8+$l$P$o$+$k$G$7$g$&$,\e(B,
+\e$B!&\e(B[\e$B!{!{\e(B] \e$B$H=q$$$?=j$,%\%?%s\e(B
+\e$B!&!s\e(Breminder \e$B$H\e(B(\e$BH>3Q$G\e(B)\e$B=q$$$?=j$,M=DjI=$H\e(B todo list
+\e$B!&!s\e(Brecent \e$B$H\e(B(\e$BH>3Q$G\e(B)\e$B=q$$$?=j$,\e(B, \e$B:G6a$N%a%b0lMw\e(B
+\e$B!&!s\e(Brandom \e$B$H\e(B(\e$BH>3Q$G\e(B)\e$B=q$$$?=j$,\e(B, \e$B%i%s%@%`$J%a%b0lMw\e(B
+\e$B$K$J$j$^$9\e(B.
+\e$B$I$3$K=q$$$F$b5!G=$7$^$9$+$i\e(B, \e$BJB$Y$+$($k$J$j$J$s$J$j\e(B, \e$B$*9%$-$K$I$&$>\e(B.
+\e$B$h$/;H$&%U%!%$%k$d\e(B goto link \e$B$b=q$$$F$*$1$PJXMx$+$b\e(B.
+(\e$BNc\e(B) file:///etc/services >>> wiki
+
+\e$B"!\e(B \e$B%7%g!<%H%+%C%H\e(B
+%\"hoge\"[\e$B0lMw\e(B]
+\e$B",$3$&=q$$$F$*$/$H\e(B, \e$B!V\e(Bhoge[\e$B0lMw\e(B]\e$B!W$HI=<($5$l\e(B, \e$B%-!<\e(B h \e$B$G0lMw$r5/F0\e(B
+(\e$B@53N$K$O\e(B, (1) \e$BJD$8!V\e(B\"\e$B!W$X0\F0\e(B (2) \e$B<!$N2<@~$^$G?J$`\e(B (3) action-lock \e$BH/F0\e(B)
+%\"fuga%\" \e$B"+\e(B \e$B$3$s$J$U$&$K:G8e$K\e(B % \e$B$r$D$1$k$H\e(B, \e$B%-!<\e(B f \e$B$G$=$3$K%+!<%=%k0\F0\e(B
+
+\e$B"!\e(B lisper \e$B8~$1\e(B
+
+\e$B!&I=<(\e(B
+%here%howm-congrats-count \e$B"+\e(B \e$BJQ?t\e(B howm-congrats-count \e$B$NCM$rKd$a9~$_\e(B
+%here%(howm-menu-search \"\e$B8!:w\e(B\")
+\e$B",\e(B(\e$B!D\e(B) \e$B$N7k2L\e(B(\e$B!V8!:w!W$N8!:w7k2L\e(B)\e$B$rKd$a9~$_\e(B
+\e$B"(\e(B \e$B$?$@$7\e(B, \e$B;H$&4X?t$OEPO?$,I,MW\e(B (\e$B$*$C$+$J$$$+$i\e(B)
+(setq howm-menu-allow (append '(foo bar) howm-menu-allow)) ;; foo \e$B$H\e(B bar \e$B$r5v2D\e(B
+
+\e$B!&F0:n\e(B
+S \e$B<0$r\e(B eval: %eval%(message (buffer-name))
+\e$B4X?t$r\e(B call-interactively: %call%find-file
+\e$B"(\e(B \e$B$$$:$l$b\e(B, \e$B%a%K%e!<$r8F$VA0$N%P%C%U%!$GI>2A$5$l$^$9\e(B
+
+\e$B"!\e(B \e$BIT2D;k\e(B
+\e$B!V!s\e(B|\e$B!W$H\e(B(\e$BH>3Q$G\e(B)\e$B=q$/$H\e(B, \e$B2D;k!&IT2D;k$r%H%0%k\e(B.
+\e$B$3$s$J$U$&$K\e(B \e$B"*\e(B \e$B8+$($k\e(B%|\e$B8+$($J$$\e(B%|\e$B2D;k\e(B%|\e$BIT2D;k!D9TKv$^$G\e(B
+(\e$B9TKv$,IT2D;k$@$H\e(B, \e$B2~9T$b>C$($^$9\e(B)
+
+\e$B"!\e(B \e$BJ#?t%a%K%e!<\e(B
+\e$B!V\e(B%\e$B!{!{\e(B%\e$B!W$X$N%j%s%/$O\e(B, \e$B!V!c!c!c\e(B %\e$B!{!{\e(B%\e$B!W$r%a%K%e!<%b!<%I$G3+$-$^$9\e(B: >>> %menu%
+\e$B?75,%a%K%e!<$rDI2C$7$?$$$H$-$O\e(B [[%menu%]] \e$B$NJ}$,JXMx$G$7$g$&\e(B (\e$B<+F0@8@.$9$k$N$G\e(B)
+\e$B;XDj%U%!%$%k$r%a%K%e!<%b!<%I$G3+$/\e(B: %eval%(howm-menu-open \"00000000-000000.txt\")
+")
+
+(provide 'howm-menu-ja)
--- /dev/null
+;;; howm-menu.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-menu.el,v 1.106 2012-09-23 11:34:59 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;;--------------------------------------------------------------------
+
+(provide 'howm-menu)
+(require 'howm)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; customize
+
+;;; general
+
+(howm-defvar-risky howm-menu-mode-map nil)
+(let ((m (make-keymap)))
+ (define-key m action-lock-magic-return-key 'howm-menu-invoke)
+ (define-key m [tab] 'action-lock-goto-next-link)
+ (define-key m [(meta tab)] 'action-lock-goto-previous-link)
+ (define-key m "\C-i" 'action-lock-goto-next-link)
+ (define-key m "\M-\C-i" 'action-lock-goto-previous-link)
+ (define-key m " " 'scroll-up)
+ (define-key m [backspace] 'scroll-down)
+ (define-key m "\C-h" 'scroll-down)
+ (define-key m "q" 'bury-buffer)
+ (define-key m "?" 'describe-mode)
+ (setq howm-menu-mode-map m)
+ )
+
+;;; schedule, todo, recent, random
+
+;; Set random seed.
+;; snap://Info-mode/elisp#Random Numbers
+(defvar howm-randomize t)
+(when howm-randomize
+ (random t))
+
+(defvar howm-menu-reminder-format "> %s | %s"
+ "Format to show schedule/todo list in `howm-menu-mode'.")
+(defvar howm-menu-list-format
+ (let* ((path (format-time-string howm-file-name-format))
+ (width (length (file-name-sans-extension
+ (file-name-nondirectory path)))))
+ (concat "> %-" (format "%s" width) "s | %s"))
+ "Format to show recent/random list in `howm-menu-mode'.")
+(defvar howm-menu-list-regexp "^\\(>\\([^|\r\n]*|\\)\\) +\\(.*\\)$"
+ "Regexp to find and parse schedule/todo/recent/random list in `howm-menu-mode'.
+`howm-menu-list-regexp-action-pos' must cover header part.
+Otherwise, `howm-action-lock-forward' may be invoked unintentionally.")
+(defvar howm-menu-list-regexp-key-pos 3
+ "Position of target string for action-lock in history buffer.
+This target is searched when action-lock is invoked.")
+(defvar howm-menu-list-regexp-action-pos 1
+ "Position of action-lock hilight on schedule/todo/recent/random list
+in `howm-menu-mode'.")
+(defvar howm-menu-list-regexp-face-pos 2
+ "Position to apply `howm-menu-list-face' on schedule/todo/recent/random list
+in `howm-menu-mode'.")
+
+;;; shortcut
+
+;; %"..." or %"...%"
+(defvar howm-menu-key-regexp
+ "%\"\\(\\([^\r\n%\"]\\)[^\r\n%\"]*\\(%+[^\r\n%\"]+\\)*\\)\\(%\\)?\"")
+(defvar howm-menu-key-regexp-word-pos 1)
+(defvar howm-menu-key-regexp-key-pos 2)
+(defvar howm-menu-key-regexp-moveonly-pos 4)
+
+;;; dynamic contents
+
+(howm-defvar-risky howm-menu-allow
+ '(howm-menu-schedule
+ howm-menu-todo
+ howm-menu-reminder
+ howm-menu-recent
+ howm-menu-random
+ howm-menu-search
+ howm-menu-categorized-reminder
+ ))
+
+(howm-defvar-risky howm-menu-display-rules
+ `(
+ ;; static
+ ("%sdays" . "%here%howm-menu-schedule-days")
+ ("%tnum" . "%here%howm-menu-todo-num")
+ ("%schedule" . "%here%(howm-menu-schedule)")
+ ("%todo" . "%here%(howm-menu-todo)")
+ ("%reminder" . "%here%(howm-menu-reminder)")
+ ("%recent" . "%here%(howm-menu-recent)")
+ ("%random" . "%here%(howm-menu-random)")
+ ;; dynamic
+ ("%here%" . howm-menu-here)
+ (,howm-menu-key-regexp . howm-menu-shortcut)
+ )
+ "List of rules for dynamic contents in howm menu.
+((R1 . T1) (R2 . T2) ...):
+Regexp R1 is replaced by T1 if T1 is a string.
+(T1) is called at R1 if T1 is a function.")
+
+;;; command table
+
+;; howm-menu-command-table-* = ((MATCHER FUNC ONBUF) ...)
+;;
+;; (FUNC) is evalueted on ONBUF when return key is hit on MATCHER.
+;;
+;; MATCHER = regexp | (regexp position)
+;; (optional) ONBUF = nil | 'previous | 'current
+;; nil: previous non-menu buffer (set-buffer)
+;; 'previous: previous non-menu buffer (switch-to-buffer)
+;; 'current: current menu buffer
+
+(howm-defvar-risky howm-menu-command-table-common
+ '(
+ (("%eval%\\(.*$\\)" 1) howm-menu-eval previous)
+ (("%call%\\(.*$\\)" 1) howm-menu-call previous)
+ ))
+
+;;; which is opened as menu?
+
+(howm-defvar-risky howm-menu-keyword-regexp "^%.*%$")
+(howm-defvar-risky howm-menu-top "%menu%")
+
+;;; misc.
+
+(howm-defvar-risky howm-menu-toggle-invisible "%|")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; internal
+
+(defvar *howm-menu-force-refresh* nil) ;; dirty. clean me. [2003/09/29 21:39]
+
+(defvar *howm-menu-shortcut-keys* nil)
+(defvar *howm-menu-shortcut-multidef-keys* nil)
+(defvar *howm-menu-shortcut-markers* nil)
+(make-variable-buffer-local '*howm-menu-shortcut-markers*)
+
+(defvar howm-menu-previous-buffer nil)
+(defvar howm-menu-next-expiry-time (current-time))
+(defvar howm-menu-last-time (current-time))
+(defvar howm-menu-buffer-file nil)
+(defvar howm-menu-buffer-file-place nil)
+(howm-defvar-risky howm-menu-mode-local-map nil)
+(make-variable-buffer-local 'howm-menu-previous-buffer)
+(make-variable-buffer-local 'howm-menu-next-expiry-time)
+(make-variable-buffer-local 'howm-menu-last-time)
+(make-variable-buffer-local 'howm-menu-buffer-file)
+(make-variable-buffer-local 'howm-menu-buffer-file-place)
+(make-variable-buffer-local 'howm-menu-mode-local-map)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; mode
+
+(defun howm-menu-mode ()
+ "howm menu
+key binding
+--- -------
+\\[action-lock-magic-return] Follow link
+\\[action-lock-goto-next-link] Next link
+\\[action-lock-goto-previous-link] Prev link
+\\[describe-mode] This help
+\\[bury-buffer] Quit
+"
+ (interactive)
+ (setq major-mode 'howm-menu-mode
+ mode-name "HM")
+ (setq howm-menu-mode-local-map (copy-keymap howm-menu-mode-map))
+ (use-local-map howm-menu-mode-local-map)
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; main
+
+(defun howm-menu (&optional force-refresh last-chance)
+ (interactive)
+ (when (and (eq (howm-folder-type howm-directory) ':dir)
+ (not (file-exists-p howm-directory)))
+ (make-directory howm-directory t))
+ (let ((*howm-menu-force-refresh* force-refresh)
+ ;; force to use the original howm-directory
+ (*howm-independent-directories* nil))
+ (if (and howm-menu-keyword-regexp (null howm-menu-file))
+ (let ((m (howm-keyword-search howm-menu-top)))
+ (when (and (cdr (assoc 'menu-p m))
+ (not (cdr (assoc 'keyword-matched m))))
+ (howm-menu-initialize-skel last-chance)))
+ (howm-menu-open howm-menu-file))))
+
+(defun howm-menu-open (file &optional place name)
+ (setq name (or name (howm-menu-name file)))
+ (let ((f (if (file-name-absolute-p file)
+ file
+ (expand-file-name file howm-directory))))
+ (if (file-exists-p f)
+ (howm-menu-open-sub f place name)
+ (progn
+ (find-file f)
+ (howm-mode)))))
+
+(defun howm-menu-open-sub (f place name)
+ (let* ((pb (current-buffer))
+ (pm major-mode)
+ (b (get-buffer name))
+ (mtime (nth 5 (file-attributes f))))
+ (if (or *howm-menu-force-refresh*
+ (null b)
+ (progn
+ (set-buffer b)
+ (or (howm-time< howm-menu-last-time mtime)
+ (howm-time< howm-menu-next-expiry-time
+ (current-time)))))
+ (howm-menu-refresh f place name)
+ (switch-to-buffer b))
+ (let ((cm major-mode))
+ (save-excursion
+ (while (eq pm cm)
+ (set-buffer pb)
+ (setq pb howm-menu-previous-buffer)
+ (set-buffer pb)
+ (setq pm major-mode)))
+ (setq howm-menu-previous-buffer pb))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; refresh
+
+(howm-defvar-risky howm-menu-shortcut-assoc nil)
+(make-variable-buffer-local 'howm-menu-shortcut-assoc)
+(howm-defvar-risky howm-menu-invisible t
+ "*Non nil if 'invisible' property should be used in menu.
+This must be t at now.
+When this is nil, delete-region is used instead, and bug appears.")
+
+(defun howm-menu-refresh (&optional file place name)
+ (interactive)
+ ;; preprocess
+ (when name
+ (switch-to-buffer (get-buffer-create name)))
+ (howm-menu-mode)
+ (setq howm-menu-buffer-file (or file howm-menu-buffer-file))
+ (setq howm-menu-buffer-file-place (or place
+ howm-menu-buffer-file-place
+ 1))
+ (setq howm-menu-shortcut-assoc nil)
+ ;; main
+ (howm-rewrite-read-only-buffer
+ (howm-menu-insert-paragraph howm-menu-buffer-file
+ howm-menu-buffer-file-place)
+ (howm-menu-dynamic-setup) ;; shotcut & dynamic contents
+ (howm-menu-set-face))
+ ;; postprocess
+ (goto-char (point-min))
+ (setq howm-menu-last-time (current-time))
+ (setq howm-menu-next-expiry-time
+ (howm-days-after (current-time) 0
+ howm-menu-expiry-hours))
+ (howm-menu-shortcut-warn)
+ (run-hooks 'howm-menu-hook))
+
+(defun howm-menu-insert-paragraph (file place)
+ (insert-file-contents (expand-file-name file
+ howm-directory))
+ (howm-view-set-place place)
+ (let* ((r (howm-view-paragraph-region))
+ (b (car r))
+ (e (cadr r)))
+ (delete-region e (point-max))
+ (delete-region (point-min) b))
+ (goto-char (point-max))
+ (insert (howm-menu-footer)))
+
+;; (defun howm-menu-dynamic-setup ()
+;; (let* ((action-lock-default-rules (howm-menu-action-lock-rules)))
+;; (if howm-mode
+;; (howm-initialize-buffer)
+;; (howm-mode 1)))
+;; (howm-menu-shortcut-initialize)
+;; (howm-menu-replace howm-menu-display-rules))
+
+(defun howm-menu-dynamic-setup ()
+ (howm-menu-shortcut-initialize)
+ (howm-menu-replace howm-menu-display-rules)
+ (let* ((action-lock-default-rules (howm-menu-action-lock-rules)))
+ (if howm-mode
+ (howm-initialize-buffer)
+ (howm-mode 1))))
+
+(defun howm-menu-set-face ()
+ (set (make-local-variable 'font-lock-keywords-only) t)
+ (howm-menu-add-font-lock)
+ (font-lock-fontify-buffer)
+ (when howm-menu-toggle-invisible
+ (howm-menu-make-invisible)))
+
+(defun howm-menu-footer ()
+ (or howm-menu-footer
+ (let* ((r (howm-menu-command-table-raw))
+ (buttons (mapcar (lambda (f)
+ (cdr (assoc f
+ (mapcar (lambda (z)
+ (cons (cadr z)
+ (car z)))
+ r))))
+ '(howm-menu-refresh howm-menu-edit)))
+ (footer (apply #'concat `("\n-- \n" ,@buttons))))
+ (setq howm-menu-footer footer)
+ footer)))
+
+(defun howm-menu-refresh-background ()
+ ;; save-current-buffer doesn't work on GNU Emacs 21.4.1
+ (let ((b (current-buffer)))
+ (howm-menu t)
+ (switch-to-buffer b)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; action-lock
+
+(defun howm-menu-invoke (arg)
+ (interactive "P")
+ (cond ((save-excursion
+ (beginning-of-line)
+ (looking-at howm-menu-list-regexp))
+ (beginning-of-line)
+ (action-lock-invoke arg))
+ ((howm-menu-list-get-item)
+ (howm-view-open-item (howm-menu-list-get-item)))
+ (t
+ (error "Not on spell string."))))
+
+(defun howm-menu-action-lock-rules ()
+ (let* ((d action-lock-default-rules)
+ (f (howm-action-lock-reminder-forward-rules))
+ (j (howm-menu-list-rules))
+ (m (mapcar (lambda (pair)
+ (let* ((h (car pair))
+ (r (if (listp h) (car h) h))
+ (n (if (listp h) (cadr h) nil))
+ (args (if n
+ `(list (match-string-no-properties ,n))
+ nil))
+ (functab (cdr pair))
+ (c (howm-menu-action functab args)))
+ (list r c)))
+ (howm-menu-command-table))))
+ (append m d j f)))
+
+;; Elisp is not Scheme. Lambda is not closure. Don't forget dynamic binding.
+;; Check
+;; (pp (car (howm-menu-action-lock-rules)))
+;; for debug. [2003/09/25]
+(defun howm-menu-action (function-table args)
+ (let* ((func (car function-table))
+ (onbuf (cadr function-table))
+ (switch-p (eq onbuf 'previous)))
+ (let* ((s-buf (if (eq onbuf 'current) 'cur 'prev))
+ (s-switch `(switch-to-buffer ,s-buf))
+ (s-apply `(apply #',func ,(if args 'a nil))))
+;; (s-apply `(apply #',func ,(if args '(list a) nil))))
+ (let* ((s-body (if switch-p
+ `(progn ,s-switch ,s-apply)
+ `(with-current-buffer ,s-buf ,s-apply))))
+ `(lambda (&optional ,howm-menu-action-arg)
+ (let ((a ,args)
+ (cur (current-buffer))
+ (prev (if (howm-buffer-alive-p howm-menu-previous-buffer)
+ howm-menu-previous-buffer
+ (current-buffer))))
+ ,s-body))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; shortcut
+
+(defun howm-menu-shortcut-get-marker ()
+ (let ((m (make-marker)))
+ (set-marker m (point))
+ (add-to-list '*howm-menu-shortcut-markers* m)
+ m))
+
+(defun howm-menu-shortcut-clear-markers ()
+ (mapc (lambda (m) (set-marker m nil))
+ *howm-menu-shortcut-markers*)
+ (setq *howm-menu-shortcut-markers* nil))
+
+(defun howm-menu-shortcut-initialize ()
+ (setq *howm-menu-shortcut-keys* nil)
+ (setq *howm-menu-shortcut-multidef-keys* nil)
+ (howm-menu-shortcut-clear-markers))
+
+(defun howm-menu-shortcut-sort (keys)
+ (mapconcat #'identity
+ (sort (copy-sequence keys) #'string<)
+ ""))
+
+(defun howm-menu-shortcut-warn ()
+ (when *howm-menu-shortcut-multidef-keys*
+ (beep)
+ (message "Multiple definitions for key(s): \"%s\" in \"%s\""
+ (howm-menu-shortcut-sort *howm-menu-shortcut-multidef-keys*)
+ (howm-menu-shortcut-sort *howm-menu-shortcut-keys*))))
+
+;; Check howm-menu-mode-local-map if you want to debug howm-menu-shortcut.
+(defun howm-menu-shortcut ()
+ (let* ((beg (match-beginning 0))
+ (end (match-end 0))
+ (wbeg (match-beginning howm-menu-key-regexp-word-pos))
+ (wend (match-end howm-menu-key-regexp-word-pos))
+ (key (match-string-no-properties howm-menu-key-regexp-key-pos))
+ (move-only (match-beginning howm-menu-key-regexp-moveonly-pos)))
+ ;; 'end' must be first.
+ ;; howm-menu-invisible-region can be delete-region indeed,
+ ;; and points after the region can be slided.
+ (howm-menu-invisible-region wend end)
+ (howm-menu-invisible-region beg wbeg)
+ (let ((p (howm-menu-shortcut-get-marker)))
+ (setq howm-menu-shortcut-assoc
+ (cons (cons key p) howm-menu-shortcut-assoc))
+ (define-key howm-menu-mode-local-map key
+ (howm-menu-shortcut-func key p move-only)))
+ (when (member key *howm-menu-shortcut-keys*)
+ (setq *howm-menu-shortcut-multidef-keys*
+ (cons key *howm-menu-shortcut-multidef-keys*)))
+ (setq *howm-menu-shortcut-keys*
+ (cons key *howm-menu-shortcut-keys*))))
+
+(defun howm-menu-shortcut-func (key p move-only)
+ (if howm-menu-invisible
+ (howm-menu-shortcut-func1 p move-only)
+ (howm-menu-shortcut-func2 key p move-only)))
+
+;; old code. it works.
+(defun howm-menu-shortcut-func1 (p move-only)
+ `(lambda (arg)
+ (interactive "P")
+ (let ((pos ,p))
+ (if ,move-only
+ (goto-char pos)
+ (save-excursion
+ (goto-char pos)
+ (let ((case-fold-search nil)) ;; temporaly
+ (when (null (action-lock-get-action))
+ (action-lock-goto-next-link))
+ (action-lock-invoke arg)))))))
+
+;; new code. broken.
+;; It doesn't work because action can be
+;; (let ((s (match-string-no-properties 0))) (howm-keyword-search s nil nil)).
+(defun howm-menu-shortcut-func2 (key p move-only)
+ (if move-only
+ `(lambda (arg) (interactive "P") (goto-char ,p))
+ (save-excursion
+ (goto-char p)
+ (let ((case-fold-search nil)) ;; temporaly
+ (when (null (action-lock-get-action))
+ (action-lock-goto-next-link))
+ (let ((action (action-lock-get-action)))
+ (if (null action)
+ (lambda (arg) (interactive "P") nil)
+ (progn
+ (rplacd (assoc key howm-menu-shortcut-assoc)
+ action)
+ `(lambda (arg)
+ (interactive "P")
+ (funcall (cdr (assoc ,key howm-menu-shortcut-assoc))
+ arg)))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; action
+
+(defun howm-menu-edit ()
+ (interactive)
+ (let ((place howm-menu-buffer-file-place))
+ (find-file (expand-file-name howm-menu-buffer-file howm-directory))
+ (howm-mode t)
+ (when place
+ (howm-view-set-place place)
+ (recenter 0))))
+
+(defun howm-menu-eval (s)
+ (let ((expr (read s)))
+ (eval expr)))
+
+(defun howm-menu-call (s)
+ (let ((expr (read s)))
+ (call-interactively expr)))
+
+(defun howm-open-today ()
+ (interactive)
+ (and (howm-create-file t)
+ (howm-insert-template ""))
+ (howm-set-mode))
+
+(defun howm-open-past (&optional days-before)
+ (interactive "p")
+ (setq days-before (or days-before 1))
+ (if (= days-before 0)
+ (howm-open-today)
+ (howm-open-past-sub days-before)))
+
+(defun howm-open-past-sub (days-before)
+ (let ((f (expand-file-name (howm-file-name (howm-days-after (current-time)
+ (- days-before)))
+ howm-directory)))
+ (if (file-exists-p f)
+ (find-file f)
+ (error "No such file: %s" f)))
+ (howm-set-mode))
+
+(defun howm-find-past (&optional days-before)
+ (interactive "p")
+ (cond ((howm-one-file-one-day-p) (howm-open-past days-before))
+ (t (howm-search-past days-before))))
+
+(defun howm-find-today (&optional days-before)
+ (interactive "P")
+ (howm-find-past (or days-before 0)))
+
+(defun howm-find-yesterday (&optional days-before)
+ (interactive)
+ (howm-find-past (or days-before 1)))
+
+(defun howm-one-file-one-day-p ()
+ (let* ((now (decode-time))
+ (d (nth 3 now))
+ (m (nth 4 now))
+ (y (nth 5 now))
+ (beginning-of-day (encode-time 0 0 0 d m y))
+ (end-of-day (encode-time 59 59 23 d m y)))
+ (string= (howm-file-name beginning-of-day)
+ (howm-file-name end-of-day))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; face
+
+(defun howm-menu-make-invisible ()
+ (save-excursion
+ (goto-char (point-min))
+ (let (visible-p
+ invisible-beg)
+ (while (not (= (point) (point-max)))
+ (setq visible-p t)
+ (while (re-search-forward howm-menu-toggle-invisible
+ (line-end-position) t)
+ (if visible-p
+ (setq invisible-beg (match-beginning 0))
+ (howm-menu-invisible-region invisible-beg (match-end 0)))
+ (setq visible-p (not visible-p)))
+ (when (not visible-p)
+ (howm-menu-invisible-region invisible-beg
+ (save-excursion (forward-line) (point))))
+ (forward-line)))))
+
+(defun howm-menu-font-lock-rules ()
+ `((,howm-menu-key-regexp
+ (,howm-menu-key-regexp-key-pos howm-menu-key-face t))
+ ;; In menu-list form "> FILE-NAME | ",
+ ;; I want to hide annoying long underlines drawn by action-lock.
+ (,howm-menu-list-regexp
+ (,howm-menu-list-regexp-face-pos howm-menu-list-face t))
+ ;; But some users may want to highlight today's YYYY-MM-DD even if
+ ;; it is a part of a FILE-NAME.
+ ;; The next code makes duplicated entries; they are already put into
+ ;; font-lock-keywords by howm-reminder-add-font-lock
+ ;; in howm-initialize-buffer because menu is howm-mode.
+ ;; They are hidden by the above rule in FILE-NAME columns,
+ ;; and I need to put them again now. Sigh...
+ ;; Clean me!
+ ,@(howm-reminder-today-font-lock-keywords)))
+(defun howm-menu-add-font-lock ()
+ (cheat-font-lock-append-keywords (howm-menu-font-lock-rules)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; dynamic contents
+
+(defun howm-menu-replace (rules)
+ (mapc (lambda (pair)
+ (let* ((reg (car pair))
+ (to (cdr pair)))
+ (goto-char (point-min))
+ (while (re-search-forward reg nil t)
+ (cond ((stringp to) (replace-match to))
+ ((functionp to) (funcall to))
+ (t (error "Invalid to-part: %s." to))))))
+ rules))
+
+;; (defun howm-menu-func ()
+;; (let ((b (match-beginning 0))
+;; (e (match-end 0))
+;; (f (read (match-string-no-properties 1))))
+;; (if (or (eq howm-menu-allow t)
+;; (member f howm-menu-allow))
+;; (howm-replace-region b e (funcall f))
+;; (message "%s is not allowed." f))))
+
+;; (defun howm-menu-var ()
+;; (let ((b (match-beginning 0))
+;; (e (match-end 0))
+;; (f (read (match-string-no-properties 1))))
+;; (howm-replace-region b e (eval f))))
+
+(defun howm-menu-here ()
+ (let* ((beg (match-beginning 0))
+ (expr-beg (match-end 0))
+ (expr-end (progn (forward-sexp) (point)))
+ (expr (read (buffer-substring-no-properties expr-beg expr-end))))
+ (cond ((symbolp expr) (howm-menu-here-var expr beg expr-end))
+ ((listp expr) (howm-menu-here-func (car expr) (cdr expr)
+ beg expr-end))
+ (t (message "Unknown expr: %s" expr)))))
+
+(defun howm-menu-here-var (expr beg end)
+ (if (boundp expr)
+ (howm-replace-region beg end (symbol-value expr))
+ (message "Unknown symbol: %s" expr)))
+
+(defun howm-menu-here-func (func args beg end)
+;; (let ((allowed (or (eq howm-menu-allow t) (member func howm-menu-allow))))
+ (let ((allowed (member func howm-menu-allow)))
+ (cond ((not allowed) (message "Not allowed: %s" func))
+ ((not (fboundp func)) (message "Unknown function: %s" func))
+ (t (howm-replace-region beg end (apply func args))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; schedule, todo, recent, random
+
+;;; command
+
+(defun howm-menu-schedule ()
+ (howm-menu-general "schedule" 'schedule
+ (howm-schedule-menu howm-menu-schedule-days
+ howm-menu-schedule-days-before)))
+
+(defvar howm-menu-todo-show-day-of-week t)
+(defun howm-menu-todo ()
+ (howm-menu-general "todo" 'todo
+ (howm-todo-menu howm-menu-todo-num
+ howm-menu-todo-priority
+ howm-menu-reminder-separators)))
+(defun howm-menu-reminder ()
+ (howm-menu-general "reminder" 'todo
+ (howm-reminder-menu howm-menu-todo-num
+ howm-menu-todo-priority
+ howm-menu-reminder-separators)))
+
+(defun howm-menu-recent (&optional evaluator label)
+ (howm-menu-general (or label "recent")
+ nil
+ (howm-recent-menu howm-menu-recent-num evaluator)))
+
+(defun howm-menu-random () (howm-menu-recent t "random"))
+
+(defun howm-menu-general (label formatter item-list)
+ "Generate output string for items in howm menu.
+LABEL is only used for message.
+FORMATTER is a function which receives an item and returns an output string
+ (without newline).
+FORMATTER can be nil for standard style, 'todo for todo style,
+'schedule for schedule style, or 'full for full note.
+ITEM-LIST is list of items which should be shown."
+ (let ((f (cond ((null formatter) #'howm-menu-format-item)
+ ((eq 'todo formatter) #'howm-menu-format-todo)
+ ((eq 'schedule formatter) #'howm-menu-format-reminder)
+ ((eq 'full formatter) #'howm-menu-format-full)
+ (t formatter))))
+ (let* ((msg "scanning %s...")
+ (msg-done (concat msg "done")))
+ (message msg label)
+ ;; (delete-region (match-beginning 0) (match-end 0))
+ (prog1
+ (mapconcat f item-list "\n")
+ (message msg-done label)))))
+
+;;; schedule/todo
+
+(defun howm-menu-format-todo (item)
+ ;; item can be a separator.
+ (if (eq (howm-page-type (howm-item-page item)) ':nil)
+ (howm-item-summary item)
+ (let ((dow-str (cond (howm-menu-todo-show-day-of-week nil)
+ (t " "))))
+ (howm-menu-format-reminder item dow-str t))))
+
+(defun howm-menu-format-reminder (item &optional day-of-week-str show-priority)
+ (let* ((p (howm-todo-parse item))
+ (late (floor (car p)))
+ (dow (cl-cadddr p))
+ (dow-str (or day-of-week-str
+ (howm-day-of-week-string dow)))
+ (priority (if (and howm-menu-todo-priority-format
+ show-priority)
+ (format howm-menu-todo-priority-format
+ (howm-todo-priority item))
+ ""))
+ (h (format "%s%3s%s" dow-str late priority)))
+ (howm-menu-list-format h (howm-view-item-summary item) item
+ howm-menu-reminder-format)))
+
+(defun howm-day-of-week-string (&optional day-of-week)
+ ;; 0 = Sunday
+ (let ((dow (or day-of-week (nth 6 (decode-time))))
+ (names (howm-day-of-week)))
+ (cond ((stringp names) (substring names dow (1+ dow))) ;; backward compatibility
+ ((listp names) (nth dow names))
+ (t " "))))
+
+(defun howm-menu-format-full (item)
+ (let ((text (format "%s %s\n%s"
+ howm-ref-header
+ (howm-item-name item)
+ (with-temp-buffer
+ (howm-page-insert (howm-item-page item))
+ (howm-view-set-place (howm-view-item-place item))
+ (apply 'buffer-substring-no-properties
+ (howm-view-paragraph-region))))))
+ (howm-menu-list-put-item text item)
+ text))
+
+;;; recent/random
+
+(defun howm-recent-menu (num &optional evaluator)
+ ;; Bug: (length howm-recent-menu) can be smaller than NUM
+ ;; when empty files exist.
+ (let* ((randomp (eq evaluator t))
+ (summarizer #'(lambda (file line content) content))
+ ;; Unique name is needed for dynamic binding. Sigh...
+ (h-r-m-evaluator (if randomp
+ (lambda (f) (number-to-string (random)))
+ (or evaluator #'howm-view-mtime)))
+ (sorted (howm-sort (lambda (f) (funcall h-r-m-evaluator f))
+ #'howm-view-string>
+ (mapcar #'howm-item-name
+ (howm-folder-items howm-directory t))))
+ (files (howm-first-n sorted num)))
+ (let ((r (howm-menu-recent-regexp)))
+ (if randomp
+ (cl-mapcan (lambda (f)
+ (let ((is (howm-view-search-items r (list f)
+ summarizer)))
+ (and is (list (nth (random (length is))
+ is)))))
+ files)
+ (howm-first-n (howm-view-search-items r files summarizer) num)))))
+
+(defun howm-menu-recent-regexp ()
+ (or howm-menu-recent-regexp (howm-view-title-regexp-grep)))
+
+;;; common
+
+(defun howm-menu-list-put-item (text item)
+ ;; put it to whole text, because I don't assume "> ..." format here.
+ (put-text-property 0 (length text) 'howm-menu-list-item item text))
+(defun howm-menu-list-get-item (&optional text)
+ (get-text-property (if text 0 (point)) 'howm-menu-list-item text))
+(defun howm-menu-list-getput-item (from-text to-text)
+ (howm-menu-list-put-item to-text
+ (howm-menu-list-get-item from-text)))
+
+(defun howm-menu-list-action (&optional keyword)
+ (let ((item (howm-menu-list-get-item keyword)))
+ (cond (item (howm-view-open-item item)) ;; schedule, todo, etc.
+ (keyword (howm-keyword-search keyword)) ;; history
+ (t (error "Target is not specified."))))) ;; can't happen
+
+(defun howm-menu-format-item (item &optional list-format)
+ (let* ((info (file-name-sans-extension (howm-view-item-basename item)))
+ (line (howm-view-item-summary item)))
+ (howm-menu-list-format info line item list-format)))
+
+(defun howm-menu-list-format (info line item &optional list-format)
+ (let ((s (format (or list-format howm-menu-list-format) info line)))
+ (howm-menu-list-put-item s item)
+ s))
+
+(defun howm-menu-list-rules ()
+ (list (action-lock-general #'howm-menu-list-action
+ howm-menu-list-regexp
+ howm-menu-list-regexp-key-pos
+ howm-menu-list-regexp-action-pos)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; embed search result
+
+(defun howm-menu-search (key &optional formatter regexp-p)
+ "Embed search result of KEY into menu.
+See `howm-menu-general' for FORMATTER.
+KEY is a regular expression if REGEXP-P is not nil.
+
+Bugs: If you write %here%(howm-menu-search \"foo\" full) in your menu,
+- menu file itself is also searched.
+Write %here%(howm-menu-search \"[f]oo\" full t) insteadly.
+- same note is shown twice if \"foo\" is hit twice in it."
+ (let ((fixed-p (not regexp-p)))
+ (howm-menu-general "menu-search"
+ formatter
+ (howm-view-search-folder-items key (howm-folder)
+ nil fixed-p))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; categorized todo-list
+
+;; Experimental [2006-01-16]
+
+(defun howm-menu-classified-reminder (classifier &optional comparer
+ title-format)
+ "Generate string of classified reminder-list.
+CLASSIFIER is a function which receives an item and answers its class.
+Class can be an arbitrary lisp object.
+When class is nil, corresponding item is not shown in this list.
+COMPARER is a function which receives two keys and answer t or nil.
+It is used for sorting of keys.
+TITLE-FORMAT is a format string for class title."
+ (let* ((a (howm-classify classifier
+ (howm-reminder-menu nil
+ howm-menu-todo-priority
+ nil)))
+ ;; key 'nil' is skipped.
+ (keys (remove nil (mapcar #'car a)))
+ (tform (concat (or title-format "--%s--") "\n")))
+ (when comparer
+ (setq keys (sort keys comparer)))
+ (mapconcat (lambda (k)
+ (let* ((item-list (howm-first-n (cdr (assoc k a))
+ howm-menu-todo-num))
+ (is (howm-with-reminder-setting
+ (howm-todo-insert-separators
+ item-list
+ howm-menu-reminder-separators
+ t))))
+ (concat (format tform k)
+ (howm-menu-general (format "reminder(%s)" k) 'todo
+ is))))
+ keys "\n")))
+
+(defun howm-menu-categorized-reminder (categories &optional title-format
+ erase-p omit-misc-p)
+ "Generate string of categorized reminder-list.
+
+Write %here%(howm-menu-categorized-reminder (\"foo\" \"bar\" \"baz\"))
+to show categorized list in menu. (You don't need quote(')
+before the above list; arguments are not evaluated in %here%
+because I don't have enough courage to call eval.)
+
+If you like to erase category label from summary string, try
+%here%(howm-menu-categorized-reminder (\"foo\" \"bar\" \"baz\") nil t)
+instead.
+
+If you don't like misc. category, try
+%here%(howm-menu-categorized-reminder (\"foo\" \"bar\" \"baz\") nil nil t)."
+ ;; Using categories, matcher, etc. in lambda is bad indeed
+ ;; because of dynamic binding.
+ (let* ((matcher (lambda (cat str item)
+ (and (string-match (regexp-quote cat) str)
+ (progn
+ (when erase-p
+ (howm-item-set-summary item
+ (replace-match "" nil nil
+ str)))
+ t))))
+ (classifier (lambda (item)
+ (let ((s (howm-item-summary item)))
+ (or (cl-find-if (lambda (c)
+ (funcall matcher c s item))
+ categories)
+ (if omit-misc-p nil "misc.")))))
+ (pos (lambda (c) (or (cl-position c categories) howm-infinity)))
+ (comparer (lambda (a b) (< (funcall pos a) (funcall pos b)))))
+ (howm-menu-classified-reminder classifier comparer title-format)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; generate initial menu
+
+(defun howm-menu-initialize-skel (&optional dummy)
+ (let ((menu-name (howm-get-symbol nil "howm-menu-" howm-menu-lang)))
+ (require menu-name)
+ (howm-menu-copy-skel (symbol-value menu-name))
+ (howm-view-kill-buffer)
+ (howm-menu nil t)))
+
+(defun howm-menu-copy-skel (contents)
+ (let ((menu-file (or howm-menu-file
+ (expand-file-name "0000-00-00-000000.txt"
+ howm-directory)))
+ (r "^="))
+ (if (file-exists-p menu-file)
+ ;; I have no courage to erase existing file.
+ (progn
+ (setq howm-menu-file menu-file)
+ (message "Assume %s as menu file." menu-file))
+ (progn
+ (find-file menu-file)
+ (insert contents)
+ (goto-char (point-min))
+ (while (re-search-forward r nil t)
+ (replace-match howm-view-title-header nil nil))
+ (howm-mode 1)
+ (save-buffer)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; switch language
+
+(defun howm-require-lang (&optional lang)
+ (require (howm-get-symbol nil "howm-lang-" (or lang howm-menu-lang))))
+
+(defun howm-lang-ref (var)
+ (let ((lang howm-menu-lang))
+ (howm-require-lang lang)
+ ;; For backward compatibility, I use howm-day-of-week-en
+ ;; rather than howm-day-of-week:en.
+ (symbol-value (howm-get-symbol t var "-" lang))))
+
+(defun howm-menu-command-table-raw ()
+ (howm-lang-ref "howm-menu-command-table"))
+
+(defun howm-menu-command-table ()
+ (append howm-menu-command-table-common
+ (mapcar (lambda (pair) (cons (regexp-quote (car pair)) (cdr pair)))
+ (howm-menu-command-table-raw))))
+
+(defun howm-day-of-week ()
+ (howm-lang-ref "howm-day-of-week"))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; misc.
+
+(defun howm-menu-p ()
+ (string= major-mode "howm-menu-mode"))
+
+(defun howm-menu-name (file)
+ (format howm-menu-name-format file))
+
+(defun howm-buffer-alive-p (buf)
+ (and buf (buffer-name buf)))
+
+(defun howm-menu-keyword-p (keyword)
+ (and howm-menu-keyword-regexp
+ (stringp keyword) ;; perhaps unnecessary
+ (string-match howm-menu-keyword-regexp keyword)))
+
+(defun howm-time< (t1 t2)
+ (or (< (car t1) (car t2))
+ (and (= (car t1) (car t2))
+ (< (cadr t1) (cadr t2)))))
+
+(defun howm-menu-invisible-region (beg end)
+ (if howm-menu-invisible
+ (put-text-property beg end 'invisible t)
+ (delete-region beg end))
+;; (put-text-property beg end 'intangible t)
+ )
+
+;;; howm-menu.el ends here
--- /dev/null
+;;; howm-misc.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-misc.el,v 1.96 2012-12-29 08:57:18 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;;--------------------------------------------------------------------
+
+(provide 'howm-misc)
+(require 'howm)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Misc.
+
+(defun howm-version ()
+ (interactive)
+ (message "howm-%s" howm-version))
+
+(defun howm-keyword-file ()
+ ;; create .howm-keys
+ (when (not (file-exists-p howm-keyword-file))
+ (save-excursion
+ (find-file howm-keyword-file)
+ (when howm-menu-top
+ (goto-char (point-min))
+ (insert howm-menu-top "\n"))
+ (set-buffer-modified-p t)
+ (save-buffer)
+ (kill-buffer nil)
+ (message "Generating %s ..." howm-keyword-file)
+ (howm-keyword-add-items (howm-all-items))
+ (message "Done.")))
+ howm-keyword-file)
+
+(add-hook 'howm-view-open-hook 'howm-set-mode)
+(defun howm-set-mode ()
+ (when (howm-set-mode-p)
+ (howm-set-configuration-for-major-mode major-mode)
+ (howm-mode 1)))
+
+(defun howm-set-mode-p (&optional buf)
+ (with-current-buffer (or buf (current-buffer))
+ (let ((hdir (car (howm-search-path))))
+ (and (buffer-file-name)
+ (howm-folder-territory-p hdir (buffer-file-name))))))
+
+(defvar howm-configuration-for-major-mode nil)
+;; ;; sample
+;; (setq howm-configuration-for-major-mode
+;; '(
+;; ;; fix me
+;; (emacs-lisp-mode
+;; . (
+;; (howm-keyword-format . "(def[a-z*]+ +%s[ \t\r\n]")
+;; (howm-keyword-regexp-format . "%s")
+;; (howm-keyword-regexp . "(\\(def[a-z]+\\) +'?\\([-+=*/_~!@$%^&:<>{}?a-zA-Z0-9]+\\)") ;; ' for (defalias 'xxx ...)
+;; (howm-keyword-regexp-hilit-pos . 1)
+;; (howm-keyword-regexp-pos . 2)
+;; (howm-view-title-regexp . "^(.*$")
+;; ;; (howm-view-title-regexp . "^[^; \t\r\n].*$")
+;; (howm-view-title-regexp-pos . 0)
+;; (howm-view-title-regexp-grep . "^[^; \t\r\n].*$")
+;; (howm-mode-title-face . nil)
+;; (howm-keyword-list-alias-sep . nil)
+;; (howm-view-preview-narrow . nil)
+;; ))
+;; (scheme-mode
+;; . (
+;; (howm-keyword-format . "(def[a-z]+ +[(]?%s[) \t\r\n]")
+;; (howm-keyword-regexp-format . "%s")
+;; (howm-keyword-regexp . "(\\(def[a-z]+\\) +[(]?\\([-+=*/_~!@$%^&:<>{}?a-zA-Z0-9]+\\)")
+;; (howm-keyword-regexp-hilit-pos . 1)
+;; (howm-keyword-regexp-pos . 2)
+;; (howm-view-title-regexp . "^[^; \t\r\n].*$")
+;; (howm-view-title-regexp-pos . 0)
+;; (howm-view-title-regexp-grep . "^[^; \t\r\n].*$")
+;; (howm-mode-title-face . nil)
+;; (howm-keyword-list-alias-sep . nil)
+;; (howm-view-preview-narrow . nil)
+;; ))
+;; (ruby-mode
+;; . (
+;; (howm-keyword-format . "\\(def\\|class\\) +%s\\b")
+;; (howm-keyword-regexp-format . "%s")
+;; (howm-keyword-regexp . "\\(def\\|class\\) +\\([-+=*/_~!@$%^&:<>{}?a-zA-Z0-9]+\\)")
+;; (howm-keyword-regexp-hilit-pos . 1)
+;; (howm-keyword-regexp-pos . 2)
+;; (howm-view-title-regexp . "^[^# \t\r\n].*$")
+;; (howm-view-title-regexp-pos . 0)
+;; (howm-view-title-regexp-grep . "^[^# \t\r\n].*$")
+;; (howm-mode-title-face . nil)
+;; (howm-keyword-list-alias-sep . nil)
+;; (howm-view-preview-narrow . nil)
+;; ))
+;; (yatex-mode
+;; . (
+;; (howm-keyword-format . "\\\\label%s")
+;; (howm-keyword-regexp-format . "%s")
+;; (howm-keyword-regexp . "\\(\\\\label\\)\\({[^}\r\n]+}\\)")
+;; (howm-keyword-regexp-hilit-pos . 1)
+;; (howm-keyword-regexp-pos . 2)
+;; (howm-view-title-regexp . "\\\\\\(\\(sub\\)*section\\|chapter\\|part\\|begin\\)")
+;; (howm-view-title-regexp-pos . 0)
+;; (howm-view-title-regexp-grep . "\\\\((sub)*section|chapter|part|begin)")
+;; (howm-mode-title-face . nil)
+;; (howm-keyword-list-alias-sep . nil)
+;; (howm-view-preview-narrow . nil)
+;; ))
+;; ))
+
+(defun howm-set-configuration-for-file-name (f)
+ (let ((mode (howm-auto-mode f)))
+ (howm-set-configuration-for-major-mode mode)))
+
+(defun howm-set-configuration-for-major-mode (mode)
+ (let ((a (cdr (assoc mode howm-configuration-for-major-mode))))
+ (when a ;; I know this is redundant.
+ (mapc (lambda (sv)
+ (let ((symbol (car sv))
+ (value (cdr sv)))
+ (set (make-local-variable symbol) value)))
+ a))))
+
+(defmacro howm-if-unbound (var &rest alt-body)
+ `(if (boundp ',var) ,var ,@alt-body))
+
+;; copied and modified from set-auto-mode in /usr/share/emacs/21.2/lisp/files.el
+;; (I don't want to set the mode actually. Sigh...)
+(howm-dont-warn-free-variable auto-mode-interpreter-regexp)
+(defvar howm-auto-mode-interpreter-regexp
+ (howm-if-unbound auto-mode-interpreter-regexp
+ ;; xemacs doesn't have it.
+ "#![ \t]?\\([^ \t\n]*/bin/env[ \t]\\)?\\([^ \t\n]+\\)"))
+(defun howm-auto-mode (&optional file-name)
+ "Major mode appropriate for current buffer.
+This checks for a -*- mode tag in the buffer's text,
+compares the filename against the entries in `auto-mode-alist',
+or checks the interpreter that runs this file against
+`interpreter-mode-alist'.
+
+It does not check for the `mode:' local variable in the
+Local Variables section of the file; for that, use `hack-local-variables'.
+
+If `enable-local-variables' is nil, this function does not check for a
+-*- mode tag.
+
+This function merely returns the mode; it does not set the mode.
+"
+ ;; Look for -*-MODENAME-*- or -*- ... mode: MODENAME; ... -*-
+ (let (beg end done modes ans)
+ (save-excursion
+ (goto-char (point-min))
+ (skip-chars-forward " \t\n")
+ (and enable-local-variables
+ ;; Don't look for -*- if this file name matches any
+ ;; of the regexps in inhibit-first-line-modes-regexps.
+ (let ((temp (howm-if-unbound inhibit-first-line-modes-regexps
+ inhibit-local-variables-regexps))
+ (name (file-name-sans-versions (or file-name ""))))
+ (while (let ((sufs (howm-if-unbound inhibit-first-line-modes-suffixes
+ inhibit-local-variables-suffixes)))
+ (while (and sufs (not (string-match (car sufs) name)))
+ (setq sufs (cdr sufs)))
+ sufs)
+ (setq name (substring name 0 (match-beginning 0))))
+ (while (and temp
+ (not (string-match (car temp) name)))
+ (setq temp (cdr temp)))
+ (not temp))
+ (search-forward "-*-" (save-excursion
+ ;; If the file begins with "#!"
+ ;; (exec interpreter magic), look
+ ;; for mode frobs in the first two
+ ;; lines. You cannot necessarily
+ ;; put them in the first line of
+ ;; such a file without screwing up
+ ;; the interpreter invocation.
+ (end-of-line (and (looking-at "^#!") 2))
+ (point)) t)
+ (progn
+ (skip-chars-forward " \t")
+ (setq beg (point))
+ (search-forward "-*-"
+ (save-excursion (end-of-line) (point))
+ t))
+ (progn
+ (forward-char -3)
+ (skip-chars-backward " \t")
+ (setq end (point))
+ (goto-char beg)
+ (if (save-excursion (search-forward ":" end t))
+ ;; Find all specifications for the `mode:' variable
+ ;; and execute them left to right.
+ (while (let ((case-fold-search t))
+ (or (and (looking-at "mode:")
+ (goto-char (match-end 0)))
+ (re-search-forward "[ \t;]mode:" end t)))
+ (skip-chars-forward " \t")
+ (setq beg (point))
+ (if (search-forward ";" end t)
+ (forward-char -1)
+ (goto-char end))
+ (skip-chars-backward " \t")
+ (push (intern (concat (downcase (buffer-substring beg (point))) "-mode"))
+ modes))
+ ;; Simple -*-MODE-*- case.
+ (push (intern (concat (downcase (buffer-substring beg end))
+ "-mode"))
+ modes)))))
+ ;; If we found modes to use, set done.
+ (dolist (mode (nreverse modes))
+ (when (functionp mode)
+ (setq ans mode)
+ (setq done t)))
+ ;; If we didn't find a mode from a -*- line, try using the file name.
+ (if (and (not done) file-name)
+ (let ((name file-name)
+ (keep-going t))
+ ;; Remove backup-suffixes from file name.
+ (setq name (file-name-sans-versions name))
+ (while keep-going
+ (setq keep-going nil)
+ (let ((alist auto-mode-alist)
+ (mode nil))
+ ;; Find first matching alist entry.
+ (let ((case-fold-search
+ (memq system-type '(vax-vms windows-nt))))
+ (while (and (not mode) alist)
+ (if (string-match (car (car alist)) name)
+ (if (and (consp (cdr (car alist)))
+ (nth 2 (car alist)))
+ (setq mode (car (cdr (car alist)))
+ name (substring name 0 (match-beginning 0))
+ keep-going t)
+ (setq mode (cdr (car alist))
+ keep-going nil)))
+ (setq alist (cdr alist))))
+ (if mode
+ (setq ans mode)
+ ;; If we can't deduce a mode from the file name,
+ ;; look for an interpreter specified in the first line.
+ ;; As a special case, allow for things like "#!/bin/env perl",
+ ;; which finds the interpreter anywhere in $PATH.
+ (let ((interpreter
+ (save-excursion
+ (goto-char (point-min))
+ (if (looking-at howm-auto-mode-interpreter-regexp)
+ (match-string 2)
+ "")))
+ elt)
+ ;; Map interpreter name to a mode.
+ (setq elt (assoc (file-name-nondirectory interpreter)
+ interpreter-mode-alist))
+ (if elt
+ (setq ans (cdr elt)))))))))
+ ans
+ ))
+
+;; copied from /usr/share/emacs/21.2/lisp/subr.el
+;; for emacs20 and xemacs
+(when (not (fboundp 'replace-regexp-in-string))
+ (defun replace-regexp-in-string (regexp rep string &optional
+ fixedcase literal subexp start)
+ "Replace all matches for REGEXP with REP in STRING.
+
+Return a new string containing the replacements.
+
+Optional arguments FIXEDCASE, LITERAL and SUBEXP are like the
+arguments with the same names of function `replace-match'. If START
+is non-nil, start replacements at that index in STRING.
+
+REP is either a string used as the NEWTEXT arg of `replace-match' or a
+function. If it is a function it is applied to each match to generate
+the replacement passed to `replace-match'; the match-data at this
+point are such that match 0 is the function's argument.
+
+To replace only the first match (if any), make REGEXP match up to \\'
+and replace a sub-expression, e.g.
+ (replace-regexp-in-string \"\\(foo\\).*\\'\" \"bar\" \" foo foo\" nil nil 1)
+ => \" bar foo\"
+"
+
+ ;; To avoid excessive consing from multiple matches in long strings,
+ ;; don't just call `replace-match' continually. Walk down the
+ ;; string looking for matches of REGEXP and building up a (reversed)
+ ;; list MATCHES. This comprises segments of STRING which weren't
+ ;; matched interspersed with replacements for segments that were.
+ ;; [For a `large' number of replacments it's more efficient to
+ ;; operate in a temporary buffer; we can't tell from the function's
+ ;; args whether to choose the buffer-based implementation, though it
+ ;; might be reasonable to do so for long enough STRING.]
+ (let ((l (length string))
+ (start (or start 0))
+ matches str mb me)
+ (save-match-data
+ (while (and (< start l) (string-match regexp string start))
+ (setq mb (match-beginning 0)
+ me (match-end 0))
+ ;; If we matched the empty string, make sure we advance by one char
+ (when (= me mb) (setq me (min l (1+ mb))))
+ ;; Generate a replacement for the matched substring.
+ ;; Operate only on the substring to minimize string consing.
+ ;; Set up match data for the substring for replacement;
+ ;; presumably this is likely to be faster than munging the
+ ;; match data directly in Lisp.
+ (string-match regexp (setq str (substring string mb me)))
+ (setq matches
+ (cons (replace-match (if (stringp rep)
+ rep
+ (funcall rep (match-string 0 str)))
+ fixedcase literal str subexp)
+ (cons (substring string start mb) ; unmatched prefix
+ matches)))
+ (setq start me))
+ ;; Reconstruct a string from the pieces.
+ (setq matches (cons (substring string start l) matches)) ; leftover
+ (apply #'concat (nreverse matches)))))
+ )
+
+(howm-defvar-risky howm-kill-all-enable-force nil)
+(defun howm-kill-all (&optional force-p)
+ "Kill all buffers which is howm-mode and unmodified."
+ (interactive "P")
+ (let ((anyway (and force-p howm-kill-all-enable-force)))
+ (when (if anyway
+ (yes-or-no-p "Discard all unsaved changes on howm-mode buffers? ")
+ (y-or-n-p "Kill all howm-mode buffers? "))
+ (when (eq major-mode 'howm-view-summary-mode)
+ (howm-view-restore-window-configuration))
+ (mapc (lambda (b)
+ (when (howm-buffer-p b)
+ (when anyway
+ (switch-to-buffer b)
+ (set-buffer-modified-p nil)) ;; dangerous!
+ (when (not (buffer-modified-p b))
+ (kill-buffer b))))
+ (buffer-list))
+ (message "Done."))))
+
+(defun howm-toggle-buffer ()
+ (interactive)
+ (if (howm-buffer-p)
+ (howm-switch-to-nonhowm-buffer)
+ (howm-switch-to-howm-buffer)))
+(defun howm-switch-to-howm-buffer ()
+ (interactive)
+ (let ((b (howm-find-buffer #'howm-buffer-p)))
+ (if b
+ (switch-to-buffer b)
+ (howm-menu))))
+(defun howm-switch-to-nonhowm-buffer ()
+ (interactive)
+ (switch-to-buffer (or (howm-find-buffer #'(lambda (b)
+ (not (howm-buffer-p b))))
+ (error "No nonhowm buffer"))))
+
+(defun howm-find-buffer (pred)
+ (catch :found
+ (mapc (lambda (b)
+ (cond ((howm-internal-buffer-p b) nil) ;; skip
+ ((funcall pred b) (throw :found b))
+ (t t)))
+ (buffer-list))
+ nil))
+
+(defun howm-internal-buffer-p (buf)
+ (string= (substring (buffer-name buf) 0 1) " "))
+
+(defun howm-buffer-p (&optional buf)
+ (let* ((indep-dirs (cons nil *howm-independent-directories*))
+ (keyword-bufs (mapcar
+ (lambda (d)
+ (let ((default-directory (or d default-directory)))
+ (howm-keyword-buffer)))
+ indep-dirs)))
+ (with-current-buffer (or buf (current-buffer))
+ (or howm-mode
+ (member major-mode
+ '(howm-view-summary-mode
+ howm-view-contents-mode))
+ (member buf keyword-bufs)))))
+
+(defun howm-mode-add-font-lock ()
+ (cheat-font-lock-append-keywords (howm-mode-add-font-lock-internal)))
+
+(defun howm-mode-add-font-lock-internal ()
+ (when howm-use-color
+ `(,@howm-user-font-lock-keywords
+ (,howm-view-title-regexp
+ (0 howm-mode-title-face prepend))
+ (,howm-keyword-regexp
+ (,howm-keyword-regexp-hilit-pos howm-mode-keyword-face prepend))
+ (,howm-ref-regexp
+ (,howm-ref-regexp-hilit-pos howm-mode-ref-face prepend))
+ (,howm-wiki-regexp
+ (,howm-wiki-regexp-pos howm-mode-wiki-face prepend))
+ )))
+
+;;; unofficial. may be removed if no one needs them.
+
+(defun howm-show-buffer-as-howm ()
+ (interactive)
+ (let* ((name (buffer-name))
+ (pos (point))
+ (s (buffer-substring-no-properties (point-min) (point-max)))
+ (b (get-buffer-create (format "*howm[%s]*" name))))
+ (set-buffer b)
+ (howm-rewrite-read-only-buffer
+ (insert s)
+ (howm-mode 1)
+ (howm-initialize-buffer))
+ (goto-char pos)
+ (switch-to-buffer b)))
+
+;;; narrowing
+
+(defun howm-narrow-to-memo ()
+ (interactive)
+ (apply #'narrow-to-region (howm-view-paragraph-region t)))
+
+(defun howm-toggle-narrow ()
+ (interactive)
+ (if (howm-narrow-p)
+ (widen)
+ (howm-narrow-to-memo)))
+
+(put 'howm-narrow-to-memo 'disabled t)
+(put 'howm-toggle-narrow 'disabled t)
+
+(defun howm-narrow-p ()
+ (let ((b (point-min))
+ (e (point-max)))
+ (save-restriction
+ (widen)
+ (not (and (equal b (point-min))
+ (equal e (point-max)))))))
+
+(defun howm-auto-narrow ()
+ (when (cond (*howm-view-item-privilege* nil)
+ ((eq howm-auto-narrow t) t)
+ (t (member (howm-command) howm-auto-narrow)))
+ (howm-narrow-to-memo)))
+;; (when (and (member (howm-command) howm-auto-narrow)
+;; (not *howm-view-item-privilege*))
+
+;;; select file for new memo by hand
+
+(defun howm-create-interactively (&optional use-current-directory)
+ (interactive "P")
+ (find-file (read-file-name "Memo file: "
+ (if use-current-directory
+ nil
+ howm-directory)))
+ (goto-char (point-max))
+ (howm-create-here))
+
+;;; next/previous memo
+
+(defmacro howm-save-narrowing (&rest body)
+ (declare (indent 0))
+ `(let ((narrowp (howm-narrow-p)))
+ (when narrowp
+ (widen))
+ (unwind-protect
+ (progn
+ ,@body)
+ (when narrowp
+ (howm-narrow-to-memo)))))
+
+(defun howm-next-memo (n)
+ (interactive "p")
+ (howm-save-narrowing
+ (when (looking-at howm-view-title-regexp)
+ (setq n (+ n 1)))
+ (re-search-forward howm-view-title-regexp nil nil n)))
+
+(defun howm-previous-memo (n)
+ (interactive "p")
+ (howm-save-narrowing
+ (when (not (looking-at howm-view-title-regexp))
+ (setq n (+ n 1)))
+ (re-search-backward howm-view-title-regexp nil nil n)))
+
+(defun howm-first-memo ()
+ (interactive)
+ (howm-save-narrowing
+ (goto-char (point-min))))
+
+(defun howm-last-memo ()
+ (interactive)
+ (howm-save-narrowing
+ (goto-char (point-max)))
+ (re-search-backward howm-view-title-regexp))
+
+;;; random walk
+
+(defvar howm-random-walk-buf nil "for internal use")
+(defvar howm-random-walk-ro t "for internal use")
+
+(defun howm-random-walk ()
+ (interactive)
+ (let ((orig-bufs (buffer-list))
+ (howm-history-file nil))
+ (while (let ((v (frame-visible-p (selected-frame))))
+ (and v (not (eq v 'icon))
+ (not (input-pending-p))))
+ (unwind-protect
+ (cond ((eq major-mode 'howm-view-summary-mode)
+ (howm-random-walk-summary))
+ (howm-mode
+ (howm-random-walk-text))
+ (t
+ (howm-list-all)
+ (howm-random-walk-summary)))
+ (mapc (lambda (b)
+ (when (and (not (member b orig-bufs))
+ (null (get-buffer-window b)))
+ (kill-buffer b)))
+ (buffer-list)))
+ (sit-for howm-random-walk-wait))))
+
+(defun howm-random-walk-summary ()
+ (let ((n (length (riffle-item-list))))
+ (goto-char (point-min))
+ (forward-line (random n))
+ (howm-view-summary-check)
+ (sit-for howm-random-walk-wait)
+ (howm-view-summary-open)))
+
+(defun howm-random-walk-text ()
+ (let* ((ks (howm-keyword-for-goto))
+ (k (nth (random (length ks)) ks))
+ (d (- (point-max) (point-min))))
+ (goto-char (+ (point-min) (random d)))
+ (if (search-forward k nil t)
+ (goto-char (match-beginning 0))
+ (search-backward k nil t))
+ (sit-for howm-random-walk-wait)
+ (howm-keyword-search k)))
+
+;; named note
+
+(defun howm-open-named-file ()
+ "Ask a file name and open it as howm note if it is under howm directory."
+ (interactive)
+ (let* ((item-dir (lambda (item) (file-name-directory (howm-item-name item))))
+ (dir (cond ((eq major-mode 'howm-view-summary-mode)
+ (funcall item-dir (howm-view-summary-current-item)))
+ ((eq major-mode 'howm-view-contents-mode)
+ (funcall item-dir (howm-view-contents-current-item)))
+ (t
+ howm-directory)))
+ (fname (read-file-name "Howm file name: " dir)))
+ (find-file fname)
+ (if (file-exists-p fname)
+ (howm-set-mode)
+ (progn
+ (howm-insert-template "")
+ (howm-create-finish)))))
+
+;; imitation of remember.el
+;; http://www.emacswiki.org/cgi-bin/emacs-en/RememberMode
+
+;; shamelessly copied from http://newartisans.com/johnw/Emacs/remember.el
+;; (I cannot browse http://sacha.free.net.ph/notebook/emacs/dev today.)
+
+(defvar howm-remember-wconf nil
+ "for internal use")
+(defvar howm-remember-buffer-name "*howm-remember*")
+(defvar howm-remember-mode-hook nil)
+(let ((m (make-sparse-keymap)))
+ (define-key m "\C-c\C-c" 'howm-remember-submit)
+ (define-key m "\C-c\C-k" 'howm-remember-discard)
+ (howm-defvar-risky howm-remember-mode-map m))
+
+(defun howm-remember ()
+ "Add text to new note in howm."
+ (interactive)
+ (setq howm-remember-wconf (current-window-configuration))
+ (switch-to-buffer-other-window (get-buffer-create howm-remember-buffer-name))
+ (howm-remember-mode)
+ (apply #'message
+ `("Remember (%s) or discard (%s)."
+ ,@(mapcar (lambda (f)
+ (key-description
+ (where-is-internal f howm-remember-mode-map t)))
+ '(howm-remember-submit howm-remember-discard)))))
+
+(defun howm-remember-mode ()
+ "Major mode for `howm-remember'.
+
+\\{howm-remember-mode-map}"
+ (interactive)
+ (kill-all-local-variables)
+ (text-mode)
+ (use-local-map howm-remember-mode-map)
+ (setq major-mode 'howm-remember-mode
+ mode-name "HowmRemember")
+ (run-hooks 'howm-remember-mode-hook))
+
+(defun howm-remember-submit ()
+ (interactive)
+ (save-excursion
+ (let* ((title (howm-remember-get-title)) ;; has side effect
+ (s (buffer-substring-no-properties (point-min) (point-max))))
+ (set-window-configuration howm-remember-wconf)
+ (howm-create-file-with-title title)
+ (insert s "\n")
+ (save-buffer)
+ (kill-buffer (current-buffer))))
+ (howm-remember-discard))
+
+(defun howm-remember-get-title ()
+ (if (not howm-remember-first-line-to-title)
+ ""
+ (progn
+ (goto-char (point-min))
+ (prog1
+ (buffer-substring-no-properties (point-min)
+ (line-end-position))
+ (forward-line 1)
+ (delete-region (point-min) (point))))))
+
+(defun howm-remember-discard ()
+ (interactive)
+ (kill-buffer (current-buffer))
+ (set-window-configuration howm-remember-wconf))
+
+;; Rename buffer
+;;
+;; You can rename howm buffers based on their titles.
+;; Only buffer names in emacs are changed; file names are kept unchanged.
+;;
+;; Add the next lines to your .emacs if you like this feature.
+;; (add-hook 'howm-mode-hook 'howm-mode-set-buffer-name)
+;; (add-hook 'after-save-hook 'howm-mode-set-buffer-name)
+;;
+;; The original idea and code are given by Mielke-san (peter at exegenix.com).
+;; http://lists.sourceforge.jp/mailman/archives/howm-eng/2006/000020.html
+;; thx!
+
+(defvar howm-buffer-name-limit 20)
+(defvar howm-buffer-name-total-limit howm-buffer-name-limit)
+(defvar howm-buffer-name-format "%s"
+ "Buffer name format for `howm-mode-set-buffer-name'.
+For example, buffer name is _ABC_ if title is ABC and the value of
+this variable is \"_%s_\".")
+
+(defun howm-truncate-string (string limit &optional dots-str)
+ "Truncate STRING if it is longer than LIMIT.
+For example, \"1234567...\" is returned if string is \"123456789012\"
+and limit is 10.
+When DOTS-STR is non-nil, it is used instead of \"...\"."
+ (let ((dots (or dots-str "...")))
+ (when (> (length dots) limit)
+ (setq dots (substring dots 0 limit)))
+ (if (> (length string) limit)
+ (concat (substring string 0 (- limit (length dots)))
+ dots)
+ string)))
+
+(defun howm-set-buffer-name-from-title (checker title-regexp title-regexp-pos)
+ "Set the buffer name to the title(s) of the file."
+ (when (funcall checker)
+ (save-excursion
+ (goto-char 0)
+ (let ((titles nil))
+ (while (re-search-forward title-regexp nil t)
+ (setq titles
+ (cons (match-string-no-properties title-regexp-pos)
+ titles)))
+ (let ((name0 (mapconcat
+ (lambda (s)
+ (howm-truncate-string s howm-buffer-name-limit))
+ (reverse (cl-remove-if (lambda (s) (string= s ""))
+ titles))
+ "/")))
+ (when (not (string= name0 "")) ;; exclude "no title" case
+ (let ((name (format howm-buffer-name-format
+ (howm-truncate-string
+ name0
+ howm-buffer-name-total-limit))))
+ (rename-buffer name t))))))))
+
+(defun howm-mode-set-buffer-name ()
+ (howm-set-buffer-name-from-title (lambda ()
+ (and howm-mode (buffer-file-name)))
+ howm-view-title-regexp
+ howm-view-title-regexp-pos))
+
+;; memoize: used in howm-bayesian-set
+
+(defun howm-memoize-put (fname value)
+ (put fname 'howm-memoize value))
+(defun howm-memoize-get (fname)
+ (get fname 'howm-memoize))
+
+(defun howm-memoize-call (fname func args)
+ (let* ((p (assoc args (howm-memoize-get fname))))
+ (if p
+ (progn
+;; (message "hit %s" p)
+ (cdr p))
+ (let ((r (apply func args)))
+ ;; We need to get it again because func can change memory.
+ (howm-memoize-put fname `((,args . ,r) ,@(howm-memoize-get fname)))
+ r))))
+
+(defun howm-memoize-reset (fname)
+ (howm-memoize-put fname nil))
+
+(defmacro howm-defun-memoize (fname args &rest body)
+ (declare (indent 2))
+ `(progn
+ (howm-memoize-reset ',fname)
+ (defun ,fname ,args
+ "Function generated by `howm-defun-memoize'"
+ (howm-memoize-call ',fname (lambda ,args ,@body) (list ,@args)))))
+
+;; ;; test
+;; (howm-memoize-reset 'fib)
+;; (howm-defun-memoize fib (n) (if (<= n 1) 1 (+ (fib (- n 1)) (fib (- n 2)))))
+;; (fib 5)
+;; (howm-memoize-get 'fib)
+
+;; Bayesian set
+;;
+;; "M-x howm-bayesian-set RET lisp scheme haskell RET" to estimate
+;; related keywords with lisp, scheme, and haskell.
+;; If you are lucky, you may find ruby, elisp, gauche, etc.
+;; in estimated candidates.
+;;
+;; (ref.)
+;; Zoubin Ghahramani and Katherine Heller: "Bayesian Sets",
+;; Advances in Neural Information Processing Systems,
+;; Vol. 18, pp. 435-442, MIT Press, 2006.
+;; http://books.nips.cc/nips18.html
+;; http://books.nips.cc/papers/files/nips18/NIPS2005_0712.pdf
+
+(defun howm-bset-nodup (f &rest args)
+ (cl-remove-duplicates (apply f args) :test #'equal))
+(defun howm-bset-mapcar (func lis)
+ (howm-bset-nodup #'mapcar func lis))
+(defun howm-bset-mapcan (func lis)
+ (howm-bset-nodup (lambda (f z) (apply #'append (mapcar f z)))
+ func lis))
+
+(defun howm-bset-message (&rest args)
+ (let (message-log-max) ;; prevent it from being logged
+ (apply #'message args)))
+
+(defun howm-bset-matched-files (query)
+;; (howm-bset-message "Finding files for query (%s)..." query)
+ (howm-bset-mapcar #'howm-item-name
+ (howm-view-search-folder-items query (howm-folder)
+ nil t)))
+
+(howm-defun-memoize howm-bset-keywords-in-file* (file keyword-list)
+;; (howm-bset-message "Finding keywords in file (%s)..." file)
+ (with-temp-buffer
+ (insert-file-contents file)
+ (howm-keyword-for-goto keyword-list)))
+
+(defun howm-bset-keywords-in-file (file)
+ (howm-bset-keywords-in-file* file nil))
+
+(defun howm-bset-candidate-keywords (query-list)
+;; (howm-bset-message "Collecting keywords...")
+ (let ((files (howm-bset-mapcan #'howm-bset-matched-files
+ query-list)))
+ (howm-bset-mapcan (lambda (f)
+ (howm-bset-message "Collecting keywords in file (%s)..."
+ f)
+ (howm-bset-keywords-in-file f))
+ files)))
+
+(howm-defun-memoize howm-bset-file-score (file query-list
+ coef number-of-all-keywords)
+;; (howm-bset-message "Scoring file (%s)..." file)
+ (let* ((m (/ (length (howm-bset-keywords-in-file file))
+ (float number-of-all-keywords)))
+ (a (* coef m))
+ (b (* coef (- 1 m)))
+ (s (length (howm-bset-keywords-in-file* file query-list)))
+ (a2 (+ a s))
+ (b2 (+ b (- (length query-list) s))))
+ ;; log{(a2/a) * (b/b2)}
+ (- (- (log a2) (log a)) (- (log b2) (log b)))))
+
+(howm-defun-memoize howm-bset-keyword-score (keyword query-list
+ coef
+ number-of-all-keywords)
+ (howm-bset-message "Scoring keyword (%s)..." keyword)
+ (apply #'+
+ (mapcar (lambda (file)
+ (howm-bset-file-score file query-list coef
+ number-of-all-keywords))
+ (howm-bset-matched-files keyword))))
+
+(defun howm-bset-reset ()
+ (mapc #'howm-memoize-reset '(howm-bset-file-score
+ howm-bset-keyword-score
+ howm-bset-keywords-in-file*)))
+
+(defun howm-bset (query-list)
+ (howm-bset-reset)
+ (unwind-protect
+ (let ((n (length (howm-keyword-list)))
+ (c 2.0)) ;; heuristic value
+ (sort (copy-sequence (howm-bset-candidate-keywords query-list))
+ (lambda (k1 k2)
+ (apply #'>
+ (mapcar (lambda (k)
+ (howm-bset-keyword-score k query-list c n))
+ (list k1 k2))))))
+ (howm-bset-reset)))
+
+(defun howm-bayesian-set (query-str)
+ (interactive "sQueries: ")
+ (switch-to-buffer (get-buffer-create "*howm-bayesian-set*"))
+ (howm-rewrite-read-only-buffer
+ (insert (mapconcat #'identity
+ (howm-bset (split-string query-str))
+ "\n"))
+ (howm-mode 1))
+ (goto-char (point-min))
+ (howm-bset-message "Done."))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Fellowship
+
+;; xemacs: add-to-list doesn't have APPEND
+;; (add-to-list 'auto-mode-alist '("\\.howm$" . text-mode) t)
+(setq auto-mode-alist (append auto-mode-alist
+ (list '("\\.howm$" . text-mode))))
+
+;; xyzzy doesn't have eval-after-load.
+;; It will be useless anyway.
+(when (not (fboundp 'eval-after-load))
+ (defun eval-after-load (file form)
+ nil))
+
+;; xemacs canna doesn't use minor-mode. [2004-01-30]
+(defvar action-lock-mode-before-canna nil)
+(make-variable-buffer-local 'action-lock-mode-before-canna)
+(defadvice canna:enter-canna-mode (around action-lock-fix activate)
+ (setq action-lock-mode-before-canna action-lock-mode)
+ (setq action-lock-mode nil)
+ ad-do-it)
+(defadvice canna:quit-canna-mode (around action-lock-fix activate)
+ (setq action-lock-mode action-lock-mode-before-canna)
+ ad-do-it)
+
+;; for mcomplete.el [2003-12-17]
+;; http://homepage1.nifty.com/bmonkey/emacs/elisp/mcomplete.el
+;; error when this-command is (lambda () (interactive) ...)
+(defadvice mcomplete-p (around symbol-check activate)
+ (and (symbolp this-command)
+ ad-do-it))
+
+;; for auto-save-buffers.el [2004-01-10]
+;; http://www.namazu.org/~satoru/auto-save/
+;; http://homepage3.nifty.com/oatu/emacs/misc.html
+;; http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=auto%20save
+(defvar howm-auto-save-buffers-disposed nil)
+(howm-dont-warn-free-variable auto-save-buffers-regexp)
+(howm-dont-warn-free-variable auto-save-reject-buffers-regexp)
+(defun howm-auto-save-buffers-p ()
+ (let ((f (howm-file-name)))
+ (and (if (boundp 'auto-save-buffers-regexp)
+ (string-match auto-save-buffers-regexp f)
+ nil)
+ (if (boundp 'auto-save-reject-buffers-regexp)
+ (not (string-match auto-save-reject-buffers-regexp f))
+ t))))
+(defun howm-auto-save-buffers-dispose ()
+ (setq howm-menu-refresh-after-save nil)
+ (setq howm-refresh-after-save nil)
+ (setq howm-auto-save-buffers-disposed t)
+ (message "howm: Automatic refresh is disabled when auto-save-buffers is called."))
+(defadvice auto-save-buffers (around howm-dispose activate)
+ (if (or howm-auto-save-buffers-disposed
+ (not (howm-auto-save-buffers-p)))
+ ad-do-it
+ (howm-auto-save-buffers-dispose)))
+
+;; howm on ChangeLog Memo
+(defun howm-setup-change-log ()
+ (setq howm-keyword-format "\t* %s")
+ (setq howm-keyword-regexp "^\t\\(\\*\\)[ \t]+\\([^:\r\n]+\\)")
+ (setq howm-keyword-regexp-hilit-pos 1) ;; ¡Ö´ØÏ¢¥¡¼¥ï¡¼¥É¡×ÍÑ
+ (setq howm-keyword-regexp-pos 2)
+ (setq howm-view-title-regexp "^$")
+ (setq howm-view-title-regexp-pos 0)
+ (setq howm-view-title-regexp-grep 'sorry-not-yet)
+ (setq howm-use-color nil)
+ (setq howm-menu-top nil)
+ (defadvice howm-exclude-p (around change-log (filename) activate)
+ (setq ad-return-value
+ (not (find-if (lambda (dir)
+ (string= (howm-file-name)
+ (file-relative-name filename dir)))
+ (howm-search-path)))))
+ (defadvice howm-create-file-with-title (around change-log (title) activate)
+ (howm-create-file)
+ (when (string-match howm-keyword-regexp title)
+ (setq title (match-string-no-properties howm-keyword-regexp-pos
+ title)))
+ (insert title))
+ (defadvice howm-create-file (around change-log
+ (&optional keep-cursor-p) activate)
+ (let* ((default (howm-file-name))
+ (file (expand-file-name default howm-directory))
+ (dir (file-name-directory file))
+ (buffer-file-name file)) ;; don't insert file name
+ (make-directory dir t)
+ (add-change-log-entry nil file)))
+ (add-hook 'change-log-mode-hook 'howm-mode)
+ )
+
+;; howm with ChangeLog Memo
+(defvar howm-change-log-file-name "ChangeLog")
+(defun howm-to-change-log ()
+ (interactive)
+ (let* ((title (howm-title-at-current-point))
+ (file (expand-file-name howm-change-log-file-name howm-directory))
+ ;; cheat add-change-log-entry
+ (buffer-file-name title)
+ (default-directory howm-directory))
+ (add-change-log-entry nil file)))
+(defun howm-from-change-log ()
+ (interactive)
+ (let* ((title-regexp "^\t[*][ \t]*\\(.*\\)$")
+ (title-regexp-pos 1)
+ (title (howm-title-at-current-point nil
+ title-regexp title-regexp-pos)))
+ (howm-create-file-with-title title)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Bug Report
+
+;; Japanese is assumed at now.
+
+(defun howm-test ()
+ "Show bug report template for howm."
+ (howm-set-lang)
+ (howm-bug-report))
+
+(defun howm-set-lang ()
+ (set-language-environment "Japanese")
+ (set-default-coding-systems 'euc-jp)
+ (set-buffer-file-coding-system 'euc-jp-unix)
+ (set-terminal-coding-system 'euc-jp)
+ (set-keyboard-coding-system 'euc-jp)
+ )
+
+(defun howm-compiled-p ()
+ (byte-code-function-p (symbol-function 'howm-compiled-p)))
+(defun howm-make-file-p ()
+ (eval-when-compile
+ (getenv "HOWM_MAKE")))
+(defun howm-test-p ()
+ (getenv "HOWM_TEST"))
+
+(defun howm-bug-report (&optional show-sym)
+ (interactive "P")
+ (let ((report-buf (format-time-string "howm-bug-report-%Y%m%d-%H%M%S"))
+ (template "sample/bug-report.txt"))
+ (switch-to-buffer report-buf)
+ (when (not (howm-buffer-empty-p))
+ (error "Buffer %s exists (and not empty)." report-buf))
+ (if (file-exists-p template)
+ (insert-file-contents template)
+ (insert "Please copy the following text to your bug report.\n\n"))
+ (goto-char (point-max))
+ (mapc (lambda (sv)
+ (insert (format "%s: %s\n" (car sv) (cdr sv))))
+ `(
+ ("howm" . ,(howm-version-long))
+ ,@(honest-report-version-assoc)
+ ))
+ (when (eq howm-view-use-grep t)
+ (insert
+ (format "grep: %s - %s\n"
+ (cl-mapcan (lambda (d)
+ (let ((f (expand-file-name
+ howm-view-grep-command d)))
+ (and (file-executable-p f)
+ (list f))))
+ exec-path)
+ (car (howm-call-process "grep" '("--version"))))))
+ (when show-sym
+ (goto-char (point-max))
+ (insert "\n(List of variables)\n")
+ (insert (howm-symbols-desc)))
+ (goto-char (point-min))))
+
+(defun howm-version-long ()
+ (format "%s (compile: %s, make: %s, test: %s)"
+ howm-version
+ (howm-compiled-p)
+ (howm-make-file-p)
+ (howm-test-p)))
+
+(defun howm-symbols-desc (&optional max-desc-len)
+ (when (null max-desc-len)
+ (setq max-desc-len 50))
+ (apply #'concat
+ (mapcar (lambda (sym)
+ (when (boundp sym)
+ (let ((v (format "%S" (symbol-value sym))))
+ (when (and (numberp max-desc-len)
+ (< max-desc-len (length v)))
+ (setq v
+ (let* ((tl (/ max-desc-len 4))
+ (hd (- max-desc-len tl)))
+ (concat (substring v 0 hd)
+ " ... "
+ (substring v (- tl))))))
+ (format "%s: %s\n" (symbol-name sym) v))))
+ (sort (howm-symbols)
+ (lambda (x y)
+ (string< (symbol-name x) (symbol-name y)))))))
+
+(defvar howm-required-features '(
+ cheat-font-lock
+ action-lock
+ riffle
+ gfunc
+ illusion
+ honest-report
+ )
+ "List of features which are required for, and distributed with, howm itself.")
+
+(defun howm-prefix-names ()
+ (mapcar #'symbol-name (cons 'howm howm-required-features)))
+
+(defun howm-symbols ()
+ (let* ((reg (format "^%s" (regexp-opt (howm-prefix-names) t)))
+ (a nil))
+ (mapatoms (lambda (s)
+ (when (string-match reg (symbol-name s))
+ (setq a (cons s a)))))
+ a))
+
+(defun howm-elp ()
+ (interactive)
+ (mapcar #'elp-instrument-package
+ (howm-prefix-names)))
+
+(defvar howm-sample-directory (expand-file-name "sample/")
+ "for internal use")
+(defun howm-bug-shot ()
+ (interactive)
+ (let* ((version (concat "[howm] " (howm-version-long)))
+ (init (and (howm-test-p)
+ (let ((f (expand-file-name "dot.emacs"
+ howm-sample-directory)))
+ (and (file-readable-p f)
+ (with-temp-buffer
+ (insert-file-contents f)
+ (buffer-substring-no-properties (point-min)
+ (point-max)))))))
+ (header (if init
+ (concat version "\n\n[init]\n" init)
+ version))
+ (footer "--- your comment ---"))
+ (honest-report header footer)
+ (message "Please copy this buffer to your report.")))
+
+;;; howm-misc.el ends here
--- /dev/null
+;;; howm-mkmenu.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-mkmenu.el,v 1.11 2011-12-31 15:07:29 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+;; emacs -q --no-site-file -batch -l <this file>
+
+(defvar howm-mkmenu-rules
+ '(
+ ;; (<var> <src> [<src-coding> <dest-coding>]) ==> <var>.el
+ (howm-menu-en "en/0000-00-00-000000.txt")
+ (howm-menu-ja "ja/0000-00-00-000000.txt" euc-jp iso-2022-7bit)
+ ))
+
+(defmacro howm-mkmenu-insert (&rest clauses)
+ (declare (indent 0))
+ (let ((commands (mapcar (lambda (c)
+ (let ((format (car c))
+ (parameters (cdr c)))
+ `(insert (format ,(concat format "\n")
+ ,@parameters))))
+ clauses)))
+ `(progn ,@commands)))
+
+(defun howm-mkmenu (rule)
+ (let ((var (car rule))
+ (src (cadr rule))
+ (opt (cddr rule)))
+ (let ((dest (concat (symbol-name var) ".el"))
+ (src-coding (and opt (car opt)))
+ (dest-coding (and opt (cadr opt))))
+ ;; read src
+ (when (and src-coding (featurep 'mule))
+ (prefer-coding-system src-coding))
+ (with-temp-buffer
+ (insert-file-contents src)
+ (let ((str (buffer-substring-no-properties (point-min) (point-max))))
+ ;; write to dest
+ (find-file dest)
+ (delete-region (point-min) (point-max))
+ (when dest-coding
+ (set-buffer-file-coding-system dest-coding)
+ (howm-mkmenu-insert
+ (";;; -*- Coding: %s -*-" dest-coding)))
+ (howm-mkmenu-insert
+ (";;; automatically generated from %s" src)
+ (";;; by %s.\n" (file-name-nondirectory load-file-name))
+ ("(require 'howm-vars)\n")
+ ("(howm-defconst-risky %s %S)\n" var str)
+ ("(provide '%s)" var))
+ (let ((make-backup-files nil))
+ (basic-save-buffer))
+ t)))))
+
+(mapcar #'howm-mkmenu howm-mkmenu-rules)
+
+;;; howm-mkmenu.el ends here
--- /dev/null
+;;; howm-mode.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-mode.el,v 1.318 2012-12-29 08:57:18 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;;--------------------------------------------------------------------
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Backward compatibility
+
+;; (require 'howm-mode) in .emacs is obsolete. Use (require 'howm) instead.
+
+;; This must be earlier than (require 'howm-common), because
+;; howm-common needs cl, and (require 'cl) should be written in howm.el.
+(when (not (featurep 'howm-version))
+ (message "Warning: Requiring howm-mode is obsolete. Require howm instead.")
+;; (beep)
+;; (sit-for 1)
+ (require 'howm))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Require
+
+(provide 'howm-mode)
+(require 'howm)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Customize
+
+;;; --- level 1 ---
+
+;; You can easily modify them.
+
+(howm-defvar-risky howm-template
+ (concat howm-view-title-header " %title%cursor\n%date %file\n\n")
+ "Contents of new file. %xxx are replaced with specified items.
+If it is a list, <n>-th one is used when you type C-u <n> M-x howm-create.
+If it is a function, it is called to get template string with the argument <n>.")
+(defvar howm-keyword-header "<<<"
+ "Header string for declaration of keyword (implicit link).")
+(defvar howm-ref-header ">>>"
+ "Header string for explicit link.")
+(defvar howm-lighter " howm"
+ "Mode line for howm-mode")
+
+(defvar howm-inhibit-title-file-match t
+ "If non-nil, inhibit howm-list-title when search string matches file name")
+(defvar howm-list-all-title nil) ;; obsolete [2003-11-30]
+(defvar howm-list-recent-title nil) ;; obsolete [2003-11-30]
+
+(defvar howm-default-key-table
+ '(
+ ;; ("key" func list-mode-p global-p)
+ ("r" howm-refresh)
+ ("l" howm-list-recent t t)
+ ("a" howm-list-all t t)
+ ("g" howm-list-grep t t)
+ ("s" howm-list-grep-fixed t t)
+ ("m" howm-list-migemo t t)
+ ("t" howm-list-todo t t)
+ ("y" howm-list-schedule t t)
+ ("b" howm-list-buffers t t)
+ ("x" howm-list-mark-ring t t)
+ ("o" howm-occur t t)
+ ("c" howm-create t t)
+ ("e" howm-remember t t)
+ ("," howm-menu t t)
+ ("." howm-find-today nil t)
+ (":" howm-find-yesterday nil t)
+ ("A" howm-list-around)
+ ("h" howm-history nil t)
+ ("D" howm-dup)
+ ("i" howm-insert-keyword nil t)
+ ("d" howm-insert-date nil t)
+ ("T" howm-insert-dtime nil t)
+ ("K" howm-keyword-to-kill-ring t t)
+ ("n" action-lock-goto-next-link)
+ ("p" action-lock-goto-previous-link)
+ ("Q" howm-kill-all t t)
+ (" " howm-toggle-buffer nil t)
+ ("N" howm-next-memo)
+ ("P" howm-previous-memo)
+ ("H" howm-first-memo)
+ ("L" howm-last-memo)
+ ("C" howm-create-here nil t)
+ ("I" howm-create-interactively nil t)
+ ("w" howm-random-walk nil t)
+ ("M" howm-open-named-file t t)
+ )
+ "List of (key function list-mode-p global-p).
+`howm-prefix' + this key is real stroke.
+If optional argument list-mode-p is non-nil,
+same key is also available in view mode.
+It is further registered globally if global-p is non-nil."
+ )
+
+(howm-defvar-risky howm-migemo-client nil
+ "Command name of migemo-client.
+Try (setq howm-migemo-client \"migemo-client\") for howm-migemo-*.")
+(howm-defvar-risky howm-migemo-client-option nil
+ "List of option for migemo-client.
+e.g. (\"-H\" \"::1\")")
+
+;;; --- level 2 ---
+
+;; Be careful to keep consistency.
+
+(howm-defvar-risky howm-keyword/ref-regexp-format
+ "\\(%s\\)[ \t]*\\([^ \t\r\n].*\\)")
+(howm-defvar-risky howm-keyword-format
+ (format "%s %%s" howm-keyword-header)
+ "Format for declaration of keyword. See `format'.")
+(howm-defvar-risky howm-keyword-regexp
+ (format howm-keyword/ref-regexp-format (regexp-quote howm-keyword-header)))
+(howm-defvar-risky howm-keyword-regexp-hilit-pos 1)
+(howm-defvar-risky howm-keyword-regexp-pos 2)
+(howm-defvar-risky howm-ref-regexp
+ (format howm-keyword/ref-regexp-format (regexp-quote howm-ref-header))
+ "Regexp for explicit link.")
+(howm-defvar-risky howm-ref-regexp-hilit-pos 0
+ "Position of search string in `howm-ref-regexp'")
+(howm-defvar-risky howm-ref-regexp-pos 2
+ "Position of search string in `howm-ref-regexp'")
+(howm-defvar-risky howm-wiki-regexp "\\[\\[\\([^]\r\n]+\\)\\]\\]"
+ "Regexp for explicit link.")
+(howm-defvar-risky howm-wiki-regexp-hilit-pos 1
+ "Position of hilight in `howm-wiki-regexp'")
+(howm-defvar-risky howm-wiki-regexp-pos 1
+ "Position of search string in `howm-wiki-regexp'")
+(howm-defvar-risky howm-wiki-format "[[%s]]"
+ "Format for declaration of wiki word. See `format'.")
+
+(howm-defvar-risky howm-template-rules
+ '(("%title" . howm-template-title)
+ ("%date" . howm-template-date)
+ ("%file" . howm-template-previous-file)
+ ("%cursor" . howm-template-cursor))) ;; Cursor must be the last rule.
+(defvar howm-template-date-format howm-dtime-format
+ "%date is replaced with `howm-template-date-format'
+in `howm-template'. See `format-time-string'")
+(defvar howm-template-file-format (concat howm-ref-header " %s")
+ "%file is replaced with `homw-template-file-format'
+in `howm-template'. %s is replaced with name of last file. See `format'.")
+
+;;; --- level 3 ---
+
+;; As you like.
+
+(defun howm-action-lock-general (command regexp pos
+ &optional hilit-pos
+ &rest options)
+ (list regexp
+ `(lambda (&optional dummy)
+ (let ((s (match-string-no-properties ,pos)))
+;; (when howm-keyword-case-fold-search
+;; (setq s (downcase s)))
+ (,command s ,@options)))
+ (or hilit-pos 0)
+ t))
+
+(defun howm-action-lock-search (regexp
+ pos
+ &optional hilit-pos create-p open-unique-p)
+ (howm-action-lock-general 'howm-keyword-search
+ regexp pos hilit-pos create-p open-unique-p))
+(defun howm-action-lock-related (regexp pos hilit-pos)
+ (howm-action-lock-general 'howm-list-related regexp pos hilit-pos))
+
+(defun howm-action-lock-date-rule ()
+ (action-lock-general 'howm-action-lock-date howm-date-regexp 0 0))
+
+(defun howm-action-lock-quote-keyword (keyword)
+ (let ((q (regexp-quote keyword)))
+ ;; when a regexp is specified, leave unmatched keywords.
+ (if (and (stringp howm-check-word-break)
+ (not (string-match howm-check-word-break keyword)))
+ q
+ ;; add word break checks
+ (concat "\\b" q "\\b"))))
+
+(defun howm-action-lock-setup ()
+ (setq action-lock-case-fold-search howm-keyword-case-fold-search)
+ (action-lock-mode t)
+ (let* ((date-al (action-lock-date "{_}" howm-dtime-format)))
+ ;; override the rule in action-lock.el
+ (action-lock-add-rules (list date-al) t))
+ (let* ((ks (howm-keyword-for-goto))
+ (r (mapconcat (if howm-check-word-break
+ #'howm-action-lock-quote-keyword
+ #'regexp-quote)
+ ks "\\|"))
+ ;; The following optimization causes an error
+ ;; "Variable binding depth exceeds max-specpdl-size".
+ ;; (r (cond ((stringp howm-check-word-break)
+ ;; (mapconcat #'howm-action-lock-quote-keyword ks "\\|"))
+ ;; (t
+ ;; (regexp-opt ks (and howm-check-word-break 'word)))))
+ (wiki (howm-action-lock-search howm-wiki-regexp
+ howm-wiki-regexp-pos
+ howm-wiki-regexp-hilit-pos
+ t))
+ (explicit (howm-action-lock-search howm-ref-regexp
+ howm-ref-regexp-pos
+ howm-ref-regexp-hilit-pos))
+ (implicit (howm-action-lock-search r 0))
+ (rev (howm-action-lock-related howm-keyword-regexp
+ howm-keyword-regexp-pos
+ howm-keyword-regexp-hilit-pos))
+ (date (howm-action-lock-date-rule))
+ (done (howm-action-lock-reminder-done-rule))
+ (all `(
+ ,explicit
+ ,rev
+ ,@(if ks (list implicit) nil)
+ ,wiki
+ ,@(if (howm-menu-p) nil (list date done))
+ ))
+ )
+ ;; don't override the rule in action-lock.el
+ ;; esp. http://xxx should call browser even if "<<< http" exists
+ (action-lock-add-rules all)))
+
+(defun howm-file-name (&optional time)
+ (format-time-string howm-file-name-format
+ (or time (current-time))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Definitions
+
+(easy-mmode-define-minor-mode howm-mode
+ "With no argument, this command toggles the mode.
+Non-null prefix argument turns on the mode.
+Null prefix argument turns off the mode.
+
+When the mode is enabled, underlines are drawn on texts which match
+to titles of other files. Typing \\[action-lock-magic-return] there,
+you can jump to the corresponding file.
+
+key binding
+--- -------
+\\[action-lock-magic-return] Follow link
+\\[howm-refresh] Refresh buffer
+\\[howm-list-all] List all files
+\\[howm-list-grep] Search (grep)
+\\[howm-create] Create new file
+\\[howm-dup] Duplicate current file
+\\[howm-insert-keyword] Insert keyword
+\\[howm-insert-date] Insert date
+\\[howm-insert-dtime] Insert date with time
+\\[howm-keyword-to-kill-ring] Copy current keyword to kill ring
+\\[action-lock-goto-next-link] Go to next link
+\\[action-lock-goto-previous-link] Go to previous link
+\\[howm-next-memo] Go to next entry in current buffer
+\\[howm-previous-memo] Go to previous entry in current buffer
+\\[howm-first-memo] Go to first entry in current buffer
+\\[howm-last-memo] Go to last entry in current buffer
+\\[howm-create-here] Add new entry to current buffer
+\\[howm-create-interactively] Create new file interactively (not recommended)
+\\[howm-random-walk] Browse random entries automtically
+"
+ nil ;; default = off
+ howm-lighter ;; mode-line
+ (mapcar (lambda (entry)
+ (let ((k (car entry))
+ (f (cadr entry)))
+ (cons (concat howm-prefix k) f)))
+ howm-default-key-table)
+ )
+
+;; emacs20's easy-mmode-define-minor-mode can't have body. sigh...
+(add-hook 'howm-mode-on-hook 'howm-initialize-buffer)
+(add-hook 'howm-mode-off-hook 'howm-restore-buffer)
+
+(defun howm-set-keymap ()
+ (mapc (lambda (entry)
+ (let* ((k (car entry))
+ (f (cadr entry))
+ (list-mode-p (cl-caddr entry))
+ (global-p (cl-cadddr entry))
+ (pk (concat howm-prefix k)))
+ (define-key howm-mode-map pk f)
+ (when list-mode-p
+ (mapc (lambda (m)
+ (define-key m k f)
+ (define-key m pk f))
+ (list howm-view-summary-mode-map
+ howm-view-contents-mode-map)))
+ (when global-p
+ (define-key global-map pk f))))
+ howm-default-key-table)
+ (define-key howm-mode-map "\C-x\C-s" 'howm-save-buffer))
+(howm-set-keymap)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Main functions
+
+(defun howm-refresh ()
+ (interactive)
+ (if (howm-menu-p)
+ (howm-menu-refresh)
+ (howm-initialize-buffer)))
+
+(defun howm-initialize-buffer ()
+ (interactive)
+ (when (not howm-mode)
+ (error "Not howm-mode"))
+ (howm-message-time "init-buf"
+ (save-restriction
+ (widen)
+ (howm-set-configuration-for-major-mode major-mode)
+ (howm-action-lock-setup)
+ (howm-mode-add-font-lock)
+ (howm-reminder-add-font-lock)
+ (cheat-font-lock-fontify)
+ ;; make-local-hook is obsolete for emacs >= 21.1.
+ (howm-funcall-if-defined (make-local-hook 'after-save-hook))
+ (add-hook 'after-save-hook 'howm-after-save t t))))
+
+(defun howm-after-save ()
+ (when howm-mode
+ (howm-keyword-add-current-buffer)
+ (when howm-refresh-after-save
+ (howm-initialize-buffer))
+ (when (and howm-menu-refresh-after-save
+ (> howm-menu-expiry-hours 0))
+ (howm-menu-refresh-background))
+ (run-hooks 'howm-after-save-hook)))
+
+(defun howm-restore-buffer ()
+ (action-lock-mode 0))
+
+(defun howm-list-all ()
+ (interactive)
+ (howm-set-command 'howm-list-all)
+ (howm-normalize-show "" (howm-all-items))
+ ;; for backward compatibility
+ (cond ((howm-list-title-p) t) ;; already done in howm-normalize-show
+ (howm-list-all-title (howm-list-title-internal))))
+
+(defun howm-all-items ()
+ "Returns list of all items in the first search path."
+ (howm-folder-items (car (howm-search-path)) t))
+
+(defun howm-list-recent (&optional days)
+ (interactive "P")
+ (howm-set-command 'howm-list-recent)
+ (let* ((d (or days howm-list-recent-days))
+ (now (current-time))
+ (from (howm-days-before now d))
+ (item-list (howm-folder-items howm-directory t)))
+ (howm-normalize-show "" (howm-filter-items-by-mtime item-list from now))
+ ;; clean me [2003-11-30]
+ (cond ((howm-list-title-p) t) ;; already done in howm-normalize-show
+ (howm-list-recent-title (howm-list-title-internal))
+ ((not days) (howm-view-summary-to-contents)))))
+
+;; clean me: direct access to howm-view-* is undesirable.
+
+(defvar howm-list-title-previous nil
+ "For internal use")
+(make-variable-buffer-local 'howm-list-title-previous)
+(defun howm-list-title-put-previous (&optional item-list)
+ (when howm-list-title-undo
+ (setq howm-list-title-previous (or item-list (howm-view-item-list)))))
+(defun howm-list-title-clear-previous ()
+ (setq howm-list-title-previous nil))
+(defun howm-list-title-get-previous ()
+ (if howm-list-title-undo
+ (let ((prev howm-list-title-previous))
+ (setq howm-list-title-previous nil)
+ (howm-view-summary-rebuild prev))
+ (error "Undo is not enabled.")))
+(defun howm-list-title-regexp ()
+ (or howm-list-title-regexp (howm-view-title-regexp-grep)))
+(defalias 'howm-list-title 'howm-list-toggle-title) ;; backward compatibility
+(defun howm-list-toggle-title (&optional undo)
+ (interactive "P")
+ (if (or undo howm-list-title-previous)
+ (howm-list-title-get-previous)
+ (howm-list-title-internal)))
+(defun howm-list-title-internal ()
+ (let ((b (current-buffer)))
+ (howm-list-title-put-previous)
+ (howm-view-list-title (howm-list-title-regexp))
+ ;; (howm-view-filter-by-contents (howm-list-title-regexp))
+ (let ((c (current-buffer)))
+ (when (not (eq b c))
+ (set-buffer b)
+ (howm-view-kill-buffer)
+ (switch-to-buffer c)
+ (howm-view-summary-check t)))))
+
+(defun howm-list-title-p ()
+ (let ((a (howm-get-value howm-list-title)))
+ (cond ((null a) nil) ;; I know this is redundant.
+ ((listp a) (member (howm-command) a))
+ (t a))))
+
+(defun howm-days-after (ti days &optional hours)
+ (let* ((ne (howm-decode-time ti))
+ (hour-pos 2)
+ (day-pos 3)
+ (nh (nth hour-pos ne))
+ (nd (nth day-pos ne)))
+ (setf (nth hour-pos ne) (+ nh (or hours 0)))
+ (setf (nth day-pos ne) (+ nd days))
+ (apply #'encode-time ne)))
+
+(defun howm-days-before (ti days)
+ (howm-days-after ti (- days)))
+
+(defun howm-list-grep (&optional completion-p)
+ (interactive "P")
+ (howm-set-command 'howm-list-grep)
+ (howm-list-grep-general completion-p))
+
+(defun howm-list-grep-fixed ()
+ (interactive)
+ (howm-set-command 'howm-list-grep-fixed)
+ (howm-list-grep-general t))
+
+(defun howm-list-grep-general (&optional completion-p)
+ (let* ((regexp (if completion-p
+ (howm-completing-read-keyword)
+ (read-from-minibuffer "Search all (grep): "))))
+ (when completion-p ;; Goto link works only for fixed string at now.
+ (howm-write-history regexp))
+ (howm-search regexp completion-p)))
+
+(defun howm-search (regexp fixed-p &optional emacs-regexp filter)
+ (if (string= regexp "")
+ (howm-list-all)
+ (howm-message-time "search"
+ (let* ((trio (howm-call-view-search-internal regexp fixed-p emacs-regexp))
+ (kw (car trio))
+ (name (cadr trio))
+ (items (cl-caddr trio)))
+ (when filter
+ (setq items (funcall filter items)))
+ (howm-normalize-show name items (or emacs-regexp regexp) nil nil kw)
+ (howm-record-view-window-configuration)))))
+
+(defvar *howm-view-window-configuration* nil
+ "For internal use")
+(defun howm-view-window-configuration ()
+ *howm-view-window-configuration*)
+(defun howm-set-view-window-configuration (conf)
+ (setq *howm-view-window-configuration* conf))
+(defun howm-record-view-window-configuration ()
+ (howm-set-view-window-configuration (current-window-configuration)))
+(defun howm-restore-view-window-configuration ()
+ (set-window-configuration (howm-view-window-configuration)))
+(defun howm-return-to-list ()
+ (interactive)
+ (howm-restore-view-window-configuration))
+
+(defun howm-call-view-search-internal (regexp fixed-p &optional emacs-regexp)
+ (let ((hilit (if emacs-regexp
+ `((,emacs-regexp . howm-view-hilit-face))
+ nil)))
+ (howm-view-search-folder-internal regexp (howm-search-path-folder)
+ nil nil fixed-p hilit)))
+
+(defun howm-list-migemo (&optional completion-p)
+ (interactive "P")
+ (howm-set-command 'howm-list-migemo)
+ (if completion-p
+ (howm-list-grep t)
+ (let* ((roma (read-from-minibuffer "Search all (migemo): "))
+ (e-reg (howm-migemo-get-pattern roma "emacs"))
+ (g-reg (if howm-view-use-grep
+ (howm-migemo-get-pattern roma "egrep")
+ e-reg)))
+ (if (and e-reg g-reg)
+ (howm-search g-reg nil e-reg)
+ (message "No response from migemo-client.")))))
+
+(defun howm-migemo-get-pattern (roma type)
+ (when (and (null howm-migemo-client) (not howm-view-use-grep))
+ (require 'migemo))
+ (if (and (featurep 'migemo) (string= type "emacs"))
+ (howm-funcall-if-defined (migemo-get-pattern roma))
+;; (migemo-get-pattern roma)
+ (car (howm-call-process (or howm-migemo-client "migemo-client")
+ `(,@howm-migemo-client-option "-t" ,type ,roma)
+ 0))))
+
+;; (defun howm-migemo-get-pattern (roma type)
+;; (when (and (null (howm-migemo-client)) (not howm-view-use-grep))
+;; (require 'migemo))
+;; (if (and (featurep 'migemo) (string= type "emacs"))
+;; (howm-funcall-if-defined (migemo-get-pattern roma))
+;; ;; (migemo-get-pattern roma)
+;; (car (howm-call-process (howm-migemo-client)
+;; `(,@(howm-migemo-client-option) "-t" ,type ,roma)
+;; 0))))
+
+;; (defun howm-migemo-client ()
+;; (if (stringp howm-migemo-client)
+;; howm-migemo-client
+;; (or (car howm-migemo-client) "migemo-client")))
+
+;; (defun howm-migemo-client-option ()
+;; (cdr-safe howm-migemo-client))
+
+(defun howm-normalize-oldp ()
+ howm-list-normalizer)
+
+;; ;; generate conv in howm-normalizer-pair
+;; (let ((methods '("random" "name" "numerical-name" "date" "reverse-date"
+;; "summary" "reminder" "mtime" "reverse")))
+;; (mapcar (lambda (m)
+;; (let ((command
+;; (howm-get-symbol nil "howm-view-sort-by-" m))
+;; (internal
+;; (howm-get-symbol nil "howm-sort-items-by-" m)))
+;; (cons command internal)))
+;; methods))
+
+(defun howm-normalizer-pair ()
+ (let* ((old howm-list-normalizer)
+ (new howm-normalizer)
+ (conv '((howm-view-sort-by-random . howm-sort-items-by-random)
+ (howm-view-sort-by-name . howm-sort-items-by-name)
+ (howm-view-sort-by-numerical-name
+ . howm-sort-items-by-numerical-name)
+ (howm-view-sort-by-date . howm-sort-items-by-date)
+ (howm-view-sort-by-reverse-date
+ . howm-sort-items-by-reverse-date)
+ (howm-view-sort-by-summary . howm-sort-items-by-summary)
+ (howm-view-sort-by-reminder . howm-sort-items-by-reminder)
+ (howm-view-sort-by-mtime . howm-sort-items-by-mtime)
+ (howm-view-sort-by-reverse . howm-sort-items-by-reverse)))
+ (p (assoc old conv))
+ (q (assoc new conv)))
+ (when q
+ (message "Warning: %s is wrong for howm-normalizer. Use %s." (car q) (cdr q))
+ (setq new (cdr q)))
+ (cond ((null old) (cons old new))
+ (p (cons nil (cdr p)))
+ (t (cons old #'identity)))))
+
+(defmacro howm-with-normalizer (&rest body)
+ (declare (indent 0))
+ (let ((g (cl-gensym)))
+ `(progn
+ (when (howm-normalize-oldp)
+ (message
+ "Warning: howm-list-normalizer is obsolete. Use howm-normalizer."))
+ (let* ((,g (howm-normalizer-pair))
+ (howm-list-normalizer (car ,g))
+ (howm-normalizer (cdr ,g)))
+ ,@body))))
+
+(defun howm-normalize-show (name item-list
+ &optional keyword comefrom-regexp no-list-title
+ fl-keywords)
+ ;; comefrom-regexp and no-list-title are never used now. [2009-07-23]
+ (howm-with-normalizer
+ (if (howm-normalize-oldp)
+ ;; for backward compatibility.
+ (progn
+ (howm-view-summary name item-list fl-keywords)
+ (howm-list-normalize-old keyword comefrom-regexp no-list-title))
+ (let* ((r (howm-normalize item-list keyword
+ comefrom-regexp no-list-title)))
+ (howm-call-view-summary name (cdr r) fl-keywords)
+ (car r)))))
+
+(defun howm-call-view-summary (name item-list-pair fl-keywords)
+ (let ((orig (car item-list-pair))
+ (entitled (cdr item-list-pair)))
+ (howm-view-summary name (or entitled orig) fl-keywords)
+ ;; side effect
+ (if entitled
+ (howm-list-title-put-previous orig)
+ (howm-list-title-clear-previous))))
+
+(defun howm-normalize (item-list
+ &optional keyword comefrom-regexp no-list-title)
+ ;; no-list-title is never used now. [2009-07-23]
+ "Sort ITEM-LIST in the standard order."
+ (let ((matched nil)
+ (entitled-item-list nil))
+ (setq item-list (funcall howm-normalizer item-list))
+ (when keyword
+ (let ((key-reg (or comefrom-regexp
+ (howm-make-keyword-regexp1 keyword)))
+ (word-reg (format "\\<%s\\>"
+ (if (stringp keyword)
+ (regexp-quote keyword)
+ (regexp-opt keyword t))))
+ (wiki-reg (regexp-quote (howm-make-wiki-string keyword)))
+ (file-reg (and
+ (stringp keyword)
+ (format "^%s$"
+ (regexp-quote (expand-file-name keyword)))))
+ (case-fold-search howm-keyword-case-fold-search))
+ (cl-labels ((check (tag flag reg &optional tag-when-multi-hits)
+ (when flag
+ (let ((r (howm-normalize-check item-list tag reg
+ tag-when-multi-hits)))
+ (setq matched (append (car r) matched))
+ (setq item-list (cdr r))))))
+ ;; not efficient. should I do them at once?
+ (check 'word howm-list-prefer-word word-reg)
+ (check 'wiki howm-list-prefer-wiki wiki-reg)
+ (check 'related-keyword t howm-keyword-regexp)
+ (check 'keyword t key-reg 'keyword-multi-hits)
+ (check 'file file-reg file-reg))))
+ (when (and (howm-list-title-p)
+ (not no-list-title)
+ (not (and (member 'file matched)
+ howm-inhibit-title-file-match)))
+ (setq entitled-item-list
+ (howm-entitle-items (howm-list-title-regexp) item-list)))
+ (cons matched (cons item-list entitled-item-list))))
+
+(defun howm-normalize-check (item-list tag reg tag-when-multi-hits)
+ (let* ((r (if (eq tag 'file)
+ (howm-view-lift-by-path-internal item-list reg)
+ (howm-view-lift-by-summary-internal item-list reg)))
+ (m (car r))
+ (item-list (cdr r))
+ (matched (cond ((and tag-when-multi-hits (eq m 'multi))
+ (list tag-when-multi-hits tag))
+ (m (list tag))
+ (t nil))))
+ (cons matched item-list)))
+
+(defun howm-list-normalize-old (&optional keyword comefrom-regexp no-list-title)
+ "Sort displayed items in the standard order.
+This function is obsolete. Use `howm-normalize' insteadly.
+--- Sorry, below documentation is incomplete. ---
+When KEYWORD is given, matched items are placed on the top.
+KEYWORD can be a string or a list of strings.
+"
+ (prog1
+ (howm-view-in-background
+ (howm-list-normalize-subr keyword comefrom-regexp no-list-title))
+ (howm-view-summary)))
+
+(defun howm-list-normalize-subr (keyword comefrom-regexp no-list-title)
+ "Obsolete. Do not use this any more."
+ (let ((matched nil))
+ (funcall howm-list-normalizer)
+ (when keyword
+ (let ((key-reg (or comefrom-regexp
+ (howm-make-keyword-regexp1 keyword)))
+ (word-reg (format "\\<%s\\>"
+ (if (stringp keyword)
+ (regexp-quote keyword)
+ (regexp-opt keyword t))))
+ (wiki-reg (regexp-quote (howm-make-wiki-string keyword)))
+ (file-reg (and
+ (stringp keyword)
+ (format "^%s$"
+ (regexp-quote (expand-file-name keyword)))))
+ (case-fold-search howm-keyword-case-fold-search))
+ ;; clean me.
+ (let ((check (lambda (tag flag reg &optional tag-when-multi-hits)
+ (when flag
+ (let ((m (if (eq tag 'file)
+ (howm-view-lift-by-name nil reg t)
+ (howm-view-lift-by-summary nil reg))))
+ (when m
+ (setq matched (cons tag matched)))
+ (when (and tag-when-multi-hits (eq m 'multi))
+ (setq matched
+ (cons tag-when-multi-hits matched))))))))
+ (funcall check 'word howm-list-prefer-word word-reg)
+ (funcall check 'wiki howm-list-prefer-wiki wiki-reg)
+ (funcall check 'related-keyword t howm-keyword-regexp)
+ (funcall check 'keyword t key-reg 'keyword-multi-hits)
+ (funcall check 'file file-reg file-reg))))
+ (when (and (howm-list-title-p)
+ (not no-list-title)
+ (not (and (member 'file matched)
+ howm-inhibit-title-file-match)))
+ (howm-list-title-internal))
+ matched))
+
+(defun howm-make-keyword-string (keyword)
+ (format howm-keyword-format keyword))
+(defun howm-make-wiki-string (keyword)
+ (format howm-wiki-format keyword))
+
+;; clean me
+(defvar howm-keyword-regexp-format "%s$"
+ "Format to make entire-match regexp from keyword string.
+Default is \"%s$\" because we want to make regexp \"<<< foo$\"
+from keyword string \"<<< foo\",
+so that we can accept \"<<< foo\" and reject \"<<< foobar\".
+We need entire-match in order to
+(1) place \"<<< foo\" on the top when \"foo\" is searched, and
+(2) judge existence of \"<<< foo\" when [[foo]] is hit.")
+(defun howm-make-keyword-regexp1 (keyword)
+ (howm-make-keyword-regexp-general keyword #'howm-make-keyword-regexp1-sub))
+(defun howm-make-keyword-regexp2 (keyword)
+ (howm-make-keyword-regexp-general keyword #'howm-make-keyword-regexp2-sub))
+(defun howm-make-keyword-regexp1-sub (keyword)
+ (format howm-keyword-regexp-format
+ (regexp-quote (howm-make-keyword-string keyword))))
+(defun howm-make-keyword-regexp2-sub (keyword)
+ (format howm-keyword-regexp-format
+ (howm-make-keyword-string (regexp-quote keyword))))
+(defun howm-make-keyword-regexp-general (keyword regexp-generator)
+ (cond ((stringp keyword)
+ (funcall regexp-generator keyword))
+ ((listp keyword)
+ (mapconcat (lambda (s)
+ (concat "\\("
+ (funcall regexp-generator s)
+ "\\)"))
+ keyword
+ "\\|"))
+ (t (error "Wrong type: %s" keyword))))
+
+(defun howm-list-related (str)
+ (howm-set-command 'howm-list-related)
+ (let* ((keys (mapcar (lambda (k)
+ (if howm-keyword-case-fold-search
+ (downcase k)
+ k))
+ (howm-subkeyword str)))
+ (filter `(lambda (items)
+ (howm-filter-items-by-summary items ,(regexp-opt keys)))))
+ ;; Note that regexp-opt returns a regexp for emacs (not for grep).
+ (howm-search (howm-make-keyword-string ".*") nil nil filter)))
+
+(defun howm-subkeyword (str)
+ (with-temp-buffer
+ (insert str)
+ (howm-keyword-for-goto)))
+
+(defun howm-list-around ()
+ (interactive)
+ (howm-set-command 'howm-list-around)
+ (let ((f (buffer-file-name))
+ (item-list (howm-view-sort-by-reverse-date-internal
+ (howm-all-items))))
+ (let ((howm-normalizer #'identity))
+ (howm-normalize-show "" item-list))
+ (let ((pos (cl-position-if (lambda (item)
+ (string= (howm-item-name item) f))
+ (howm-view-item-list))))
+ (goto-char (point-min))
+ (when pos
+ (forward-line pos)))
+ (howm-view-summary-check t)))
+
+(defun howm-history ()
+ (interactive)
+ (unless (file-exists-p howm-history-file)
+ (error "No history."))
+ ;; disable expansion of %schedule etc.
+ (let ((howm-menu-display-rules nil)) ;; dirty
+ (howm-menu-open howm-history-file)))
+
+;; (defvar howm-history-exclude
+;; (let ((strings '("[0-9][0-9][0-9][0-9]" "^[*=] [^ ]")))
+;; `("| %.*%$"
+;; ,(mapconcat 'regexp-quote strings "\\|"))))
+;; (defun howm-history ()
+;; (interactive)
+;; (howm-menu-open howm-history-file)
+;; (howm-edit-read-only-buffer
+;; (mapc #'flush-lines
+;; howm-history-exclude)))
+
+(defvar *howm-command* nil
+ "For internal use")
+(defun howm-set-command (com)
+ (setq *howm-command* com))
+(defun howm-command ()
+ *howm-command*)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Create
+
+(defun howm-create (&optional which-template here)
+ (interactive "p")
+ (let* ((t-c (howm-create-default-title-content))
+ (title (car t-c))
+ (content (cdr t-c)))
+ (howm-create-file-with-title title which-template nil here content)))
+
+(howm-dont-warn-free-variable transient-mark-mode)
+(howm-dont-warn-free-variable mark-active)
+(defun howm-create-default-title-content ()
+ (let* ((p (point))
+ (m (or (mark t) -777))
+ (beg (min p m))
+ (end (max p m))
+ (search-str (howm-view-name)))
+ (let* ((transient-mark-p (and (boundp 'transient-mark-mode)
+ transient-mark-mode))
+ (mark-active-p (and (boundp 'mark-active) mark-active))
+ (active-p (if transient-mark-p
+ mark-active-p
+ t))
+ (strictly-active-p (and transient-mark-p mark-active-p))
+ (title-p (let* ((b (line-beginning-position))
+ (e (line-end-position)))
+ (and active-p
+ (< 0 beg) (<= b beg) (<= end e) (not (= beg end)))))
+ (content-p (and strictly-active-p
+ howm-content-from-region))
+ (search-p (and howm-title-from-search
+ (stringp search-str)))
+ (s (cond ((or title-p content-p) (buffer-substring-no-properties beg
+ end))
+ (search-p search-str))))
+ (cond ((null s) (cons "" ""))
+ ((eq content-p t) (cons "" s))
+ ((or title-p search-p) (cons s ""))
+ (content-p (cons "" s))
+ (t (cons "" ""))))))
+
+(defun howm-create-here (&optional which-template)
+ (interactive "p")
+ (howm-create which-template t))
+
+(defun howm-create-file-with-title (title &optional
+ which-template not-use-file here content)
+ (let ((b (current-buffer)))
+ (when (not here)
+ (howm-create-file))
+ (cond ((howm-buffer-empty-p) nil)
+ ((and here howm-create-here-just) (beginning-of-line))
+ (t (howm-create-newline)))
+ (let ((p (point))
+ (insert-f (lambda (switch)
+ (howm-insert-template (if switch title "")
+ b which-template (not switch))))
+ (use-file (not not-use-file)))
+ ;; second candidate which appears when undo is called
+ (let ((end (funcall insert-f not-use-file)))
+ (save-excursion
+ (goto-char end)
+ (insert (or content "")))
+ (undo-boundary)
+ (delete-region p end))
+ (funcall insert-f use-file))
+ (howm-create-finish)))
+
+(defun howm-create-finish ()
+ (howm-set-mode)
+ (run-hooks 'howm-create-hook))
+
+(defun howm-create-newline ()
+ (widen)
+ (if howm-prepend
+ (howm-create-newline-prepend)
+ (howm-create-newline-append)))
+(defun howm-create-newline-prepend ()
+ (goto-char (point-min)))
+(defun howm-create-newline-append ()
+ (goto-char (point-max))
+ (delete-blank-lines)
+ (when (not (= (line-beginning-position) (point))) ;; not empty line
+ (insert "\n"))
+ (insert "\n"))
+
+(defun howm-insert-template (title &optional
+ previous-buffer which-template not-use-file)
+ (let* ((beg (point))
+ (f (buffer-file-name previous-buffer))
+ (af (and f (howm-abbreviate-file-name f))))
+ (insert (howm-template-string which-template previous-buffer))
+ (let* ((date (format-time-string howm-template-date-format))
+ (use-file (not not-use-file))
+ (file (cond ((not use-file) "")
+ ((null f) "")
+ ((string= f (buffer-file-name)) "")
+ (t (format howm-template-file-format af)))))
+ (let ((arg `((title . ,title) (date . ,date) (file . ,file)))
+ (end (point-marker)))
+ (howm-replace howm-template-rules arg beg end)
+ end))))
+
+(defvar howm-template-receive-buffer t
+ "Non nil if howm-template should receive previous-buffer
+when howm-template is a function.
+Set this option to nil if backward compatibility with howm-1.2.4 or earlier
+is necessary.")
+
+(defun howm-template-string (which-template previous-buffer)
+ ;; which-template should be 1, 2, 3, ...
+ (setq which-template (or which-template 1))
+ (cond ((stringp howm-template) howm-template)
+ ((functionp howm-template) (let ((args (if howm-template-receive-buffer
+ (list which-template
+ previous-buffer)
+ (list which-template))))
+ (apply howm-template args)))
+ ((listp howm-template) (nth (- which-template 1) howm-template))))
+
+(defun howm-replace (rules arg &optional beg end)
+ (mapc (lambda (pair)
+ (let ((spell (car pair))
+ (disp-f (cdr pair)))
+ (goto-char (or beg (point-min)))
+ (while (re-search-forward spell end t)
+ (delete-region (match-beginning 0) (match-end 0))
+ (funcall disp-f arg))))
+ rules))
+
+;; Use dynamic bindings dirtily!
+(defun howm-template-title (arg)
+ (insert (cdr (assoc 'title arg))))
+(defun howm-template-date (arg)
+ (insert (cdr (assoc 'date arg))))
+(defun howm-template-previous-file (arg)
+ (insert (cdr (assoc 'file arg))))
+(defun howm-template-cursor (arg)) ;; do nothing
+
+(defun howm-dup ()
+ (interactive)
+ (let* ((r (howm-view-paragraph-region))
+ (s (buffer-substring-no-properties (car r) (cadr r))))
+ (howm-create-file)
+ (howm-set-mode)
+ (insert "\n" s)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Keyword
+
+(defun howm-completing-read-keyword ()
+ (message "Scanning...")
+ (let* ((kl (howm-keyword-list))
+ (table (mapcar #'list kl))
+ (completion-ignore-case howm-keyword-case-fold-search))
+ (completing-read "Keyword: " table)))
+
+(defun howm-insert-keyword ()
+ (interactive)
+ (insert (howm-completing-read-keyword)))
+
+(defun howm-keyword-to-kill-ring (&optional filename-p)
+ (interactive "P")
+ (let ((title (howm-title-at-current-point filename-p)))
+ (if title
+ (howm-string-to-kill-ring title)
+ (error "No keyword."))))
+
+(defun howm-title-at-current-point (&optional filename-p
+ title-regexp title-regexp-pos)
+ (let ((reg (or title-regexp howm-view-title-regexp))
+ (pos (or title-regexp-pos howm-view-title-regexp-pos)))
+ (save-excursion
+ (end-of-line)
+ (cond ((and (not filename-p)
+ (re-search-backward reg nil t))
+ (match-string-no-properties pos))
+ ((buffer-file-name)
+ (howm-abbreviate-file-name (buffer-file-name)))
+ (t nil)))))
+
+(defun howm-string-to-kill-ring (str)
+ (if str
+ (progn
+ (kill-new str)
+ (message "%s" str))
+ (error "Empty.")))
+
+(defun howm-keyword-for-comefrom ()
+ (save-excursion
+ (goto-char (point-min))
+ (let ((keyword-list nil))
+ (while (re-search-forward howm-keyword-regexp nil t)
+ (setq keyword-list
+ (cons (match-string-no-properties howm-keyword-regexp-pos)
+ keyword-list)))
+ (reverse keyword-list))))
+
+(defun howm-keyword-list ()
+ (let ((sep (format "[\n%s]" (or howm-keyword-list-alias-sep ""))))
+ (with-current-buffer (howm-keyword-buffer)
+ (delete ""
+ (split-string (buffer-substring (point-min) (point-max)) sep)))))
+
+(defun howm-keyword-add (keyword-list)
+ (interactive "sKeyword: ")
+ (setq keyword-list (if (stringp keyword-list)
+ (list keyword-list)
+ keyword-list))
+ (with-current-buffer (howm-keyword-buffer)
+ (save-excursion
+ (goto-char (point-max))
+ (mapc (lambda (k)
+ (when (howm-keyword-new-p k)
+ (insert k "\n")))
+ keyword-list)
+ (when (buffer-file-name)
+ (howm-basic-save-buffer)))))
+
+(defun howm-keyword-new-p (str)
+ (save-excursion
+ (let ((r (format "^%s$" (regexp-quote str)))
+ (case-fold-search howm-keyword-case-fold-search))
+ (goto-char (point-min))
+ (not (re-search-forward r nil t)))))
+
+(defun howm-support-aliases-p ()
+ howm-keyword-list-alias-sep)
+(defun howm-aliases ()
+ (if (howm-support-aliases-p)
+ (howm-read-aliases)
+ nil))
+(defun howm-read-aliases ()
+ (with-current-buffer (howm-keyword-buffer)
+ (save-excursion
+ (let ((ans nil))
+ (goto-char (point-min))
+ (while (search-forward howm-keyword-list-alias-sep nil t)
+ (let* ((line (buffer-substring-no-properties (line-beginning-position)
+ (line-end-position)))
+ (keys (split-string line howm-keyword-list-alias-sep))
+ (ks (if howm-keyword-case-fold-search
+ (mapcar #'downcase keys)
+ keys)))
+ (setq ans (cons ks ans))
+ (end-of-line)))
+ ans))))
+
+(defun howm-expand-aliases-recursively (keyword aliases)
+ (let ((keys (list keyword))
+ (prev nil))
+ (cl-labels ((expand (keys)
+ (sort (cl-remove-duplicates
+ (cl-mapcan (lambda (k)
+ (cl-mapcan
+ (lambda (a) (if (member k a)
+ (copy-sequence a)
+ nil))
+ aliases))
+ keys) :test #'string=)
+ #'string<)))
+ (while (not (equal prev keys))
+ (setq prev keys)
+ (setq keys (expand keys))))
+ keys))
+(cl-assert (equal (howm-expand-aliases-recursively "a"
+ '(("d" "e" "f") ("a" "b" "c")))
+ '("a" "b" "c")))
+(cl-assert (equal (howm-expand-aliases-recursively "a"
+ '(("d" "e" "b") ("a" "b" "c")))
+ '("a" "b" "c" "d" "e")))
+
+(defun howm-keyword-aliases (keyword)
+ "List of strings which are equivalent to KEYWORD.
+KEYWORD itself is always at the head of the returneded list.
+"
+ ;; Return the original keyword (not downcased) for backward compatibility.
+ ;; I'm not sure whether this behavior is really needed.
+ (let* ((key (if howm-keyword-case-fold-search
+ (downcase keyword)
+ keyword))
+ (aliases (howm-aliases))
+ (equiv (if howm-keyword-aliases-recursive
+ (howm-expand-aliases-recursively key aliases)
+ (cl-remove-duplicates
+ (apply #'append
+ (cl-remove-if-not (lambda (a) (member key a))
+ aliases))))))
+ (if (null equiv)
+ keyword
+ (cons keyword (remove key equiv)))))
+
+(defun howm-keyword-search (keyword &optional create-p open-unique-p)
+ (howm-message-time "key-search"
+ (howm-set-command 'howm-keyword-search)
+ (howm-with-normalizer
+ (howm-keyword-search-subr keyword create-p open-unique-p))))
+
+(defun howm-keyword-search-subr (keyword create-p open-unique-p)
+ (let* ((aliases (if (howm-support-aliases-p)
+ (howm-keyword-aliases keyword)
+ keyword))
+ (menu-p (howm-menu-keyword-p keyword))
+ (comefrom-regexp (if menu-p ;; clean me
+ nil
+ (howm-make-keyword-regexp2 aliases)))
+ (trio (let ((howm-search-other-dir (if menu-p ;; clean me
+ nil
+ howm-search-other-dir))
+ (*howm-view-force-case-fold-search*
+ howm-keyword-case-fold-search)) ;; dirty!
+ (howm-call-view-search-internal aliases t)))
+;; code for <http://pc8.2ch.net/test/read.cgi/unix/1077881095/823>.
+;; but this change is canceled; I'll try more fundamental fix. [2005-11-04]
+;; (if open-unique-p
+;; (let ((r (concat "^" (regexp-quote keyword) "$")))
+;; (howm-call-view-search r nil))
+;; (howm-call-view-search aliases t))))
+ (kw (car trio))
+ (name (cadr trio))
+ (items (cl-caddr trio))
+ (items-pair nil)
+ (found (if items t nil)) ;; want to forget items as soon as possible
+ (matched (and found
+ (let* ((howm-keyword-format
+ (if menu-p ;; clean me
+ (default-value 'howm-keyword-format)
+ howm-keyword-format))
+ (r (howm-normalize items aliases
+ comefrom-regexp)))
+ (setq items-pair (cdr r))
+ (car r))))
+ (keyword-matched (member 'keyword matched))
+ (keyword-matched-multi (member 'keyword-multi-hits matched))
+ (file-matched (member 'file matched))
+ (title (howm-make-keyword-string keyword)))
+ ;; main processing (clean me!) [2003-12-01]
+ (cond
+ ;; for %foo%
+ ((and menu-p keyword-matched)
+ (howm-keyword-search-open-menu keyword (car items-pair)
+ keyword-matched-multi))
+ ;; for [[foo]]
+ ((and create-p (not keyword-matched))
+ (howm-keyword-search-create title))
+ ;; open if unique match
+ ((and open-unique-p (howm-single-element-p items))
+ (howm-keyword-search-open-unique items))
+ (t
+ (howm-call-view-summary name items-pair kw)
+ (when (howm-normalize-oldp)
+ ;; sorry for redundancy & inefficiency
+ (howm-list-normalize-old aliases comefrom-regexp t))))
+ ;; record history
+ (when (not menu-p)
+ (howm-write-history keyword))
+ ;; return information
+ `((menu-p . ,menu-p)
+ (found . ,found)
+ (matched . ,matched)
+ (keyword-matched . ,keyword-matched)
+ (create-p . ,create-p))
+ ))
+
+(defun howm-keyword-search-open-menu (keyword item-list multi-hits-p)
+ "Open KEYWORD as menu."
+ ;; dirty. peeking howm-view.el
+ (let* ((item (car item-list))
+ (fname (howm-view-item-filename item))
+ (place (howm-view-item-place item)))
+ (let ((howm-search-other-dir nil))
+ (howm-menu-open fname place (howm-menu-name keyword))))
+ (when multi-hits-p
+ (message "Warning: found two or more %s." keyword)))
+
+(defun howm-keyword-search-create (title)
+ "create new memo <<< TITLE."
+ (howm-create-file-with-title title)
+ (message "New keyword."))
+
+(defun howm-keyword-search-open-unique (items)
+ "Open unique match."
+ (howm-view-open-item (car items)))
+
+;; (defvar *howm-keyword-buffer* nil) ;; for internal use
+(defun howm-keyword-for-goto (&optional keyword-list)
+ (save-excursion
+ (let ((case-fold-search howm-keyword-case-fold-search))
+ (sort (cl-mapcan (lambda (k)
+ (goto-char (point-min))
+ ;; when howm-check-word-break is non-nil,
+ ;; checking word breaks is desired for efficiency.
+ ;; it is not implemented yet.
+ (if (search-forward k nil 'noerr)
+ (list k)
+ nil))
+ (or keyword-list (howm-keyword-list)))
+ (lambda (x y)
+ (> (length x) (length y)))))))
+
+(defun howm-keyword-add-current-buffer ()
+ (save-excursion
+ (goto-char (point-min))
+ (let ((m (current-message))
+ (keyword-list nil))
+ (while (re-search-forward howm-keyword-regexp nil t)
+ (let ((key-str (if howm-keyword-list-alias-sep
+ (mapconcat #'identity
+ (howm-keyword-read)
+ howm-keyword-list-alias-sep)
+ (match-string-no-properties howm-keyword-regexp-pos))))
+ (setq keyword-list (cons key-str keyword-list))))
+ (howm-keyword-add keyword-list)
+ (message "%s" m))))
+(defun howm-keyword-add-items (items)
+ (let ((files (mapcar #'howm-view-item-filename items)))
+ (with-temp-buffer
+ (mapc (lambda (f)
+ (erase-buffer)
+ (insert-file-contents f)
+ (howm-set-configuration-for-file-name f)
+ (howm-keyword-add-current-buffer))
+ files))))
+
+(defun howm-keyword-read ()
+ (let ((ks nil)
+ (beg (line-beginning-position)))
+ (end-of-line)
+ (skip-chars-backward " ")
+ (while (re-search-backward howm-keyword-regexp beg t)
+ (setq ks (cons (match-string-no-properties howm-keyword-regexp-pos) ks))
+ (skip-chars-backward " "))
+ (end-of-line)
+ ks))
+
+;;; howm-mode.el ends here
--- /dev/null
+;;; howm-reminder.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-reminder.el,v 1.83 2012-12-29 08:57:18 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+(provide 'howm-reminder)
+(require 'howm)
+
+(defvar howm-list-schedule-name "{schedule}")
+(defvar howm-list-todo-name "{todo}")
+; "This is used for buffer name of `howm-list-reminder'.
+; See `howm-view-summary-name'.")
+
+(howm-defvar-risky howm-todo-priority-func
+ '(("-" . howm-todo-priority-normal)
+ (" " . howm-todo-priority-normal)
+ ("+" . howm-todo-priority-todo)
+ ("~" . howm-todo-priority-defer)
+ ("!" . howm-todo-priority-deadline)
+ ("@" . howm-todo-priority-schedule)
+ ("." . howm-todo-priority-done)))
+(defvar howm-todo-priority-normal-laziness 1)
+(defvar howm-todo-priority-todo-laziness 7)
+(defvar howm-todo-priority-todo-init -7)
+(defvar howm-todo-priority-defer-laziness 30)
+(defvar howm-todo-priority-defer-init -14)
+(defvar howm-todo-priority-defer-peak 0)
+(defvar howm-todo-priority-deadline-laziness 7)
+(defvar howm-todo-priority-deadline-init -2)
+(defvar howm-todo-priority-schedule-laziness 1)
+(defvar howm-todo-priority-normal-bottom (- howm-huge))
+(defvar howm-todo-priority-todo-bottom (- howm-huge))
+(defvar howm-todo-priority-defer-bottom (- howm-huge))
+(defvar howm-todo-priority-deadline-bottom (- howm-huge))
+(defvar howm-todo-priority-schedule-bottom (- howm-huge++)
+ "Base priority of schedules in the bottom.
+Its default value is extremely negative so that you never see
+schedules outside the range in %reminder in the menu.")
+(defvar howm-todo-priority-deadline-top howm-huge)
+(defvar howm-todo-priority-schedule-top howm-huge)
+(defvar howm-todo-priority-unknown-top howm-huge+)
+
+(defvar howm-action-lock-reminder-done-default nil)
+
+(defvar howm-congrats-count 0)
+
+;;; --- level ? ---
+
+;; Fix me: redundant (howm-date-* & howm-reminder-*)
+
+;; (defun howm-reminder-regexp-grep (types)
+;; (howm-inhibit-warning-in-compilation))
+;; (defun howm-reminder-regexp (types)
+;; (howm-inhibit-warning-in-compilation))
+
+(if howm-reminder-old-format
+ (progn ;; old format
+ (defvar howm-reminder-regexp-grep-format
+ "@\\[[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]\\]%s")
+ (defvar howm-reminder-regexp-format
+ "\\(@\\)\\[\\([0-9][0-9][0-9][0-9]\\)/\\([0-9][0-9]\\)/\\([0-9][0-9]\\)\\]\\(%s\\)\\([0-9]*\\)")
+ (defun howm-reminder-regexp-grep (types)
+ (format howm-reminder-regexp-grep-format types))
+ (defun howm-reminder-regexp (types)
+ (format howm-reminder-regexp-format types))
+ (defvar howm-reminder-regexp-command-pos 1)
+ (defvar howm-reminder-regexp-year-pos 2)
+ (defvar howm-reminder-regexp-month-pos 3)
+ (defvar howm-reminder-regexp-day-pos 4)
+ (defvar howm-reminder-regexp-type-pos 5)
+ (defvar howm-reminder-regexp-laziness-pos 6)
+ (defvar howm-reminder-today-format "@[%Y/%m/%d]")
+ (howm-defvar-risky howm-reminder-font-lock-keywords
+ `(
+ (,(howm-reminder-regexp "[-]?") (0 howm-reminder-normal-face prepend))
+ (,(howm-reminder-regexp "[+]") (0 howm-reminder-todo-face prepend))
+ (,(howm-reminder-regexp "[~]") (0 howm-reminder-defer-face prepend))
+ (,(howm-reminder-regexp "[!]")
+ (0 howm-reminder-deadline-face prepend)
+ (,howm-reminder-regexp-type-pos (howm-reminder-deadline-type-face) prepend))
+ (,(howm-reminder-regexp "[@]") (0 howm-reminder-schedule-face prepend))
+ (,(howm-reminder-regexp "[.]") (0 howm-reminder-done-face prepend))
+ ))
+ (defun howm-reminder-font-lock-keywords ()
+ howm-reminder-font-lock-keywords)
+ (defun howm-action-lock-done (&optional command)
+ (save-excursion
+ (let ((at-beg (match-beginning howm-reminder-regexp-command-pos))
+ (at-end (match-end howm-reminder-regexp-command-pos))
+ (type-beg (match-beginning howm-reminder-regexp-type-pos))
+ (type-end (match-end howm-reminder-regexp-type-pos))
+ (lazy-beg (match-beginning howm-reminder-regexp-laziness-pos))
+ (lazy-end (match-end howm-reminder-regexp-laziness-pos)))
+ (let* ((s (or command
+ (read-from-minibuffer
+ "RET (done), x (cancel), symbol (type), num (laziness): ")))
+ (c (cond ((string= s "") ".")
+ ((= 0 (string-to-number s)) ". give up")
+ (t nil))))
+ (when (string= s "")
+ (howm-congrats))
+ (if c
+ (progn
+ (goto-char at-beg)
+ (delete-region at-beg at-end)
+ (insert (howm-reminder-today))
+ (insert (format "%s " c)))
+ (progn
+ (goto-char lazy-beg)
+ (delete-region lazy-beg lazy-end)
+ (when (string= (buffer-substring-no-properties type-beg type-end)
+ " ")
+ (goto-char type-beg)
+ (insert "-")) ;; "no type" = "normal"
+ (insert s)))))))
+ )
+ (progn ;; new format
+ (defvar howm-reminder-regexp-grep-format
+ (concat "\\[" howm-date-regexp-grep "[ :0-9]*\\]%s"))
+ (defvar howm-reminder-regexp-format
+ (concat "\\(\\[" howm-date-regexp "[ :0-9]*\\]\\)\\(\\(%s\\)\\([0-9]*\\)\\)"))
+;; (defvar howm-reminder-regexp-grep-format
+;; (concat "\\[" howm-date-regexp-grep "\\]%s"))
+;; (defvar howm-reminder-regexp-format
+;; (concat "\\[" howm-date-regexp "\\]\\(\\(%s\\)\\([0-9]*\\)\\)"))
+ (defun howm-reminder-regexp-grep (types)
+ (format howm-reminder-regexp-grep-format types))
+ (defun howm-reminder-regexp (types)
+ (format howm-reminder-regexp-format types))
+ (defvar howm-reminder-regexp-date-pos 1)
+ (defvar howm-reminder-regexp-year-pos (+ howm-date-regexp-year-pos 1))
+ (defvar howm-reminder-regexp-month-pos (+ howm-date-regexp-month-pos 1))
+ (defvar howm-reminder-regexp-day-pos (+ howm-date-regexp-day-pos 1))
+ (defvar howm-reminder-regexp-command-pos 5)
+ (defvar howm-reminder-regexp-type-pos 6)
+ (defvar howm-reminder-regexp-laziness-pos 7)
+ (defvar howm-reminder-today-format
+ (format howm-insert-date-format howm-date-format))
+ (howm-defvar-risky howm-reminder-font-lock-keywords
+ `(
+ (,(howm-reminder-regexp "[-]") (0 howm-reminder-normal-face prepend))
+ (,(howm-reminder-regexp "[+]") (0 howm-reminder-todo-face prepend))
+ (,(howm-reminder-regexp "[~]") (0 howm-reminder-defer-face prepend))
+ (,(howm-reminder-regexp "[!]")
+ (0 howm-reminder-deadline-face prepend)
+ (,howm-reminder-regexp-type-pos (howm-reminder-deadline-type-face) prepend))
+ (,(howm-reminder-regexp "[@]") (0 howm-reminder-schedule-face prepend))
+ (,(howm-reminder-regexp "[.]") (0 howm-reminder-done-face prepend))
+ ))
+ (defun howm-reminder-font-lock-keywords ()
+ howm-reminder-font-lock-keywords)
+ (defun howm-action-lock-done-prompt ()
+ (format "RET (done), x (%s), symbol (type), num (laziness): "
+ howm-reminder-cancel-string))
+ (defun howm-action-lock-done (&optional command)
+ ;; parse line
+ (let* ((pos (point))
+ (beg (match-beginning 0))
+ (end (match-end 0))
+ (date (match-string-no-properties howm-reminder-regexp-date-pos))
+ (type (match-string-no-properties howm-reminder-regexp-type-pos))
+ (lazy (match-string-no-properties howm-reminder-regexp-laziness-pos))
+ (desc (buffer-substring-no-properties end (line-end-position))))
+ ;; parse input command
+ (let* ((s (or command
+ (howm-read-string (howm-action-lock-done-prompt)
+ "x-+~!.@"
+ "0123456789")))
+ (type-or-lazy (string-match (format "^\\(%s?\\)\\([0-9]*\\)$"
+ howm-reminder-types)
+ s))
+ (new-type (and type-or-lazy (match-string-no-properties 1 s)))
+ (new-lazy (and type-or-lazy (match-string-no-properties 2 s))))
+ (when (string= new-type "")
+ (setq new-type type))
+ (when (string= new-lazy "")
+ (setq new-lazy lazy))
+ ;; dispatch and get new contents
+ (let ((new (cond ((string= s "")
+ (howm-action-lock-done-done date type lazy desc))
+ ((string= s "x")
+ (howm-action-lock-done-cancel date type lazy
+ desc))
+ (type-or-lazy
+ (howm-action-lock-done-modify date
+ new-type new-lazy
+ desc))
+ (t
+ (error "Can't understand %s" s)))))
+ ;; replace contents
+ (goto-char beg)
+ (delete-region (point) (line-end-position))
+ (insert new)
+ (goto-char pos)))))
+ (defun howm-action-lock-done-done (date type lazy desc &optional done-mark)
+ (when (null done-mark)
+ (setq done-mark ".")
+ (howm-congrats))
+ (concat (howm-reminder-today) done-mark " "
+ date ":" type lazy desc))
+ (defun howm-action-lock-done-cancel (date type lazy desc)
+ (howm-action-lock-done-done date type lazy desc
+ (format ". %s" howm-reminder-cancel-string)))
+ (defun howm-action-lock-done-modify (date type lazy desc)
+ (concat date type lazy desc))
+ ))
+
+(defun howm-reminder-deadline-type-face ()
+ (let ((late (cadr (howm-todo-parse-string (match-string-no-properties 0)))))
+ (if (>= late 0)
+ howm-reminder-late-deadline-face
+ howm-reminder-deadline-face)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Reminder: schedule & todo
+
+(define-key howm-view-summary-mode-map "." 'howm-reminder-goto-today)
+
+;; Clean me.
+;; I cannot remember why I wrote howm-with-schedule-summary-format.
+(defmacro howm-with-schedule-summary-format (&rest body)
+ (declare (indent 0))
+ `(let ((howm-view-summary-format (if howm-view-split-horizontally ;; dirty!
+ ""
+ howm-view-summary-format)))
+ ,@body))
+
+(defun howm-list-schedule ()
+ (interactive)
+ (howm-with-need
+ (howm-with-schedule-summary-format
+ (let ((items (need (howm-list-reminder-internal howm-schedule-types))))
+ (howm-list-reminder-final-setup howm-list-schedule-name
+ (howm-schedule-sort-items items)))
+ (howm-reminder-goto-today)
+ (howm-view-summary-check))))
+
+(defun howm-list-reminder-internal (types)
+ (let* ((r (howm-reminder-regexp types))
+ (rg (howm-reminder-regexp-grep types))
+ (summarizer (howm-reminder-summarizer r t))
+ (folder (howm-reminder-search-path-folder)))
+ (cl-caddr (howm-view-search-folder-internal rg folder nil summarizer))))
+
+(defun howm-list-reminder-final-setup (&optional name item-list)
+ (howm-view-summary name item-list
+ (append (howm-reminder-add-font-lock-internal)
+ (howm-mode-add-font-lock-internal)))
+ (let ((action-lock-default-rules
+ (howm-action-lock-reminder-forward-rules t)))
+ (action-lock-mode t)))
+
+(let ((rs (mapcar #'regexp-quote
+ (list howm-date-format howm-reminder-today-format))))
+ (defcustom howm-highlight-date-regexp-format (car rs)
+ "Time format for highlight of today and tommorow.
+This value is passed to `format-time-string', and the result must be a regexp."
+ :type `(radio ,@(mapcar (lambda (r) `(const ,r)) rs)
+ string)
+ :group 'howm-faces))
+
+(defun howm-reminder-today-font-lock-keywords ()
+ (let ((today (howm-reminder-today 0 howm-highlight-date-regexp-format))
+ (tomorrow (howm-reminder-today 1 howm-highlight-date-regexp-format)))
+ `((,today (0 howm-reminder-today-face prepend))
+ (,tomorrow (0 howm-reminder-tomorrow-face prepend)))))
+
+(defun howm-reminder-add-font-lock ()
+ (cheat-font-lock-append-keywords (howm-reminder-add-font-lock-internal)))
+
+(defun howm-reminder-add-font-lock-internal ()
+ (append (howm-reminder-font-lock-keywords)
+ (howm-reminder-today-font-lock-keywords)))
+
+(defun howm-reminder-omit-before (regexp str)
+ (string-match regexp str)
+ (substring str (match-beginning 0)))
+
+(defun howm-reminder-summarizer (regexp &optional show-day-of-week)
+ `(lambda (file line content)
+ (let ((s (howm-reminder-omit-before ,regexp content)))
+;; (string-match ,regexp content)
+;; (substring content (match-beginning 0)))))
+ ,(if show-day-of-week
+ '(let* ((p (howm-todo-parse-string s))
+ (late (floor (nth 1 p)))
+ (dow (howm-day-of-week-string (nth 4 p))))
+ (format "%s%3s %s" dow late s))
+ 's))))
+
+(defun howm-reminder-today (&optional days-after fmt)
+ (format-time-string (or fmt howm-reminder-today-format)
+ (howm-days-after (current-time) (or days-after 0))))
+
+;; dirty. peek howm-view-*
+(defun howm-reminder-goto-today ()
+ (interactive)
+ (let* ((today (howm-reminder-today))
+ (r (howm-reminder-regexp "."))
+ (summaries (mapcar (lambda (item)
+ (howm-reminder-omit-before
+ r (howm-view-item-summary item)))
+ (howm-view-item-list))))
+;; (summaries (mapcar 'howm-view-item-summary (howm-view-item-list))))
+ (let ((rest summaries)
+ (n 0))
+ (while (and rest
+ (string< (car rest) today))
+ (setq rest (cdr rest)
+ n (1+ n)))
+ (howm-goto-line (1+ n)))))
+
+(defun howm-schedule-menu (days &optional days-before)
+ (let* ((today (howm-encode-day t))
+ (from (- today (or days-before 0)))
+ (to (+ today days 1))
+ (howm-schedule-types howm-schedule-menu-types) ;; dirty
+ (raw (howm-reminder-search howm-schedule-types))
+ (filtered (cl-remove-if #'(lambda (item)
+ (let ((s (howm-schedule-date item)))
+ (or (< s from)
+ (< to s))))
+ raw)))
+ (howm-schedule-sort-items filtered)))
+
+(defun howm-schedule-sort-items (items &optional reverse-p)
+ (when reverse-p
+ (error "Not supported."))
+ (howm-with-schedule-summary-format
+ (howm-sort #'howm-schedule-sort-converter #'howm-schedule-sort-comparer
+ items)))
+(defun howm-schedule-sort-by-date ()
+ (interactive)
+ (howm-view-sort-doit #'howm-schedule-sort-items))
+(defun howm-schedule-sort-converter (item)
+ (let ((z (howm-reminder-parse item)))
+ (cons (car z)
+ (if howm-schedule-sort-by-time
+ (howm-item-summary item)
+ (nth 5 z)))))
+(defun howm-schedule-sort-comparer (a b)
+ (if (= (car a) (car b))
+ (string< (cdr a) (cdr b))
+ (< (car a) (car b))))
+
+(defun howm-schedule-date (item)
+ (car (howm-reminder-parse item)))
+
+(defun howm-reminder-search (types)
+ (let* ((r (howm-reminder-regexp types))
+ (rg (howm-reminder-regexp-grep types))
+ (summarizer (howm-reminder-summarizer r))
+ (folder (howm-reminder-search-path-folder)))
+ (howm-view-search-folder-items rg folder summarizer)))
+
+(defun howm-list-todo ()
+ (interactive)
+ (howm-list-todo-sub))
+
+;; experimental [2006-06-26]
+(defun howm-todo-sleeping-p (item)
+ ;; (- howm-huge-) should be replaced with an appropreate variable.
+ (< (howm-todo-priority item) (- howm-huge-)))
+(defun howm-list-active-todo ()
+ (interactive)
+ (howm-list-todo-sub (lambda (item)
+ (not (howm-todo-sleeping-p item)))))
+(defun howm-list-sleeping-todo ()
+ (interactive)
+ (howm-list-todo-sub #'howm-todo-sleeping-p))
+
+(defun howm-list-todo-sub (&optional pred)
+ (howm-with-need
+ (howm-with-schedule-summary-format
+ (let ((items (need (howm-list-reminder-internal howm-todo-types))))
+ (when pred
+ (setq items
+ (need (cl-remove-if-not pred items))))
+ (setq items (howm-todo-sort-items items))
+ (when howm-todo-separators
+ (setq items
+ (howm-todo-insert-separators items
+ howm-todo-separators)))
+ (howm-list-reminder-final-setup howm-list-todo-name items)))))
+
+(defun howm-todo-menu (n limit-priority separators)
+ "Find top N todo items, or all todo items if N is nil.
+Returned value is a sorted list of items (see `howm-make-item').
+Items whose priority is worse than LIMIT-PRIORITY are eliminated.
+Separator strings are inserted to the returned list according to
+the rule given as SEPARATORS.
+See docstring of the variable `howm-menu-reminder-separators' for details."
+ (let* ((cutted (cl-remove-if (lambda (item)
+ (< (howm-todo-priority item)
+ limit-priority))
+ (howm-reminder-search howm-todo-menu-types)))
+ (sorted (howm-todo-sort-items cutted)))
+ (howm-todo-insert-separators (if n (howm-first-n sorted n) sorted)
+ separators t)))
+
+(defun howm-reminder-menu (n limit-priority separators)
+ (howm-with-reminder-setting
+ (howm-todo-menu n limit-priority separators)))
+
+(defun howm-todo-insert-separators (item-list separators
+ &optional relative-date-p)
+ (let ((is (mapcar (lambda (item) (cons (howm-todo-priority item) item))
+ item-list))
+ (sep (mapcar (lambda (pair)
+ (cons (if relative-date-p
+ (- howm-todo-priority-schedule-top
+ (or (car pair) howm-huge-))
+ (or (car pair) (- howm-huge-)))
+ (howm-make-item (howm-make-page:nil) (cdr pair))))
+ separators)))
+ (mapcar #'cdr
+ (sort (append is sep) #'(lambda (x y) (> (car x) (car y)))))))
+
+(defun howm-todo-sort-items (items &optional reverse-p)
+ (when reverse-p
+ (error "Not supported."))
+ (howm-sort #'howm-todo-priority-ext #'howm-todo-priority-ext-gt
+ items))
+
+(defun howm-todo-sort-by-priority ()
+ (howm-view-sort-doit #'howm-todo-sort-items))
+
+;; Clean me.
+(defun howm-reminder-parse (item)
+ (howm-todo-parse-string (howm-view-item-summary item)))
+(defun howm-todo-parse (item)
+ (cdr (howm-reminder-parse item)))
+(defun howm-todo-parse-string (str)
+ "Parse reminder format.
+Example: (howm-todo-parse-string \"abcde [2004-11-04]@ hogehoge\")
+==> (12725.625 0.022789351851315587 \"@\" nil 4 \" hogehoge\")"
+ (let ((summary str))
+ (string-match (howm-reminder-regexp ".") summary)
+ (let ((y (match-string-no-properties howm-reminder-regexp-year-pos
+ summary))
+ (m (match-string-no-properties howm-reminder-regexp-month-pos
+ summary))
+ (d (match-string-no-properties howm-reminder-regexp-day-pos
+ summary))
+ (ty (match-string-no-properties howm-reminder-regexp-type-pos
+ summary))
+ (lz (match-string-no-properties howm-reminder-regexp-laziness-pos
+ summary))
+ (description (substring str (match-end 0))))
+ (let* ((day (howm-encode-day d m y))
+ (today (howm-encode-day))
+ (late (- today day))
+ (type (substring (or ty "-") 0 1)) ;; "-" for old format
+ (lazy (cond ((string= type " ") nil)
+ ((null lz) nil)
+ (t (let ((z (string-to-number lz)))
+ (if (= z 0) nil z)))))
+ ;; (lazy (if (string= type " ")
+ ;; 0
+ ;; (string-to-number (or lz "0"))))
+ (day-of-week (nth 6
+ (decode-time (apply #'encode-time
+ (mapcar #'string-to-number
+ (list "0" "0" "0"
+ d m y)))))))
+ (list day late type lazy day-of-week description)))))
+
+(defun howm-todo-priority (item)
+ (let* ((p (howm-todo-parse item))
+ (late (car p))
+ (type (cadr p))
+ (lazy (cl-caddr p))
+ (f (or (cdr (assoc type howm-todo-priority-func))
+ #'howm-todo-priority-unknown)))
+ (funcall f late lazy item)))
+
+(defun howm-todo-priority-ext (item)
+ (cons (howm-todo-priority item) (howm-view-item-summary item)))
+(defun howm-todo-priority-ext-gt (e1 e2)
+ "Compare two results E1 and E2 of `howm-todo-priority-ext'.
+Return true if E1 has higher priority than E2."
+ (cond ((> (car e1) (car e2)) t)
+ ((< (car e1) (car e2)) nil)
+ (t (string< (cdr e1) (cdr e2)))))
+
+(defun howm-todo-relative-late (late laziness default-laziness)
+ (/ late (float (or laziness default-laziness))))
+
+(defun howm-todo-priority-normal (late lz item)
+ (let ((r (howm-todo-relative-late late lz
+ howm-todo-priority-normal-laziness)))
+ (cond ((< r 0) (+ r howm-todo-priority-normal-bottom))
+ (t (- r)))))
+
+(defun howm-todo-priority-todo (late lz item)
+ (let ((r (howm-todo-relative-late late lz
+ howm-todo-priority-todo-laziness))
+ (c (- howm-todo-priority-todo-init)))
+ (cond ((< r 0) (+ r howm-todo-priority-todo-bottom))
+ (t (* c (- r 1))))))
+
+(defun howm-todo-priority-defer (late lz item)
+ (let* ((r (howm-todo-relative-late late lz
+ howm-todo-priority-defer-laziness))
+ (p howm-todo-priority-defer-peak)
+ (c (- p howm-todo-priority-defer-init)))
+ (let ((v (* 2 (abs (- (mod r 1) 0.5)))))
+ (cond ((< r 0) (+ r howm-todo-priority-defer-bottom))
+ (t (- p (* c v)))))))
+
+;; ;; Clean me.
+;; (defvar howm-todo-schedule-days nil)
+;; (defvar howm-todo-schedule-days-before nil)
+;; (defmacro howm-with-schedule-days (days days-before &rest body)
+;; `(let ((howm-todo-schedule-days ,days)
+;; (howm-todo-schedule-days-before ,days-before))
+;; ,@body))
+;; (put 'howm-with-schedule-days 'lisp-indent-hook 2)
+;; (defun howm-todo-priority-schedule (late lz item)
+;; (setq lz (or lz howm-todo-priority-schedule-laziness))
+;; (cond ((< late (- howm-todo-schedule-days))
+;; (+ late howm-todo-priority-schedule-bottom))
+;; ((< late (+ lz howm-todo-schedule-days-before))
+;; (+ late howm-todo-priority-schedule-top))
+;; (t
+;; (+ late howm-todo-priority-schedule-bottom))))
+
+(defun howm-todo-priority-deadline (late lz item)
+ (if howm-reminder-schedule-interval
+ (howm-todo-priority-deadline-1 late lz item)
+ (howm-todo-priority-deadline-2 late lz item)))
+
+(defun howm-todo-priority-deadline-1 (late lz item)
+ (let ((r (howm-todo-relative-late late lz
+ howm-todo-priority-deadline-laziness))
+ (c (- howm-todo-priority-deadline-init))
+ (d (- (howm-reminder-schedule-interval-to)))
+ (top howm-todo-priority-deadline-top)
+ (bot howm-todo-priority-deadline-bottom))
+ ;; I dare to use late in the first case below so that
+ ;; deadline behaves like schedule after its deadline date.
+ (cond ((< d late) (+ top late))
+ ((< r -1) (+ bot r))
+ (t (* c r)))))
+
+(defun howm-todo-priority-deadline-2 (late lz item)
+ "This function may be obsolete in future.
+`howm-todo-priority-deadline-1' will be used instead."
+ (let ((r (howm-todo-relative-late late lz
+ howm-todo-priority-deadline-laziness))
+ (c (- howm-todo-priority-deadline-init)))
+ (cond ((> r 0) (+ r howm-todo-priority-deadline-top))
+ ((< r -1) (+ r howm-todo-priority-deadline-bottom))
+ (t (* c r)))))
+
+(defun howm-todo-priority-schedule (late lz item)
+ (if howm-reminder-schedule-interval
+ (howm-todo-priority-schedule-1 late lz item)
+ (howm-todo-priority-schedule-2 late lz item)))
+
+(defun howm-todo-priority-schedule-1 (late lz item)
+ (let ((lazy (or lz howm-todo-priority-schedule-laziness))
+ (from (howm-reminder-schedule-interval-from))
+ (to (howm-reminder-schedule-interval-to))
+ (top howm-todo-priority-schedule-top)
+ (bot howm-todo-priority-schedule-bottom))
+ (cond ((< late (- to)) (+ bot late))
+ ((< late (+ from lazy)) (+ top late))
+ (t (+ bot late)))))
+
+(defun howm-todo-priority-schedule-2 (late lz item)
+ "This function may be obsolete in future.
+`howm-todo-priority-schedule-1' will be used instead."
+ (let ((r (howm-todo-relative-late late lz
+ howm-todo-priority-schedule-laziness)))
+ (cond ((> r 0) (+ r howm-todo-priority-schedule-bottom))
+ (t r))))
+
+(defun howm-todo-priority-done (late lz item)
+ (+ late howm-todo-priority-done-bottom))
+
+(defun howm-todo-priority-unknown (late lz item)
+ (+ late howm-todo-priority-unknown-top))
+
+(defun howm-encode-day (&optional d m y)
+ "Convert date Y-M-D to a float number, days from the reference date.
+When D is omitted, the current time is encoded.
+When D is t, the beginning of today is encoded."
+ (let* ((e (apply #'encode-time (cond ((eq d t)
+ (let ((now (howm-decode-time)))
+ (append '(0 0 0) (cl-cdddr now))))
+ (d
+ (mapcar #'string-to-number
+ (list "0" "0" "0" d m y)))
+ (t
+ (howm-decode-time)))))
+ (hi (car e))
+ (low (cadr e))
+ (daysec (* 60 60 24.0)))
+ (+ (* hi (/ 65536 daysec)) (/ low daysec))))
+
+(defun howm-congrats ()
+ (setq howm-congrats-count (1+ howm-congrats-count))
+ (let* ((n (length howm-congrats-format))
+ (r (random n)))
+ (message (nth r howm-congrats-format) howm-congrats-count)
+ (when howm-congrats-command
+ (howm-congrats-run howm-congrats-command))
+ (run-hooks 'howm-congrats-hook)))
+(defun howm-congrats-run (com-arg-list)
+ (let* ((name "howm-congrats")
+ (command (car com-arg-list))
+ (args (cdr com-arg-list))
+ (prev (get-process name)))
+ (when prev
+ (delete-process prev))
+ (apply #'start-process-shell-command `(,name nil ,command ,@args))))
+
+(defun howm-action-lock-reminder-done-rule ()
+ (list (howm-reminder-regexp howm-reminder-types)
+ `(lambda (&optional arg)
+ (let ((command (if arg
+ nil
+ howm-action-lock-reminder-done-default)))
+ (howm-action-lock-done command)))
+ howm-reminder-regexp-command-pos))
+
+(defun howm-reminder-search-path ()
+ (howm-search-path t))
+
+(defun howm-reminder-search-path-folder ()
+ (howm-search-path-folder t))
+
+;;; direct manipulation of items from todo list
+
+;; I'm sorry for dirty procedure here.
+;; If we use naive howm-date-regexp, it matches to file name "2004-05-11.txt"
+;; in summary mode.
+(defun howm-action-lock-reminder-forward-rules (&optional summary-mode-p)
+ (let* ((action-maker (lambda (pos)
+ `(lambda (&optional dummy)
+ (howm-action-lock-forward (match-beginning ,pos)))))
+ (reminder-rule (list (howm-reminder-regexp howm-reminder-types)
+ (funcall action-maker 0)
+ howm-reminder-regexp-command-pos))
+ (summary-date-reg (format ".*%s.*\\(%s\\)"
+ (regexp-quote howm-view-summary-sep)
+ howm-date-regexp))
+ (summary-date-reg-pos 1)
+ (summary-date-rule (list summary-date-reg
+ (funcall action-maker summary-date-reg-pos)
+ summary-date-reg-pos))
+ (menu-date-rule (list howm-date-regexp
+ (funcall action-maker 0)))
+ (date-rule (if summary-mode-p
+ summary-date-rule
+ menu-date-rule)))
+ (list reminder-rule date-rule)))
+
+(defvar howm-action-lock-forward-wconf nil
+ "for internal use")
+(defun howm-action-lock-forward-escape ()
+ (setq howm-action-lock-forward-wconf
+ (current-window-configuration)))
+(defmacro howm-action-lock-forward-block (&rest body)
+ (declare (indent 0))
+ `(prog2
+ (setq howm-action-lock-forward-wconf nil)
+ (progn
+ ,@body)
+ (when howm-action-lock-forward-wconf
+ (set-window-configuration howm-action-lock-forward-wconf))))
+
+(defun howm-action-lock-forward (form-pos)
+ (howm-action-lock-forward-block
+ (let* ((cursor-pos (point))
+ (form-reg (howm-line-tail-regexp form-pos))
+ (cursor-reg (howm-line-tail-regexp cursor-pos)))
+ (let* ((mt (buffer-modified-tick))
+ (original-tail (buffer-substring form-pos (line-end-position)))
+ (modified-tail (howm-action-lock-forward-invoke form-reg
+ cursor-reg))
+ (untouched-p (= mt (buffer-modified-tick))))
+ ;; Current-buffer may be already updated according to
+ ;; howm-menu-refresh-after-save because save-buffer in
+ ;; howm-action-lock-forward-invoke can run howm-after-save-hook.
+ ;; We have to exclude such cases.
+ (when (and untouched-p
+ (not (string= original-tail modified-tail)))
+ (let ((buffer-read-only nil))
+ (howm-menu-list-getput-item original-tail modified-tail)
+ (delete-region form-pos (line-end-position))
+ (insert modified-tail)))
+ (goto-char cursor-pos)
+ (howm-action-lock-forward-update)))))
+
+(defun howm-line-tail-regexp (pos)
+ (concat (regexp-quote (buffer-substring-no-properties pos
+ (line-end-position)))
+ "$"))
+
+(defun howm-action-lock-forward-invoke (form-reg cursor-reg)
+ (howm-modify-in-background (lambda (&rest dummy)
+ ;; open the target file
+ ;; and go to the corresponding line
+ (howm-action-lock-forward-open))
+ (lambda (form-reg cursor-reg)
+ (howm-action-lock-forward-modify-current-line
+ form-reg cursor-reg))
+ howm-action-lock-forward-save-buffer
+ howm-action-lock-forward-kill-buffer
+ form-reg
+ cursor-reg))
+
+(defun howm-modify-in-background (opener modifier save-p kill-p &rest args)
+ (save-excursion
+ (save-window-excursion
+ (let ((original-buffers (buffer-list)))
+ (apply opener args)
+ ;; We are in the target buffer now.
+ (let ((initially-modified-p (buffer-modified-p)))
+ (prog1
+ (apply modifier args)
+ (when (and save-p
+ (not initially-modified-p)
+ (buffer-modified-p))
+ (save-buffer))
+ (when (and kill-p
+ (not (buffer-modified-p))
+ (not (member (current-buffer) original-buffers)))
+ (kill-buffer (current-buffer)))))))))
+
+(defun howm-action-lock-forward-modify-current-line (form-reg cursor-reg)
+ (howm-modify-form #'action-lock-invoke form-reg cursor-reg))
+
+(defun howm-modify-form (proc form-reg cursor-reg &rest args)
+ (cl-labels
+ ((f-cursor ()
+ (beginning-of-line)
+ (re-search-forward cursor-reg
+ (line-end-position
+ (+ 1 howm-action-lock-forward-fuzziness))
+ t))
+ (b-cursor ()
+ (end-of-line)
+ (re-search-backward cursor-reg
+ (line-beginning-position
+ (- 1 howm-action-lock-forward-fuzziness))
+ t))
+ (b-form ()
+ (end-of-line)
+ (re-search-backward form-reg (line-beginning-position) t)))
+ (or (save-excursion (and (f-cursor) (b-form)))
+ (save-excursion (and (b-cursor) (b-form)))
+ (error "Can't find corresponding line.")))
+ (goto-char (match-beginning 0))
+ ;; Now we are at the beginning of the form.
+ ;; Remember this position to report the modified tail.
+ (save-excursion
+ (when (not (re-search-forward cursor-reg (line-end-position) t))
+ (error "Can't find corresponding string."))
+ (goto-char (match-beginning 0))
+ ;; update display. I don't understand why this is needed.
+ ;; Without this, cursor is placed at the end of buffer if I delete many
+ ;; lines before the form position in the below setting (GNU Emacs 21.4.1).
+ ;; (setq howm-menu-refresh-after-save nil)
+ ;; (setq howm-menu-expiry-hours 3)
+ ;; (setq howm-action-lock-forward-fuzziness 20000)
+ ;; Sigh...
+ (switch-to-buffer (current-buffer) t)
+ ;; Now we are at the corresponding position.
+ ;; Let's call proc to modify the form!
+ (undo-boundary)
+ (apply proc args))
+ ;; We are back to the beginning of the form.
+ ;; Report the modified tail.
+ (buffer-substring-no-properties (point) (line-end-position)))
+
+(defun howm-action-lock-forward-open ()
+ (cond ((eq major-mode 'howm-menu-mode)
+ (progn
+ (howm-menu-list-action)
+ (when (eq major-mode 'howm-view-summary-mode)
+ (error "Several candidates."))))
+ ((eq major-mode 'howm-view-summary-mode)
+ (howm-view-summary-open))
+ (t
+ (error "Not supported on this buffer."))))
+
+(defun howm-action-lock-forward-update ()
+ (cond ((eq major-mode 'howm-menu-mode)
+ nil) ; do nothing
+ ((eq major-mode 'howm-view-summary-mode)
+ (howm-view-summary-check t))
+ (t
+ (error "Not supported on this buffer."))))
+
+;;; extend deadlines (experimental)
+
+(put 'howm-extend-deadlines 'disabled t)
+(defun howm-extend-deadlines (days)
+ "Extend all overdue deadlines for DAYS from today."
+ (interactive "nHow many days? ")
+ (let ((hit (cl-remove-if (lambda (item)
+ (< (cadr (howm-reminder-parse item)) 0))
+ (howm-reminder-search "!"))))
+ (mapc (lambda (item)
+ (howm-modify-in-background (lambda (item dummy)
+ (howm-view-open-item item))
+ #'howm-extend-deadline-here
+ nil nil item days))
+ hit)
+ (howm-menu-refresh-background)
+ (message "Extended %s deadline(s)." (length hit))))
+
+(defun howm-extend-deadline-here (item days)
+ (apply (lambda (form-reg cursor-reg) ;; use apply for destructuring-bind
+ (howm-modify-form #'howm-extend-deadline-doit
+ form-reg cursor-reg days))
+ (let ((summary (howm-item-summary item)))
+ (string-match (howm-reminder-regexp ".") summary)
+ (mapcar (lambda (p)
+ (concat (regexp-quote
+ (substring summary (match-beginning p)))
+ "$"))
+ (list howm-reminder-regexp-date-pos
+ howm-reminder-regexp-year-pos)))))
+
+(defun howm-extend-deadline-doit (days)
+ (or (looking-at howm-date-regexp)
+ (re-search-backward howm-date-regexp (line-beginning-position) t)
+ (error "Can't find corresponding date form."))
+ (howm-datestr-replace
+ (howm-datestr-shift (howm-time-to-datestr) 0 0 days)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; customize
+
+(defun howm-define-reminder (letter priority-func face schedule todo
+ &optional reminder)
+ "Define reminder type LETTER whose priority is determined by PRIORITY-FUNC.
+It appears with FACE in schedule list when SCHEDULE is non-nil, and in
+todo list when TODO is non-nil. It also appears in menu if SCHEDULE
+or TODO is t."
+ (add-to-list 'howm-todo-priority-func
+ (cons letter priority-func))
+ (add-to-list 'howm-reminder-font-lock-keywords
+ `(,(howm-reminder-regexp (format "[%s]" letter))
+ (0 ,face prepend)))
+ (let* ((schedule-menu (eq schedule t))
+ (todo-menu (eq todo t))
+ (reminder-menu (or schedule-menu todo-menu)))
+ ;; Don't modify howm-reminder-marks.
+ ;; Otherwise, defcustom will be confused for howm-reminder-menu-types, etc.
+ (cl-mapcar (lambda (var flag)
+ (howm-modify-reminder-types var letter flag))
+ '(howm-reminder-types
+ howm-schedule-types howm-todo-types
+ howm-schedule-menu-types howm-todo-menu-types
+ howm-reminder-menu-types)
+ (list t schedule todo
+ schedule-menu todo-menu reminder-menu))))
+
+(defun howm-modify-reminder-types (var letter flag)
+ "Modify variable VAR whose value is \"[...]\".
+Example:
+ (setq foo \"[abc]\")
+ (howm-modify-reminder-types 'foo \"d\" t) foo ==> \"[abcd]\"
+ (howm-modify-reminder-types 'foo \"b\" nil) foo ==> \"[acd]\"
+"
+ (let ((val (symbol-value var)))
+ (when (not (string-match "^\\[\\(.*\\)\\]$" val))
+ (error "Wrong format - %s: %s" var val))
+ (let* ((old (match-string-no-properties 1 val))
+ (removed (remove (string-to-char letter) old))
+ (new (if flag
+ ;; This order is important when val is "[-+~!.]".
+ (concat removed letter)
+ removed)))
+ (set var (format "[%s]" new)))))
+
+;; (example)
+;; If you write like below in your memo, it will appear
+;; under today's schedule in reminder list.
+;; The date "2004-11-01" is dummy and "0" means the position "today - 0".
+;; [2004-11-01]_0 ========================
+;; (defun howm-todo-priority-separator (late lazy item)
+;; (- howm-huge (or lazy 0) -1))
+;; (defface howm-reminder-separator-face
+;; ;; invisible :p
+;; '((((class color) (background light)) (:foreground "white"))
+;; (((class color) (background dark)) (:foreground "black"))
+;; (t ()))
+;; "Face for `howm-list-reminder'. This is obsolete and will be removed in future."
+;; :group 'howm-faces)
+;; (defvar howm-reminder-separator-face 'howm-reminder-separator-face)
+;; (defvar howm-reminder-separator-type "_")
+;; (howm-define-reminder howm-reminder-separator-type
+;; #'howm-todo-priority-separator
+;; 'howm-reminder-separator-face t t)
+
+;;; howm-reminder.el ends here
--- /dev/null
+;;; howm-vars.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-vars.el,v 1.59 2011-12-31 15:07:29 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+(require 'cl-lib)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Util
+
+(defmacro howm-define-risky-command (risky orig)
+ "Define a macro RISKY which is risky-version of ORIG."
+ (let* ((gsymbol (cl-gensym))
+ (gargs (cl-gensym))
+ (docstring (format "Do `%s' and set risky-local-variable property."
+ orig)))
+ `(defmacro ,risky
+ (,gsymbol &rest ,gargs)
+ ,docstring
+ (declare (indent 'defun))
+ (howm-define-risky-command-body ',orig ,gsymbol ,gargs))))
+
+;; [2011-01-13]
+;; I split this function from howm-define-risky-command for avoiding
+;; nested backquotes. Nested backquotes are byte-compiled to
+;; old-style-backquotes, that cause warnings when *.elc is loaded.
+(cl-eval-when (compile load eval)
+ (defun howm-define-risky-command-body (command symbol args)
+ `(progn
+ (,command ,symbol ,@args)
+ (put ',symbol 'risky-local-variable t))))
+
+;; ;; This code is byte-compiled to old-style-backquotes. Sigh...
+;; (defmacro howm-define-risky-command (risky orig)
+;; "Define a macro RISKY which is risky-version of ORIG."
+;; (let* ((gsymbol (cl-gensym))
+;; (gargs (cl-gensym))
+;; (docstring (format "Do `%s' and set risky-local-variable property."
+;; orig)))
+;; `(progn
+;; (put ',risky 'lisp-indent-hook 'defun)
+;; (defmacro ,risky
+;; (,gsymbol &rest ,gargs)
+;; ,docstring
+;; (let ((command ',orig)
+;; (symbol ,gsymbol)
+;; (args ,gargs))
+;; `(progn
+;; ;; (,',orig ...) doesn't work.
+;; ;; So I need to bind temporal variables outside nested backquote.
+;; (,command ,symbol ,@args)
+;; (put ',symbol 'risky-local-variable t)))))))
+
+(howm-define-risky-command howm-defvar-risky defvar)
+(howm-define-risky-command howm-defcustom-risky defcustom)
+(howm-define-risky-command howm-defconst-risky defconst)
+
+;; ;; Should I use this?
+;; (defmacro howm-boundp-q (var)
+;; `(prog1
+;; (boundp ,var)
+;; (howm-dont-warn-free-variable ,var)))
+(defmacro howm-dont-warn-free-variable (var)
+ "No effect except for inhibition of warning in byte-compilation.
+Without this trick, compiler says 'reference to free variable' even when
+we have checked availability like (if (boundp xxx) ...)."
+ `(when (boundp (quote ,var))
+ (defvar ,var nil)))
+
+(defmacro howm-funcall-if-defined (call &rest not-defined)
+ "Execute CALL if its car is defined as a function.
+Otherwise, execute expressions in NOT-DEFINED.
+This is cheat to avoid warning while byte-compilation.
+Byte-compiler says \"not known to be defined\" even for codes like
+ (if (fboundp 'foo) (foo bar)).
+
+\(macroexpand '(howm-funcall-if-defined (migemo-get-pattern roma) nil))
+==> (if (fboundp 'migemo-get-pattern)
+ (let ((howm-funcall-if-defined-f 'migemo-get-pattern))
+ (funcall howm-funcall-if-defined-f roma))
+ nil)
+"
+ (declare (indent 1))
+ (let ((func (car call))
+ (args (cdr call)))
+ `(if (fboundp (quote ,func))
+ (let ((howm-funcall-if-defined-f (quote ,func)))
+ (funcall howm-funcall-if-defined-f ,@args))
+ ,@not-defined)))
+
+;; copied and modified from mule-cmds.el
+;; snap:///usr/share/emacs/21.2/lisp/international/mule-cmds.el#1870:(defun set-locale-environment (locale-name)
+(defun howm-get-locale ()
+ (let ((vars '("LC_ALL" "LC_CTYPE" "LANG"))
+ (locale nil))
+ (while (and vars (not (setq locale (getenv (car vars)))))
+ (setq vars (cdr vars)))
+ (or locale "")))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Top
+
+(defgroup howm nil
+ "Wiki-like note-taking tool."
+ :group 'applications)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Compatibility
+
+(defvar howm-compatible-to-ver1dot3 nil
+ "If non-nil, compatible values to howm-1.3.* are used
+as default of some variables; put (setq howm-compatible-to-ver1dot3 t)
+*before* (require 'howm) if you like.")
+
+(defgroup howm-compatibility nil
+ "Compatibility to howm-1.3.*."
+ :group 'howm)
+
+(defmacro howm-if-ver1dot3 (oldval def)
+ (declare (indent 1))
+ (cl-destructuring-bind (command var val &rest args) def
+ `(,command ,var (if howm-compatible-to-ver1dot3 ,oldval ,val)
+ ,@args
+ :group 'howm-compatibility)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Files
+
+(defgroup howm-files nil
+ "Names of files and directories."
+ :group 'howm)
+
+(howm-defcustom-risky howm-directory "~/howm/"
+ "*All files under this directory are scanned recursively."
+ :type 'directory
+ :group 'howm-files)
+
+(let ((default-format "%Y/%m/%Y-%m-%d-%H%M%S.txt"))
+ (howm-if-ver1dot3 "%Y/%m/%Y-%m-%d-%H%M%S.howm"
+ (defcustom howm-file-name-format default-format
+ "Name of new file. See `format-time-string'.
+For example, set as \"%Y/%m/%Y-%m-%d-%H%M%S.txt\" to separate each entry
+to its own file. You must guarantee (string< oldfile newfile)."
+ :type `(radio (const :tag "One file for one entry" ,default-format)
+ (const :tag "One file for one day" "%Y/%m/%Y-%m-%d.txt")
+ (const :tag "One file for one month" "%Y/%Y-%m.txt")
+ (const :tag "One file for one year" "%Y.txt")
+ string)
+ :group 'howm-efficiency
+ :group 'howm-files)))
+
+(howm-defcustom-risky howm-keyword-file "~/.howm-keys"
+ "*Keywords (WikiNames) are stored in this file."
+ :type 'file
+ :group 'howm-files)
+
+;; inhibit warning in compilation.
+(howm-dont-warn-free-variable image-file-name-regexps)
+(defvar howm-image-file-name-regexps
+ (let ((exts-regexp "\\.\\(GIF\\|JP\\(?:E?G\\)\\|P\\(?:BM\\|GM\\|NG\\|PM\\)\\|TIFF?\\|X\\(?:[BP]M\\)\\|gif\\|jp\\(?:e?g\\)\\|p\\(?:bm\\|gm\\|ng\\|pm\\)\\|tiff?\\|x\\(?:[bp]m\\)\\)\\'")
+ (image-file-name-regexps (and (boundp 'image-file-name-regexps)
+ image-file-name-regexps)))
+ ;; copied from image-file-name-regexp.
+ (if image-file-name-regexps
+ (mapconcat 'identity
+ (if exts-regexp
+ (cons exts-regexp image-file-name-regexps)
+ image-file-name-regexps)
+ "\\|")
+ exts-regexp))
+ "Regular expression that matches image-file filenames.
+Default value is equal to the result of `image-file-name-regexp'
+on GNU Emacs 21.2.1.
+
+In order to use `image-file-name-regexp' on Meadow 2.10 (ASAGAO),
+max-specpdl-size must be increased from the default value 600.
+Otherwise, an error occurs both in byte-compilation and in run time.
+To avoid such troubles, this variable is prepared as a fixed string.")
+
+(defvar howm-excluded-dirs '("RCS" "CVS" ".svn" ".git" "_darcs"))
+
+(defvar howm-excluded-file-regexp-common-list
+ (list "[~#]$"
+ "\\.\\(bak\\|elc\\|gz\\|aux\\|toc\\|idx\\|dvi\\)$"
+ howm-image-file-name-regexps))
+(defvar howm-excluded-file-regexp-dir-sep
+ (if (let ((case-fold-search t))
+ (string-match "windows" (symbol-name system-type)))
+ "[/\\\\]" ;; / or \ for win
+ "/")) ;; / otherwise
+
+(let ((dir-head (concat "\\(^\\|" howm-excluded-file-regexp-dir-sep "\\)"))
+ (excluded-dirs (concat (regexp-opt howm-excluded-dirs t)
+ howm-excluded-file-regexp-dir-sep)))
+ (let ((howm-excluded-file-regexp-dots-ok
+ (mapconcat #'identity
+ `(,(concat dir-head excluded-dirs)
+ "^[.][.]"
+ ,@howm-excluded-file-regexp-common-list)
+ "\\|"))
+ (howm-excluded-file-regexp-dots-ng
+ (mapconcat #'identity
+ `(,(concat dir-head "\\([.]\\|" excluded-dirs "\\)")
+ ,@howm-excluded-file-regexp-common-list)
+ "\\|")))
+ (howm-defcustom-risky howm-excluded-file-regexp
+ howm-excluded-file-regexp-dots-ng
+ "Regexp for excluded files.
+It is checked for relative paths from howm-directory and howm-search-path.
+A file is excluded iff this regexp matches with all the relative paths."
+ :type `(radio (const :tag "Don't search dot files"
+ ,howm-excluded-file-regexp-dots-ng)
+ (const :tag "Search dot files"
+ ,howm-excluded-file-regexp-dots-ok)
+ regexp)
+ :group 'howm-files
+ )))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Menu
+
+(defgroup howm-menu nil
+ "Menu."
+ :group 'howm)
+
+(defcustom howm-menu-lang
+ (if (or (and (boundp 'current-language-environment)
+ (string= current-language-environment "Japanese"))
+ (string-match "^ja" (howm-get-locale)))
+ 'ja
+ 'en)
+ "*Language of menu."
+ :type '(radio (const en) (const ja))
+ :group 'howm-menu)
+
+(howm-defcustom-risky howm-menu-file nil
+ "*Specify menu file explicitly, or set as nil to search every time."
+ :type '(radio (const :tag "Search every time" nil)
+ (const "0000-00-00-000000.txt")
+ file)
+ :group 'howm-files
+ :group 'howm-efficiency
+ :group 'howm-menu)
+
+(defcustom howm-menu-expiry-hours 0
+ "*Cache menu contents for this number of hours."
+ :type 'number
+ :group 'howm-efficiency
+ :group 'howm-menu)
+
+(defcustom howm-menu-refresh-after-save t
+ "*If non-nil, refresh menu contents after you save howm note."
+ :type 'boolean
+ :group 'howm-efficiency
+ :group 'howm-menu)
+
+(defcustom howm-menu-name-format "*howmM:%s*"
+ "*Name format of menu buffer."
+ :type '(radio (const :tag "Never show in normal buffer list" " *howmM:%s*")
+ string)
+ :group 'howm-menu)
+
+(defcustom howm-menu-footer nil
+ "Footer string for each menu. Nil means no footer."
+ :type '(radio (const :tag "Off" nil)
+ string)
+ :group 'howm-menu)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Reminder
+
+(defgroup howm-reminder nil
+ "Schedule and todo list."
+ :group 'howm)
+
+(defvar howm-reminder-old-format nil)
+
+(defvar howm-reminder-marks
+ ;; Be careful to order of characters.
+ ;; "-" must be first so that regexp "[-+~!@.]" makes sense.
+ (if howm-reminder-old-format "-+~!@. " "-+~!@."))
+(defvar howm-reminder-types
+ (format "[%s]" howm-reminder-marks))
+
+(defun howm-custom-reminder-get-types (symbol)
+ (let ((reg (default-value symbol))
+ (default-types (split-string howm-reminder-marks "")))
+ ;; return list of types for standard cases
+ ;; and string itself for nonstandard cases
+ (if (not (string-match "^\\[\\(.*\\)\\]" reg))
+ reg
+ (let ((types (split-string (match-string-no-properties 1 reg) "")))
+ (if (cl-find-if-not (lambda (x) (member x default-types))
+ types)
+ reg
+ (cl-remove-if-not (lambda (x) (member x types))
+ default-types))))))
+(defun howm-custom-reminder-set-types (symbol types)
+ (when (listp types)
+ (setq types (apply #'concat `("[" ,@types "]"))))
+ (set-default symbol types))
+(defun howm-custom-reminder-list-types ()
+ `(radio (set ,@(mapcar (lambda (ty) (list 'const ty))
+ (split-string howm-reminder-marks "")))
+ string))
+
+(defcustom howm-schedule-types "[!@.]"
+ "*Regular expression of reminder types which are listed as schedule."
+ :get #'howm-custom-reminder-get-types
+ :set #'howm-custom-reminder-set-types
+ :type (howm-custom-reminder-list-types)
+ :group 'howm-efficiency
+ :group 'howm-reminder)
+
+(defcustom howm-todo-types
+ (if howm-reminder-old-format "[-+~! .]" "[-+~!.]")
+ "*Regular expression of reminder types which are listed as todo."
+ :get #'howm-custom-reminder-get-types
+ :set #'howm-custom-reminder-set-types
+ :type (howm-custom-reminder-list-types)
+ :group 'howm-efficiency
+ :group 'howm-reminder)
+
+(defcustom howm-congrats-format '("Finished %s tasks!")
+ "List of format strings to generate message when a reminder is finished.
+One of elements is chosen randomly every time."
+ :type '(repeat string)
+ :group 'howm-reminder)
+
+(howm-defcustom-risky howm-congrats-command nil
+ "*If non-nil, this command is executed when a reminder is finished.
+Example: (\"play\" \"~/sound/fanfare.wav\") for calling the command
+\"play ~/sound/fanfare.wav\"."
+ :type '(repeat string)
+ :group 'howm-reminder)
+
+(defcustom howm-reminder-cancel-string "cancel"
+ "*This string is inserted automatically when a reminder is canceled."
+ :type 'string
+ :group 'howm-reminder)
+
+(defcustom howm-action-lock-forward-save-buffer nil
+ "*Non nil if direct manipulation on reminder list should cause auto-save."
+ :type 'boolean
+ :group 'howm-reminder)
+
+(defcustom howm-action-lock-forward-kill-buffer nil
+ "*Non nil if direct manipulation on reminder list should cause kill-buffer.
+Be careful that you cannot undo the result of action-lock after kill-buffer."
+ :type 'boolean
+ :group 'howm-reminder)
+
+(howm-if-ver1dot3 0
+ (defcustom howm-action-lock-forward-fuzziness 5
+ "*Maximum lines of permitted inconsistency for `howm-action-lock-forward'."
+ :type 'integer
+ :group 'howm-reminder))
+
+(let* ((sep "- - - - - - - - - - - - - - - - - - -")
+ (reminder-default `((-1 . ,sep) (0 . ,sep) (nil . ,sep)))
+ (todo-default `((0 . ,sep) (nil . ,sep))))
+ (howm-if-ver1dot3 nil
+ (defcustom howm-menu-reminder-separators reminder-default
+ "Assoc list to specify positions and strings of separators in reminder
+in menu. For each element, car is days from now, and cdr is separator string.
+If car is nil, it means the border between schedule and todo.
+This option is prepared for `howm-menu-reminder'."
+ :type `(radio (const :tag "No separators" nil)
+ (const :tag "Default separators" ,reminder-default)
+ (alist :key-type
+ (radio number
+ (const :tag "Between schedule and todo" nil))
+ :value-type string))
+ :group 'howm-reminder))
+ (defcustom howm-todo-separators nil
+ "Assoc list to specify positions and strings of separators in todo buffer.
+For each element, car is priority and cdr is separator string.
+If car is nil, it means the border between active and sleeping reminders."
+ :type `(radio (const :tag "No separators" nil)
+ (const :tag "Default separators" ,todo-default)
+ (alist :key-type number
+ :value-type string))
+ :group 'howm-reminder))
+
+(howm-if-ver1dot3 nil
+ (defcustom howm-schedule-sort-by-time t
+ "Non nil if `howm-schedule-sort-converter' should consider time part."
+ :type 'boolean
+ :group 'howm-reminder))
+
+(defcustom howm-reminder-menu-types
+ (if howm-reminder-old-format "[-+~!@ ]" "[-+~!@]")
+ "*Regular expression of reminder types which are shown in menu."
+ :get #'howm-custom-reminder-get-types
+ :set #'howm-custom-reminder-set-types
+ :type (howm-custom-reminder-list-types)
+ :group 'howm-reminder)
+
+;;;
+;;; Menu reminder
+;;;
+
+(defgroup howm-menu-reminder nil
+ "Reminders shown in menu."
+ :group 'howm-menu
+ :group 'howm-reminder)
+
+(defcustom howm-schedule-menu-types "[!@]"
+ "*Regular expression of reminder types which are shown in menu as schedule."
+ :get #'howm-custom-reminder-get-types
+ :set #'howm-custom-reminder-set-types
+ :type (howm-custom-reminder-list-types)
+ :group 'howm-efficiency
+ :group 'howm-menu-reminder)
+
+(defcustom howm-todo-menu-types
+ (if howm-reminder-old-format "[-+~! .]" "[-+~!.]")
+ "*Regular expression of reminder types which are shown in menu as todo."
+ :get #'howm-custom-reminder-get-types
+ :set #'howm-custom-reminder-set-types
+ :type (howm-custom-reminder-list-types)
+ :group 'howm-efficiency
+ :group 'howm-menu-reminder)
+
+(defcustom howm-menu-schedule-days 7
+ "*Show schedule in menu until this number of days from now."
+ :type 'number
+ :group 'howm-menu-reminder)
+
+(defcustom howm-menu-schedule-days-before 0
+ "*Show schedule in menu from this number of days ago."
+ :type 'number
+ :group 'howm-menu-reminder)
+
+(defcustom howm-menu-todo-num 50
+ "*Maximum number of todo items shown in menu."
+ :type 'number
+ :group 'howm-menu-reminder)
+
+(defvar howm-huge- 66666)
+(defvar howm-huge 77777)
+(defvar howm-huge+ 88888)
+(defvar howm-huge++ 99999)
+
+(defcustom howm-menu-todo-priority (- howm-huge+)
+ "*Limit priority for elimination of reminders in menu."
+ :type `(radio (const :tag "Show sleeping reminders",(- howm-huge+))
+ (const :tag "Hide sleeping reminders" ,(- howm-huge-))
+ number)
+ :group 'howm-menu-reminder)
+
+(defcustom howm-todo-priority-done-bottom (- howm-huge+)
+ "*Base priority of done reminder.
+<priority of done reminder> = <this value> + <days from specified date>"
+ :type `(radio (const :tag "Deeper than sleeping reminders" ,(- howm-huge+))
+ (const :tag "Shallower than sleeping reminders"
+ ,(- howm-huge-))
+ number)
+ :group 'howm-menu-reminder)
+
+(defcustom howm-menu-recent-num 20
+ "*Maximum number of recent items shown in menu."
+ :type 'number
+ :group 'howm-menu-reminder)
+
+(defcustom howm-menu-recent-regexp nil
+ "Regexp which is regarded as title line in recent list in menu.
+When it is nil, `howm-view-title-regexp' is used."
+ :type '(radio (const :tag "Default" nil)
+ regexp)
+ :group 'howm-title
+ :group 'howm-menu-reminder)
+
+(defcustom howm-menu-todo-priority-format nil
+ "*Format for priority display in todo list in menu, or nil for no display."
+ :type '(radio (const :tag "Off" nil)
+ (const "(%8.1f)")
+ string)
+ :group 'howm-devel
+ :group 'howm-menu-reminder)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; List
+
+(defgroup howm-list nil
+ "Style of list view."
+ :group 'howm)
+
+(defcustom howm-view-contents-limit nil
+ "*Max length for howm-view-contents. Nil means no limit."
+ :type '(radio (const :tag "No limit" nil)
+ integer)
+ :group 'howm-list)
+
+(defcustom howm-view-summary-keep-cursor t
+ "*If non-nil, keep cursor position when you open a note from summary list."
+ :type 'boolean
+ :group 'howm-list)
+
+(defcustom howm-view-summary-omit-same-name t
+ "*If non-nil, same name is not written repeatedly in summary list."
+ :type 'boolean
+ :group 'howm-list)
+
+(defcustom howm-list-recent-days 7
+ "*This number of days are listed by `howm-list-recent'."
+ :type 'integer
+ :group 'howm-list)
+
+(defcustom howm-list-buffers-exclude
+ '("*Messages*" ".howm-keys" ".howm-history")
+ "*List of excluded buffer names for `howm-list-buffers'."
+ :type '(repeat string)
+ :group 'howm-list)
+
+;;
+;; Sort
+;;
+
+(defgroup howm-sort nil
+ "Sorting and filtering of matched entries."
+ :group 'howm-list)
+
+(howm-defcustom-risky howm-list-normalizer nil
+ "*Obsolete. Use `howm-normalizer' insteadly."
+ :type '(radio (const :tag "Off (strongly recommended)" nil)
+ (function-item :tag "Sort by edit-time"
+ howm-view-sort-by-mtime)
+ (function-item :tag "Sort by create-time"
+ howm-view-sort-by-reverse-date)
+ function)
+ :group 'howm-sort)
+
+(howm-defcustom-risky howm-normalizer 'howm-sort-items-by-mtime
+ "*Default method to list matched notes.
+For backward compatibility, this value is overridden
+if `howm-list-normalizer' is non-nil."
+ :type '(radio (function-item :tag "Sort by edit-time"
+ howm-sort-items-by-mtime)
+ (function-item :tag "Sort by create-time"
+ howm-sort-items-by-reverse-date)
+ function)
+ :group 'howm-sort)
+
+(defcustom howm-list-prefer-word nil
+ "*Matches to whole word are listed first in summary buffer."
+ :type 'boolean
+ :group 'howm-sort)
+
+(defcustom howm-list-prefer-wiki t
+ "*Matches to wiki tags are listed first in summary buffer."
+ :type 'boolean
+ :group 'howm-sort)
+
+;;
+;; Title
+;;
+
+(defgroup howm-title nil
+ "Title of each entry."
+ :group 'howm-list)
+
+;; I don't know the way to generate this list automatically. Sigh...
+(defvar howm-custom-command-list
+ `(set ,@(mapcar (lambda (com) (list 'const com))
+ '(howm-list-all
+ howm-list-recent
+ howm-list-around
+ howm-keyword-search
+ howm-list-grep
+ howm-list-grep-fixed
+ howm-list-migemo
+ howm-list-related
+ howm-action-lock-date-search
+ ))))
+
+(howm-defcustom-risky howm-list-title
+ '(
+ howm-list-all
+ howm-list-recent
+ howm-list-around
+ ; howm-keyword-search
+ ; howm-list-grep howm-list-grep-fixed howm-list-migemo
+ ; howm-list-related
+ howm-action-lock-date-search
+ )
+ "List of commands in which titles are listed instead of matched lines.
+T means 'always'.
+If it is a function, the evaluated value is used instead of itself."
+ :type `(radio (const :tag "Always" t)
+ (const :tag "Never" nil)
+ ,howm-custom-command-list
+;; (set (const howm-list-all)
+;; (const howm-list-recent)
+;; (const howm-list-around)
+;; (const howm-keyword-search)
+;; (const howm-list-grep)
+;; (const howm-list-grep-fixed)
+;; (const howm-list-migemo)
+;; (const howm-list-related))
+ function)
+ :group 'howm-efficiency
+ :group 'howm-title)
+
+(defcustom howm-list-title-regexp nil
+ "Regexp which is regarded as title line in summary buffer.
+When it is nil, `howm-view-title-regexp' is used."
+ :type '(radio (const :tag "Default" nil)
+ regexp)
+ :group 'howm-title)
+
+(defcustom howm-list-title-undo t
+ "*Non-nil if `howm-list-toggle-title' should toggle whether title is shown
+or not."
+ :type 'boolean
+ :group 'howm-efficiency
+ :group 'howm-title)
+
+;;
+;; BufWin
+;;
+
+(defgroup howm-list-bufwin nil
+ "Buffers and windows for listing search result."
+ :group 'howm-list)
+
+(defcustom howm-view-summary-name "*howmS*"
+ "Format string of buffer name for summary.
+%s is replaced with searched string. See `format'."
+ :type '(radio (const :tag "Use one common buffer" "*howmS*")
+ (const :tag "Make new buffer for each search" "*howmS:%s*")
+ string)
+ :group 'howm-list-bufwin)
+
+(defcustom howm-view-contents-name "*howmC*"
+ "Format string of buffer name for contents.
+%s is replaced with searched string. See `format'."
+ :type '(radio (const :tag "Use one common buffer" "*howmC*")
+ (const :tag "Make new buffer for each search" "*howmC:%s*")
+ string)
+ :group 'howm-list-bufwin)
+
+(howm-defcustom-risky howm-view-summary-persistent t
+ "*If non-nil, keep summary buffer on howm-view-summary-open by default.
+If it is a function, the evaluated value is used instead of itself."
+ :type 'boolean
+ :group 'howm-list-bufwin)
+
+(howm-defcustom-risky howm-view-contents-persistent t
+ "*If non-nil, keep contents buffer on howm-view-contents-open by default.
+If it is a function, the evaluated value is used instead of itself."
+ :type 'boolean
+ :group 'howm-list-bufwin)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Search
+
+(defgroup howm-search nil
+ "Search methods."
+ :group 'howm)
+
+(defcustom howm-keyword-case-fold-search nil
+ "*Non-nil if searches of come-from keywords should ignore case."
+ :type 'boolean
+ :group 'howm-search)
+
+(defcustom howm-check-word-break nil
+ "*Non-nil if come-from keywords within a word should not linked.
+When the value is a string (regexp), word breaks are checked
+only for matched keywords. "
+ :type '(radio (const :tag "Always" t)
+ (const :tag "Never" nil)
+ (const :tag "ASCII only" "^[[:ascii:]]+$")
+ string)
+ :group 'howm-search)
+
+(defcustom howm-view-update-search-ring nil
+ "*Non-nil if search-ring should be updated in howm search."
+ :type 'boolean
+ :group 'howm-search)
+
+(defcustom howm-message-time nil
+ "*Non nil if search etc. should show took time."
+ :type 'boolean
+ :group 'howm-devel
+ :group 'howm-search)
+
+(howm-defcustom-risky howm-history-file "~/.howm-history"
+ "*Search history is recorded to that file."
+ :type 'file
+ :group 'howm-files
+ :group 'howm-search)
+
+(defcustom howm-history-limit 50
+ "*Limit number of recorded search history, or nil for no limit.
+Set 0 to inhibit recording."
+ :type '(radio (const :tag "No limit" nil)
+ integer)
+ :group 'howm-search)
+
+(defcustom howm-history-unique t
+ "*If non-nil, duplicated entries are removed from search history."
+ :type 'boolean
+ :group 'howm-search)
+
+(defcustom howm-keyword-list-alias-sep "\t"
+ "*Separator string for alias keywords in the keyword file `howm-keyword-file'.
+If it is nil, alias of come-from keyword is disabled."
+ :type '(radio (const :tag "Disable aliases" nil)
+ (const :tag "Tab" "\t")
+ string)
+ :group 'howm-search)
+
+(defcustom howm-keyword-aliases-recursive t
+ "*Non nil if aliases of come-from keywords should be expanded recursively."
+ :type 'boolean
+ :group 'howm-search)
+
+;;;
+;;; grep
+;;;
+
+(defgroup howm-grep nil
+ "Use external grep command for fast search."
+ :group 'howm-efficiency
+ :group 'howm-search)
+
+(howm-defcustom-risky howm-view-use-grep nil
+ "*If non-nil, use external grep command for search.
+Performance must be improved greatly if you set this.
+When the value is elisp function, it is used instead of `howm-fake-grep'."
+ :type '(radio (const :tag "On" t)
+ (const :tag "Off" nil)
+ function)
+ :group 'howm-grep)
+
+;; These variables should be renamed: howm-view-xxx ==> howm-xxx.
+(howm-defcustom-risky howm-view-grep-command "grep"
+ "*Command name for grep."
+ :type 'string
+ :group 'howm-grep)
+(howm-defvar-risky howm-view-fgrep-command nil
+ "*Command name for fgrep.
+This variable is obsolete and may be removed in future.")
+(defvar howm-view-grep-default-option
+ ;; "labels" causes a trouble in git-head emacs (d5e3922) [2015-01-31]
+ (let* ((ed (lambda (d) (concat "--exclude-dir=" d)))
+ (has-ed (condition-case nil
+ (eq 0 (call-process howm-view-grep-command nil nil nil
+ (apply ed "/") "--version"))
+ (error nil)))
+ (opts (cons "-Hnr" (and has-ed (mapcar ed howm-excluded-dirs)))))
+ (mapconcat #'identity opts " ")))
+(howm-defcustom-risky howm-view-grep-option howm-view-grep-default-option
+ "*Common grep option for howm."
+ :type `(radio (const :tag "scan all files"
+ ,howm-view-grep-default-option)
+ (const :tag "scan *.howm only"
+ ,(concat howm-view-grep-default-option
+ " --include=*.howm"))
+ string)
+ :group 'howm-grep)
+(howm-defcustom-risky howm-view-grep-extended-option "-E"
+ "*Grep option for extended regular expression."
+ :type 'string
+ :group 'howm-grep)
+(howm-defcustom-risky howm-view-grep-fixed-option "-F"
+ "*Grep option to search fixed strings."
+ :type 'string
+ :group 'howm-grep)
+(howm-defcustom-risky howm-view-grep-ignore-case-option "-i"
+ "*Grep option for ignoring case distinctions."
+ :type 'string
+ :group 'howm-grep)
+(howm-defcustom-risky howm-view-grep-expr-option "-e"
+ "*Grep option for pattern."
+ :type 'string
+ :group 'howm-grep)
+(howm-defcustom-risky howm-view-grep-file-stdin-option "-f -"
+ "*Grep option for receiving patterns from standard input.
+If this is nil, pattern is received as command line argument."
+ :type '(radio (const :tag "Off" nil)
+ string)
+ :group 'howm-grep)
+
+(howm-defcustom-risky howm-command-length-limit 10000
+ "*Maximum length of command line for call-process."
+ :type 'integer
+ :group 'howm-grep)
+
+(defcustom howm-process-coding-system nil
+ "*Default coding system for grep command in howm.
+If the value is a symbol, it is used for both read and write.
+If the value is a cons pair, its car and cdr are used for read and write,
+respectively.
+
+Example:
+ (setq howm-process-coding-system 'euc-japan-unix)
+ (setq howm-process-coding-system '(utf-8-unix . sjis-unix))"
+ :type '(radio (const :tag "Off" nil)
+ coding-system
+ (cons coding-system coding-system))
+ :group 'howm-grep)
+
+(howm-if-ver1dot3 nil
+ (defcustom howm-occur-force-fake-grep t
+ "*If non-nil, force `howm-occur' to use `howm-fake-grep'
+so that highlighting works correctly."
+ :type 'boolean
+ :group 'howm-grep))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Misc
+
+(defgroup howm-misc nil
+ "Miscellaneous customization."
+ :group 'howm)
+
+(defvar howm-prefix "\C-c,"
+ "Howm commands are invoked by this prefix + some keys.")
+
+(defcustom howm-random-walk-wait 2
+ "*Seconds of wait in `howm-random-walk'."
+ :type 'number
+ :group 'howm-misc)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Create
+
+(defgroup howm-create nil
+ "Create new note."
+ :group 'howm-misc)
+
+(defcustom howm-prepend nil
+ "*Non nil if new entries should be prepended to previous entries.
+Otherwise, they are appended."
+ :type '(radio (const :tag "Append" nil)
+ (const :tag "Prepend" t))
+ :group 'howm-create)
+
+(defcustom howm-content-from-region nil
+ "*When the value non-nil, selected string is inserted as default content.
+Unless the value is t, single-line selection is inserted as title instead.
+This variable is ignored when `transient-mark-mode' is nil."
+ :type '(radio (const :tag "Off" nil)
+ (const :tag "Single line selection is copied as title" 1)
+ (const :tag "Any selection is copied as content" t))
+ :group 'howm-create)
+
+(defcustom howm-title-from-search nil
+ "*Non nil if searched keyword is inserted as default title
+when `howm-create' is called on summary buffer."
+ :type 'boolean
+ :group 'howm-create)
+
+(defcustom howm-create-here-just nil
+ "*Non nil if `howm-create-here' should insert new entry into cursor position
+rather than append or prepend."
+ :type '(radio (const :tag "Append or prepend" nil)
+ (const :tag "Just here" t))
+ :group 'howm-create)
+
+(defcustom howm-remember-first-line-to-title nil
+ "If non-nil, the first line in `howm-remember' is set to %title
+and the rest lines are inserted to the position at %cursor in `howm-template.
+If nil, all the lines are simply inserted at %cursor."
+ :type 'boolean
+ :group 'howm-create)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Viewer
+
+(defgroup howm-viewer nil
+ "External viewers for images, movies, sounds, etc."
+ :group 'howm-misc)
+
+(defun howm-try-require (feature)
+ (and (locate-library (symbol-name feature))
+ (require feature)))
+
+;; These variables should be renamed.
+
+(howm-defcustom-risky howm-view-external-viewer-assoc nil
+ "List of viewer specifications.
+Each specification must be a cons pair of type and format.
+Type is a regular expression of file names.
+Format is a command string in which %s is replaced with file name.
+This setting is prior to mailcap.
+
+This variable is marked as a risky local variable
+because `howm-viewer-dispatchers' `howm-viewer-indicator'
+and `howm-viewer-type' accept functions instead of format strings.
+
+Example:
+ (setq howm-view-external-viewer-assoc
+ '(
+ (\"[.]\\(jpg\\|gif\\|png\\)$\" . \"display %s\")
+ (\"[.]dvi$\" . \"xdvi %s\")
+ ))
+"
+ :type '(alist :key-type regexp :value-type string)
+ :group 'howm-viewer)
+
+(defcustom howm-view-use-mailcap
+ (and (howm-try-require 'mailcap)
+ (fboundp 'mailcap-parse-mailcaps)
+ (fboundp 'mailcap-parse-mimetypes))
+ "*Non nil if external viewers should be selected according to mailcap.
+Mailcap processing depends on gnus/mailcap, and old FLIM library may
+cause conflicts."
+ :type 'boolean
+ :group 'howm-viewer)
+
+(defcustom howm-view-open-by-myself '("text/.*" "application/emacs-lisp")
+ "List of regular expressions for mime types which should be opened normally."
+ :type '(repeat regexp)
+ :group 'howm-viewer)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Narrow
+
+(defgroup howm-narrow nil
+ "Narrowing to each entry."
+ :group 'howm-misc)
+
+(defcustom howm-auto-narrow t
+ "List of commands after which the function `howm-auto-narrow' can work.
+If the value is t, it means 'always'."
+ :type `(radio (const :tag "Never" nil)
+ (const :tag "Always" t)
+ ,howm-custom-command-list)
+ :group 'howm-narrow)
+
+(mapc (lambda (hook) (custom-add-option hook 'howm-auto-narrow))
+ '(howm-view-open-hook howm-create-hook))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Efficiency
+
+(defgroup howm-efficiency nil
+ "To improve performance, use grep and turn off expensive options."
+ :group 'howm)
+
+(defcustom howm-refresh-after-save t
+ "*Redraw links after you save howm note."
+ :type 'boolean
+ :group 'howm-efficiency)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Face
+
+(defgroup howm-faces nil
+ "Colors and fonts."
+ :group 'faces
+ :group 'howm)
+
+(howm-defcustom-risky howm-user-font-lock-keywords nil
+ "Font lock keywords for all howm-related buffers.
+See help of `font-lock-keywords' for details.
+Note: `howm-menu-font-lock-rules' overrides this variable."
+ ;; :type '(repeat (radio (cons regexp (list (const quote) face))
+ ;; sexp))
+ :type 'sexp
+ :group 'howm-faces)
+
+(defcustom howm-use-color t
+ "*If non-nil, highlight tags in howm-mode verbosely."
+ :type 'boolean
+ :group 'howm-faces)
+
+(defface howm-view-hilit-face
+ '((((class color)) (:foreground "red"))
+ (t ()))
+ "*Face for matched word."
+ :group 'howm-faces)
+
+(defface howm-view-name-face
+ '((((class color)) (:foreground "white" :background "blue"))
+ (t ()))
+ "*Face for file name in summary buffer."
+ :group 'howm-faces)
+
+(defface howm-view-empty-face
+ '((((class color)) (:background "midnight blue"))
+ (t ()))
+ "*Face for empty field in summary buffer."
+ :group 'howm-faces)
+
+(defface howm-mode-title-face ;; =
+ '((((class color)) (:foreground "RoyalBlue"))
+ (t ()))
+ "*Face for title."
+ :group 'howm-faces)
+(defface howm-mode-ref-face ;; >>>
+ '((((class color) (background light)) (:foreground "blue"))
+ (((class color) (background dark)) (:foreground "cyan"))
+ (t ()))
+ "*Face for goto link."
+ :group 'howm-faces)
+(defface howm-mode-keyword-face ;; <<<
+ '((((class color)) (:foreground "white" :background "blue"))
+ (t ()))
+ "*Face for come-from link."
+ :group 'howm-faces)
+(defface howm-mode-wiki-face ;; [[]]
+ '((((class color) (background light)) (:foreground "blue"))
+ (((class color) (background dark)) (:foreground "cyan"))
+ (t ()))
+ "*Face for wiki link."
+ :group 'howm-faces)
+
+(defface howm-reminder-normal-face
+ '((((class color)) (:foreground "blue"))
+ (t ()))
+ "*Face for normal reminder."
+ :group 'howm-faces)
+(defface howm-reminder-todo-face
+ '((((class color) (background light)) (:foreground "purple"))
+ (((class color) (background dark)) (:foreground "yellow"))
+ (t ()))
+ "*Face for todo."
+ :group 'howm-faces)
+(defface howm-reminder-defer-face
+ '((((class color)) (:foreground "magenta"))
+ (t ()))
+ "*Face for defer."
+ :group 'howm-faces)
+(defface howm-reminder-deadline-face
+ '((((class color)) (:foreground "red"))
+ (t ()))
+ "*Face for deadline."
+ :group 'howm-faces)
+(defface howm-reminder-late-deadline-face
+ '((((class color)) (:background "red" :foreground "black"))
+ (t ()))
+ "*Face for late deadline."
+ :group 'howm-faces)
+(defface howm-reminder-schedule-face
+ '((((class color) (background light)) (:foreground "dark green"))
+ (((class color) (background dark)) (:foreground "green"))
+ (t ()))
+ "*Face for schedule."
+ :group 'howm-faces)
+(defface howm-reminder-done-face
+ '((((class color) (background light)) ())
+ (((class color) (background dark)) (:foreground "gray"))
+ (t ()))
+ "*Face for done reminder."
+ :group 'howm-faces)
+(defface howm-reminder-today-face
+ '((((class color)) (:foreground "black" :background "orange"))
+ (t ()))
+ "*Face for today."
+ :group 'howm-faces)
+(defface howm-reminder-tomorrow-face
+ '((((class color)) (:foreground "black" :background "pink"))
+ (t ()))
+ "*Face for tommorow."
+ :group 'howm-faces)
+
+(defface howm-menu-list-face ;; item header in menu-mode list (schedule, todo)
+ '((t ()))
+ "*Face for list in menu."
+ :group 'howm-faces)
+(defface howm-menu-key-face ;; shortcut key in menu-mode
+ '((((class color) (background light)) (:foreground "dark red"))
+ (((class color) (background dark)) (:foreground "orange"))
+ (t ()))
+ "*Face for key binding in menu."
+ :group 'howm-faces)
+
+(defvar howm-view-hilit-face 'howm-view-hilit-face
+ "*Face for matched word.")
+(defvar howm-view-name-face 'howm-view-name-face
+ "*Face for file name in summary buffer.")
+(defvar howm-view-empty-face 'howm-view-empty-face
+ "*Face for empty field in summary buffer.")
+(defvar howm-mode-title-face 'howm-mode-title-face
+ "*Face for title.")
+(defvar howm-mode-ref-face 'howm-mode-ref-face
+ "*Face for goto link.")
+(defvar howm-mode-keyword-face 'howm-mode-keyword-face
+ "*Face for come-from link.")
+(defvar howm-mode-wiki-face 'howm-mode-wiki-face
+ "*Face for wiki link.")
+(defvar howm-reminder-normal-face 'howm-reminder-normal-face
+ "*Face for normal reminder.")
+(defvar howm-reminder-todo-face 'howm-reminder-todo-face
+ "*Face for todo.")
+(defvar howm-reminder-defer-face 'howm-reminder-defer-face
+ "*Face for defer.")
+(defvar howm-reminder-deadline-face 'howm-reminder-deadline-face
+ "*Face for deadline.")
+(defvar howm-reminder-late-deadline-face 'howm-reminder-late-deadline-face
+ "*Face for late deadline.")
+(defvar howm-reminder-schedule-face 'howm-reminder-schedule-face
+ "*Face for schedule.")
+(defvar howm-reminder-done-face 'howm-reminder-done-face
+ "*Face for done reminder.")
+(defvar howm-reminder-today-face 'howm-reminder-today-face
+ "*Face for today.")
+(defvar howm-reminder-tomorrow-face 'howm-reminder-tomorrow-face
+ "*Face for tommorow.")
+(defvar howm-menu-list-face 'howm-menu-list-face
+ "*Face for list in menu.")
+(defvar howm-menu-key-face 'howm-menu-key-face
+ "*Face for key binding in menu.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Hook
+
+(defgroup howm-hooks nil
+ "Hooks."
+ :group 'howm)
+
+(defcustom howm-mode-hook nil
+ "Hook run at the end of function `howm-mode'"
+ :type 'hook
+ :group 'howm-hooks)
+
+(defcustom howm-mode-on-hook nil
+ "Hook run when `howm-mode' is turned on."
+ :type 'hook
+ :group 'howm-hooks)
+
+(defcustom howm-mode-off-hook nil
+ "Hook run when `howm-mode' is turned off."
+ :type 'hook
+ :group 'howm-hooks)
+
+(defcustom howm-view-open-hook nil
+ "Hook run when open a note from summary/contents buffer."
+ :type 'hook
+ :group 'howm-narrow
+ :group 'howm-hooks)
+
+(defcustom howm-view-before-open-hook nil
+ "Hook run before open something from summary or contents buffer."
+ :type 'hook
+ :group 'howm-hooks)
+
+(defcustom howm-create-file-hook nil
+ "Hook run when buffer for new note is created."
+ :type 'hook
+ :group 'howm-hooks)
+
+(defcustom howm-create-hook nil
+ "Hook run after new note is created and set up."
+ :type 'hook
+ :group 'howm-narrow
+ :group 'howm-hooks)
+
+(defcustom howm-menu-hook nil
+ "Hook run at the end of `howm-menu-refresh'."
+ :type 'hook
+ :group 'howm-hooks)
+
+(defcustom howm-congrats-hook nil
+ "Hook run at the end of `howm-congrats'."
+ :type 'hook
+ :group 'howm-hooks)
+
+(defcustom howm-after-save-hook nil
+ "Hook run at the end of `howm-after-save'."
+ :type 'hook
+ :group 'howm-hooks)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Devel
+
+(defgroup howm-devel nil
+ "Developers' diagnoses."
+ :group 'howm)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Experimental
+
+(defgroup howm-experimental nil
+ "Test of experimental features."
+ :group 'howm)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Date format (need refactoring)
+
+(defvar howm-date-separator "-") ;; "-" ==> 2003-10-21
+
+;; Fix me: redundant (howm-date-* & howm-reminder-*)
+;; (cf.) howm-reminder-regexp-grep-* howm-reminder-today-format
+(defvar howm-date-regexp-grep
+ (concat "[1-2][0-9][0-9][0-9]" howm-date-separator
+ "[0-1][0-9]" howm-date-separator
+ "[0-3][0-9]"))
+(defvar howm-date-regexp
+ (concat "\\([1-2][0-9][0-9][0-9]\\)" howm-date-separator
+ "\\([0-1][0-9]\\)" howm-date-separator
+ "\\([0-3][0-9]\\)"))
+(defvar howm-date-regexp-year-pos 1)
+(defvar howm-date-regexp-month-pos 2)
+(defvar howm-date-regexp-day-pos 3)
+(defvar howm-date-format
+ (concat "%Y" howm-date-separator "%m" howm-date-separator "%d"))
+(defvar howm-dtime-body-format
+ (concat howm-date-format " %H:%M"))
+(defvar howm-dtime-format
+ (concat "[" howm-dtime-body-format "]"))
+(defvar howm-insert-date-format "[%s]")
+(defvar howm-insert-date-future nil)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Avoid reference to free variable (need refactoring)
+
+(howm-defvar-risky howm-menu-action-arg 'howm-menu-action-arg-name)
+
+;;;
+
+(provide 'howm-vars)
+
+;;; howm-vars.el ends here
--- /dev/null
+;;; howm-version.el --- Wiki-like keyword jump between files
+;;; -*- Emacs-Lisp -*-
+;;; @configure_input@
+
+(provide 'howm-version)
+(defconst howm-version "InsertVersionHere")
+
+;;; howm-version.el ends here
--- /dev/null
+;;; howm-version.el --- Wiki-like keyword jump between files
+;;; -*- Emacs-Lisp -*-
+;;; @configure_input@
+
+(provide 'howm-version)
+(defconst howm-version "~VERSION~")
+
+;;; howm-version.el ends here
--- /dev/null
+;;; howm-view.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm-view.el,v 1.251 2012-12-29 08:57:18 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+(provide 'howm-view)
+(require 'howm)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; variables
+
+;; customize
+(defvar howm-view-summary-sep "|")
+(defvar howm-view-summary-format
+ (let* ((path (format-time-string howm-file-name-format))
+ (width (length (file-name-nondirectory path))))
+ (concat "%-" (format "%s" (1+ width)) "s" howm-view-summary-sep " ")))
+(defvar howm-view-header-format
+ "\n==========================>>> %s\n"
+ "Format string of header for howm-view-contents.
+%s is replaced with file name. See `format'.")
+(defvar howm-view-header-regexp "^==========================>>> .*$")
+(defvar howm-view-open-recenter howm-view-search-recenter)
+(defvar howm-view-title-header "=")
+;; howm-view-title-regexp is assumed to have a form "^xxxxxxx$"
+(defvar howm-view-title-regexp (format "^%s\\( +\\(.*\\)\\|\\)$"
+ (regexp-quote howm-view-title-header)))
+(defvar howm-view-title-regexp-pos 2)
+(defvar howm-view-title-regexp-grep (format "^%s +"
+ (regexp-quote howm-view-title-header)))
+(defun howm-view-title-regexp-grep ()
+ (if howm-view-use-grep
+ howm-view-title-regexp-grep
+ howm-view-title-regexp))
+
+(howm-defvar-risky howm-view-sort-methods
+ '(("random" . howm-view-sort-by-random)
+ ("name" . howm-view-sort-by-name)
+ ("name-match" . howm-view-lift-by-name)
+ ("numerical-name" . howm-view-sort-by-numerical-name)
+ ("summary" . howm-view-sort-by-summary)
+ ("summary-match" . howm-view-lift-by-summary)
+ ("summary-match-string" . howm-view-lift-by-summary-substring)
+; ("atime" . howm-view-sort-by-atime) ;; nonsense
+; ("ctime" . howm-view-sort-by-ctime) ;; needless
+ ("mtime" . howm-view-sort-by-mtime)
+ ("date" . howm-view-sort-by-reverse-date)
+ ("reminder" . howm-view-sort-by-reminder)
+ ("reverse" . howm-view-sort-reverse)))
+
+(howm-defvar-risky howm-view-filter-methods
+ '(("name" . howm-view-filter-by-name)
+ ("summary" . howm-view-filter-by-summary)
+ ("mtime" . howm-view-filter-by-mtime)
+; ("ctime" . howm-view-filter-by-ctime) ;; needless
+ ("date" . howm-view-filter-by-date)
+ ("reminder" . howm-view-filter-by-reminder)
+ ("contents" . howm-view-filter-by-contents)
+ ("Region" . howm-view-filter-by-region)
+ ("Around" . howm-view-filter-by-around)
+; ("uniq" . howm-view-filter-uniq))
+ ))
+
+;; referred only when howm-view-use-grep is nil
+(defvar howm-view-watch-modified-buffer t)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; item
+
+(defun howm-view-item-basename (item &optional nonempty)
+ (let* ((f (howm-item-name item))
+ (b (file-name-nondirectory f)))
+ (if (and (string= b "") nonempty)
+ f
+ b)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; riffle
+
+(defalias 'riffle-home:howm 'howm-view-item-home)
+(defalias 'riffle-summary-item:howm 'howm-view-summary-item)
+(defalias 'riffle-contents-item:howm 'howm-view-contents-item)
+(defalias 'riffle-summary-set-mode:howm 'howm-view-summary-mode)
+(defalias 'riffle-contents-set-mode:howm 'howm-view-contents-mode)
+
+(defun riffle-summary-name-format:howm ()
+ howm-view-summary-name)
+(defun riffle-contents-name-format:howm ()
+ howm-view-contents-name)
+(defun riffle-post-update:howm (item)
+ (howm-message-nolog "View: %s" (howm-view-item-filename item)))
+
+;;; aliases
+
+;; Only howm-view.el should call riffle-xxx.
+;; Define alias if it is used in howm-xxx besides howm-view.el.
+(defalias 'howm-view-name #'riffle-name)
+(defalias 'howm-view-item-list #'riffle-item-list)
+(defalias 'howm-view-line-number #'riffle-line-number)
+(defalias 'howm-view-summary-check #'riffle-summary-check)
+(defalias 'howm-view-persistent-p #'riffle-persistent-p)
+(defalias 'howm-view-kill-buffer #'riffle-kill-buffer)
+(defalias 'howm-view-set-place #'riffle-set-place)
+(defalias 'howm-view-get-place #'riffle-get-place)
+(defalias 'howm-view-summary-current-item #'riffle-summary-current-item)
+(defalias 'howm-view-contents-current-item #'riffle-contents-current-item)
+(defalias 'howm-view-summary-to-contents #'riffle-summary-to-contents)
+(defalias 'howm-view-restore-window-configuration #'riffle-restore-window-configuration)
+
+;; for howmoney.el
+;; http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?howmoney
+(defun howm-view-get-buffer (name-format &optional name new)
+ (let ((riffle-type ':howm)) ;; cheat
+ (riffle-get-buffer name-format name new)))
+(defun howm-view-summary-buffer (&optional new)
+ (let ((riffle-type ':howm)) ;; cheat
+ (riffle-summary-buffer new)))
+(defalias 'howm-view-summary-show 'riffle-summary-show)
+(defalias 'howm-view-set-item-list 'riffle-set-item-list)
+
+;; for howmz
+;; http://noir.s7.xrea.com/archives/000136.html
+;; http://noir.s7.xrea.com/pub/zaurus/howmz.el
+(defalias 'howm-view-sort-items 'howm-sort)
+
+;;; variables
+
+(defvar howm-view-font-lock-silent t
+ "Inhibit font-lock-verbose if non-nil.")
+(howm-defvar-risky howm-view-summary-font-lock-keywords
+ `((,(concat "\\(^[^ \t\r\n].*?\\)" (regexp-quote howm-view-summary-sep))
+ 1 howm-view-name-face)
+ ("^ +" . howm-view-empty-face)))
+(howm-defvar-risky howm-view-contents-font-lock-keywords nil)
+
+(howm-defvar-risky *howm-view-font-lock-keywords* nil
+ "For internal use. Don't set this variable.
+This is a shameful global variable and should be clearned in future.")
+(howm-defvar-risky howm-view-font-lock-keywords nil
+ "For internal use.")
+(defvar howm-view-font-lock-first-time t
+ "For internal use.")
+(make-variable-buffer-local 'howm-view-font-lock-keywords)
+(make-variable-buffer-local 'howm-view-font-lock-first-time)
+
+;;; modes
+
+(riffle-define-derived-mode howm-view-summary-mode riffle-summary-mode "HowmS"
+ "memo viewer (summary mode)
+key binding
+--- -------
+\\[howm-view-summary-open] Open file
+\\[next-line] Next item
+\\[previous-line] Previous item
+\\[riffle-pop-or-scroll-other-window] Pop and scroll contents
+\\[scroll-other-window-down] Scroll contents
+\\[riffle-scroll-other-window] Scroll contents one line
+\\[riffle-scroll-other-window-down] Scroll contents one line
+\\[riffle-summary-to-contents] Concatenate all contents
+\\[howm-view-filter-uniq] Remove duplication of same file
+\\[howm-view-summary-shell-command] Execute command in inferior shell
+
+\\[delete-other-windows] Delete contents window
+\\[riffle-pop-window] Pop contents window
+\\[riffle-toggle-window] Toggle contents window
+\\[howm-list-toggle-title] Show/Hide Title
+
+\\[howm-view-filter] Filter (by date, contents, etc.)
+\\[howm-view-filter-by-contents] Search (= filter by contents)
+\\[howm-view-sort] Sort (by date, summary line, etc.)
+\\[howm-view-sort-reverse] Reverse order
+\\[howm-view-dired] Invoke Dired-X
+\\[describe-mode] This help
+\\[riffle-kill-buffer] Quit
+"
+ (make-local-variable 'font-lock-keywords)
+ (cheat-font-lock-mode howm-view-font-lock-silent)
+ (when howm-view-font-lock-first-time
+ (setq howm-view-font-lock-first-time nil)
+ (cheat-font-lock-merge-keywords howm-user-font-lock-keywords
+ howm-view-summary-font-lock-keywords
+ ;; dirty! Clean dependency between files.
+ (howm-reminder-today-font-lock-keywords)))
+ (when *howm-view-font-lock-keywords*
+ (setq howm-view-font-lock-keywords *howm-view-font-lock-keywords*))
+ (when howm-view-font-lock-keywords
+ (cheat-font-lock-merge-keywords howm-view-font-lock-keywords
+ howm-user-font-lock-keywords
+ howm-view-summary-font-lock-keywords))
+ ;; font-lock-set-defaults removes these local variables after 2008-02-24
+ (set (make-local-variable 'font-lock-keywords-only) t)
+ (set (make-local-variable 'font-lock-keywords-case-fold-search) t)
+ ;; (setq font-lock-keywords-case-fold-search
+ ;; howm-view-grep-ignore-case-option)
+ (cheat-font-lock-fontify)
+ )
+
+(riffle-define-derived-mode howm-view-contents-mode riffle-contents-mode "HowmC"
+ "memo viewer (contents mode)
+key binding
+--- -------
+\\[howm-view-contents-open] Open file
+\\[next-line] Next line
+\\[previous-line] Previous line
+\\[scroll-up] Scroll up
+\\[scroll-down] Scroll down
+\\[riffle-scroll-up] Scroll one line up
+\\[riffle-scroll-down] Scroll one line down
+\\[riffle-contents-to-summary] Summary
+\\[riffle-contents-goto-next-item] Next item
+\\[riffle-contents-goto-previous-item] Previous item
+
+\\[howm-view-filter] Filter (by date, contents, etc.)
+\\[howm-view-filter-by-contents] Search (= filter by contents)
+\\[howm-view-sort] Sort
+\\[howm-view-sort-reverse] Reverse order
+\\[howm-view-dired] Invoke Dired-X
+\\[describe-mode] This help
+\\[riffle-kill-buffer] Quit
+"
+; (kill-all-local-variables)
+ (make-local-variable 'font-lock-keywords)
+ (cheat-font-lock-mode howm-view-font-lock-silent)
+ (let ((ck `((,howm-view-header-regexp (0 howm-view-hilit-face))))
+ (sk (or (howm-view-font-lock-keywords)
+ *howm-view-font-lock-keywords*)))
+;; ;; extremely dirty!! [2003/10/06 21:08]
+;; (sk (or (with-current-buffer (riffle-summary-buffer)
+;; font-lock-keywords)
+;; *howm-view-font-lock-keywords*)))
+ (cheat-font-lock-merge-keywords sk ck
+ howm-user-font-lock-keywords
+ howm-view-contents-font-lock-keywords)
+ ;; font-lock-set-defaults removes these local variables after 2008-02-24
+ (set (make-local-variable 'font-lock-keywords-only) t)
+ (set (make-local-variable 'font-lock-keywords-case-fold-search)
+ howm-view-grep-ignore-case-option)
+ (cheat-font-lock-fontify)
+ ))
+
+(defun howm-view-font-lock-keywords ()
+ (with-current-buffer (riffle-summary-buffer)
+ howm-view-font-lock-keywords))
+
+;;; keymaps
+
+;; (defvar howm-view-summary-mode-map nil)
+;; (defvar howm-view-contents-mode-map nil)
+
+(defun howm-view-define-common-key (keymap)
+ (let ((m keymap))
+;; (define-key m "?" 'howm-view-help)
+ (define-key m "f" 'howm-view-filter)
+ (define-key m "G" 'howm-view-filter-by-contents)
+ (define-key m "S" 'howm-view-sort)
+ (define-key m "R" 'howm-view-sort-reverse)
+ (define-key m "q" 'howm-view-kill-buffer)
+ (define-key m "X" 'howm-view-dired)
+ ))
+
+(let ((m howm-view-summary-mode-map))
+ (define-key m "\C-m" 'howm-view-summary-open)
+ (define-key m "\C-j" 'howm-view-summary-open)
+ (define-key m "u" 'howm-view-filter-uniq)
+ (define-key m "!" 'howm-view-summary-shell-command)
+ (define-key m "T" 'howm-list-toggle-title) ;; defined in other file. dirty!
+ ;; (define-key m howm-reminder-quick-check-key 'howm-reminder-quick-check)
+ ;; (define-key m ";" 'howm-view-invoke-action-lock)
+ (define-key m "\C-i" 'howm-view-summary-next-section)
+ (define-key m "\M-\C-i" 'howm-view-summary-previous-section)
+ (define-key m [tab] 'howm-view-summary-next-section)
+ (define-key m [(meta tab)] 'howm-view-summary-previous-section)
+ (howm-view-define-common-key m))
+
+(let ((m howm-view-contents-mode-map))
+ (define-key m "\C-m" 'howm-view-contents-open)
+ (define-key m "\C-j" 'howm-view-contents-open)
+ (howm-view-define-common-key m))
+
+;;; summary
+
+(defun howm-view-summary (&optional name item-list fl-keywords)
+ (let* ((*howm-view-font-lock-keywords* fl-keywords) ;; ok? [2008-07-11]
+ (r (riffle-summary name item-list ':howm
+ (howm-view-in-background-p))))
+ (if (null r)
+ (message "No match")
+ ;; We want to entry font-lock keywords even when background-p.
+ (when *howm-view-font-lock-keywords*
+ (setq howm-view-font-lock-keywords *howm-view-font-lock-keywords*)))
+ r))
+
+;; (defun howm-view-summary (&optional name item-list)
+;; (let ((*howm-view-font-lock-keywords* t))
+;; (riffle-summary name item-list ':howm)))
+
+(defun howm-view-summary-open (&optional reverse-delete-p)
+ (interactive "P")
+ (when (not (and howm-view-summary-keep-cursor
+ (get-buffer-window (riffle-contents-buffer))))
+ (riffle-summary-check t))
+ (let* ((p (riffle-persistent-p howm-view-summary-persistent))
+ (persistent (if reverse-delete-p
+ (not p)
+ p)))
+ (howm-record-view-window-configuration)
+ (howm-view-summary-open-sub (not persistent))))
+
+(defun howm-view-summary-open-sub (&optional kill)
+ (interactive "P")
+ (let ((b (riffle-contents-buffer))
+ (looking-at-str (buffer-substring-no-properties (point)
+ (line-end-position))))
+ (riffle-pop-to-buffer b howm-view-summary-window-size)
+ (let ((howm-view-open-hook nil)) ;; Don't execute it in contents-open.
+ (howm-view-contents-open-sub kill))
+ (end-of-line)
+ (or (search-backward looking-at-str (line-beginning-position) t)
+ (beginning-of-line))
+ (run-hooks 'howm-view-open-hook)))
+
+(defvar howm-view-summary-item-previous-name nil
+ "for internal use")
+(defun howm-view-summary-item (item)
+ ;; Clean me. This depends on implementation of `riffle-summary-show'
+ ;; severely.
+ (when (eq (point) (point-min))
+ (setq howm-view-summary-item-previous-name ""))
+ (let* ((f (howm-item-name item))
+ (name (if (and howm-view-summary-omit-same-name
+ (string= f howm-view-summary-item-previous-name))
+ ""
+ (progn
+ (setq howm-view-summary-item-previous-name f)
+ (howm-view-item-basename item t))))
+ (h (format howm-view-summary-format name)))
+ (concat h (howm-view-item-summary item))))
+
+(defun howm-view-summary-next-section (&optional n)
+ (interactive "P")
+ (setq n (or n 1))
+ (let ((i (abs n))
+ (step (if (>= n 0) 1 -1)))
+ (while (and (> i 0)
+ (howm-view-summary-next-section-sub step))
+ (setq i (1- i)))))
+(defun howm-view-summary-previous-section (&optional n)
+ (interactive "P")
+ (setq n (or n 1))
+ (howm-view-summary-next-section (- n)))
+(defun howm-view-summary-next-section-sub (step)
+ ;; inefficient. so what?
+ (let* ((f (lambda ()
+ (howm-view-item-filename (riffle-summary-current-item))))
+;; (riffle-controller 'section (riffle-summary-current-item))))
+ (cont-p (lambda ()
+ (save-excursion
+ (let ((a (funcall f)))
+ (forward-line -1)
+ (string= a (funcall f)))))))
+ (while (and (= (forward-line step) 0)
+ (funcall cont-p))
+ ;; no body
+ )))
+
+;;; contents
+
+(defun howm-view-contents-open (&optional reverse-delete-p)
+ (interactive "P")
+ (let* ((p (riffle-persistent-p howm-view-contents-persistent))
+ (persistent (if reverse-delete-p
+ (not p)
+ p)))
+ (howm-record-view-window-configuration)
+ (howm-view-contents-open-sub (not persistent))))
+
+(defvar *howm-view-item-privilege* nil) ;; dirty
+
+(defun howm-view-contents-open-sub (&optional kill)
+ (let* ((item (riffle-contents-current-item))
+ (page (howm-item-page item))
+ (offset (howm-view-item-offset item))
+ (pos (- (point) offset))
+ (viewer (howm-view-external-viewer page)))
+ (when kill
+ (riffle-kill-buffer))
+ (when (howm-view-item-privilege item)
+ (riffle-restore-window-configuration)) ;; force without mode check
+ (setq *howm-view-item-privilege* (howm-view-item-privilege item)) ;; dirty
+ (run-hooks 'howm-view-before-open-hook)
+ (if viewer
+ (howm-view-call-external-viewer viewer page)
+ (howm-view-open-item item
+ (lambda ()
+ (when (or (< pos (point-min)) (<= (point-max) pos))
+ (widen))
+ (goto-char pos))
+ t))
+ (run-hooks 'howm-view-open-hook)))
+
+(defun howm-view-open-item (item &optional position-setter merely)
+ (howm-page-open (howm-item-page item))
+ (howm-view-set-mark-command)
+ (if position-setter
+ (funcall position-setter)
+ (howm-view-set-place (howm-item-place item)))
+ (recenter howm-view-open-recenter)
+ (when (not merely)
+ (howm-view-open-postprocess)))
+(defun howm-view-open-postprocess ()
+ (run-hooks 'howm-view-open-hook))
+
+(defvar howm-view-previous-section-page nil "For internal use")
+(defvar howm-view-previous-section-beg nil "For internal use")
+(defvar howm-view-previous-section-end nil "For internal use")
+
+(defun howm-view-contents-item (item)
+ (when (howm-buffer-empty-p)
+ (setq howm-view-previous-section-page ""
+ howm-view-previous-section-beg nil
+ howm-view-previous-section-end nil))
+ (let* ((page (howm-item-page item))
+ (place (howm-view-item-place item))
+ (peq (howm-page= page howm-view-previous-section-page)) ;; dirty!
+ (done-p (if place
+ (and peq
+ (<= howm-view-previous-section-beg place)
+ (<= place howm-view-previous-section-end))
+ peq)))
+ (if done-p
+ ""
+ (let* ((header (if (null (cdr (howm-view-item-list))) ;; dirty!
+ ""
+ (format howm-view-header-format
+ (howm-page-abbreviate-name page))))
+ (header-length (howm-view-string-point-count header))
+ (viewer (howm-view-external-viewer page)))
+ (concat header
+ (howm-view-contents-item-sub item page place header viewer
+ (+ (point) header-length)))))))
+
+(defvar howm-view-string-point-count-strict nil)
+(defun howm-view-string-point-count (str)
+ "Count points of string STR.
+Namely, it is the difference between start position and end position
+of STR if STR is inserted to a buffer.
+It looks to be simply equal to (length STR) on emacs-21.1.1.
+But I'm not sure for multi-byte characters on other versions of emacsen."
+ (if howm-view-string-point-count-strict
+ (with-temp-buffer
+ (insert str)
+ (- (point) (point-min)))
+ ;; I assume (length (buffer-substring-no-properties START END))
+ ;; is equal to (abs (- START END))). Is it correct?
+ ;; (cf.) snap://Info-mode/elisp#Positions
+ (length str)))
+
+(defun howm-view-contents-item-sub (item page place header viewer c)
+ (with-temp-buffer
+ (let (b e h)
+ (if viewer
+ (howm-view-contents-indicator viewer page)
+ (howm-page-insert page))
+ (if place
+ (progn
+ (riffle-set-place place)
+ (setq h (point))
+ (let ((r (howm-view-contents-region page)))
+ (setq b (car r)
+ e (cadr r))))
+ (setq b (point-min)
+ e (point-max)
+ h b))
+ (howm-view-item-set-offset item (- c b))
+ (howm-view-item-set-home item (+ c (- b) h))
+ (setq howm-view-previous-section-page page ;; dirty!
+ howm-view-previous-section-beg (riffle-get-place b)
+ howm-view-previous-section-end (riffle-get-place e))
+ (buffer-substring-no-properties b e))))
+
+(defvar howm-view-preview-narrow t)
+(defun howm-view-contents-region (filename)
+ (when filename
+ (howm-page-set-configuration filename))
+ (if (or howm-view-preview-narrow
+ (not (riffle-preview-p)))
+ (howm-view-paragraph-region)
+ (list (point-min) (point-max))))
+
+(defun howm-view-contents-indicator (viewer fname)
+ (insert (howm-viewer-indicator viewer fname)))
+
+(defun howm-view-paragraph-region (&optional include-following-blank-p)
+ (let ((b (save-excursion
+ (end-of-line)
+ (re-search-backward howm-view-title-regexp
+ nil 'to-limit)
+ (line-beginning-position)))
+ (e (save-excursion
+ (end-of-line)
+ (let ((found (re-search-forward howm-view-title-regexp
+ nil 'to-limit)))
+ (if include-following-blank-p
+ (if found (match-beginning 0) (point-max))
+ (progn
+ (if found
+ (forward-line -1)
+ (goto-char (point-max)))
+; (end-of-line)
+ (while (and (looking-at "^$")
+ (= (forward-line -1) 0)) ;; successful
+ nil) ;; dummy
+ (end-of-line)
+ (point)))))))
+ (list b e)))
+
+(defun howm-view-set-mark-command ()
+ (set-mark-command nil)
+ (howm-deactivate-mark))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; misc.
+
+(defun howm-view-file-list (&optional item-list)
+ (howm-cl-remove-duplicates* (mapcar #'howm-view-item-filename
+ (or item-list (howm-view-item-list)))
+ :test #'howm-page=))
+
+(defun howm-view-mtime (file)
+ (howm-view-time-to-string (howm-page-mtime file)))
+
+;; (defun howm-view-xtime (file x)
+;; (let* ((a (file-attributes file))
+;; (n (cdr (assoc x '((a . 4) (m . 5) (c . 6)))))
+;; (ti (nth n a)))
+;; (howm-view-time-to-string ti)))
+
+(defun howm-view-time-to-string (ti)
+ (format-time-string "%Y%m%d-%H%M%S" ti))
+
+(defun howm-view-string> (a b)
+ (string< b a))
+
+(defun howm-view-string<= (a b)
+ (not (string< b a)))
+
+(defun howm-view-string< (a b)
+ (string< a b))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; dir
+
+(defun howm-view-directory (dir &optional recursive-p)
+ (howm-view-summary "" (howm-folder-items dir recursive-p)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; filter
+
+(defun howm-view-filter (&optional remove-p)
+ (interactive "P")
+ (let* ((table howm-view-filter-methods)
+ (command (completing-read (if remove-p
+ "(Reject) filter by: "
+ "filter by: ")
+ table nil t)))
+ (call-interactively (cdr (assoc command table)))))
+
+(defun howm-view-filter-uniq ()
+ (interactive)
+ (howm-view-filter-doit #'howm-filter-items-uniq))
+
+(defun howm-view-filter-by-name (&optional remove-p regexp)
+ (interactive "P")
+ (howm-view-filter-by-name/summary #'howm-filter-items-by-name
+ regexp remove-p))
+
+(defun howm-view-filter-by-summary (&optional remove-p regexp)
+ (interactive "P")
+ (howm-view-filter-by-name/summary #'howm-filter-items-by-summary
+ regexp remove-p))
+
+(defun howm-view-filter-by-name/summary (filter regexp remove-p)
+ (let* ((r (or regexp (howm-view-filter-read-from-minibuffer "Regexp: "
+ remove-p)))
+ (f `(lambda (item-list rmv-p)
+ (funcall #',filter item-list ,r rmv-p))))
+ (howm-view-filter-doit f remove-p)))
+
+(defun howm-view-filter-by-date (&optional remove-p)
+ (interactive "P")
+ (howm-view-filter-by-time-range #'howm-filter-items-by-date
+ remove-p))
+
+(defun howm-view-filter-by-reminder (&optional remove-p)
+ (interactive "P")
+ (howm-view-filter-by-time-range #'howm-filter-items-by-reminder remove-p))
+
+(defun howm-view-filter-by-mtime (&optional remove-p range)
+ (interactive "P")
+ (howm-view-filter-by-time-range #'howm-filter-items-by-mtime remove-p range))
+
+(defun howm-view-filter-by-time-range (filter &optional remove-p range)
+ (let* ((r (or range (howm-view-ask-time-range remove-p)))
+ (from (car r))
+ (to (cadr r))
+ (f `(lambda (item-list rmv-p)
+ (funcall #',filter item-list ',from ',to rmv-p))))
+ (howm-view-filter-doit f remove-p)))
+
+(defun howm-view-filter-by-region (beg end)
+ (interactive "r")
+ (let ((r (mapcar #'howm-view-line-number (list beg end))))
+ (howm-view-filter-by-line-range (car r) (cadr r))))
+
+(defvar howm-view-filter-by-around-default 10)
+(defun howm-view-filter-by-around (&optional distance)
+ (interactive "P")
+ (let* ((d (or distance howm-view-filter-by-around-default))
+ (c (howm-view-line-number)))
+ (howm-view-filter-by-line-range (- c d) (+ c d))))
+
+(defun howm-view-filter-by-line-range (beg end)
+ (let ((f `(lambda (item-list remove-p)
+ (when remove-p
+ (error "Not supported."))
+ ;; beg and end are counted as 1,2,3,...
+ (cl-subseq item-list
+ (max (1- ,beg) 0)
+ ;; end is included.
+ (min ,end (length item-list))))))
+ (howm-view-filter-doit f)))
+
+(defun howm-view-filter-by-contents (&optional remove-p regexp)
+ (interactive "P")
+ (let ((r (or regexp (howm-view-filter-read-from-minibuffer
+ "Search in result (grep): "
+ remove-p))))
+ (if remove-p
+ (howm-view-remove-by-contents r)
+ (howm-view-search-in-result r))))
+
+(howm-if-ver1dot3 nil
+ (defcustom howm-view-search-in-result-correctly t
+ "*Non nil if search-in-result should be aware of paragraph."
+ :type 'boolean
+ :group 'howm-search))
+
+(defun howm-view-search-in-result (regexp)
+;; (interactive "sSearch in result (grep): ")
+ (let* ((orig (howm-view-name))
+ (name (if (string= orig "")
+ regexp
+ (format "%s&%s" orig regexp)))
+ (orig-item-list (howm-view-item-list))
+ (folder (howm-make-folder-from-items orig-item-list)))
+ (howm-write-history regexp)
+ (howm-view-search-folder regexp folder name)
+ (when howm-view-search-in-result-correctly
+ (howm-view-summary-rebuild (howm-item-list-filter (howm-view-item-list)
+ orig-item-list)))))
+
+(defun howm-view-remove-by-contents (regexp)
+;; (interactive "s(Reject) Search in result (grep): ")
+ (let ((howm-v-r-b-c-regexp regexp))
+ (howm-view-sort/filter-doit
+ (lambda (item-list switch)
+ (howm-filter-items-by-contents item-list howm-v-r-b-c-regexp t)))))
+
+(defun howm-view-sort/filter-doit (proc &optional switch)
+ (let ((kw font-lock-keywords))
+ (prog1
+ ;; return item-list for
+ ;; http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?HidePrivateReminder
+ (howm-view-summary-rebuild (funcall proc (howm-view-item-list) switch))
+ (setq font-lock-keywords kw))))
+
+(defalias 'howm-view-filter-doit 'howm-view-sort/filter-doit)
+
+;; For backward compatibility with howmoney. Don't use this.
+(defun howm-view-filter-general (pred)
+ (howm-view-filter-doit (lambda (item-list dummy)
+ (cl-remove-if-not pred item-list))))
+;; (defun howm-view-filter-general (pred &optional remove-p with-index)
+;; (let* ((item-list (howm-view-item-list))
+;; (s (if with-index
+;; (howm-map-with-index #'list item-list)
+;; item-list))
+;; (r (if remove-p
+;; (cl-remove-if pred s)
+;; (cl-remove-if-not pred s)))
+;; (filtered (if with-index
+;; (mapcar #'car r)
+;; r)))
+;; (howm-view-summary-rebuild filtered)))
+
+(defmacro howm-filter-items (pred lis &optional remove-p)
+ `(if ,remove-p
+ (cl-remove-if ,pred ,lis)
+ (cl-remove-if-not ,pred ,lis)))
+
+(defun howm-filter-items-uniq (item-list &optional remove-p)
+ (when remove-p
+ (error "Not supported."))
+ (let* ((howm-view-filter-uniq-prev (if howm-view-search-in-result-correctly
+ (cons "" nil)
+ ""))
+ (pred (if howm-view-search-in-result-correctly
+ (lambda (item)
+ (let ((page (howm-item-page item))
+ (place (howm-item-place item))
+ (range (howm-item-range item))
+ (p-page (car howm-view-filter-uniq-prev))
+ (p-range (cdr howm-view-filter-uniq-prev)))
+ (prog1
+ (not (and (howm-page= page p-page)
+ (and place p-range
+ (<= (car p-range) place)
+ (<= place (cadr p-range)))))
+ (setq howm-view-filter-uniq-prev (cons page range)))))
+ ;; old code
+ (lambda (item)
+ (let ((f (howm-view-item-filename item)))
+ (prog1
+ (not (howm-page= f howm-view-filter-uniq-prev))
+ (setq howm-view-filter-uniq-prev f)))))))
+ (cl-remove-if-not pred item-list)))
+
+(defun howm-filter-items-by-name (item-list regexp &optional remove-p)
+ (howm-filter-items-by-name/summary #'howm-view-item-basename
+ item-list regexp remove-p))
+
+(defun howm-filter-items-by-summary (item-list regexp &optional remove-p)
+ (howm-filter-items-by-name/summary #'howm-view-item-summary
+ item-list regexp remove-p))
+
+(defun howm-filter-items-by-name/summary (accessor item-list regexp remove-p)
+ (howm-filter-items (lambda (item)
+ (string-match regexp (funcall accessor item)))
+ item-list remove-p))
+
+(defun howm-filter-items-by-date (item-list from to &optional remove-p)
+ (let* ((form (howm-view-file-name-format))
+ (fts (mapcar (lambda (x)
+ (file-name-nondirectory (format-time-string form x)))
+ (list from to)))
+ (fs (car fts))
+ (ts (cadr fts)))
+ (howm-filter-items (lambda (item)
+ (let ((cs (howm-view-item-basename item)))
+ (and (howm-view-string<= fs cs)
+ (howm-view-string< cs ts))))
+ item-list remove-p)))
+
+(defun howm-filter-items-by-reminder (item-list from to &optional remove-p)
+ (let* ((from-str (format-time-string howm-date-format from))
+ (to-str (format-time-string howm-date-format to))
+ (reg (howm-reminder-regexp howm-reminder-types)))
+ (howm-filter-items
+ (lambda (item)
+ (let ((s (howm-view-item-summary item)))
+ (and (string-match reg s)
+ (let* ((x (match-string-no-properties 0 s)) ;; [2004-02-07]@
+ (d (and (string-match howm-date-regexp x)
+ (match-string-no-properties 0 x)))) ;; [2004-02-07]
+ (and (howm-view-string<= from-str d)
+ (howm-view-string< d to-str))))))
+ item-list remove-p)))
+
+(defun howm-filter-items-by-mtime (item-list from to &optional remove-p)
+ (let ((fs (howm-view-time-to-string from))
+ (ts (howm-view-time-to-string to)))
+ (howm-filter-items
+ (lambda (item)
+ (let ((cs (howm-view-mtime (howm-view-item-filename item))))
+ (and (howm-view-string<= fs cs)
+ (howm-view-string< cs ts))))
+ item-list remove-p)))
+
+(defun howm-filter-items-by-contents (item-list regexp &optional remove-p)
+ (let* ((match (howm-view-search-folder-items-fi regexp item-list)))
+ (if howm-view-search-in-result-correctly
+ (howm-item-list-filter item-list match remove-p)
+ ;; old behavior
+ (let ((match-names (howm-cl-remove-duplicates*
+ (mapcar #'howm-item-name match))))
+ (howm-filter-items (lambda (item)
+ (member (howm-item-name item) match-names))
+ item-list remove-p)))))
+
+(defun howm-view-file-name-format ()
+ howm-file-name-format) ;; defined in howm-common.el
+
+(defun howm-view-ask-time-range (&optional remove-p)
+ (let* ((now (current-time))
+ (from (howm-view-ask-time "From" now t remove-p))
+ (to (howm-view-ask-time "To" from nil remove-p)))
+ (list from to)))
+
+(defvar howm-view-min-year 1950)
+(defvar howm-view-max-year 2030)
+(defun howm-view-ask-time (prompt default &optional from-p remove-p)
+ (let* ((z (decode-time default))
+ (yd (nth 5 z))
+ (md (nth 4 z))
+ (dd (nth 3 z)))
+ (let (y0 m0 d0 hour0 min0 sec0)
+ (if from-p
+ (setq y0 howm-view-min-year m0 1 d0 1
+ hour0 0 min0 0 sec0 0)
+ (setq y0 howm-view-max-year m0 12 d0 'last-day-of-month
+ hour0 24 min0 0 sec0 0))
+ (let ((y (howm-ask-time-sub prompt "year" yd remove-p)))
+ (if (null y)
+ (howm-view-encode-time sec0 min0 hour0 d0 m0 y0)
+ (let ((m (howm-ask-time-sub prompt "month" md remove-p)))
+ (if (null m)
+ (howm-view-encode-time sec0 min0 hour0 d0 m0 y)
+ (let ((d (or (howm-ask-time-sub prompt "date" dd remove-p) d0)))
+ (howm-view-encode-time sec0 min0 hour0 d m y)))))))))
+
+(defun howm-ask-time-sub (prompt ymd default remove-p)
+ (let* ((message (format "%s %s (* = no limit) [%d]: " prompt ymd default))
+ (raw (howm-view-filter-read-from-minibuffer message remove-p))
+ (n (if (string= raw "")
+ default
+ (string-to-number raw))))
+ (if (= n 0)
+ nil
+ n)))
+
+(defun howm-view-encode-time (sec min hour d m y)
+ (when (eq d 'last-day-of-month)
+ (setq m (+ m 1))
+ (setq d -1))
+ (encode-time sec min hour d m y))
+
+(defun howm-view-filter-read-from-minibuffer (message &optional remove-p)
+ (read-from-minibuffer (if remove-p
+ (concat "(Reject) " message)
+ message)))
+
+(defun howm-view-summary-rebuild (item-list &optional fl-keywords)
+ (howm-view-summary (howm-view-name) item-list fl-keywords))
+
+(let* ((h (regexp-quote howm-view-title-header))
+ (t1 (format "Skip \"%s \"" howm-view-title-header))
+ (r1 (format "^\\(%s\\)? *$" h))
+ (t2 (format "Skip \"%s \" and \"[xxxx-xx-xx xx:xx]\""
+ howm-view-title-header))
+ (r2 (format "\\(%s\\)\\|\\(^\\[[-: 0-9]+\\]\\)" r1)))
+ (howm-if-ver1dot3 nil
+ (defcustom howm-view-title-skip-regexp r2
+ "*Regular expression for lines which should not be titles.
+If the original title matches this regexp, the first non-matched line
+is shown as title instead.
+Nil disables this feature.
+
+This feature does not work when `howm-view-search-in-result-correctly' is nil."
+ :type `(radio (const :tag "Off" nil)
+ (const :tag ,t1 ,r1)
+ (const :tag ,t2 ,r2)
+ regexp)
+ :group 'howm-title
+ :group 'howm-efficiency)))
+
+(defcustom howm-view-list-title-type 1
+ "*Type of showing title in summary buffer.
+Value 1 means \"show title instead of summary\".
+Value 2 means \"show title before summary\".
+You may want to set `howm-view-summary-format' to be \"\" if you never need
+to see file names."
+ :type '(radio (const :tag "title instead of summary"
+ 1)
+ (const :tag "title before summary"
+ 2))
+ :group 'howm-experimental)
+
+(defun howm-view-list-title (title-regexp)
+ (howm-view-summary-rebuild (howm-entitle-items
+ title-regexp (howm-view-item-list))))
+
+(defun howm-entitle-items (title-regexp item-list)
+ (if (= howm-view-list-title-type 1)
+ (howm-entitle-items-style1 title-regexp item-list)
+ (howm-entitle-items-style2 title-regexp item-list)))
+
+(defun howm-entitle-items-style1 (title-regexp item-list)
+ "Put title instead of summary."
+ (let ((items (howm-view-search-folder-items-fi title-regexp item-list)))
+ (if howm-view-search-in-result-correctly
+ (let* ((r (howm-item-list-filter items item-list 'with-rest))
+ (hit-items (car r))
+ (nohit-items (cdr r))
+ ;; should I use (howm-classify #'howm-item-place nohit-items) ?
+ (noplace-nohit-items
+ (cl-remove-if #'howm-item-place nohit-items))
+ (rest-items
+ (howm-item-list-filter (cl-remove-if-not #'howm-item-place
+ nohit-items)
+ items t))
+ (all-items (append hit-items noplace-nohit-items rest-items)))
+ (when howm-view-title-skip-regexp
+ (mapc #'howm-view-change-title all-items))
+ all-items)
+ (let* ((pages (howm-cl-remove-duplicates* (mapcar #'howm-item-page
+ item-list)))
+ (hit-pages (mapcar #'howm-item-page items))
+ (nohit-pages (cl-remove-if
+ (lambda (p) (cl-member p hit-pages
+ :test #'howm-page=))
+ pages))
+ (nohit-items (mapcar #'howm-make-item nohit-pages))
+ (all-items (if (null nohit-items)
+ items
+ (append items nohit-items))))
+ all-items))))
+
+(defvar howm-entitle-items-style2-max-length 20)
+(defvar howm-entitle-items-style2-format "%-13s | %s") ;; for title and summary
+(defvar howm-entitle-items-style2-title-line nil) ;; independent title line?
+(defun howm-entitle-items-style2 (title-regexp item-list)
+ "Put title before summary."
+ ;; fix me: howm-item-place is not set for howm-list-all
+ (let ((last-title ""))
+ (cl-mapcan
+ (lambda (item)
+ (let ((orig (howm-item-summary item))
+ (titles (howm-item-titles item)))
+ (cl-mapcan
+ (lambda (s)
+ (if (string= s last-title)
+ (setq s "")
+ (setq last-title s))
+ (when (> (length s) howm-entitle-items-style2-max-length)
+ (setq s (substring s 0 howm-entitle-items-style2-max-length)))
+ (mapcar (lambda (x)
+ (let ((i (howm-item-dup item)))
+ (howm-item-set-summary i x)
+ i))
+ (if (and howm-entitle-items-style2-title-line
+ (not (string= s "")))
+ (list (format howm-entitle-items-style2-format
+ s "")
+ (format howm-entitle-items-style2-format
+ "" orig))
+ (list (format howm-entitle-items-style2-format
+ s orig)))))
+ (or titles (list "")))))
+ item-list)))
+
+;;; detect items in same paragraph (= entry = memo. sorry for inconsistent terminology)
+
+(defun howm-item-with-temp-buffer (item proc)
+ (with-temp-buffer
+ (howm-page-insert (howm-item-page item))
+ (let* ((p (howm-item-place item))
+ (r (if (null p)
+ (list (point-min) (point-max))
+ (progn
+ (riffle-set-place p)
+ (howm-view-paragraph-region)))))
+ (narrow-to-region (car r) (cadr r))
+ (funcall proc item))))
+
+(defun howm-item-titles (item)
+ "List of titles of ITEM.
+When place (see `howm-item-place') is specified, ITEM has at most one title.
+Otherwise, ITEM can have two or more titles."
+ (howm-item-with-temp-buffer
+ item
+ (lambda (i)
+ (let ((titles nil))
+ (goto-char (point-min))
+ (while (re-search-forward (howm-list-title-regexp) nil t)
+ (setq titles
+ (cons (buffer-substring-no-properties (match-beginning 0)
+ (line-end-position))
+ titles)))
+ (mapcar (lambda (x)
+ (if (string-match howm-view-title-regexp x)
+ (match-string-no-properties howm-view-title-regexp-pos x)
+ x))
+ (reverse titles))))))
+
+(defun howm-item-range (item)
+ "List of beginning-place and end-place of paragraph to which ITEM belongs."
+ (howm-item-with-temp-buffer
+ item
+ (lambda (i)
+ (let ((r (list (point-min) (point-max))))
+ (widen)
+ (list (progn
+ (goto-char (car r))
+ (riffle-get-place))
+ (progn
+ (goto-char (cadr r))
+ (riffle-get-place)))))))
+;; (with-temp-buffer
+;; (howm-page-insert (howm-item-page item))
+;; (let* ((p (howm-item-place item))
+;; (r (if (null p)
+;; (list (point-min) (point-max))
+;; (progn
+;; (riffle-set-place p)
+;; (howm-view-paragraph-region)))))
+;; (list (progn
+;; (goto-char (car r))
+;; (riffle-get-place))
+;; (progn
+;; (goto-char (cadr r))
+;; (riffle-get-place))))))
+
+(defun howm-item-list-rangeset (item-list)
+ "Make assoc list of page to rangeset.
+ITEM-LIST is list of items.
+Return value is assoc list; each element of it is a cons pair of page
+and rangeset which indicates ranges of places of paragraphs to which items
+in ITEM-LIST belongs."
+ (let ((alist nil)) ;; key = page, value = rangeset of place
+ (cl-labels ((add-to-alist (page rs)
+ (setq alist (cons (cons page rs) alist))))
+ (mapc (lambda (item)
+ (let* ((page (howm-item-page item))
+ (place (howm-item-place item))
+ (rs (cdr (assoc page alist))))
+ (cond ((null place)
+ (add-to-alist page (howm-make-rangeset)))
+ ((null rs)
+ (add-to-alist page (howm-make-rangeset
+ (howm-item-range item))))
+ ((howm-rangeset-belong-p place rs)
+ nil) ;; do nothing
+ (t
+ (howm-rangeset-add! rs (howm-item-range item))))))
+ item-list)
+ alist)))
+
+(defun howm-item-list-filter (item-list reference-item-list
+ &optional remove-match)
+ "Select items in ITEM-LIST according to REFERENCE-ITEM-LIST.
+When REMOVE-MATCH is nil, return value is list of items i in ITEM-LIST
+which satisfy the condition \"there exists i' in REFERENCE-ITEM-LIST
+such that i and i' belong to same paragraph\" (case 1).
+When REMOVE-MATCH is non-nil and not the symbol 'with-rest',
+return value is complement of the above list;
+list of items in ITEM-LIST which do not satisfy the above condition (case 2).
+When REMOVE-MATCH is the symbol 'with-rest',
+return value is (A . B), where A is the return value of case 1 and
+B is items in REFERENCE-ITEM-LIST that do not match in case 1."
+ ;;
+ ;; split no-place items:
+ ;; Though implementation 1 calls grep many times,
+ ;; implementation 2 is slower in construction of folder from items.
+ ;; [2012-12-28]
+ ;;
+ ;; implementation 1 (call grep many times)
+ (setq item-list
+ (cl-mapcan (lambda (item)
+ (if (howm-item-place item)
+ (list item)
+ (or (howm-view-search-folder-items-fi
+ (howm-view-title-regexp-grep) (list item))
+ (list item))))
+ item-list))
+ ;;
+ ;; ;; implementation 2 (making items-folder is slow)
+ ;; (let* ((place-items (cl-remove-if-not #'howm-item-place item-list))
+ ;; (no-place-items (cl-remove-if #'howm-item-place item-list))
+ ;; (split-items (howm-view-search-folder-items-fi
+ ;; (howm-view-title-regexp-grep) no-place-items))
+ ;; ;;; !!!!!!!!! use CL !!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ;; (no-title-items (set-difference no-place-items split-items
+ ;; :key #'howm-item-page)))
+ ;; (setq item-list (append place-items split-items no-title-items)))
+ ;;
+ (let* ((alist (howm-item-list-rangeset reference-item-list))
+ (matcher (lambda (item)
+ (let* ((page (howm-item-page item))
+ (place (howm-item-place item))
+ (rs (cdr (assoc page alist))))
+ (cond ((null rs) nil)
+ ((howm-rangeset-belong-p place rs) rs)
+ (t nil))))))
+ (cond ((eq remove-match 'with-rest)
+ (let ((match (cl-remove-if-not
+ (lambda (item)
+ (let ((rs (funcall matcher item)))
+ (and rs (howm-rangeset-hit! rs))))
+ item-list)))
+ (cons match
+ (cl-mapcan
+ (lambda (a) (and (not (howm-rangeset-hit-p (cdr a)))
+ (list (howm-make-item (car a)))))
+ alist))))
+ (remove-match (cl-remove-if matcher item-list))
+ (t (cl-remove-if-not matcher item-list)))))
+
+;;; rangeset
+;;; ex.
+;;; (*rangeset* (1 . 4) (5 . 6) (8 . 14))
+;;; (*rangeset*) ==> "almighty"
+;;; (*rangeset-hit* (1 . 4) (5 . 6) (8 . 14)) ==> "hit" is recorded
+
+(defun howm-make-rangeset (&optional beg-end)
+ (if (null beg-end)
+ (cons '*rangeset* nil)
+ (let ((rs (howm-make-rangeset)))
+ (howm-rangeset-add! rs beg-end))))
+
+(defun howm-rangeset-belong-p (point rs)
+ (or (null (cdr rs))
+ (cl-member-if (lambda (pair)
+ (and (<= (car pair) point) (<= point (cdr pair))))
+ (cdr rs))))
+
+(defun howm-rangeset-add! (rs beg-end)
+ ;; "almighty" is ignored here. sorry for confusion...
+ ;; c = cursor (pointing its cdr)
+ ;; p = pair
+ (let ((c rs)
+ (beg (car beg-end))
+ (end (cadr beg-end)))
+ (while (and (cdr c) beg)
+ (let ((p (cadr c)))
+ (cond ((< end (car p)) ;; insert [beg, end] here
+ (rplacd c (cons (cons beg end) (cdr c)))
+ (setq beg nil))
+ ((< (cdr p) beg) ;; skip this
+ (setq c (cdr c)))
+ (t ;; merge into [beg, end]
+ (setq beg (min beg (car p))
+ end (max end (cdr p)))
+ (rplacd c (cddr c))))))
+ (when beg
+ (rplacd c (list (cons beg end)))))
+ rs)
+
+(defvar howm-rangeset-hit-indicator '*rangeset-hit*)
+
+(defun howm-rangeset-hit! (rs)
+ (setcar rs howm-rangeset-hit-indicator))
+
+(defun howm-rangeset-hit-p (rs)
+ (eq (car rs) howm-rangeset-hit-indicator))
+
+;; check
+
+(let ((tests '(
+ (()
+ ())
+ (((3 . 5))
+ ((3 . 5)))
+ (((3 . 5) (0 . 1))
+ ((0 . 1) (3 . 5)))
+ (((3 . 5) (6 . 8))
+ ((3 . 5) (6 . 8)))
+ (((3 . 5) (1 . 4))
+ ((1 . 5)))
+ (((3 . 5) (4 . 7))
+ ((3 . 7)))
+ (((3 . 5) (1 . 9))
+ ((1 . 9)))
+ (((3 . 1) (4 . 1) (5 . 9))
+ ((1 . 4) (5 . 9)))
+ (((3 . 1) (4 . 1) (5 . 9) (2 . 6) (5 . 3))
+ ((1 . 9)))
+ ))
+ ;; inhibit 'reference to free variable' warning in byte-compilation
+ (check nil))
+ (cl-labels ((check (ans result)
+ (cond ((null ans) (null result))
+ ((not (equal (car ans) (car result))) nil)
+ (t (funcall check (cdr ans) (cdr result))))))
+ (mapc (lambda (z)
+ (apply (lambda (prob ans)
+ (let* ((rs (howm-make-rangeset)))
+ (mapc (lambda (pair)
+ (let ((a (car pair))
+ (b (cdr pair)))
+ (howm-rangeset-add! rs
+ (list (min a b)
+ (max a b)))))
+ prob)
+ (when (not (equal (cdr rs) ans))
+ (error "howm-rangeset-add: %s ==> %s" prob rs))))
+ z))
+ tests)))
+
+(let ((rs '(*rangeset* (1 . 4) (5 . 6) (8 . 14))))
+ (if (and (howm-rangeset-belong-p 1 rs)
+ (howm-rangeset-belong-p 3 rs)
+ (howm-rangeset-belong-p 4 rs)
+ (howm-rangeset-belong-p 5 rs)
+ (not (howm-rangeset-belong-p 0 rs))
+ (not (howm-rangeset-belong-p 4.5 rs))
+ (not (howm-rangeset-belong-p 7 rs))
+ (not (howm-rangeset-belong-p 15 rs)))
+ t
+ (error "howm-rangeset-belong-p: wrong result")))
+
+(defun howm-view-change-title (item)
+ (when (string-match howm-view-title-skip-regexp (howm-item-summary item))
+ (let ((title-line (with-temp-buffer
+ (howm-page-insert (howm-item-page item))
+ (howm-view-set-place (or (howm-item-place item)
+ (howm-view-get-place
+ (point-min))))
+ (howm-view-get-title-line))))
+ (howm-item-set-summary item title-line))))
+
+(defun howm-view-get-title-line ()
+ (while (and (looking-at howm-view-title-skip-regexp)
+ (= (forward-line 1) 0))
+ ;; do nothine
+ )
+ (buffer-substring-no-properties (line-beginning-position)
+ (line-end-position)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; search
+
+(defun howm-view-search (str file-list &optional
+ name summarizer fixed-p hilit-keywords)
+ "This function is not used in howm any more."
+ (howm-view-search-folder str (howm-make-folder:files file-list)
+ name summarizer fixed-p hilit-keywords))
+
+(defun howm-view-search-items (str file-list &optional summarizer fixed-p)
+ (howm-view-search-folder-items str (howm-make-folder:files file-list)
+ summarizer fixed-p))
+
+(defun howm-view-search-folder (&rest args)
+ (howm-view-search-folder-doit (apply #'howm-view-search-folder-internal
+ args)))
+
+(defun howm-view-search-folder-internal (str folder
+ &optional name summarizer
+ fixed-p hilit-keywords)
+ ;; clean me. str-orig can be string or list of strings.
+ (let* ((str-orig str)
+ (str-list (if (listp str-orig) str-orig (list str-orig)))
+ (str-principal (if (listp str-orig) (car str-orig) str-orig)))
+ ;; rename str
+ (setq str str-principal)
+ (setq name (or name str))
+ (when howm-view-update-search-ring
+ (isearch-update-ring str (not fixed-p)))
+ (let* ((items (howm-view-search-folder-items str-orig
+ folder summarizer fixed-p))
+ (kw (or hilit-keywords
+ (let ((r (if fixed-p
+ (regexp-opt str-list)
+ (mapconcat (lambda (x) (concat "\\(" x "\\)"))
+ str-list
+ "\\|"))))
+ `((,r . howm-view-hilit-face))))))
+ (let* ((f (expand-file-name str)))
+ (when (file-exists-p f)
+ (let ((fi (howm-view-make-item f)))
+ (howm-view-item-set-privilege fi t)
+ (setq items (cons fi items)))))
+ (list kw name items))))
+
+(defun howm-view-search-folder-doit (p)
+ (howm-view-summary (cadr p) (cl-caddr p) (car p)))
+
+(defun howm-view-search-folder-items (str folder &optional summarizer fixed-p)
+ (let ((found (howm-folder-grep folder str fixed-p))
+ (summarizer (or summarizer
+ (lambda (file place content)
+ (string-match "^ *\\(.*\\)" content)
+ (match-string-no-properties 1 content)))))
+ (mapc (lambda (i)
+ (let ((file (howm-page-name (howm-item-page i)))
+ (place (howm-item-place i))
+ (content (howm-item-summary i)))
+ (howm-item-set-summary i (funcall summarizer
+ file place content))))
+ found)
+ found))
+
+;; sorry for confusing functions...
+
+(defun howm-view-search-folder-items-fi (regexp item-list &rest args)
+ (apply #'howm-view-search-folder-items
+ regexp (howm-make-folder-from-items item-list) args))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; sort
+
+(defun howm-view-sort ()
+ (interactive)
+ (let* ((table howm-view-sort-methods)
+ (command (completing-read "sort by: " table nil t)))
+ (call-interactively (cdr (assoc command table)))))
+
+(defmacro howm-view-defun-sort-by (name)
+ "Define an interactive command howm-view-sort-by-NAME,
+which simply calls howm-sort-items-by-NAME."
+ (let ((command (howm-get-symbol nil "howm-view-sort-by-" name))
+ (internal (howm-get-symbol nil "howm-sort-items-by-" name)))
+ `(defun ,command (&optional reverse-p)
+ (interactive "P")
+ (howm-view-sort-doit #',internal reverse-p))))
+(howm-view-defun-sort-by "random")
+(howm-view-defun-sort-by "name")
+(howm-view-defun-sort-by "numerical-name")
+(howm-view-defun-sort-by "date")
+(howm-view-defun-sort-by "reverse-date")
+(howm-view-defun-sort-by "summary")
+(howm-view-defun-sort-by "reminder")
+(howm-view-defun-sort-by "mtime")
+(howm-view-defun-sort-by "reverse")
+
+(defalias 'howm-view-sort-reverse 'howm-view-sort-by-reverse)
+
+(defalias 'howm-view-sort-doit 'howm-view-sort/filter-doit)
+
+(defmacro howm-sort-items (evaluator comparer item-list
+ &optional reverse-p)
+ `(let* ((howm-view-s-i-comparer ,comparer)
+ (cmp (if reverse-p
+ (lambda (a b) (funcall howm-view-s-i-comparer b a))
+ howm-view-s-i-comparer)))
+ (howm-sort ,evaluator cmp item-list)))
+
+;; ;; generate the below aliases for howm-test080714
+;; (let ((methods '("random" "name" "numerical-name" "date" "reverse-date"
+;; "summary" "reminder" "mtime" "reverse")))
+;; (mapcar (lambda (m)
+;; (let* ((command
+;; (howm-get-symbol nil "howm-view-sort-by-" m))
+;; (internal
+;; (howm-get-symbol nil "howm-sort-items-by-" m))
+;; (obsolete
+;; (howm-get-symbol nil command "-internal")))
+;; `(defalias ',obsolete ',internal)))
+;; methods))
+
+;; for backward compatibility with howm-test080714 only
+(defalias 'howm-view-sort-by-random-internal 'howm-sort-items-by-random)
+(defalias 'howm-view-sort-by-name-internal 'howm-sort-items-by-name)
+(defalias 'howm-view-sort-by-numerical-name-internal
+ 'howm-sort-items-by-numerical-name)
+(defalias 'howm-view-sort-by-date-internal 'howm-sort-items-by-date)
+(defalias 'howm-view-sort-by-reverse-date-internal
+ 'howm-sort-items-by-reverse-date)
+(defalias 'howm-view-sort-by-summary-internal 'howm-sort-items-by-summary)
+(defalias 'howm-view-sort-by-reminder-internal 'howm-sort-items-by-reminder)
+(defalias 'howm-view-sort-by-mtime-internal 'howm-sort-items-by-mtime)
+(defalias 'howm-view-sort-by-reverse-internal 'howm-sort-items-by-reverse)
+
+(defun howm-sort-items-by-random (item-list &optional reverse-p)
+ (howm-sort-items #'(lambda (dummy) (random)) #'< item-list reverse-p))
+
+(defun howm-sort-items-by-name (item-list &optional reverse-p)
+ (howm-sort-items #'howm-view-item-basename #'string< reverse-p))
+
+(defun howm-sort-items-by-numerical-name (item-list &optional reverse-p)
+ (howm-sort-items (lambda (i)
+ (let ((b (howm-view-item-basename i)))
+ (if (string-match "^[0-9]+$" b)
+ (string-to-number b)
+ howm-infinity)))
+ #'< reverse-p))
+
+(defvar howm-view-sort-by-date-ignore-regexp "^[a-zA-Z]")
+(defun howm-sort-items-by-date (item-list &optional reverse-p)
+ (let ((sorted (howm-sort-items #'howm-view-item-basename #'string<
+ item-list reverse-p)))
+ (cdr (howm-view-lift-internal #'howm-view-item-basename
+ sorted
+ howm-view-sort-by-date-ignore-regexp
+ t))))
+
+(defun howm-sort-items-by-reverse-date (item-list &optional reverse-p)
+ (howm-sort-items-by-date item-list (not reverse-p)))
+
+(defun howm-sort-items-by-summary (item-list &optional reverse-p)
+ (howm-sort-items #'howm-view-item-summary #'string<
+ item-list reverse-p))
+
+(defun howm-sort-items-by-reminder (item-list &optional reverse-p)
+ (let* ((howm-view-s-b-r-i-regexp (howm-reminder-regexp howm-reminder-types))
+ (howm-view-s-b-r-i-max (format-time-string
+ howm-reminder-today-format
+ (encode-time 59 59 23 31 12
+ howm-view-max-year)))
+ (evaluator (lambda (item)
+ (let ((s (howm-view-item-summary item)))
+ (if (string-match howm-view-s-b-r-i-regexp s)
+ (match-string-no-properties 0 s)
+ howm-view-s-b-r-i-max)))))
+ (howm-sort-items evaluator #'string< item-list reverse-p)))
+
+(defun howm-sort-items-by-mtime (item-list &optional reverse-p)
+ (howm-sort-items (lambda (item)
+ (howm-view-mtime (howm-view-item-filename item)))
+ #'howm-view-string>
+ item-list reverse-p))
+
+(defun howm-sort-items-by-reverse (item-list &optional dummy)
+ (reverse item-list))
+
+;;; lift (move matched items to the top)
+
+(defun howm-view-lift-by-name (&optional reverse-p regexp path-p)
+ (interactive "P")
+ (howm-view-lift-doit (if path-p
+ #'howm-view-lift-by-path-internal
+ #'howm-view-lift-by-name-internal)
+ reverse-p regexp))
+
+(defun howm-view-lift-by-summary (&optional reverse-p regexp)
+ (interactive "P")
+ (howm-view-lift-doit #'howm-view-lift-by-summary-internal
+ reverse-p regexp))
+
+(defun howm-view-lift-by-summary-substring (&optional reverse-p regexp
+ regexp-pos)
+ (interactive "P")
+ (howm-view-lift-doit #'howm-view-lift-by-summary-substring-internal
+ reverse-p regexp regexp-pos))
+
+(defun howm-view-lift-doit (sorter &optional reverse-p regexp
+ regexp-pos)
+ (let* ((howm-view-s-b-m-d-regexp (or regexp
+ (read-from-minibuffer "Regexp: ")))
+ (howm-view-s-b-m-d-regexp-pos regexp-pos)
+ (howm-view-s-b-m-d-sorter sorter)
+ (howm-view-s-b-m-d-matched nil))
+ (howm-view-sort-doit (lambda (item-list rvs-p)
+ (let ((p (apply howm-view-s-b-m-d-sorter
+ item-list
+ howm-view-s-b-m-d-regexp
+ rvs-p
+ howm-view-s-b-m-d-regexp-pos)))
+ (setq howm-view-s-b-m-d-matched (car p))
+ (cdr p)))
+ reverse-p)
+ howm-view-s-b-m-d-matched))
+
+(defun howm-view-lift-internal (picker item-list regexp
+ &optional reverse-p regexp-pos)
+ "Sort items and return (matched . sorted-list).
+matched can be nil, single, or multi."
+ (let* ((howm-view-l-i-matched nil)
+ (evaluator (lambda (item)
+ (let ((str (funcall picker item)))
+ (if (string-match regexp str)
+ (progn
+ (setq howm-view-l-i-matched
+ (if howm-view-l-i-matched 'multi 'single))
+ (if regexp-pos
+ (match-string-no-properties regexp-pos str)
+ 1))
+ 0))))
+ (comparer (if regexp-pos
+ (lambda (x y)
+ (cond ((eq x 0) nil)
+ ((eq y 0) t)
+ (t (string< x y))))
+ #'>)))
+ (let ((sorted-list (howm-sort-items evaluator comparer item-list
+ reverse-p)))
+ (cons howm-view-l-i-matched sorted-list))))
+
+(defun howm-view-lift-by-name-internal (item-list regexp &optional reverse-p)
+ (howm-view-lift-internal #'howm-view-item-basename
+ item-list regexp reverse-p))
+
+(defun howm-view-lift-by-path-internal (item-list regexp &optional reverse-p)
+ (howm-view-lift-internal #'howm-item-name item-list regexp reverse-p))
+
+(defun howm-view-lift-by-summary-internal (item-list regexp &optional reverse-p)
+ (howm-view-lift-internal #'howm-view-item-summary item-list regexp reverse-p))
+
+(defun howm-view-lift-by-summary-substring-internal (item-list regexp
+ &optional
+ reverse-p
+ regexp-pos)
+ (howm-view-lift-internal #'howm-view-item-summary item-list regexp reverse-p
+ (or regexp-pos 0)))
+
+;; backward compatibility
+(defalias 'howm-view-sort-by-name-match 'howm-view-lift-by-name)
+(defalias 'howm-view-sort-by-summary-match 'howm-view-lift-by-summary)
+(defalias 'howm-view-sort-by-summary-match-string
+ 'howm-view-lift-by-summary-substring)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Dired-X
+
+(defvar howm-view-dired-buffer-name "*howm-dired*")
+(howm-defvar-risky howm-view-dired-ls-command "ls")
+(howm-defvar-risky howm-view-dired-ls-options '("-l"))
+
+(defun dired-virtual (dir)
+ (howm-inhibit-warning-in-compilation))
+
+(defun howm-view-dired ()
+ (interactive)
+ (require (if (howm-xemacsp) 'dired-vir 'dired-x))
+ (when (not (member major-mode
+ '(howm-view-summary-mode howm-view-contents-mode)))
+ (error "Invalid mode for this command."))
+;; ;; bug in emacs-21.3.50?
+;; (when (not (fboundp 'dired-insert-headerline))
+;; (defun dired-insert-headerline (dir);; also used by dired-insert-subdir
+;; ;; Insert DIR's headerline with no trailing slash, exactly like ls
+;; ;; would, and put cursor where dired-build-subdir-alist puts subdir
+;; ;; boundaries.
+;; (save-excursion (insert " " (directory-file-name dir) ":\n"))))
+ (let* ((i2f (lambda (item)
+ (file-relative-name (howm-view-item-filename item))))
+ (current-file (funcall i2f (riffle-summary-current-item)))
+ (files (howm-cl-remove-duplicates* (mapcar i2f (howm-view-item-list))
+ :test #'equal))
+;; (pos (cl-position f files :test #'string=))
+ (args (append howm-view-dired-ls-options files))
+ (a `((howm-view-summary-mode . ,howm-view-summary-persistent)
+ (howm-view-contents-mode . ,howm-view-contents-persistent)))
+ (p (howm-view-persistent-p (cdr (assoc major-mode a)))))
+ (if p
+ (howm-view-restore-window-configuration)
+ (howm-view-kill-buffer))
+ (switch-to-buffer (get-buffer-create howm-view-dired-buffer-name))
+ (setq buffer-read-only nil)
+ (erase-buffer)
+ (howm-call-process-here howm-view-dired-ls-command args)
+ (set-buffer-modified-p nil)
+ (dired-virtual default-directory)
+ (howm-view-dired-goto current-file)))
+
+(defun howm-view-dired-goto (rname)
+"In dired buffer, search file name RNAME and move cursor to corresponding line.
+RNAME must be relative name."
+ (goto-char (point-min))
+ ;; Raw call of `dired-get-filename' and `dired-next-line' causes
+ ;; warnings in compilation.
+ (while (let ((c (howm-funcall-if-defined (dired-get-filename 'no-dir t))))
+ (not (and c (equal (file-relative-name c) rname))))
+ (howm-funcall-if-defined (dired-next-line 1))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; shell
+
+(howm-defvar-risky howm-view-summary-shell-hist '("ls -l FILE" "FILE"))
+(howm-defvar-risky howm-view-summary-shell-last-file "FILE")
+(defun howm-view-summary-shell-command ()
+ (interactive)
+ (when (not (member major-mode
+ '(howm-view-summary-mode)))
+ (error "Invalid mode for this command."))
+ (let* ((n (howm-view-line-number))
+ (item (nth (1- n) (howm-view-item-list)))
+ (file (howm-page-abbreviate-name (howm-view-item-filename item)))
+ (last-reg (regexp-quote howm-view-summary-shell-last-file)))
+ (setq howm-view-summary-shell-hist
+ (mapcar (lambda (h)
+ (replace-regexp-in-string last-reg file h t))
+ howm-view-summary-shell-hist))
+ (setq howm-view-summary-shell-last-file file)
+ (let* ((default (car howm-view-summary-shell-hist))
+ (c (read-string "command: "
+ (cons default 0)
+ '(howm-view-summary-shell-hist . 1))))
+ (shell-command c))
+ (let ((item-list (cl-remove-if (lambda (item)
+ (not (file-exists-p
+ (howm-view-item-filename item))))
+ (howm-view-item-list))))
+ (setq *riffle-summary-check* nil) ;; dirty
+ (howm-view-summary (howm-view-name) item-list)
+ (howm-goto-line n)
+ (save-selected-window
+ (let ((b (get-buffer "*Shell Command Output*")))
+ (cond ((not (howm-buffer-empty-p b))
+ (switch-to-buffer-other-window b))
+ ((eq item (riffle-summary-current-item))
+ nil)
+ (t (progn
+ (setq *riffle-summary-check* t) ;; dirty
+ (howm-view-summary-check t))))))
+ )))
+
+;;; howm-view.el ends here
--- /dev/null
+;;; howm.el --- Wiki-like note-taking tool
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: howm.el,v 1.22 2011-12-31 15:07:29 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+;;; DESCRIPTION:
+;;;
+;;; See README.
+;;; HOWM is acronym of "Hitori Otegaru Wiki Modoki".
+
+;; Files [0]-[3] have only hierarchical dependencies,
+;; whereas files in [5] have circular dependencies.
+;; Each file in [5] provides itself first,
+;; and then requires [4] (this file).
+
+;;; [0] official
+
+(require 'easy-mmode)
+(require 'font-lock)
+
+;;; [1] cl
+
+(require 'cl-lib)
+
+;;; [2] howm basic libraries
+
+(require 'howm-version)
+(require 'howm-vars)
+(require 'howm-common)
+
+;;; [3] my tools
+
+;; This doesn't work in byte-compilation. I don't understand it. Sigh...
+;; (mapcar #'require howm-required-features)
+
+(require 'cheat-font-lock)
+(require 'illusion)
+(require 'gfunc)
+(require 'riffle)
+(require 'action-lock)
+(require 'honest-report)
+
+;;; [4] howm main (this file)
+
+(provide 'howm)
+
+;;; [5] howm modules
+
+(require 'howm-backend)
+(require 'howm-view)
+(require 'howm-mode)
+(require 'howm-misc)
+(require 'howm-date)
+(require 'howm-reminder)
+(require 'howm-menu)
+
+;;; for howmz.el [2006-02-02]
+;;; http://noir.s7.xrea.com/archives/000136.html
+;;; http://noir.s7.xrea.com/pub/zaurus/howmz.el
+
+(howm-require-lang 'en)
+(howm-require-lang 'ja)
+
+;;; security fix [2006-12-16]
+(mapc (lambda (symbol) (put symbol 'risky-local-variable t))
+ (howm-symbols))
+
+;;; howm.el ends here
--- /dev/null
+;;; illusion.el --- load, edit, and submit something which is not pure file
+;;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: illusion.el,v 1.14 2011-12-31 15:07:29 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;;--------------------------------------------------------------------
+
+;;; Commentary:
+
+;; Not yet. See the example 'yalot13' at the bottom of this file.
+
+;;; Code:
+
+(require 'easy-mmode)
+(require 'howm-common)
+
+(defvar illusion-lighter " _i_")
+(defvar illusion-submit-key "\C-c\C-c")
+
+(defvar illusion-submit-func
+ (lambda ()
+ (error "Submission function is not defined."))
+ "Value of this variable is called when `illusion-submit' is executed.
+It must return non-nil value for successful case.")
+(make-variable-buffer-local 'illusion-submit-func)
+(put 'illusion-submit-func 'risky-local-variable t)
+
+(defun illusion-submit ()
+ (interactive)
+ (funcall illusion-submit-func)
+ (set-buffer-modified-p nil))
+
+(defun illusion-generate (name loader submitter)
+ (switch-to-buffer (generate-new-buffer name))
+ (text-mode)
+ (illusion-mode 1)
+ (setq illusion-submit-func submitter)
+ (funcall loader)
+ (goto-char (point-min))
+ (set-buffer-modified-p nil))
+
+(easy-mmode-define-minor-mode illusion-mode
+ "With no argument, this command toggles the mode.
+Non-null prefix argument turns on the mode.
+Null prefix argument turns off the mode.
+
+When the mode is enabled, \\[illusion-submit] submits the content
+with a manner which is suitable to current buffer.
+
+key binding
+--- -------
+\\[illusion-submit] Submit changes
+"
+ nil ;; default = off
+ illusion-lighter ;; mode-line
+ `(
+ (,illusion-submit-key . illusion-submit)
+ )
+)
+
+;; emacs20's easy-mmode-define-minor-mode can't have body. sigh...
+(add-hook 'illusion-mode-on-hook
+ (lambda () (use-local-map illusion-mode-map)))
+
+;;; Example
+
+;; M-x yarot13-find-file to open rot13ed file.
+;; Edit it, and C-c C-c to save it.
+
+;; (personal note) ruby -pe '$_.tr! "a-zA-Z", "n-za-mN-ZA-M"'
+
+(defun yarot13-find-file (file)
+ (interactive "Frot13 file: ")
+ (illusion-generate (concat "rot13:" (file-name-nondirectory file))
+ `(lambda () (yarot13-insert-file-contents ,file))
+ `(lambda () (yarot13-save-buffer-to ,file))))
+
+(defun yarot13-insert-file-contents (file)
+ (if (file-exists-p file)
+ (let ((s (with-temp-buffer
+ (howm-insert-file-contents file)
+ (yarot13-rotate-buffer)
+ (buffer-string))))
+ (insert s))
+ (message "(New file)")))
+
+(defun yarot13-save-buffer-to (file)
+ (let ((s (buffer-string)))
+ (with-temp-buffer
+ (insert s)
+ (yarot13-rotate-buffer)
+ (set-visited-file-name file)
+ (basic-save-buffer))))
+
+(defun yarot13-rotate-buffer ()
+ (save-excursion
+ (goto-char (point-min))
+ (while (not (eobp))
+ (let ((c (char-after)))
+ (setq c (yarot13-rotate-char c ?a ?z))
+ (setq c (yarot13-rotate-char c ?A ?Z))
+ (delete-char 1)
+ (insert-char c 1)))))
+
+(defun yarot13-rotate-string (str)
+ (with-temp-buffer
+ (insert str)
+ (yarot13-rotate-buffer)
+ (buffer-string)))
+
+(defun yarot13-rotate-char (x beg end)
+ (let ((d (- x beg))
+ (w (+ 1 (- end beg))))
+ (if (and (<= beg x) (<= x end))
+ (+ beg (mod (+ d (/ w 2)) w))
+ x)))
+
+(provide 'illusion)
+
+;;; illusion.el ends here
--- /dev/null
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-10-14.15
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+posix_glob=
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chmodcmd=$chmodprog
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c (ignored)
+-d create directories instead of installing files.
+-g GROUP $chgrpprog installed files to GROUP.
+-m MODE $chmodprog installed files to MODE.
+-o USER $chownprog installed files to USER.
+-s $stripprog installed files.
+-t DIRECTORY install into DIRECTORY.
+-T report an error if DSTFILE is a directory.
+--help display this help and exit.
+--version display version info and exit.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ shift
+ shift
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t) dstarg=$2
+ shift
+ shift
+ continue;;
+
+ -T) no_target_directory=true
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src ;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dstarg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dstarg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst ;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix=/ ;;
+ -*) prefix=./ ;;
+ *) prefix= ;;
+ esac
+
+ case $posix_glob in
+ '')
+ if (set -f) 2>/dev/null; then
+ posix_glob=true
+ else
+ posix_glob=false
+ fi ;;
+ esac
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob && set -f
+ set fnord $dstdir
+ shift
+ $posix_glob && set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # Now rename the file to the real destination.
+ { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
+ || {
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ if test -f "$dst"; then
+ $doit $rmcmd -f "$dst" 2>/dev/null \
+ || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
+ && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
+ || {
+ echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ else
+ :
+ fi
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ } || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- /dev/null
+= <<< %menu%
+ %"e"[®µ] %"c"[¿·µ¬] %"D"[Ê£À½] ¸¡º÷(%"s"[¸ÇÄê] %"g"[Àµµ¬] %"m"[roma] %"o"[¥ÐÆâ]) %":"[ºòÆü] %"."[º£Æü]
+ %"a"[°ìÍ÷] %"l"[ºÇ¶á] %"A"[Á°¸å] %"h"[ÍúÎò] %"y"[ͽÄê] %"t"[Todo] %"b"[Á´¥Ð] %"x"[mark] %"w"[¿ìÊâ] [ÀßÄê]
+ %"K"[Âꢬ] [̾¢¬] %"d"[Æü¢] %"T"[»þ¢] %"i"[¸°¢] %"r"[¹¹¿·] %"R"[menu ¹¹¿·] [menu ÊÔ½¸] [Á´¾Ã]
+-------------------------------------
+[ͽÄꡦTodo] ¡Ä ͽÄê@, ¡ºÀÚ! ¤ò %sdays ÆüÀè¤Þ¤Çɽ¼¨.
+¡ºÀÚ!, todo+, ³Ð½ñ-, ÊÝα~ ¤ò¾å°Ì %tnum ¸Ä¤Þ¤Çɽ¼¨.
+%reminder
+-------------------------------------
+ºÇ¶á¤Î¥á¥â
+%recent
+-------------------------------------
+¥é¥ó¥À¥à¥»¥ì¥¯¥È (ÉÔÍפʤé[menu ÊÔ½¸]¤Ç³ºÅö²Õ½ê¤òºï½ü¤·¤Æ¤¯¤À¤µ¤¤)
+%random
+-------------------------------------
+
+ͽÄꡦtodo ¤Î½ñ¼° (¼ÂºÝ¤ÏȾ³Ñ¤Ç)
+[2002-10-21]¡÷1 ͽÄê (ͽÄêɽ¤Ëɽ¼¨¡£¤â¤·¡÷3¤Ê¤é3Æü´Ö¤ÎͽÄê¡¢¤Ä¤Þ¤ê23Æü¤Þ¤Ç¤Î°ÕÌ£)
+[2002-10-21]¡Ü7 todo »ØÄêÆü¤Ë¤Ê¤Ã¤Æ¤«¤é7Æü´Ö¤«¤±¤Æ½ù¡¹¤ËÉ⤫¤Ó³¤±¤ë
+[2002-10-21]¡ª7 ¡ºÀÚ »ØÄêÆü¤Î7ÆüÁ°¤«¤é½ù¡¹¤ËÉ⤫¤Ó¡¢»ØÄêÆü°Ê¹ßÉ⤤äѤʤ·
+[2002-10-21]¡Ý1 ³Ð½ñ »ØÄêÆü¤ËÉ⤫¤Ó¾å¤¬¤ê¡¢°Ê¹ß1Æü¤«¤±¤Æñ°ÌÎ̤À¤±½ù¡¹¤ËÄÀ¤à
+[2002-10-21]¡Á30 ÊÝα »ØÄêÆü¤ËÉ⤫¤Ó¾å¤¬¤ê¡¢°Ê¹ß30Æü¼þ´ü¤ÇÉâ¤ÄÀ¤ß¤ò¤¯¤ê¤«¤¨¤¹
+[2002-10-21]¡¥ ºÑ¤ß ¾ï¤ËÄì
+(µ¹æ¤Î¸å¤Î¿ô»ú¤Ï¥Ç¥Õ¥©¥ë¥ÈÃÍ)
+
+³Ð¤¨Êý
+¡¦Í½Äê¤Ï¤½¤ÎÆü¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤ë¤«¤é@(at)
+¡¦³Ð½ñ¤ÏÄÀ¤ó¤Ç¤¤¤¯¤«¤é-
+¡¦todo¤ÏÉ⤫¤Ó¾å¤¬¤Ã¤Æ¤¯¤ë¤«¤é+
+¡¦¡ºÀڤϤ½¤ÎÆü¤ËÃí°Õ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤é!
+¡¦ÊÝα¤ÏÇÈÂǤĤ«¤é~
+¡¦ºÑ¤ß¤Ï½ª¤ï¤ê¤À¤«¤é.
+
+-------------------------------------
+
+[¡û¡û]¤Ï²¿? >>> %¥Ü¥¿¥ó¤ÎÀâÌÀ%
+¤³¤Î¥á¥Ë¥å¡¼¼«ÂΤòÊÔ½¸¤Ç¤¤Þ¤¹ >>> %¥á¥Ë¥å¡¼¤ÎÊÔ½¸¤Ë¤Ä¤¤¤Æ%
+¥á¥â¤¬Áý¤¨¤Æ¤¤¿¤é¡Ä >>> %¹â®²½¤Ë¤Ä¤¤¤Æ%
+
+
+= <<< %¥Ü¥¿¥ó¤ÎÀâÌÀ%
+
+¢¡ ºîÀ®
+
+[¿·µ¬] ¢ª ¿·µ¬¥á¥âºîÀ® (¸½¥ê¡¼¥¸¥ç¥ó¤¬¥¿¥¤¥È¥ë)
+[Ê£À½] ¢ª ¸½¥á¥â¤òÊ£À½ (½»½êÏ¿¥Æ¥ó¥×¥ì¡¼¥È¤Ê¤É¤ÎÍÑÅÓ¤òÁÛÄê)
+
+¢¡ °ìÍ÷
+
+[°ìÍ÷] ¢ª Á´¥á¥â¤Î°ìÍ÷
+[ºÇ¶á] ¢ª ºÇ¶á¤Î¥á¥â¤ÎÏ¢·ëɽ¼¨
+[Á°¸å] ¢ª Á°¸å¤Î¥á¥â (¸«¤Æ¤¿¥á¥â¤òÃæ¿´¤ËÁ´¥á¥â¤ÎÆüÉÕ½ç°ìÍ÷)
+* Âоݥե¡¥¤¥ë¤ò(ÊÔ½¸¥â¡¼¥É¤Ç)³«¤¤¤¿¾õÂÖ¤«¤é¥á¥Ë¥å¡¼¤ò¸Æ¤Ö¤³¤È
+[ÍúÎò] ¢ª ¸¡º÷ÍúÎò
+[ͽÄê] ¢ª ͽÄêɽ
+[todo] ¢ª todo °ìÍ÷
+
+¢¡ ¸¡º÷
+
+[Àµµ¬] ¢ª Àµµ¬É½¸½¤Î¸¡º÷
+* ´ðËÜŪ¤Ë¤ÏÂçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ʤ·
+ * ¡ÖWiki¡×¤Î¤è¤¦¤ËÌÀ¼¨Åª¤ËÂçʸ»ú¤ò»ØÄꤷ¤¿¤È¤¤Ï¶èÊÌ
+[¸ÇÄê] ¢ª ¥¡¼¥ï¡¼¥É¤òÊä´°ÆþÎϤ·¤Æ¸ÇÄêʸ»úÎó¤Î¸¡º÷
+[roma] ¢ª ¥í¡¼¥Þ»ú¸¡º÷ (migemo)
+[º£Æü] ¢ª º£Æü¤Î¥á¥â
+[ºòÆü] ¢ª ºòÆü¤Î¥á¥â
+
+¢¡ ÊÔ½¸: Âоݥե¡¥¤¥ë¤ò(ÊÔ½¸¥â¡¼¥É¤Ç)³«¤¤¤¿¾õÂÖ¤«¤é¥á¥Ë¥å¡¼¤ò¸Æ¤Ö¤³¤È
+
+[¹¹¿·] ¢ª ²¼Àþ¤ò°ú¤¤Ê¤ª¤¹
+[¸°¢] ¢ª ¥¡¼¥ï¡¼¥É¤òÊä´°ÆþÎϤ·¤ÆŽ¤ê¤Ä¤±
+* Tips: M-v ¤Ç¸õÊä°ìÍ÷¤Ë°Ü¤Ã¤Æ migemo ¸¡º÷¤¹¤ë¤È³Ú
+
+[Æü¢] ¢ª º£Æü¤ÎÆüÉÕ [yyyy-mm-dd] ¤òŽ¤ê¤Ä¤±
+[»þ¢] ¢ª º£Æü¤ÎÆü»þ [yyyy-mm-dd HH:MM] ¤òŽ¤ê¤Ä¤±
+[Âꢬ] ¢ª ¸½¥á¥â¤Î¥¿¥¤¥È¥ë¤ò kill ring ¤Ø (C-y ¤ÇŽ¤ê¤Ä¤±)
+* ¥¿¥¤¥È¥ë¤¬¤ß¤Ä¤«¤é¤Ê¤«¤Ã¤¿¤È¤¤Ï¥Õ¥¡¥¤¥ë̾
+[̾¢¬] ¢ª ¥Õ¥¡¥¤¥ë̾¤ò kill ring ¤Ø
+
+¢¡ ÆÃÊÌ
+
+[menu ¹¹¿·] ¢ª ¥á¥Ë¥å¡¼¤ÎͽÄêɽ¤Ê¤É¤ò¹¹¿·
+[menu ÊÔ½¸] ¢ª ¥á¥Ë¥å¡¼¤òÊÔ½¸
+[Á´¾Ã] ¢ª howm-mode ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¤¹¤Ù¤Æ¾Ã¤¹ (̤Êݸ¤Ï½ü¤¯)
+[¿ìÊâ] ¢ª ¥é¥ó¥À¥à¤Ë¥ê¥ó¥¯¤ò¤¿¤É¤Ã¤Æ¼«Æ°±ÜÍ÷. C-g ¤ÇÄä»ß.
+
+= <<< %¹â®²½¤Ë¤Ä¤¤¤Æ%
+
+¥á¥â¤¬Áý¤¨¤Æ¸¡º÷¤¬ÃÙ¤¯¤Ê¤Ã¤Æ¤¤¿¤é, ¹â®²½¤Î¤¿¤á¤Î¥ª¥×¥·¥ç¥óÀßÄê¤ò
+¸¡Æ¤¤·¤Æ¤¯¤À¤µ¤¤.
+
+ºÇ¤â¸ú²Ì¤¬Â礤¤¤Î¤Ï, ¸¡º÷¤Ë grep ¥³¥Þ¥ó¥É¤ò»È¤¦¤³¤È¤Ç¤¹.
+Unix ·Ï¤Îɸ½àŪ¤Ê´Ä¶¤Ê¤é, ¤¿¤¤¤Æ¤¤ÌäÂê¤Ê¤¯»È¤¨¤ë¤Ç¤·¤ç¤¦.
+¤½¤ì°Ê³°¤Î´Ä¶¤Ç¤Ï, ²¿¤é¤«¤Î½àÈ÷¤¬É¬Íפˤʤ뤫¤â¤·¤ì¤Þ¤»¤ó.
+
+³Æ´Ä¶¤Ç¶ñÂÎŪ¤Ë¤É¤¦¤¹¤ì¤Ð¤è¤¤¤«¤Ï¡Ä¾ðÊó¤ò¤ªÂÔ¤Á¤·¤Æ¤¤¤Þ¤¹.
+¡¦http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Windows
+¡¦http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus
+
+grep ¤Î»ÈÍѤòÀßÄꤹ¤ë¤Ë¤Ï,
+ M-x customize-variable howm-view-use-grep
+¤ÈÆþÎϤ¹¤ë¤«, ½é´ü²½¥Õ¥¡¥¤¥ë(.emacs Åù)¤ËľÀÜ
+ (setq howm-view-use-grep t)
+¤È½ñ¤¯¤«, ¤¢¤ë¤¤¤Ïº£¤³¤Î²èÌ̤ǡÖ%"!¡×¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤." %| %eval%(customize-variable 'howm-view-use-grep) %|
+
+¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï,
+[ÀßÄê] ¤«¤é¡ÖHowm Efficiency¡×¤Î¹àÌܤò»²¾È¤¯¤À¤µ¤¤.
+
+
+= <<< %¥á¥Ë¥å¡¼¤ÎÊÔ½¸¤Ë¤Ä¤¤¤Æ%
+[menu ÊÔ½¸] ¤Ç¤³¤Î¥á¥Ë¥å¡¼¤òÊÔ½¸
+[menu ¹¹¿·] ¤Ç¤³¤Î¥á¥Ë¥å¡¼¤ò¹¹¿·
+--------------------------------------------------------
+
+¥á¥Ë¥å¡¼¤Î½ñ¤Êý
+([menu ÊÔ½¸] ¾å¤Ç¥ê¥¿¡¼¥ó¤òá¤, ¸µ¥Õ¥¡¥¤¥ë¤òÆɤó¤Ç¤¯¤À¤µ¤¤)
+
+¢¡ ´ðËÜ
+¸«¤ì¤Ð¤ï¤«¤ë¤Ç¤·¤ç¤¦¤¬,
+¡¦[¡û¡û] ¤È½ñ¤¤¤¿½ê¤¬¥Ü¥¿¥ó
+¡¦¡óreminder ¤È(Ⱦ³Ñ¤Ç)½ñ¤¤¤¿½ê¤¬Í½Äêɽ¤È todo list
+¡¦¡órecent ¤È(Ⱦ³Ñ¤Ç)½ñ¤¤¤¿½ê¤¬, ºÇ¶á¤Î¥á¥â°ìÍ÷
+¡¦¡órandom ¤È(Ⱦ³Ñ¤Ç)½ñ¤¤¤¿½ê¤¬, ¥é¥ó¥À¥à¤Ê¥á¥â°ìÍ÷
+¤Ë¤Ê¤ê¤Þ¤¹.
+¤É¤³¤Ë½ñ¤¤¤Æ¤âµ¡Ç½¤·¤Þ¤¹¤«¤é, ʤ٤«¤¨¤ë¤Ê¤ê¤Ê¤ó¤Ê¤ê, ¤ª¹¥¤¤Ë¤É¤¦¤¾.
+¤è¤¯»È¤¦¥Õ¥¡¥¤¥ë¤ä goto link ¤â½ñ¤¤¤Æ¤ª¤±¤ÐÊØÍø¤«¤â.
+(Îã) file:///etc/services >>> wiki
+
+¢¡ ¥·¥ç¡¼¥È¥«¥Ã¥È
+%"hoge"[°ìÍ÷]
+¢¬¤³¤¦½ñ¤¤¤Æ¤ª¤¯¤È, ¡Öhoge[°ìÍ÷]¡×¤Èɽ¼¨¤µ¤ì, ¥¡¼ h ¤Ç°ìÍ÷¤òµ¯Æ°
+(Àµ³Î¤Ë¤Ï, (1) ÊĤ¸¡Ö"¡×¤Ø°ÜÆ° (2) ¼¡¤Î²¼Àþ¤Þ¤Ç¿Ê¤à (3) action-lock ȯư)
+%"fuga%" ¢« ¤³¤ó¤Ê¤Õ¤¦¤ËºÇ¸å¤Ë % ¤ò¤Ä¤±¤ë¤È, ¥¡¼ f ¤Ç¤½¤³¤Ë¥«¡¼¥½¥ë°ÜÆ°
+
+¢¡ lisper ¸þ¤±
+
+¡¦É½¼¨
+%here%howm-congrats-count ¢« ÊÑ¿ô howm-congrats-count ¤ÎÃͤòËä¤á¹þ¤ß
+%here%(howm-menu-search "¸¡º÷")
+¢¬(¡Ä) ¤Î·ë²Ì(¡Ö¸¡º÷¡×¤Î¸¡º÷·ë²Ì)¤òËä¤á¹þ¤ß
+¢¨ ¤¿¤À¤·, »È¤¦´Ø¿ô¤ÏÅÐÏ¿¤¬É¬Í× (¤ª¤Ã¤«¤Ê¤¤¤«¤é)
+(setq howm-menu-allow (append '(foo bar) howm-menu-allow)) ;; foo ¤È bar ¤òµö²Ä
+
+¡¦Æ°ºî
+S ¼°¤ò eval: %eval%(message (buffer-name))
+´Ø¿ô¤ò call-interactively: %call%find-file
+¢¨ ¤¤¤º¤ì¤â, ¥á¥Ë¥å¡¼¤ò¸Æ¤ÖÁ°¤Î¥Ð¥Ã¥Õ¥¡¤Çɾ²Á¤µ¤ì¤Þ¤¹
+
+¢¡ ÉԲĻë
+¡Ö¡ó|¡×¤È(Ⱦ³Ñ¤Ç)½ñ¤¯¤È, ²Ä»ë¡¦ÉԲĻë¤ò¥È¥°¥ë.
+¤³¤ó¤Ê¤Õ¤¦¤Ë ¢ª ¸«¤¨¤ë%|¸«¤¨¤Ê¤¤%|²Ä»ë%|ÉԲĻë¡Ä¹ÔËö¤Þ¤Ç
+(¹ÔËö¤¬ÉԲĻë¤À¤È, ²þ¹Ô¤â¾Ã¤¨¤Þ¤¹)
+
+¢¡ Ê£¿ô¥á¥Ë¥å¡¼
+¡Ö%¡û¡û%¡×¤Ø¤Î¥ê¥ó¥¯¤Ï, ¡Ö¡ã¡ã¡ã %¡û¡û%¡×¤ò¥á¥Ë¥å¡¼¥â¡¼¥É¤Ç³«¤¤Þ¤¹: >>> %menu%
+¿·µ¬¥á¥Ë¥å¡¼¤òÄɲä·¤¿¤¤¤È¤¤Ï [[%menu%]] ¤ÎÊý¤¬ÊØÍø¤Ç¤·¤ç¤¦ (¼«Æ°À¸À®¤¹¤ë¤Î¤Ç)
+»ØÄê¥Õ¥¡¥¤¥ë¤ò¥á¥Ë¥å¡¼¥â¡¼¥É¤Ç³«¤¯: %eval%(howm-menu-open "00000000-000000.txt")
--- /dev/null
+2011-01-01 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.txt: support new commands.
+
+2010-12-31 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.txt: use %reminder instead of %schedule and %todo.
+
+2005-12-09 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * Makefile.am (EXTRA_DIST): no need to install 0000-00-00-000000.howm.
+
+2005-11-19 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.howm: add "about acceleration".
+ thx > window16 san
+ http://d.hatena.ne.jp/window16/20051118
+
+2005-05-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.howm: added [Preference], %recent, %random
+
+2005-05-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.howm: bind R = [Update Menu]
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/672-673n
--- /dev/null
+EXTRA_DIST = 0000-00-00-000000.txt
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
--- /dev/null
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = ja
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/mkinstalldirs ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CVS = @CVS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EMACS = @EMACS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+extdir = @extdir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+howmdir = @howmdir@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+packagedir = @packagedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = 0000-00-00-000000.txt
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ja/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu ja/Makefile
+.PRECIOUS: Makefile
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am
+
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# 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, 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
+# 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 this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- /dev/null
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2006-05-11.19
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" "" $nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage"
+ exit $?
+ ;;
+ -m) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+ dirmode=$1
+ shift
+ ;;
+ --version)
+ echo "$0 $scriptversion"
+ exit $?
+ ;;
+ --) # stop option processing
+ shift
+ break
+ ;;
+ -*) # unknown option
+ echo "$usage" 1>&2
+ exit 1
+ ;;
+ *) # first non-opt arg
+ break
+ ;;
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+ 0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error. This is a problem when calling mkinstalldirs
+# from a parallel make. We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+ '')
+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ echo "mkdir -p -- $*"
+ exec mkdir -p -- "$@"
+ else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ test -d ./-p && rmdir ./-p
+ test -d ./--version && rmdir ./--version
+ fi
+ ;;
+ *)
+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+ test ! -d ./--version; then
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ else
+ # Clean up after NextStep and OpenStep mkdir.
+ for d in ./-m ./-p ./--version "./$dirmode";
+ do
+ test -d $d && rmdir $d
+ done
+ fi
+ ;;
+esac
+
+for file
+do
+ case $file in
+ /*) pathcomp=/ ;;
+ *) pathcomp= ;;
+ esac
+ oIFS=$IFS
+ IFS=/
+ set fnord $file
+ shift
+ IFS=$oIFS
+
+ for d
+ do
+ test "x$d" = x && continue
+
+ pathcomp=$pathcomp$d
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+ lasterr=
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
+ fi
+ fi
+
+ pathcomp=$pathcomp/
+ done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- /dev/null
+;;; riffle.el --- template of list browser with immediate preview
+;;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016
+;;; HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+;;; $Id: riffle.el,v 1.42 2012-12-29 08:57:18 hira Exp $
+;;;
+;;; 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 1, 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
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; The GNU General Public License is available by anonymouse ftp from
+;;; prep.ai.mit.edu in pub/gnu/COPYING. Alternately, you can write to
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+;;; USA.
+;;--------------------------------------------------------------------
+
+;;; Commentary:
+
+;; Not yet. See sample at the bottom of this file.
+
+;;; Code:
+
+(require 'cl-lib)
+(require 'gfunc)
+(require 'howm-common)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; customize
+
+;; These howm-view-xxx will be renamed to riffle-xxx in future.
+
+(defcustom howm-view-summary-window-size nil
+ "Size of summary window, or nil for half size."
+ :type '(radio (const :tag "Half" nil)
+ integer)
+ :group 'howm-list-bufwin)
+(defcustom howm-view-split-horizontally nil
+ "If non-nil, split window horizontally to show summary and contents."
+ :type 'boolean
+ :group 'howm-list-bufwin)
+(defcustom howm-view-keep-one-window nil
+ "If nil, split windows automatically for summary and contents
+even if you delete other windows explicitly."
+ :type 'boolean
+ :group 'howm-list-bufwin)
+(defcustom howm-view-pop-up-windows t
+ "If non-nil, override `pop-up-windows'."
+ :type 'boolean
+ :group 'howm-list-bufwin)
+
+;; clean me: This value is copied to howm-view-open-recenter.
+(defvar howm-view-search-recenter 5)
+
+;; experimental [2008-05-23]
+(defvar riffle-keep-window nil)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; internal variables and accessors
+
+(defvar *riffle-summary-check* t)
+
+(defvar riffle-name nil)
+(defvar riffle-item-list nil)
+(defvar riffle-type nil)
+(defvar riffle-summary-last-line nil)
+(defvar riffle-contents-end nil)
+(make-variable-buffer-local 'riffle-name)
+(make-variable-buffer-local 'riffle-item-list)
+(make-variable-buffer-local 'riffle-type)
+; update contents when changed
+(make-variable-buffer-local 'riffle-summary-last-line)
+; end points of items
+(make-variable-buffer-local 'riffle-contents-end)
+
+(defun riffle-name () riffle-name)
+(defun riffle-item-list () riffle-item-list)
+(defun riffle-set-item-list (item-list) (setq riffle-item-list item-list))
+
+;; clean me
+(defun riffle-p () riffle-type)
+(defun riffle-contents-first-time-p () (null riffle-contents-end))
+
+(defvar *riffle-preview-p* nil)
+(defun riffle-preview-p () *riffle-preview-p*)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; macro
+
+;; In xemacs, define-derived-mode makes the mode call
+;; derived-mode-merge-syntax-tables, which takes long time.
+;; To avoid it, we need ":syntax-table nil". Sigh...
+
+(defmacro riffle-define-derived-mode (child parent name
+ &optional docstring
+ &rest body)
+ (declare (indent 3))
+ `(define-derived-mode ,child ,parent ,name
+ ,docstring
+ :syntax-table nil
+ :abbrev-table nil
+ ,@body))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; generic function
+
+(defun riffle-type (&rest r)
+ riffle-type)
+(defvar riffle-dispatchers (list #'riffle-type))
+(put 'riffle-dispatchers 'risky-local-variable t)
+
+(gfunc-with riffle-dispatchers
+ (gfunc-def riffle-home (item))
+ (gfunc-def riffle-summary-item (item))
+ (gfunc-def riffle-contents-item (item))
+ (gfunc-def riffle-summary-set-mode ())
+ (gfunc-def riffle-contents-set-mode ())
+ (gfunc-def riffle-summary-name-format ())
+ (gfunc-def riffle-contents-name-format ())
+ (gfunc-def riffle-post-update (item)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; common
+
+(defcustom riffle-mode-hook nil
+ "Hook run at the end of function `riffle-mode'"
+ :type 'hook
+ :group 'howm-hook)
+
+(defvar riffle-mode-map nil)
+(put 'riffle-mode-map 'risky-local-variable t)
+(defvar riffle-mode-syntax-table (make-syntax-table))
+(defvar riffle-mode-abbrev-table nil)
+
+(defun riffle-mode ()
+ "not yet"
+ (setq major-mode 'riffle-mode
+ mode-name "Riffle")
+ (use-local-map riffle-mode-map)
+ (set-syntax-table riffle-mode-syntax-table)
+ (define-abbrev-table 'riffle-mode-abbrev-table nil)
+ (run-hooks 'riffle-mode-hook))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; summary
+
+(defun riffle-summary (&optional name item-list type background)
+ "Create summary buffer for NAME, ITEM-LIST, and TYPE.
+When NAME is nil, default values for them are selected.
+Created buffer is shown immediately as far as BACKGROUND is nil.
+This function returns effective value of ITEM-LIST."
+ (when (null name)
+ (setq name (riffle-name)
+ item-list (riffle-item-list)
+ type riffle-type))
+ (if (null item-list)
+ nil
+ (let ((d default-directory))
+ (riffle-setup-buffer #'riffle-summary-name-format name item-list type)
+ (setq default-directory d)
+ (when (not background)
+ (riffle-summary-subr name item-list))
+ item-list)))
+
+(defun riffle-summary-subr (name item-list)
+ (riffle-summary-set-mode)
+ (riffle-summary-show item-list)
+ (unless riffle-keep-window
+ (riffle-summary-check t)))
+
+(defun riffle-summary-show (item-list)
+ (buffer-disable-undo)
+ (setq buffer-read-only nil)
+ (erase-buffer)
+ (mapc 'riffle-summary-show-item item-list)
+ (set-buffer-modified-p nil)
+ (setq buffer-read-only t
+ truncate-lines t)
+ (goto-char (point-min))
+ (setq riffle-summary-last-line -777))
+
+(defun riffle-summary-show-item (item)
+ (insert (riffle-summary-item item) "\n"))
+
+(riffle-define-derived-mode riffle-summary-mode riffle-mode "RiffleS"
+ "not yet"
+ ;; make-local-hook is obsolete for emacs >= 21.1.
+ (when (fboundp 'make-local-hook) (make-local-hook 'post-command-hook))
+ (add-hook 'post-command-hook 'riffle-post-command t t))
+
+(defun riffle-post-command ()
+ (unless riffle-keep-window
+ (if *riffle-summary-check*
+ (riffle-summary-check)
+ (setq *riffle-summary-check* t))))
+
+(defun riffle-summary-current-item ()
+ (let ((n (riffle-line-number)))
+ (nth (1- n) (riffle-item-list))))
+
+(defun riffle-summary-check (&optional force)
+ (let ((keep-one howm-view-keep-one-window))
+ (when force
+ (riffle-refresh-window-configuration)
+ (setq keep-one nil))
+ (let ((n (riffle-line-number))
+ (howm-view-keep-one-window keep-one))
+ (when (or (not (= n riffle-summary-last-line))
+ force)
+ (setq riffle-summary-last-line n)
+ (let ((item (riffle-summary-current-item)))
+ (when (and item *riffle-summary-check*)
+ (riffle-summary-update item force)))))))
+
+(defun riffle-summary-update (item &optional new)
+ (unless (and howm-view-keep-one-window (one-window-p))
+ (riffle-summary-update-subr item new)))
+(defun riffle-summary-update-subr (item &optional new)
+ (let* ((*riffle-preview-p* t) ;; dirty
+ (vbuf (riffle-contents-buffer new))
+ (cwin (selected-window))
+ (pop-up-windows (or pop-up-windows howm-view-pop-up-windows))
+;; (section (riffle-controller 'section item))
+ (name (riffle-name))
+ (type riffle-type)) ;; be careful to buffer local var.
+ (riffle-pop-to-buffer vbuf howm-view-summary-window-size)
+ (riffle-contents name (list item) type default-directory)
+ (goto-char (point-min))
+ (let ((home (riffle-home item)))
+;; (let ((home (howm-view-item-home item)))
+ (when (numberp home)
+ (goto-char home)
+ (recenter howm-view-search-recenter))
+ (select-window cwin)
+ (riffle-post-update item))))
+;; (message "View: %s" section)
+
+(defun riffle-pop-window ()
+ (interactive)
+ (let ((r (one-window-p)))
+ (when r
+ (riffle-summary-check t))
+ r))
+
+(defun riffle-pop-or-scroll-other-window ()
+ (interactive)
+ (or (riffle-pop-window)
+ (scroll-other-window)))
+
+(defun riffle-toggle-window ()
+ (interactive)
+ (or (riffle-pop-window)
+ (delete-other-windows)))
+
+(defun riffle-summary-to-contents ()
+ (interactive)
+ (let ((b (current-buffer)))
+ (unless riffle-keep-window
+ (delete-other-windows)
+ (set-buffer b))
+ (let ((n (riffle-line-number)))
+ (riffle-contents (riffle-name) (riffle-item-list) riffle-type
+ default-directory)
+ (goto-char (riffle-contents-beginning (1- n))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; contents
+
+;; (defvar riffle-contents-mode-variant nil)
+
+(defun riffle-contents (name item-list type default-dir)
+ (if (null item-list)
+ (message "Empty.")
+ (progn
+ (riffle-setup-buffer #'riffle-contents-name-format name item-list type)
+ (setq default-directory default-dir)
+ (when (riffle-contents-first-time-p)
+ (riffle-contents-set-mode))
+;; (let ((cm (riffle-controller 'contents-mode)))
+;; (when (not (eq major-mode cm))
+;; (funcall cm)))
+ (riffle-contents-show item-list))))
+
+(riffle-define-derived-mode riffle-contents-mode riffle-mode "RiffleC"
+ "not yet"
+ )
+
+(defun riffle-contents-show (item-list)
+ (buffer-disable-undo)
+ (setq buffer-read-only nil)
+ (erase-buffer)
+ (setq riffle-contents-end
+ (mapcar (lambda (item) (riffle-contents-show-item item))
+ item-list))
+ (set-buffer-modified-p nil)
+ (setq buffer-read-only t)
+ (goto-char (point-min))
+ )
+
+(defun riffle-contents-show-item (item)
+ (insert (riffle-contents-item item))
+ (point))
+
+(defun riffle-contents-item-number (position)
+ (let ((rest riffle-contents-end)
+ (n 0))
+ (while (and rest (<= (car rest) position))
+ (setq rest (cdr rest)
+ n (+ n 1)))
+ (min n (1- (length riffle-contents-end))))) ;; for the last line
+
+(defun riffle-contents-current-item ()
+ (nth (riffle-contents-item-number (point)) (riffle-item-list)))
+
+(defun riffle-contents-beginning (n)
+ (nth n (cons 1 riffle-contents-end)))
+
+(defun riffle-contents-to-summary ()
+ (interactive)
+ (let ((n (riffle-contents-item-number (point))))
+ (riffle-summary (riffle-name) (riffle-item-list) riffle-type)
+; (howm-view-summary (riffle-name) (riffle-item-list))
+ (howm-goto-line (1+ n)))) ;; top = 1 for goto-line
+
+(defun riffle-contents-goto-next-item (&optional n)
+ (interactive "p")
+ (let* ((c (point))
+ ;; remember that riffle-contents-end has duplicats
+ (stops (cl-remove-duplicates
+ (sort `(1 ,c ,@(copy-sequence riffle-contents-end))
+ #'<)))
+ (pos (cl-position c stops))
+ (new (+ pos n)))
+ (cond ((< new 0)
+ (goto-char (point-min))
+ (error "Beginning of buffer"))
+ ((>= new (length stops))
+ (goto-char (point-max))
+ (error "End of buffer"))
+ (t
+ (goto-char (nth new stops))))))
+
+(defun riffle-contents-goto-previous-item (&optional n)
+ (interactive "p")
+ (riffle-contents-goto-next-item (- n)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; misc.
+
+(defun riffle-summary-buffer (&optional new)
+ (riffle-get-buffer (riffle-summary-name-format) nil new))
+(defun riffle-contents-buffer (&optional new)
+ (riffle-get-buffer (riffle-contents-name-format) nil new))
+;; (defun riffle-contents-buffer (&optional new)
+;; (riffle-get-buffer howm-view-contents-name nil new))
+;; (defun riffle-summary-buffer (&optional new)
+;; (riffle-get-buffer howm-view-summary-name nil new))
+(defun riffle-get-buffer (name-format &optional name new)
+ (let* ((bufname (format name-format (or name (riffle-name))))
+ (buf (get-buffer bufname)))
+ (when (and new buf)
+ (kill-buffer buf))
+ (get-buffer-create bufname)))
+
+(defun riffle-kill-buffer ()
+ (interactive)
+ (when (riffle-p)
+ (let* ((s (riffle-summary-buffer))
+ (c (riffle-contents-buffer))
+ (sw (get-buffer-window s)))
+ (when sw
+ (select-window sw))
+ (kill-buffer s)
+ (kill-buffer c)
+ (riffle-restore-window-configuration))))
+
+(defun riffle-setup-buffer (name-format-func name item-list type)
+ (let ((name-format (let ((riffle-type type))
+ (funcall name-format-func))))
+ (switch-to-buffer (riffle-get-buffer name-format name))
+ (setq riffle-type type)
+ (setq riffle-name name
+ riffle-item-list item-list)))
+
+(defun riffle-line-number (&optional pos)
+ (save-excursion
+ (save-restriction
+ (widen)
+ (when pos
+ (goto-char pos))
+ (let ((raw (count-lines (point-min) (point))))
+ (if (bolp)
+ (+ raw 1)
+ raw)))))
+
+(defun riffle-persistent-p (z)
+ "Return whether the buffer should be persistent or not.
+Note that the value of Z is funcall-ed if it is a function;
+consider to set `risky-local-variable' property.
+(cf)
+snap://Info-mode/elisp#File Local Variables
+snap://Info-mode/emacs#File Variables
+"
+ (riffle-get-value z))
+
+(defun riffle-get-value (z)
+ (if (functionp z)
+ (funcall z)
+ z))
+
+(defun riffle-restore-window-configuration ()
+ (riffle-refresh-window-configuration))
+
+(defun riffle-refresh-window-configuration ()
+;; (message "%s -- %s" (buffer-name) (if (riffle-p) t nil)) ;; debug
+ (if (riffle-p)
+ (riffle-setup-window-configuration)
+ (unless riffle-keep-window
+ (delete-other-windows))))
+
+(defvar riffle-window-initializer 'delete-other-windows)
+;; (setq riffle-window-initializer '(lambda () (pop-to-buffer nil)))
+(put 'riffle-window-initializer 'risky-local-variable t)
+(defun riffle-setup-window-configuration ()
+ (let ((orig (current-buffer))
+ (s (riffle-summary-buffer))
+ (c (riffle-contents-buffer)))
+ (when (functionp riffle-window-initializer)
+ (funcall riffle-window-initializer))
+ (switch-to-buffer c)
+ (riffle-pop-to-buffer c howm-view-summary-window-size)
+ (switch-to-buffer s)
+ (select-window (get-buffer-window orig))))
+
+(defun riffle-scroll-up (count)
+ (interactive "p")
+ (scroll-up count))
+(defun riffle-scroll-down (count)
+ (interactive "p")
+ (scroll-down count))
+(defun riffle-scroll-other-window (count)
+ (interactive "p")
+ (scroll-other-window count))
+(defun riffle-scroll-other-window-down (count)
+ (interactive "p")
+ (scroll-other-window-down count))
+
+(defvar even-window-heights nil) ;; xemacs doesn't have it.
+(defun riffle-pop-to-buffer (buf &optional size)
+ (if riffle-keep-window
+ (switch-to-buffer buf)
+ (progn
+ (when (one-window-p)
+ (split-window nil size howm-view-split-horizontally))
+ (let ((even-window-heights (if size
+ nil
+ even-window-heights))
+ ;; Don't split windows further even when
+ ;; riffle-pop-to-buffer is called twice.
+ (pop-up-windows nil))
+ (pop-to-buffer buf)))))
+
+;; 'Place' is line number at now
+(defun riffle-set-place (place)
+ (howm-goto-line place))
+(defun riffle-get-place (&optional point)
+ (riffle-line-number point))
+
+;; ;; needless?
+;; (defun riffle-jump-to-summary ()
+;; (interactive)
+;; (riffle-jump-to-buffer (riffle-summary-buffer)))
+;; (defun riffle-jump-to-contents ()
+;; (interactive)
+;; (riffle-jump-to-buffer (riffle-contents-buffer)))
+;; (defun riffle-jump-to-buffer (buf)
+;; (let ((w (get-buffer-window buf)))
+;; (if w
+;; (select-window w)
+;; (switch-to-buffer buf))))
+
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ;;; controller
+
+;; (defun riffle-make-controller (alist)
+;; alist)
+;; (defun riffle-send (object command &rest args)
+;; (if (eq command 'self)
+;; object
+;; (let ((func (cdr (assoc command object))))
+;; (apply func args))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; keymap
+
+;;; riffle-mode
+
+(let ((m (make-sparse-keymap)))
+ (define-key m "n" 'next-line)
+ (define-key m "p" 'previous-line)
+ (define-key m "?" 'describe-mode)
+ (define-key m "q" 'riffle-kill-buffer)
+ (setq riffle-mode-map m))
+
+;;; riffle-summary-mode
+
+(let ((m riffle-summary-mode-map))
+ (define-key m " " 'riffle-pop-or-scroll-other-window)
+ (define-key m [backspace] 'scroll-other-window-down)
+ (define-key m "\C-h" 'scroll-other-window-down)
+ (define-key m "j" 'riffle-scroll-other-window)
+ (define-key m "k" 'riffle-scroll-other-window-down)
+ (define-key m "@" 'riffle-summary-to-contents)
+ (define-key m "0" 'riffle-summary-to-contents)
+ (define-key m "1" 'delete-other-windows)
+ (define-key m "2" 'riffle-pop-window)
+ (define-key m "v" 'riffle-toggle-window)
+;; (define-key m "o" 'riffle-jump-to-contents)
+ )
+
+;;; riffle-contents-mode
+
+(let ((m riffle-contents-mode-map))
+ (define-key m " " 'scroll-up)
+ (define-key m [backspace] 'scroll-down)
+ (define-key m "\C-h" 'scroll-down)
+ (define-key m "j" 'riffle-scroll-up)
+ (define-key m "k" 'riffle-scroll-down)
+ (define-key m "@" 'riffle-contents-to-summary)
+ (define-key m "0" 'riffle-contents-to-summary)
+ (define-key m "\C-i" 'riffle-contents-goto-next-item)
+ (define-key m "\M-\C-i" 'riffle-contents-goto-previous-item)
+ (define-key m [tab] 'riffle-contents-goto-next-item)
+ (define-key m [(meta tab)] 'riffle-contents-goto-previous-item)
+;; (define-key m "o" 'riffle-jump-to-summary)
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; sample
+
+;; Sample code
+;; (For more realistic example, see "riffle" section in howm-view.el.)
+;; snap:///~/elisp/howm/howm-view.el#136:;;; riffle
+
+;; Usage:
+;; 1. M-x load-file <this file>
+;; 2. M-x riffle-sample
+;; 3. Move cursor. Type ? for help.
+
+(defvar riffle-sample-item-list
+ '(
+ ("foo1" "foo1 line1\nfoo1 line2\nfoo1 line3\nfoo1 line4\n")
+ ("foo2" "foo2 line1\nfoo2 line2\nfoo2 line3\nfoo2 line4\n")
+ ("bar1" "bar1 line1\nbar1 line2\nbar1 line3\nbar1 line4\n")
+ ("bar2" "bar2 line1\nbar2 line2\nbar2 line3\nbar2 line4\n")
+ ))
+
+(defvar riffle-sample-summary-name "sampleS:%s")
+(defvar riffle-sample-contents-name "sampleC:%s")
+(defvar riffle-sample-cursor-point 3)
+
+(defun riffle-home:sample (item)
+ riffle-sample-cursor-point)
+(defun riffle-summary-item:sample (item)
+ (car item))
+(defun riffle-contents-item:sample (item)
+ (concat (format "<%s>\n" (car item)) (cadr item) "\n"))
+(defun riffle-summary-set-mode:sample ()
+ (riffle-sample-summary-mode))
+(defun riffle-contents-set-mode:sample ()
+ (riffle-sample-contents-mode))
+(defun riffle-summary-name-format:sample ()
+ riffle-sample-summary-name)
+(defun riffle-contents-name-format:sample ()
+ riffle-sample-contents-name)
+(defun riffle-post-update:sample (item)
+ (message "%s" (car item)))
+
+(riffle-define-derived-mode riffle-sample-summary-mode riffle-summary-mode
+ "SampleS"
+ "Sample summary mode.
+key binding
+--- -------
+\\[next-line] Next item
+\\[previous-line] Previous item
+\\[riffle-pop-or-scroll-other-window] Pop and scroll contents
+\\[scroll-other-window-down] Scroll contents
+\\[riffle-scroll-other-window] Scroll contents one line
+\\[riffle-scroll-other-window-down] Scroll contents one line
+\\[riffle-summary-to-contents] Concatenate all contents
+
+\\[delete-other-windows] Delete contents window
+\\[riffle-pop-window] Pop contents window
+\\[riffle-toggle-window] Toggle contents window
+
+\\[describe-mode] This help
+\\[riffle-kill-buffer] Quit
+"
+ )
+
+(riffle-define-derived-mode riffle-sample-contents-mode riffle-contents-mode
+ "SampleC"
+ "Sample contents mode.
+key binding
+--- -------
+\\[next-line] Next line
+\\[previous-line] Previous line
+\\[scroll-up] Scroll up
+\\[scroll-down] Scroll down
+\\[riffle-scroll-up] Scroll one line up
+\\[riffle-scroll-down] Scroll one line down
+\\[riffle-contents-to-summary] Summary
+\\[riffle-contents-goto-next-item] Next item
+\\[riffle-contents-goto-previous-item] Previous item
+
+\\[describe-mode] This help
+\\[riffle-kill-buffer] Quit
+"
+ )
+
+(defun riffle-sample ()
+ (interactive)
+ (riffle-summary "sample-list" riffle-sample-item-list ':sample))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; provide
+
+(provide 'riffle)
+
+;;; riffle.el ends here
--- /dev/null
+2008-05-14 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * dot.emacs: set inhibit-startup-message
+
+2006-11-21 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * dot.emacs: set howm-history-file
+ thx > http://pc8.2ch.net/test/read.cgi/unix/1141892764/193-194n
+
+2005-12-09 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * dot.emacs: leave howm-menu-lang to auto-detection
+
+ * Makefile.am (EXTRA_DIST):
+ 0000-00-00-000000.howm is not needed any longer.
+
+2005-05-24 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * dot.emacs: howm-history-limit is set to be nil.
+ Otherwise, my private ~/.howm-history is shrunk.
+
+2005-05-11 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.howm: added [Preference], %recent, %random
+
+2005-05-06 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * 0000-00-00-000000.howm: bind R = [Update Menu]
+
+2005-02-25 HIRAOKA Kazuyuki <khi@users.sourceforge.jp>
+
+ * bug-report.txt: slightly modified expressions
+
--- /dev/null
+EXTRA_DIST = search.txt top.txt \
+ dot.emacs bug-report.txt
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
--- /dev/null
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = sample
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/mkinstalldirs ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CVS = @CVS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EMACS = @EMACS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+extdir = @extdir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+howmdir = @howmdir@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+packagedir = @packagedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = search.txt top.txt \
+ dot.emacs bug-report.txt
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sample/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu sample/Makefile
+.PRECIOUS: Makefile
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am
+
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null
+¢¨ make test ¤ä test.bat ¤Ç¤Ï, ¥Æ¥¹¥ÈÍѴĶ(¤Û¤Ü̵ÀßÄê¤Î emacs)¤¬µ¯Æ°¤·¤Þ¤¹.
+
+¥Ð¥°¤Î»ØŦ¤ò¤¯¤À¤µ¤ëÊý¤Ø:
+(1) ¤³¤Î¥Ð¥Ã¥Õ¥¡¤òÊݸ¤·¤Æ¤¯¤À¤µ¤¤.
+(2) ²¼¤Î¥Æ¥¹¥È¤ò¤·¤Æ¤¯¤À¤µ¤¤.
+(3) emacs ¤ò¤Õ¤Ä¤¦¤Ëµ¯Æ°¤·Ä¾¤·, Êݸ¤·¤¿¥Õ¥¡¥¤¥ë¤Î ¢ª ¤Ë·ë²Ì¤òµÆþ¤·¤Æ¤¯¤À¤µ¤¤.
+
+---------------------------------------------------------
+
+¢£ [¾É¾õ] ²¿¤ò¤·¤¿¤é, ¤É¤¦¤Ê¤Ã¤Æ¤Û¤·¤¤¤Î¤Ë, ¤É¤¦¤Ê¤Ã¤¿?
+
+°¤¤Îã ¡Ö¥«¥¿¥«¥Ê¤ò¸¡º÷¤¹¤ë¤È¡Ä¡×
+Îɤ¤Îã ¡ÖC-c , , g ¥´¥Þ RET ¤ÈÆþÎϤ¹¤ë¤È¡Ä¡× (¶ñÂÎŪ¤ÊÁàºî¼ê½ç¤ò¤ª´ê¤¤¤·¤Þ¤¹)
+
+¢ª
+
+¢£ [¥Æ¥¹¥È1] make test ¤ä test.bat ¤«¤é¤½¤ÎÁàºî¤ò¤·¤Æ¤â, ¾É¾õ¤¬½Ð¤ë?
+
+¢ª
+
+¢£ [¥Æ¥¹¥È2] ½Ð¤Ê¤¤¤Ê¤é, sample/dot.emacs ¤Ë²¿¤òÄɲä·¤¿¤éȯ¾É¤¹¤ë?
+
+¡Ö.emacs ¤«¤é´ØÏ¢¤·¤½¤¦¤Ê½ê¤ò¥³¥Ô¡¼ ¢ª ºÆÅÙ make test ¤ä test.bat ¢ª ¾É¾õ³Îǧ¡×
+¤Ë¤è¤ê, ȯ¾É¤µ¤»¤ëÀßÄê¤òõ¤Ã¤Æ¤¯¤À¤µ¤¤
+
+¢ª
+
+¢£ ¥Ð¡¼¥¸¥ç¥ó
+
--- /dev/null
+(setq load-path (cons default-directory load-path))
+(setq debug-on-error t)
+(setq inhibit-startup-message t)
+
+(setq howm-sample-directory (expand-file-name "sample/"))
+(setq howm-directory howm-sample-directory)
+(setq howm-keyword-file (expand-file-name ".howm-keys" howm-sample-directory))
+(setq howm-history-file (expand-file-name ".howm-history" howm-sample-directory))
+;(setq howm-menu-lang 'ja)
+(setq howm-history-limit nil) ;; Don't erase my ~/.howm-history.
+
+(require 'howm)
+(howm-test)
--- /dev/null
+= search
+
+<<< Á´Ê¸¸¡º÷
+
+°ìÍ÷ɽ¼¨ or Ï¢·ëɽ¼¨ (¥Ò¥Ã¥È¤·¤¿¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤òÁ´Éô¤Ä¤Ê¤¤¤Ç)
+
+¤³¤ì¤Î¤ª¤«¤²¤Ç, ÃÇÊÒŪ¤Ê¥á¥â¤ò¤Ð¤ó¤Ð¤ó¤È¤ì¤ë :-)
+
+¢¨ grep -r ¤Ã¤Æ¤±¤Ã¤³¤¦Â®¤¤. ¥á¥â¥Õ¥¡¥¤¥ë 1300 ¸Ä¤Ç¤â 1 É䫤«¤é¤ó.
+
+¢ª top ¥á¥â¤ËÌá¤ë
+
+
--- /dev/null
+= top
+
+²¼Àþ¤¬¥ê¥ó¥¯. ¥«¡¼¥½¥ëÃÖ¤¤¤Æ [return] ¤Ç³ºÅö¥Õ¥¡¥¤¥ë¤Ë¥¸¥ã¥ó¥×!
+
+¡¦goto ¥ê¥ó¥¯(¥Õ¥¡¥¤¥ë): >>> search.txt
+¡¦goto ¥ê¥ó¥¯(ʸ»úÎ󸡺÷): >>> ÃÇÊÒŪ¤Ê¥á¥â¤ò¤Ð¤ó¤Ð¤ó
+¡¦come-from ¥ê¥ó¥¯: <<< top ¥á¥â
+
+goto / come-from ¥ê¥ó¥¯¤Ï, ¼Â¤ÏÁ´Ê¸¸¡º÷¤Î¥·¥ç¡¼¥È¥«¥Ã¥È
+
+¢¨Á´ÂΤνñ¼°¤Ï¼«Í³. ¥ê¥ó¥¯¤Î½ñ¼°¤âÊѹ¹²Ä. ¤Ù¤¿¥Æ¥¥¹¥È¤Ð¤ó¤¶¤¤.
+
+= title1
+[2006-11-10 13:19]
+body1
+
+=
+[2004-12-15 13:19]
+body2
+
+= title3
+[2004-12-15 13:19]
+body3
+
+= ¥¿¥¤¥È¥ë1
+
+ËÜʸ1 [2004-07-18]
+
+[2007-03-02]@ ¤Û¤²
+[2007-03-03]@ ¤Û¤²
+[2007-03-04]@ ¤Û¤²
+[2008-03-05]@ ¤Û¤²
+[2008-03-06]@ ¤Û¤²
+[2008-03-07]@ ¤Û¤²
+[2008-03-08]@ ¤Û¤²
+[2008-03-09]@ ¤Û¤²
+[2008-03-10]@ ¤Û¤²
+[2008-03-11]@ ¤Û¤²
+[2008-03-12]@ ¤Û¤²
+[2008-03-13]@ ¤Û¤²
+[2008-03-14]@ ¤Û¤²
+[2008-03-15]@ ¤Û¤²
+[2008-03-15 23:59]@ ¤Û¤²
+[2008-03-16]@ ¤Û¤²
+[2008-03-17]@ ¤Û¤²
+[2008-03-18]@ ¤Û¤²
+[2008-03-19]@ ¤Û¤²
+[2008-03-20]@ ¤Û¤²
+[2008-04-01]@ ¤Û¤²
+[2008-04-02]@ ¤Û¤²
+[2008-02-24]+ piyo
+[2008-02-25]+ piyo
+[2008-02-26]+ piyo
+[2008-02-27]+ piyo
+[2008-02-14]. [2008-02-28]:+ piyo
+[2008-04-01]+ piyo
+[2008-04-02]+ piyo
+[2008-04-03]+ piyo
+[2008-04-04]+ piyo
+[2008-04-05]+ piyo
+[2008-02-15]. [2008-04-06]:+ piyo
+[2008-04-07]+ piyo
+[2008-04-08]+ piyo
+[2008-04-09]+ piyo
+[2008-04-10]+ piyo
+[2009-06-05]! bar
+[2009-06-06]! bar
+[2009-06-07]! bar
+[2009-06-08]! bar
+[2009-06-09]! bar
+[2009-06-10]! bar
+[2009-06-11]! bar
+[2009-06-12]! bar
+
+= ¥¿¥¤¥È¥ë2
+
+ËÜʸ2 [2004-07-17]
+
+FOO
+Foo
+foo
+http://foo/bar/baz.html
+>>> ../doc/s-screen-shot.png
+hoge >>> foo >>> bar >>> baz > qux
+>>> top.txt
+>>> /tmp/
+[2005-01-16]&3 aaa
+[2005-01-28]&7 bbb'
+[2005-01-25]&7 bbb
+[2005-01-08]&22 ccc
--- /dev/null
+REM $Id: test.bat,v 1.2 2010-05-05 13:18:39 hira Exp $
+
+REM --- Edit HOWM_EMACS to point your emacs/meadow. ---
+set HOWM_EMACS=d:/mdw/bin/meadow
+
+set HOWM_TEST=bat
+start "howm test" %HOWM_EMACS% -q --no-site-file -l sample/dot.emacs