pax_global_header00006660000000000000000000000064145442260760014524gustar00rootroot0000000000000052 comment=fc61c312be7cd23c654a02f1f81355d562cd627e kaorahi-howm-fc61c31/000077500000000000000000000000001454422607600145225ustar00rootroot00000000000000kaorahi-howm-fc61c31/.gitignore000066400000000000000000000001121454422607600165040ustar00rootroot00000000000000*.elc *.tar.gz Makefile config.log config.status elc-stamp autom4te.cache kaorahi-howm-fc61c31/AUTHORS000066400000000000000000000000001454422607600155600ustar00rootroot00000000000000kaorahi-howm-fc61c31/COPYING000066400000000000000000000431111454422607600155550ustar00rootroot00000000000000 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. 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.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other 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. 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 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. Copyright (C) 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. , 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. kaorahi-howm-fc61c31/ChangeLog000066400000000000000000002401331454422607600162770ustar00rootroot000000000000002023-12-31 HIRAOKA Kazuyuki * configure.ac: version 1.5.1 2023-12-21 HIRAOKA Kazuyuki * README.md: add link to English tutorial thx > Andrei Sukhovskii san (qojop at tuta.io) 2023-12-15 HIRAOKA Kazuyuki * configure.ac: version 1.5.1-snapshot6 * howm-vars.el (howm-iigrep-show-what): change default value from "Off" to "Counts" 2023-12-14 HIRAOKA Kazuyuki * howm-misc.el (howm-narrow-to-memo, howm-toggle-narrow): add docstrings as a workaround for a possible bug of disabled-command-function in emacs-29 thx > Andrei Sukhovskii san (qojop at tuta.io) 2023-12-03 HIRAOKA Kazuyuki * README.md: add link to YouTube video thx > Raoul Comninos san (revcomninos at gmail.com) 2023-07-30 HIRAOKA Kazuyuki * howm.el.in: update author email 2023-07-30 HIRAOKA Kazuyuki * README.md: add link to Russian manual thx > Andrei Sukhovskii san (qojop at tuta.io) 2023-07-15 HIRAOKA Kazuyuki * configure.ac: version 1.5.1-snapshot5 * howm-misc.el (howm-remember-submit): make the blank line removable after the input text in howm-remember thx > Andrei Sukhovskii san (qojop at tuta.io) * howm-vars.el (howm-remember-insertion-format): ditto 2023-07-01 HIRAOKA Kazuyuki * iigrep.el: avoid warning in byte-compilation "... is not known to be defined." * howm-view.el: fix issue on dired-x thx > Andrei Sukhovskii san (qojop at tuta.io) 2023-02-18 HIRAOKA Kazuyuki * configure.ac: version 1.5.1-snapshot4 2023-02-18 HIRAOKA Kazuyuki * howm-view.el (howm-view-toggle-uniq): fix buggy "u" key By "C-c , s foo RET u C-c , s bar RET u", one got the old "foo" result. thx > Andrei Sukhovskii san (qojop at tuta.io) 2023-02-16 HIRAOKA Kazuyuki * configure.ac: version 1.5.1-snapshot3 2023-02-16 HIRAOKA Kazuyuki * howm-mkmenu.el (howm-mkmenu-rules): use UTF-8 for *-ja.el ref. https://osdn.net/projects/howm/ticket/47364 * howm-lang-ja.el: converted to UTF-8 * howm-menu-ja.el: ditto. 2023-01-29 HIRAOKA Kazuyuki * configure.ac: version 1.5.1-snapshot2 2023-01-28 HIRAOKA Kazuyuki * howm-view.el (howm-sort-items-by-name, howm-sort-items-by-numerical-name): fix "No match" thx > Andrei Sukhovskii san (qojop at tuta.io) 2022-12-27 HIRAOKA Kazuyuki * configure.ac: version 1.5.1-snapshot1 2022-12-27 HIRAOKA Kazuyuki * configure.ac: version 1.5.0 * howm-vars.el (howm-iigrep-show-what): disable iigrep by default for backward compatibility 2022-12-10 HIRAOKA Kazuyuki * configure.ac: version 1.4.9-snapshot3 * iigrep.el: new file import iigrep for incremental search messages http://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?IncrementalGrep http://howm.sourceforge.jp/a/iigrep.el * riffle.el (riffle-summary-update, riffle-pop-window, riffle-pop-to-buffer): fix: failed to split window when minibuffer is active 2022-08-23 HIRAOKA Kazuyuki * howm-mode.el (howm-search, howm-list-migemo): use Romaji for buffer names in migemo search 2022-08-15 HIRAOKA Kazuyuki * configure.ac: version 1.4.9-snapshot2 2022-08-15 HIRAOKA Kazuyuki * howm-view.el (howm-sort-items): fix broken macro (worked accidentally) 2022-08-15 HIRAOKA Kazuyuki * howm-view.el (howm-view-toggle-uniq): "uniq" is now togglable thx > Andrei Sukhovskii san (qejep at posteo.net) 2022-08-15 HIRAOKA Kazuyuki * howm-view.el (howm-view-filter-methods): revive "uniq" after "f" (filter) thx > Andrei Sukhovskii san (qejep at posteo.net) 2021-12-30 HIRAOKA Kazuyuki * configure.ac: version 1.4.9-snapshot1 2021-12-30 HIRAOKA Kazuyuki * configure.ac: version 1.4.8 * howm.el.in: update copyright years 2021-12-28 HIRAOKA Kazuyuki * configure.ac: version 1.4.8-snapshot3 2021-04-29 HIRAOKA Kazuyuki * howm-mode.el (howm-mode): update define-minor-mode for emacs 28.1 thx > U5948U5e7eU4e43 https://twitter.com/U5948U5e7eU4e43/status/1387373441582387209 http://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=2fb271ca35ff96540c0940b0ea5281bdaac953ec * action-lock.el (action-lock-mode): ditto. * illusion.el (illusion-mode): ditto. 2021-04-28 HIRAOKA Kazuyuki * howm-view.el (howm-view-summary-mode): add TAB and M-TAB to docstring 2021-02-17 HIRAOKA Kazuyuki * configure.ac: version 1.4.8-snapshot2 * cheat-font-lock.el (cheat-font-lock-mode, cheat-font-lock-fontify): fix incomplete font-lock after save 2020-12-31 HIRAOKA Kazuyuki * configure.ac: version 1.4.8-snapshot1 2020-12-31 HIRAOKA Kazuyuki * configure.ac: version 1.4.7 * howm.el.in: update copyright years 2020-12-29 HIRAOKA Kazuyuki * howm-mode.el (howm-template-title): delete obsolete comment * cheat-font-lock.el (cheat-font-lock-fontify): fix warning on font-lock-fontify-buffer in byte compiling 2020-10-15 HIRAOKA Kazuyuki * configure.ac: set version as 1.4.7-snapshot2 2020-09-14 HIRAOKA Kazuyuki * howm-common.el (howm-call-process-last-command): fix 'invalid-read-syntax "#"' in docstring 2018-09-29 HIRAOKA Kazuyuki * configure.ac: set version as 1.4.7-snapshot1 2019-12-31 HIRAOKA Kazuyuki * configure.ac: version 1.4.6 2019-08-18 HIRAOKA Kazuyuki * configure.ac: set version as 1.4.6-snapshot3 * howm-common.el (howm-decode-time): fix for new decode-time thx > U5948U5e7eU4e43 https://twitter.com/U5948U5e7eU4e43/status/1162732269347336193 http://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=b06917a4912a60402025286d07d4a195749245c4 2018-12-31 HIRAOKA Kazuyuki * configure.ac: version 1.4.5 2018-09-29 HIRAOKA Kazuyuki * configure.ac: set version as 1.4.5-snapshot3 2018-09-29 HIRAOKA Kazuyuki * update autotools 2018-09-27 HIRAOKA Kazuyuki * howm-mode.el (howm-migemo-get-pattern, howm-migemo-client, howm-migemo-client-option): support cmigemo as an alternative to migemo-client 2018-03-31 HIRAOKA Kazuyuki * howm-mode.el: fix wrong warning "Requiring howm-mode is obsolete" 2018-02-25 HIRAOKA Kazuyuki * configure.ac: set version as 1.4.5-snapshot2 2018-02-23 HIRAOKA Kazuyuki * howm-menu-fr.el: translate menu documents to French thx > Xavier Maillard san (xavier at maillard.im) 2018-02-13 HIRAOKA Kazuyuki * howm-vars.el (howm-menu-lang): fix "Lisp error: (void-function caddr)" thx > dareka (2018-02-13 13:51:08) http://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste 2018-02-12 HIRAOKA Kazuyuki * howm-lang-fr.el: added for French menu thx > Yassine-san https://osdn.net/projects/howm/lists/archive/eng/2018/000136.html http://piratepad.net/ZNywUOscRL * howm-vars.el (howm-menu-lang): add 'fr' for French menu * howm-mkmenu.el (howm-mkmenu-rules): ditto. * howm.el.in: ditto. * configure.ac: ditto. * Makefile.am: ditto. 2018-01-02 HIRAOKA Kazuyuki * ChangeLog: update URL 2018-01-02 HIRAOKA Kazuyuki * howm.el.in: update copyright years and email 2017-12-25 HIRAOKA Kazuyuki * howm.el.in: use @VERSION@ macro for howm-version and MELPA * howm-version.el.in: deleted 2017-01-01 HIRAOKA Kazuyuki * howm.el: update copyright years 2016-12-31 HIRAOKA Kazuyuki * configure.ac: version 1.4.4 2016-09-28 HIRAOKA Kazuyuki * howm-date.el: extend the option howm-insert-date-future. thx > Albert-san (areiner at tph.tuwien.ac.at) https://osdn.jp/projects/howm/lists/archive/eng/2016/000118.html (howm-action-lock-date-future): new option (howm-action-lock-date): support howm-action-lock-date-future (howm-datestr-expand): new value 'closer for FUTURE-P * howm-common.el (howm-time-difference-second): support (HIGH LOW) without milliseconds for howm-datestr-expand 2016-04-05 HIRAOKA Kazuyuki * howm.el: modify header comments for MELPA ref. `Info(elisp) D.8 Conventional Headers for Emacs Libraries` thx > Yuki Inoue san (inouetakahiroki at gmail.com) 2016-01-01 HIRAOKA Kazuyuki * configure.ac: test version 2016-01-01 HIRAOKA Kazuyuki * 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 * 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 * howm.el: update copyright years 2015-12-31 HIRAOKA Kazuyuki * howm.el: use cl-lib instead of cl for avoiding warnings * howm-cl.el: howm-cl-* are now useless. 2015-12-31 HIRAOKA Kazuyuki * 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 * configure.ac: version 1.4.3 2015-12-27 HIRAOKA Kazuyuki * configure.ac: version 1.4.3rc1 * howm-mode.el (howm-list-around): fix. howm-list-title didn't work. 2015-05-24 HIRAOKA Kazuyuki * configure.ac: test version * howm-common.el (howm-subdirectory-p): check "local/remote" for avoiding unnecessary password prompting (cf. https://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 update autotools 2015-01-31 HIRAOKA Kazuyuki * 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 * configure.in: version 1.4.2 2013-12-25 HIRAOKA Kazuyuki * configure.in: version 1.4.2rc1 2013-03-21 HIRAOKA Kazuyuki * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste 2013-03-18 HIRAOKA Kazuyuki * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste 2013-01-03 HIRAOKA Kazuyuki test version - update copyright years - use "declare" instead of "lisp-indent-hook" 2012-12-30 HIRAOKA Kazuyuki test version 2012-12-29 HIRAOKA Kazuyuki * 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 * 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 * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste (howm-item-list-filter): ditto 2012-12-27 HIRAOKA Kazuyuki * 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 * 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 * 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 * configure.in: test version 2012-09-10 HIRAOKA Kazuyuki * 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 * configure.in: version 1.4.0 2012-02-18 HIRAOKA Kazuyuki * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste (howm-if-unbound): ditto. 2012-01-01 HIRAOKA Kazuyuki * howm.el: update copyright years 2011-12-28 HIRAOKA Kazuyuki * 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 * riffle.el (riffle-pop-to-buffer): fix. windows were split recursively if frame size is large. thx > dareka https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste 2011-03-20 HIRAOKA Kazuyuki * configure.in: test version 2011-03-11 HIRAOKA Kazuyuki * configure.in: fix warning "suspicious cache-id" in autoconf. 2011-03-10 HIRAOKA Kazuyuki * 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 * 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 * configure.in: test version 2011-01-13 HIRAOKA Kazuyuki * howm-vars.el (howm-define-risky-command): avoid old-style-backquotes warning when *.elc is loaded. thx > dareka https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste 2011-01-06 HIRAOKA Kazuyuki * 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 * howm-mode.el (howm-initialize-buffer): use howm-funcall-if-defined. * riffle.el (riffle-summary-mode): ditto. 2011-01-02 HIRAOKA Kazuyuki * howm-backend.el: delete rast. 2011-01-02 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 * 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 * configure.in: version 1.3.9 2010-12-29 HIRAOKA Kazuyuki * configure.in: version 1.3.9rc1 2010-07-02 HIRAOKA Kazuyuki * 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 * 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 * configure.in: version 1.3.8 2009-08-08 HIRAOKA Kazuyuki * howm-vars.el (howm-excluded-dirs): add ".git". 2009-07-23 HIRAOKA Kazuyuki * 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 * 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 * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?Windows * howm-vars.el (howm-command-length-limit): new option 2009-05-30 HIRAOKA Kazuyuki * 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 https://howm.osdn.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 * riffle.el (riffle-line-number): widen before counting. 2009-05-02 HIRAOKA Kazuyuki * 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 * configure.in: test version 2009-03-21 HIRAOKA Kazuyuki * 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 * 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 * configure.in: version 1.3.7 * howm-misc.el (howm-basic-save-buffer): fix. inhibit "Wrote ..." message. 2008-11-05 HIRAOKA Kazuyuki * configure.in: version 1.3.7rc4 * howm-view.el (howm-view-summary-item): fix. use full path for equivalence check thx > dareka https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste 2008-10-07 HIRAOKA Kazuyuki * 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 * 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 * howm-misc.el (howm-configuration-for-major-mode): modify sample for "defun*" 2008-08-27 HIRAOKA Kazuyuki * 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 * configure.in: version 1.3.7rc1 2008-08-09 HIRAOKA Kazuyuki * howm-vars.el (howm-normalizer): use original names instead of aliases 2008-08-05 HIRAOKA Kazuyuki * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste 2008-07-25 HIRAOKA Kazuyuki * configure.in: test version 2008-07-24 HIRAOKA Kazuyuki * 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 * 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 * 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 * configure.in: test version 2008-07-12 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * howm-misc.el (howm-test): add docstring. thx > dareka https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReport 2007-11-07 HIRAOKA Kazuyuki * configure.in: test version 2007-11-06 HIRAOKA Kazuyuki * 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 * configure.in: test version * howm-view.el (howm-view-sort/filter-doit): fix. return list of items for backward compatibility. thx > taku-san https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?HidePrivateReminder 2007-05-28 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 * configure.in: test version 2007-04-12 HIRAOKA Kazuyuki * 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 * 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 * 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 * howm-misc.el (howm-truncate-string): fix. correct docstring 2007-04-02 HIRAOKA Kazuyuki * 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 * 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 * 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 * configure.in: test version 2007-03-22 HIRAOKA Kazuyuki * 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 * 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 * honest-report.el (honest-report-version-assoc): report environment variables "LANG" etc. 2006-12-31 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 * 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 * howm-common.el (howm-message-nolog): message without logging * howm-view.el (riffle-post-update:howm): ditto. 2006-10-25 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 * 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 * 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 * configure.in: test version * howm-misc.el (howm-bayesian-set): new command. 2006-06-27 HIRAOKA Kazuyuki * 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 * 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 https://howm.osdn.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 * COPYING: fix. obsolete address of FSF is corrected. thx > Fujimura Yuki san 2006-06-05 HIRAOKA Kazuyuki * configure.in: version 1.3.3 2006-05-20 HIRAOKA Kazuyuki * configure.in: version 1.3.3rc1 2006-05-15 HIRAOKA Kazuyuki * configure.in: test version 2006-05-13 HIRAOKA Kazuyuki * 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 * 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 * configure.in: test version 2006-05-01 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 * 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 * illusion.el: require easy-mmode explicitly * honest-report.el (honest-report-window-list): support emacs20 (and meadow-1.15). 2006-03-12 HIRAOKA Kazuyuki * configure.in: test version 2006-03-11 HIRAOKA Kazuyuki * 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 * configure.in: test version 2006-02-02 HIRAOKA Kazuyuki * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus http://noir.s7.xrea.com/archives/000136.html 2006-01-23 HIRAOKA Kazuyuki * 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 * configure.in: test version 2006-01-18 HIRAOKA Kazuyuki * howm-backend.el (howm-page-viewer:file): list files in directory in contents buffer. 2006-01-17 HIRAOKA Kazuyuki * 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 * 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 * 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 * configure.in: test version 2006-01-06 HIRAOKA Kazuyuki * 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 * 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 * configure.in: test version (packagedir): fix lispdir for xemacs with packagedir 2005-12-09 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 * howm-vars.el (howm-mode-off-hook): fix. remove duplicated defcustom. thx > TAKEMURA Masayuki san. ICG04984@nifty.com 2005-11-26 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 * configure.in: test version * howm-menu.el (howm-menu-list-action): fix. history list was broken. 2005-11-05 HIRAOKA Kazuyuki * 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 * 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 * configure.in: version 1.3.2rc4 2005-10-25 HIRAOKA Kazuyuki * howm-vars.el (howm-view-dired-keep-cursor): new option. thx > 797 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReport 2005-10-24 HIRAOKA Kazuyuki * configure.in: version 1.3.2rc3 something was wrong in 'cvs commit' of rc2. 2005-10-20 HIRAOKA Kazuyuki * configure.in: version 1.3.2rc2 * howm-view.el (howm-view-dired): fix. require dired-vir for xemacs, and remove duplicates. thx > 797 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReport 2005-10-16 HIRAOKA Kazuyuki * configure.in: version 1.3.2rc1 2005-10-15 HIRAOKA Kazuyuki * 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 * 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 * configure.in: test version 2005-09-27 HIRAOKA Kazuyuki * howm-backend.el (howm-occur): new command 2005-09-26 HIRAOKA Kazuyuki * howm-vars.el (howm-view-contents-limit): default is changed to 10000 2005-09-07 HIRAOKA Kazuyuki * action-lock.el (action-lock-open-regexp): include / at the end (action-lock-browse-regexp): ditto 2005-09-06 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReport * howm-date.el (howm-action-lock-date-search): add `howm-set-command'. 2005-08-24 HIRAOKA Kazuyuki * howm-view.el: add (require 'riffle) thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/782 2005-08-17 HIRAOKA Kazuyuki * configure.in: version 1.3.1 2005-08-13 HIRAOKA Kazuyuki * 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 * 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 * howm-view.el (howm-view-title-skip-regexp): new option 2005-08-09 HIRAOKA Kazuyuki * howm-misc.el (howm-bug-shot): new command for bug report 2005-08-08 HIRAOKA Kazuyuki * 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 * configure.in: test version * riffle.el (riffle-define-derived-mode): defined to avoid slow down in xemacs. 2005-08-02 HIRAOKA Kazuyuki * 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 * configure.in: version 1.3.0rc5 2005-07-27 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 * 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 * howm-vars.el (howm-content-from-region): fix. Labels are corrected. 2005-07-11 HIRAOKA Kazuyuki * configure.in: version 1.3.0rc3 2005-07-08 HIRAOKA Kazuyuki * 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 * configure.in: version 1.3.0rc2 2005-06-25 HIRAOKA Kazuyuki * howm-vars.el (howm-menu-lang): check locale to select default language. 2005-06-21 HIRAOKA Kazuyuki * configure.in: version 1.3.0rc1 2005-06-17 HIRAOKA Kazuyuki * 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 * 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 > https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?Comment 2005-06-10 HIRAOKA Kazuyuki * configure.in: test version 2005-06-09 HIRAOKA Kazuyuki * 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 * configure.in: test version 2005-06-07 HIRAOKA Kazuyuki * 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 * 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 * configure.in: test version 2005-06-01 HIRAOKA Kazuyuki * 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 * configure.in: test version 2005-05-30 HIRAOKA Kazuyuki * 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 * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?LinuxZaurus 2005-05-27 HIRAOKA Kazuyuki * 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 * howm-vars.el (howm-action-lock-forward-save-buffer): 'defcustom'ed 2005-05-24 HIRAOKA Kazuyuki * 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 * 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 * 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 * configure.in: test version 2005-05-19 HIRAOKA Kazuyuki * 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 * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReport 2005-05-17 HIRAOKA Kazuyuki * 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 * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?Idea 2005-05-15 HIRAOKA Kazuyuki * 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 * 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 * howm-vars.el (howm-excluded-file-regexp): fix: wrong const values 2005-05-12 HIRAOKA Kazuyuki * howm-view.el (howm-item-list-rangeset): add doc-str around this func 2005-05-11 HIRAOKA Kazuyuki * 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 * 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 * 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 * 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 > https://howm.osdn.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 * 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 * configure.in: version 1.2.2 2005-04-29 HIRAOKA Kazuyuki * 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 * 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 * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReport 2005-04-24 HIRAOKA Kazuyuki * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReport 2005-04-23 HIRAOKA Kazuyuki * 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 https://howm.osdn.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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?MaxSpecpdlSize * Makefile.am (EXTRA_DIST): test.bat was not included in tar.gz 2005-04-15 HIRAOKA Kazuyuki * 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 * cheat-font-lock.el: use old code for emacs20 New code may make howm-view-summary-open too slow. 2005-04-02 HIRAOKA Kazuyuki * 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 * howm-menu.el (howm-menu-search): embed search result into menu 2005-03-27 HIRAOKA Kazuyuki * 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 * howm-view.el (howm-view-filter-by-contents): support C-u (= reject) 2005-03-17 HIRAOKA Kazuyuki * howm-view.el (howm-view-contents-item): fix. doubly displayed when matched to the last line of paragraph 2005-03-09 HIRAOKA Kazuyuki * howm-common.el (howm-time-difference-second): omit microsecond * howm-misc.el (howm-elp): initialize profiler 2005-03-08 HIRAOKA Kazuyuki * test.bat: invoke test environment for win 2005-03-03 HIRAOKA Kazuyuki * howm-misc.el (howm-random-walk-text): clean (howm-random-walk): kill old buffers after jump 2005-03-02 HIRAOKA Kazuyuki * howm-misc.el (howm-random-walk): automatic random walk 2005-02-28 HIRAOKA Kazuyuki * howm-mode.el (howm-list-normalize): fix. error when '[hoge' is searched. 2005-02-25 HIRAOKA Kazuyuki * 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 * howm-mode.el (howm-keyword-list): never return "" 2005-02-23 HIRAOKA Kazuyuki * howm-common.el: fix for xemacs and emacs20 2005-02-22 HIRAOKA Kazuyuki * 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 * 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 * howm-backend.el (howm-files-in-directory): clean up * howm-mode.el (howm-content-from-region): new option variable 2005-02-18 HIRAOKA Kazuyuki * 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 kaorahi-howm-fc61c31/INSTALL000066400000000000000000000366141454422607600155650ustar00rootroot00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. 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, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. 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 you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' 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. Running 'configure' might take a while. 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, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. 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. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. 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 can use 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 '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer 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. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' 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. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= 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'. 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. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS 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 machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. 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. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--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. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. kaorahi-howm-fc61c31/Makefile.am000066400000000000000000000042621454422607600165620ustar00rootroot00000000000000# shamelessly copied from navi2ch-cvs-0.0.20031209 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-lang-en.el \ howm-lang-fr.el \ howm-lang-ja.el \ howm-menu-en.el \ howm-menu-fr.el \ howm-menu-ja.el \ honest-report.el \ action-lock.el \ riffle.el \ gfunc.el \ illusion.el \ iigrep.el \ cheat-font-lock.el EXTRA_DIST = Makefile.old bcomp.el howm-mkmenu.el $(howm_LISP) \ bcomp.el.in howm.el.in test.bat BUILT_SOURCES = $(srcdir)/howm.el $(srcdir)/bcomp.el SUBDIRS = doc ext en fr ja sample MENU_SRC = en/0000-00-00-000000.txt \ fr/0000-00-00-000000.txt \ ja/0000-00-00-000000.txt MENU_EL = $(srcdir)/howm-menu-en.el \ $(srcdir)/howm-menu-fr.el \ $(srcdir)/howm-menu-ja.el TEST_INIT = sample/dot.emacs AM_MAKEFLAGS = HOWM_MAKE=t $(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) kaorahi-howm-fc61c31/Makefile.in000066400000000000000000000732731454422607600166030ustar00rootroot00000000000000# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 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 VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 = . 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) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = howm.el 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__emacs_byte_compile_setup = \ (if (boundp (quote byte-compile-dest-file-function)) \ (setq byte-compile-dest-file-function (lambda (_) "$@")) \ (defun byte-compile-dest-file (_) "$@") \ ) 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-fr.el howm-lang-ja.el \ howm-menu-en.el howm-menu-fr.el howm-menu-ja.el howm-menu.el \ howm-misc.el howm-mode.el howm-reminder.el howm-vars.el \ howm-view.el howm.el iigrep.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 distdir-am 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) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/howm.el.in AUTHORS \ COPYING ChangeLog INSTALL NEWS README config.guess config.sub \ install-sh missing mkinstalldirs 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 # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi 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@ runstatedir = @runstatedir@ 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-lang-en.el \ howm-lang-fr.el \ howm-lang-ja.el \ howm-menu-en.el \ howm-menu-fr.el \ howm-menu-ja.el \ honest-report.el \ action-lock.el \ riffle.el \ gfunc.el \ illusion.el \ iigrep.el \ cheat-font-lock.el EXTRA_DIST = Makefile.old bcomp.el howm-mkmenu.el $(howm_LISP) \ bcomp.el.in howm.el.in test.bat BUILT_SOURCES = $(srcdir)/howm.el $(srcdir)/bcomp.el SUBDIRS = doc ext en fr ja sample MENU_SRC = en/0000-00-00-000000.txt \ fr/0000-00-00-000000.txt \ ja/0000-00-00-000000.txt MENU_EL = $(srcdir)/howm-menu-en.el \ $(srcdir)/howm-menu-fr.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 $(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): howm.el: $(top_builddir)/config.status $(srcdir)/howm.el.in cd $(top_builddir) && $(SHELL) ./config.status $@ .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 '$(am__emacs_byte_compile_setup)' \ -f batch-byte-compile '$<'; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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) | eval GZIP= gzip $(GZIP_ENV) -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-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: 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 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -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*) \ eval GZIP= gzip $(GZIP_ENV) -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*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(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/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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-exec 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 dist-zstd 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 .PRECIOUS: Makefile $(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: kaorahi-howm-fc61c31/Makefile.old000066400000000000000000000000001454422607600167250ustar00rootroot00000000000000kaorahi-howm-fc61c31/NEWS000066400000000000000000000000111454422607600152110ustar00rootroot00000000000000see doc/ kaorahi-howm-fc61c31/README000066400000000000000000000000111454422607600153720ustar00rootroot00000000000000see doc/ kaorahi-howm-fc61c31/README.md000066400000000000000000000017241454422607600160050ustar00rootroot00000000000000# howm: Write fragmentarily and read collectively. 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. * [Home](https://kaorahi.github.io/howm/) * [Introduction by Leah Neukirchen](https://leahneukirchen.org/blog/archive/2022/03/note-taking-in-emacs-with-howm.html) (thx!) * [Detailed English & Russian tutorials by Andrei Sukhovskii](https://github.com/Emacs101/howm-manual) (thx!) * [1-minute introduction on YouTube under Emacs Elements channel](https://www.youtube.com/watch?v=cCflzhDelvg) (thx!) ## Project history * 2002-05-29 initial release (v0.1) on sourceforge.jp * ... * 2023-02-18 v1.5.1-snapshot4 on [OSDN](https://howm.osdn.jp/) (renamed from sourceforge.jp) * 2023-05-13 moved the repository to [GitHub](https://github.com/kaorahi/howm) * 2023-07-30 moved the project home to [GitHub](https://kaorahi.github.io/howm/) kaorahi-howm-fc61c31/acinclude.m4000066400000000000000000000031151454422607600167130ustar00rootroot00000000000000# 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)]) kaorahi-howm-fc61c31/aclocal.m4000066400000000000000000000723561454422607600163770ustar00rootroot00000000000000# generated automatically by aclocal 1.16.3 -*- Autoconf -*- # Copyright (C) 1996-2020 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-2020 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.16' 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.16.3], [], [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.16.3])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-2020 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-2020 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-2020 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: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). 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: 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: . 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 The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) 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-2020 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+set}" != 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-2020 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-2020 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-2020 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 MISSING="\${SHELL} '$am_aux_dir/missing'" 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-2020 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-2020 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-2020 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-2020 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-2020 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-2020 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 /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]) kaorahi-howm-fc61c31/action-lock.el000066400000000000000000000310521454422607600172500ustar00rootroot00000000000000;;; action-lock.el --- invoke magic action by RET key on spell strings ;; Copyright (C) 2002, 2003, 2004, 2005-2023 ;; HIRAOKA Kazuyuki ;; ;; 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 (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 " :init-value nil ;; default = off :lighter action-lock-lighter ;; mode-line :keymap `( (,action-lock-magic-return-key . action-lock-magic-return) ) (if action-lock-mode (action-lock-initialize-buffer) (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 "\\/?\\)")) (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) ;; (()) (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 kaorahi-howm-fc61c31/bcomp.el000066400000000000000000000015121454422607600161430ustar00rootroot00000000000000;;; -*- 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-lang-en.el" "howm-lang-fr.el" "howm-lang-ja.el" "howm-menu-en.el" "howm-menu-fr.el" "howm-menu-ja.el" "honest-report.el" "action-lock.el" "riffle.el" "gfunc.el" "illusion.el" "iigrep.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")) kaorahi-howm-fc61c31/bcomp.el.in000066400000000000000000000007451454422607600165570ustar00rootroot00000000000000;;; -*- 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")) kaorahi-howm-fc61c31/cheat-font-lock.el000066400000000000000000000121601454422607600200220ustar00rootroot00000000000000;;; cheat-font-lock.el --- modify font-lock-keywords ;;; Copyright (C) 2002, 2003, 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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* (;; Stop cheating font-lock in such a way. [2021-02-15] ;; This seems troublesome and font-lock is not slow today. ;; (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) (if (and (fboundp 'font-lock-flush) (fboundp 'font-lock-ensure)) (progn (font-lock-flush) (font-lock-ensure)) (with-no-warnings (font-lock-fontify-buffer)))) (provide 'cheat-font-lock) ;;; cheat-font-lock.el ends here kaorahi-howm-fc61c31/config.guess000077500000000000000000001263731454422607600170560ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-02-24' # 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 3 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, see . # # 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 Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -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 ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2018 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 case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval "$set_cc_for_build" cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" # If ldd exists, use it to detect musl libc. if command -v ldd >/dev/null && \ ldd --version 2>&1 | grep -q ^musl then LIBC=musl fi ;; esac # 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 tuples: *-*-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=`(uname -p 2>/dev/null || \ "/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 ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine="${arch}${endian}"-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) and ABI. case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval "$set_cc_for_build" if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ 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 # Determine ABI tags. case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; 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/[-_].*//' | cut -d. -f1,2` ;; 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}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) echo "$UNAME_MACHINE"-unknown-midnightbsd"$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 ;; *:Sortix:*:*) echo "$UNAME_MACHINE"-unknown-sortix exit ;; *:Redox:*:*) echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) echo mips-dec-osf1 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`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; 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 ;; s390x:SunOS:*:*) echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; 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:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval "$set_cc_for_build" SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo "$SUN_ARCH"-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 /* 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 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:*:[4567]) 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/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` 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:4.4BSD:*) 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 #include 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 -q __LP64__ 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 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:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) case "$UNAME_MACHINE" in x86) echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; i*:UWIN*:*) echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-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-$LIBC`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 "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; i*86:Minix:*:*) echo "$UNAME_MACHINE"-pc-minix exit ;; aarch64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" 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 -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) eval "$set_cc_for_build" if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } ;; mips64el:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-"$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-"$LIBC" ;; PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) if objdump -f /bin/sh | grep -q elf32-x86-64; then echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 else echo "$UNAME_MACHINE"-pc-linux-"$LIBC" fi exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" 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.[02]*:*) echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; i*86:*: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' /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 i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-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; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' 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; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; 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.[02]*:*) 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 echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # 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 ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku 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 ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-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 eval "$set_cc_for_build" if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi 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 ;; NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk"$UNAME_RELEASE" exit ;; NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; NSV-*:NONSTOP_KERNEL:*:*) echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-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 ;; i*86:AROS:*:*) echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac echo "$0: unable to guess system type" >&2 case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&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-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: kaorahi-howm-fc61c31/config.sub000077500000000000000000001064501454422607600165130ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-02-22' # 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 3 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, see . # # 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 Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # 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. # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # 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 or ALIAS Canonicalize a configuration name. Options: -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 ." version="\ GNU config.sub ($timestamp) Copyright 1992-2018 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-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) 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 | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -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*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` ;; -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 \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | wasm32 \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-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-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | 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-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | wasm32-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # 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-pc 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 ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; 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 ;; cr16 | cr16-*) basic_machine=cr16-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 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2*) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=$os"spe" ;; 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 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; 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 ;; 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 ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; 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 ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; 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 ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; nsv-tandem) basic_machine=nsv-tandem ;; nsx-tandem) basic_machine=nsx-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 ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; 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 | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) 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) 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 | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) 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 ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh5el) basic_machine=sh5le-unknown ;; 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 ;; strongarm-* | thumb-*) basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; 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 ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; 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 ;; x64) basic_machine=x86_64-pc ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; 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 ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; 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. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # es1800 is here to avoid being matched by es* (a different OS) -es1800*) os=-ose ;; # Now 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* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -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* | -cegcc* | -glidix* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ | -midnightbsd*) # 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 | -xray | -os68k* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* \ | -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 ;; -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 ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -pikeos*) # Until real need of OS specific support for # particular features comes up, bare metal # configurations are quite functional. case $basic_machine in arm*) os=-eabi ;; *) os=-elf ;; esac ;; -nacl*) ;; -ios) ;; -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 score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) 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 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; 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 ;; pru-*) os=-elf ;; *-be) os=-beos ;; *-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 ;; *-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 ;; -cnk*|-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-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: kaorahi-howm-fc61c31/configure000077500000000000000000003526601454422607600164450ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for howm 1.5.1. # # # 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 &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='1.5.1' PACKAGE_STRING='howm 1.5.1' 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 runstatedir 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' runstatedir='${localstatedir}/run' 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 ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -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 runstatedir 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 1.5.1 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] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --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 1.5.1:";; 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 1.5.1 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 1.5.1, 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.16' 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 MISSING="\${SHELL} '$am_aux_dir/missing'" 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+set}" != 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='1.5.1' 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: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). 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: 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: . 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 sample/Makefile en/Makefile fr/Makefile ja/Makefile howm.el" 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 1.5.1, 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 1.5.1 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" ;; "sample/Makefile") CONFIG_FILES="$CONFIG_FILES sample/Makefile" ;; "en/Makefile") CONFIG_FILES="$CONFIG_FILES en/Makefile" ;; "fr/Makefile") CONFIG_FILES="$CONFIG_FILES fr/Makefile" ;; "ja/Makefile") CONFIG_FILES="$CONFIG_FILES ja/Makefile" ;; "howm.el") CONFIG_FILES="$CONFIG_FILES howm.el" ;; *) 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` 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 ' >$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 = "" } { 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 kaorahi-howm-fc61c31/configure.ac000066400000000000000000000102131454422607600170050ustar00rootroot00000000000000# shamelessly copied from navi2ch-cvs-0.0.20031209 AC_INIT([howm], [1.5.1]) 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 sample/Makefile en/Makefile fr/Makefile ja/Makefile howm.el ]) kaorahi-howm-fc61c31/doc/000077500000000000000000000000001454422607600152675ustar00rootroot00000000000000kaorahi-howm-fc61c31/doc/CL-HOWM.ja.rd000066400000000000000000000075651454422607600172720ustar00rootroot00000000000000=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 形式をお使いの方は, (()) も併用すると便利かもしれません. 上の howm-to-change-log のかわりに, 次の機能が使えます. * M-x rd-to-change-log → ChangeLog Memo を開いて章・節のタイトルをコピー * 例 * howm memo にこう書いてたら… = ほげ … == ふが … == ぴよ … ■ ← カーソル * こんな ChangeLog ができる 2003-12-03 Foo Bar * ほげ - ぴよ * 注 * カーソルが属する章(=), 節(==)のタイトルを抽出します * 「ほげ」にカーソルを置いた場合, == のタイトルはコピーされません * C-u M-x rd-to-change-log なら, その章のすべての節のタイトルを抽出します 2003-12-03 Foo Bar * ほげ - ふが - ぴよ =end kaorahi-howm-fc61c31/doc/ChangeLog000066400000000000000000000234721454422607600170510ustar00rootroot000000000000002023-12-31 HIRAOKA Kazuyuki * old_changes.html: separate too old changes from index.html * index.html: ditto. * index-j.html: add link to English tutorial (same as index.html) 2023-12-21 HIRAOKA Kazuyuki * index.html: add link to English tutorial thx > Andrei Sukhovskii san (qojop at tuta.io) 2023-12-17 HIRAOKA Kazuyuki * Makefile.am (README-j.html): convert README-j.html to UTF-8 2023-12-03 HIRAOKA Kazuyuki * index.html: add link to YouTube video thx > Raoul Comninos san (revcomninos at gmail.com) 2023-07-30 HIRAOKA Kazuyuki * index.html: add link to Russian manual thx > Andrei Sukhovskii san (qojop at tuta.io) 2023-02-16 HIRAOKA Kazuyuki * README.ja.rd: add explanation of "sort by reminder" thx > Andrei Sukhovskii san (qojop at tuta.io) 2022-12-28 HIRAOKA Kazuyuki * index-j.html: add link to the last howm-1.4.* 2022-12-27 HIRAOKA Kazuyuki * index-j.html: update version and links * index.html: ditto. * README.ja.rd: ditto. * TUTORIAL.ja.rd: ditto. 2022-12-25 HIRAOKA Kazuyuki * index.html: add link to leah blogs 2021-12-30 HIRAOKA Kazuyuki * README.ja.rd: update version. * index-j.html: ditto. * index.html: ditto. 2020-12-31 HIRAOKA Kazuyuki * README.ja.rd: update version. * index-j.html: ditto. * index.html: ditto. 2020-10-16 HIRAOKA Kazuyuki * index-j.html: fix link to README-j.html. 2020-10-15 HIRAOKA Kazuyuki * index-j.html: add charset. thx > https://mevius.5ch.net/test/read.cgi/unix/1397477663/126 2020-02-21 HIRAOKA Kazuyuki * index-j.html: add link to VaNT. 2018-12-31 HIRAOKA Kazuyuki * README.ja.rd: update version. * index-j.html: ditto. * index.html: ditto. 2018-02-25 HIRAOKA Kazuyuki * index-j.html: update git URL to https 2018-01-02 HIRAOKA Kazuyuki * index.html: update URL 2016-12-31 HIRAOKA Kazuyuki * README.ja.rd: update version. * index-j.html: ditto. * index.html: ditto. 2016-12-31 HIRAOKA Kazuyuki * index-j.html: add descriptions of snapshot version (MELPA / GIT) thx > Yuki Inoue san (inouetakahiroki at gmail.com) * index.html: ditto. * README.ja.rd: ditto. 2015-12-31 HIRAOKA Kazuyuki * README.ja.rd: add commit-hash of git-head emacs 2015-12-31 HIRAOKA Kazuyuki * README.ja.rd: update version. * index.html: ditto. * index-j.html: ditto. * TUTORIAL.ja.rd: delete obsolete link. 2012-12-29 HIRAOKA Kazuyuki * index-j.html: add link to howmm. fix link to howm-mode.vim. 2011-01-01 HIRAOKA Kazuyuki * README.ja.rd: support new commands. * README.ja.rd: move old changelogs to OLD.rd 2010-12-31 HIRAOKA Kazuyuki * 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 * index-j.html: add link to QFixHowm. 2010-12-29 HIRAOKA Kazuyuki * README.ja.rd: update obsolete descriptions. * OLD.rd: ditto. 2009-07-23 HIRAOKA Kazuyuki * README.ja.rd: update table of contents. 2009-05-02 HIRAOKA Kazuyuki * index-j.html: fix link. 2009-01-01 HIRAOKA Kazuyuki * 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 * index-j.html: delete debian package * index.html: ditto. 2008-07-16 HIRAOKA Kazuyuki * index-j.html: move old announce to OLD.rd * README.ja.rd: move old changes to OLD.rd 2008-05-14 HIRAOKA Kazuyuki * index.html: link to howm-1.3.5 2008-04-07 HIRAOKA Kazuyuki * index.html: add customization example for efficiency 2007-04-11 HIRAOKA Kazuyuki * README.ja.rd: add Whem. 2007-03-01 HIRAOKA Kazuyuki * README.ja.rd: update 2ch URL. 2007-01-18 HIRAOKA Kazuyuki * README.ja.rd: update 2ch URL. 2006-09-12 HIRAOKA Kazuyuki * README.ja.rd: change on 2006-09-10 is canceled. 2006-09-10 HIRAOKA Kazuyuki * README.ja.rd: M-x customize-variable howm-menu-todo-priority for %reminder. 2006-06-13 HIRAOKA Kazuyuki * README.ja.rd: link to yaswiki is removed because of error response. link to BugReportFAQ is added insteadly. 2006-05-15 HIRAOKA Kazuyuki * 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 * 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 https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?e.BBS * README.rd: ditto. * README.ja.rd: link to elscreen 2006-02-12 HIRAOKA Kazuyuki * 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 * 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 * README.ja.rd: add thx link to http://pc8.2ch.net/test/read.cgi/unix/1077881095/42 2006-01-17 HIRAOKA Kazuyuki * README.ja.rd: link to BugReportFAQ 2005-12-01 HIRAOKA Kazuyuki * README.ja.rd: update link to Hidemaru porting * index-j.html: ditto. 2005-11-12 HIRAOKA Kazuyuki * 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 * CL-HOWM.ja.rd: describe merits of sort and filter. 2005-10-24 HIRAOKA Kazuyuki * Makefile.am (MAINTAINERCLEANFILES): move *.html from CLEANFILES to MAINTAINERCLEANFILES so that users can try make clean && make without rdtool. 2005-10-21 HIRAOKA Kazuyuki * README.ja.rd: describe that 'configure --with-xemacs' changes default lispdir to /usr/lib/xemacs/site-lisp/howm. thx > 2ch 797 san https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReport 2005-10-18 HIRAOKA Kazuyuki * README.ja.rd: explain configure --with-xemacs thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/810 2005-10-13 HIRAOKA Kazuyuki * README.ja.rd: remove incorrect description. 'd' key on date format is never implemented. 2005-09-13 HIRAOKA Kazuyuki * README.rd: 'search' is corrected to 'search for' 2005-09-02 HIRAOKA Kazuyuki * 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 * index-j.html: correct RD label 2005-08-17 HIRAOKA Kazuyuki * index.html: email address is removed. 2005-08-12 HIRAOKA Kazuyuki * 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 * README.rd: add alias, customization, menu editing. 2005-07-27 HIRAOKA Kazuyuki * README.ja.rd: update URL of howm-mode.vim 2005-07-26 HIRAOKA Kazuyuki * README.ja.rd: add links to wema and LesserWiki 2005-07-25 HIRAOKA Kazuyuki * index-j.html: correct anchor "#label:20" to "#label-20". It depends on the version of rd2, perhaps. 2005-07-16 HIRAOKA Kazuyuki * README.ja.rd: add comment on grep-2.5 multibyte feature 2005-06-07 HIRAOKA Kazuyuki * Makefile.am (README.html): added to distribution. * README.rd: 'Repeat schedule' is added. 2005-05-26 HIRAOKA Kazuyuki * index.html: M-x custom ==> M-x customize-group 2005-05-24 HIRAOKA Kazuyuki * README.ja.rd: correct description of %here; args are quoted 2005-05-08 HIRAOKA Kazuyuki * README.ja.rd: move old customize section to OLD.rd 2005-05-06 HIRAOKA Kazuyuki * README.ja.rd: key bind R = [Update Menu] 2005-04-02 HIRAOKA Kazuyuki * README.ja.rd: link to LinuxZaurus on howm-wiki 2005-03-27 HIRAOKA Kazuyuki * OLD.rd: update 2ch URL (pc5 to pc8) * README.ja.rd: update 2ch URL (pc5 to pc8) 2005-03-13 HIRAOKA Kazuyuki * index-j.html: update URL of howm-mode.vim 2005-02-19 HIRAOKA Kazuyuki * index-j.html: add link to Meadow memo kaorahi-howm-fc61c31/doc/Makefile.am000066400000000000000000000011151454422607600173210ustar00rootroot00000000000000EXTRA_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 \ cat.png menu.png screen-shot.png 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 | nkf -w > 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 kaorahi-howm-fc61c31/doc/Makefile.in000066400000000000000000000326141454422607600173420ustar00rootroot00000000000000# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 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 = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 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) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 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) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ ChangeLog 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@ runstatedir = @runstatedir@ 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 \ cat.png menu.png screen-shot.png 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 $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 .PRECIOUS: Makefile README-j.html: README.ja.rd rd2 README.ja.rd | nkf -w > 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: kaorahi-howm-fc61c31/doc/OLD.rd000066400000000000000000003765741454422607600162620ustar00rootroot00000000000000=begin * 目次 * ((<古い更新履歴>)) * ((<古い告知>)) * ((<旧版からの移行>)) * ((<古いカスタマイズ法>)) * (()) * ((<古い参考リンク>)) = 古い更新履歴 == 1.4.x * リリース版 howm-1.4.6 [2019-12-31] * fix: C-c , : (howm-find-yesterday) が壊れていた (()) (()) * リリース版 howm-1.4.5 [2018-12-31] * migemo-client のかわりに cmigemo も対応 (setq howm-migemo-client '((type . cmigemo) (command . "cmigemo"))) (setq howm-migemo-client-option '("-q" "-d" "/usr/share/cmigemo/utf-8/migemo-dict")) * フランス語メニューを追加 (()) (()) (()) > Yassine san (yacinechaouche at yahoo.com), Xavier Maillard san (xavier at maillard.im) * autotools まわりを掃除 * howm-1.4.5-snapshot3 と同じ内容です * リリース版 howm-1.4.4 [2016-12-31] * バイトコンパイル時の警告を回避 * cl をやめて cl-lib を使う * howm-ime-fix (howm-1.1.1 以前の canna, egg, yc, anthy 個別対策) を廃止 * その他こまごま * MELPA へのリンクを追加. thx > Yuki Inoue san (inouetakahiroki at gmail.com) * スナップショット版 2016-09-28 と同じ内容です * リリース版 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 > 鯉江英隆さん (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) を高速化 (()) * fix * emacs 24.3.1 でバイトコンパイルせずに実行したときのエラー "Can't detect type of ..." (()) * シンボリックリンク下で新規メモが howm-mode にならないバグ (()) * バイトコンパイル時の警告 * リリース版 howm-1.4.1 [2012-12-27] * ~/.howm-keys が無かったら, 全メモをスキャンして再生成 (()) > Albert-san (areiner at tph.tuwien.ac.at) * fix: *.txt と *.howm が混在しても一覧モードの表示がずれないように (()) * リリース版 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 での絞り込みはファイル単位のまま. * タイトルが空のときは本文の一行目をタイトルに. * こまごま改良 * メニューに以下を書けば, タイムスタンプ順でなくファイル名順の上位を表示. (()) %here%(howm-menu-recent identity) * ディレクトリに対してもビューアを設定できるように. (()) ;; 「file://…/」や「>>> …/」は open コマンド(mac 用)で開く (setq howm-view-external-viewer-assoc '(("/$" . "open %s"))) * 変数 howm-normalizer のありがちな設定ミスを察するように (()) * ドキュメントの古い箇所を手直し * rast まわりの試作を削除 * 隠し機能の公式化 * コマンド * C-c , e (howm-remember) (()) (()) (()) (()) (()) * 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日まで」). 一覧から消えるのがそれだけ猶予される. (()) * 〆切「!」も, 〆切日がその範囲までなら一緒に表示 * それより下は従来どおり * 従来の %schedule + %todo とくらべると, スキャンが一回ですむぶん効率的 * [2005-05-15 21:37]@ のような書式の予定は, 時刻順にソート (()) (()) (()) (()) * メニューからリマインダを直叩きしたときに, 対応バッファの行数が多少ずれていても許す. (()) (setq howm-action-lock-forward-fuzziness 5) ;; 何行までずれても許すか * ((<カスタマイズ>)) * 上記 %reminder や todo list 中の仕切り * grep 使用時の coding system 指定 (()) * howm 関連の全バッファに共通の色設定 (()) (()) > taku さん * todo を済ませたときに指定コマンドを実行 (howm-congrats-command) * fix: 2012-01-21 以降の emacs-24 でエラー (void-variable inhibit-first-line-modes-regexps) (()) thx > 佐々木 寛 さん (sasaki at fcc.ad.jp) == 1.3.x * リリース版 howm-1.3.9.2 [2011-12-28] * こまごま fix (howm-1.3.9.2rc4 と同内容です) * mac で grep 使用時にエラーが出ていた (()) (()) * grep のデフォルトオプションを設定する前に, --exclude-dir が通るか確認するようにしました. * 大きいフレームで一覧表示をしたときの余計なウィンドウ分割を修正 (()) * howm-vars.elc ロード時の警告「old-style backqoute detected!」を回避. (()) * リリース版 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)で予定表を開いたとき, 内容バッファがカーソル位置のメモになっていなかった. (()) * ドキュメントの古い箇所を手直し * メンテされていないツール(ext/tag2plan)を削除 * リリース版 howm-1.3.8 [2009-12-31] * Note * 大きな変更はありませんが, 一年たったのでリリースしておきます. * howm-test090723 との違いは, howm-excluded-dirs に ".git" を 追加しただけです. * 変更・改良 * 過ぎた〆切に着色 (()) * _darcs/ などを検索対象外に (howm-excluded-dirs). (()) * いまどきの GNU grep を使っているなら↓もしておくと無駄な検索を省けます. (setq howm-view-grep-option "-Hnr --exclude-dir=_darcs") * さらに, *.txt だけ検索するようにしたければ… (setq howm-view-grep-option "-Hnr --exclude-dir=_darcs --include=*.txt") * (()) との 互換性のため, grep 呼び出し時にディレクトリ名末尾の / を削除. (()) * (()) のために内部を少し掃除. (()) * fix * C-c , l (howm-list-recent)時に該当ファイルが多すぎるとエラー. (()) (()) * howm-view-use-grep を設定している場合に発症. meadow だと "Spawning child process: exec format error" になるらしい. * grep 呼び出し時のコマンドラインが howm-command-length-limit 以上に 長いときは分割して呼び出すよう直しました. * (setq howm-list-title t) していたら, come-from リンク上で RET したときもタイトル一覧を表示するように. (()) * もし以前の動作がよければ, 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>)) か (()) でご相談を * もし旧変数をセットしたままにしておくと… * 単純に読みかえられそうなら, 新変数に読みかえて新処理を実行 * 読みかえられなかったら, 旧処理を実行 (非効率) * 「今日と明日の日付」は [YYYY-MM-DD] でなく YYYY-MM-DD を着色 (()) (()) * 一覧やメニューのファイル名も, マッチすれば着色 * 前のように戻したければ… ;; 今日と明日の日付は, [YYYY-MM-DD] の形式だけ着色 (setq howm-highlight-date-regexp-format (regexp-quote "[%Y-%m-%d]")) * 一覧バッファ * 検索時の内部的な一覧バッファ再表示を抑制 * 一覧バッファからの X (dired-x) 時に, カーソルを対応ファイル名へ置く (()) > 797 さん * 1.3.2 の隠し機能を公式化 & デフォルト化. 変数 howm-view-dired-keep-cursor は削除しました. * howm-view-summary-previous-section も「各ファイルの最初のヒット行」で 止まるよう変更 (()) * 内容バッファで一アイテムだけ表示しているときは, 区切り線「====>>> xxx.txt」を描かない. (()) * 一覧バッファのソート基準に summary-match-string を追加 * 指定した正規表現にマッチした文字列の順にソート * 例: 「2006-06-..」を指定すれば, 2006年6月の項目を日付順に * ちなみに, summary-match は, マッチしたものを上位にもってくるだけ * マッチしたものどうしの上下比較はしない * メニュー * メニューの %recent や %random でもファイル名欄を桁そろえ. (()) > Mielke-san (peter.mielke at gmail.com) * 変数 howm-menu-list-format は %recent および %random 用に * 新変数 howm-menu-reminder-format が %schedule および %todo 用 * メニューの %random% で, 同じファイルからは一項目しか選ばれないように (()) * メニューの曜日表記をリストで指定するよう変更. 英語表記のデフォルトも "Sun" 等に直した. (()) (setq howm-day-of-week-ja '("日" "月" "火" "水" "木" "金" "土")) (setq howm-day-of-week-en '("Sun" "Mon" "Tue" "Wed" "Thu" "Fri" "Sat")) * っていうか, わざわざ独自に定義せずに (format-time-string "%a") 決め打ちでも構わない? * 初期メニューにボタンの説明を追加. (()) * いろいろ * howm-view-grep-option に複数のオプションを書けるように. (()) (setq howm-view-grep-option "-Hnr --include=*.txt") ;; *.txt のみ検索 * 単純に split-string してるだけ. もっとまじめなのが必要ならお知らせください. * 単語の途中がたまたま come-from キーワードに一致しても下線を引かない設定. (()) > Mielke-san (peter.mielke at gmail.com) ;; ASCII 文字のみのキーワードは, 単語途中にマッチしても下線を引かない (setq howm-check-word-break "^[[:ascii:]]+$") * 予定表, ToDo リストにも超過日数を表示. (()) > Mielke-san (peter.mielke at gmail.com) * .howm-history まわりの挙動を改善. (()) (()) * バッファ一覧に表示しない * "Wrote ..." を表示しない * make test 時に ~/.howm-history を汚さない * fix * howm-menu-categorized-reminder で表示されない項目があった (()) * (setq howm-view-list-title-type 2) のとき C-c , a でエラー (()) * タイトルのないメモが C-c , a で表示されなかった * howmoney が使えなくなっていた. (()) (()) * 予定や todo が一つもないときに予定表や todo リストを呼び出した場合. (()) * 予定表や todo リストで action-lock-mode が不本意にトグル. * howm2, howmkara の -exclude オプションに不具合. (()) > dareka さん * (())で C-c , t が「No match」に (()) > taku さん * 互換性を修復 * howm-occur で一覧バッファの検索語がハイライトされなくなっていた * 「<<< テスト <<< Test」の「Test」上で RET を叩いても「テスト」が 検索されなかった * howm-keyword-case-fold-search をセットしていたときの大文字小文字がらみ * C-c , l でいちいち日付を聞かないように (()) * [2007-04-02] に作り込んだバグ * 検索結果の一覧で「<<< ほげ」が先頭にこない場合があった (()) * (setq howm-list-title t) していると発症 * remove-duplicates の仕様をよく知らなかったせい. 勉強になりました. * (setq howm-list-title t) だと一覧バッファに前回の内容が表示されるバグ * howm-view-contents-limit が効いていなかった * 日付での絞り込み結果が一日分多すぎた * narrowing 関連の不具合(widen 抜け) (()) * メニューの「%reminder」の底に, 過ぎた予定が表示されていた. (()) * メニュー中の「> 2006-07-26-015606 | …」の「7」上で RET を叩くとエラー. (()) > na さん * 変数 howm-menu-list-regexp の定義をちょっと直しただけ * 異なるディレクトリの同名ファイルが一覧表示で混同されていた. (()) * howm-view-split-horizontally が t でも nil でもないときの特別な動作を廃止. (()) * howm-1.2 〜 1.3.7rc2 で壊れていたが, バグレポートなし. きっと誰も使っていない ^^; * リリース版 howm-1.3.6 [2008-05-31] * fix: 2008-02-24 以降の CVS 先端 emacs で, 他バッファの着色が乱れる. (()) * minor mode が font-lock-keywords-only を直に触るのは行儀悪い? * howm-test20080514 からのバックポート * (howm-1.3.6rc1 と中身は同じです) * リリース版 howm-1.3.5 [2007-12-09] * fix: 夏時間最終日に当日の予定がメニューに表示されなかった. (()) > 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] * セキュリティ修正 (()) * 何が問題? * Emacs には, ファイルごとにローカル変数を自動設定する機能があります. これを悪用すると, howm 使用時に任意の命令を自動実行させることができます. (()) * どう直した? * 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 のバージョンによっては不完全かもしれません. (()) ;; ローカル変数の自動設定をオフ (setq enable-local-variables nil) * fix: CVS 先端 emacs でメニューなどに色がつかない (()) * 修正は, 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 一覧では潜伏中の項目もデフォルトで表示 (()) (()) * 隠したければ M-x customize-variable howm-menu-todo-priority * grep 時の文字コード設定 howm-process-coding-system で, 入力と出力に別の値を指定できるようにした (()) ;; process (UTF-8)→ emacs ;; emacs →(SJIS) process (setq howm-process-coding-system '(utf-8-unix . sjis-unix)) * メニューの「> …」で RET したとき, 「…」を検索するのでなく, 対応ファイルを直接開く (()) * ファイル構成やインストール手順について * 言語依存の変数を howm-lang-{en,ja}.el へ分離 * configure の新オプション --with-howmdir. thx > 本庄さん * *.el と *.elc はここへインストールされる * lispdir のデフォルトは, …/site-lisp/howm から …/site-lisp に変更 * 初期メニューテンプレートのインストール法を変更 thx > 本庄さん, 銭谷さん (()) (()) * 従来は, /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". (()) (()) (()) (()) (()) (()) (()) (()) * grep 時の howm-process-coding-system の処理タイミングにバグ (()) (()) * migemo-client のオプションを追加指定可能に (()) (setq howm-migemo-client-option '("-H" "::1")) * howm-view-grep-option あたりとの不統一が気になるので, コマンド指定一般の拡張仕様案(とりあえず案だけ). おおげさすぎ? nil ;; → デフォルト "コマンド名" ("コマンド名" "オプション" … "オプション") 関数名 ;; → コマンドのかわりに elisp の関数を実行 * howm-kill-all は .howm-keys バッファも消すべき (()) * howm-mode-off-hook の定義がだぶっていた. thx > 竹村さん * (()) でエラーが出ていたそう. (()) > (TxT) さん * emacs20 で M-x howm-bug-shot がエラーになっていた. (()) > 逃避さん * リリース版 howm-1.3.2 [2005-11-04] * Note * 主に, 小さなバグ修正だけ * あとは隠し機能を少々 * リリース予定版 1.3.2rc4 と同じものです * 変更 * メニューの [今日] (C-c , , .) でもデフォルトでタイトルを表示. (()) > 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 がエラー (()) * xemacs だと, 一覧バッファからの X (dired-x) がエラー (()) > 797 さん * ついでに, 同じファイルが何度も表示されるのを修正 * howm-view.el に (require 'riffle) を追加 (()) * Makefile 以外の手順でバイトコンパイルすると M-x howm-menu がエラー (()) (()) * リリース版 howm-1.3.1 [2005-08-17] * xemacs でやけに遅くなっていたのを修正 (xemacs のバージョンにもよるのかも) * 環境変数 LC_ALL, LC_CTYPE, LANG を設定しないとエラーが出ていたのを修正 (()) * この README の 修正 (()) * my-howm-next-hit のコードを更新 * howm-view-search-in-result-correctly を設定しても, date での絞り込みはファイル単位 * 当面は仕様. 一日一ファイルまでなら問題ないはず. * 一月一ファイル・全メモ一ファイルなどだと問題. * 「指定月のメモ一覧」とかでっちあげようかとも思いましたが, 自分の場合は長くなりすぎて役に立たなそうなので, やめました. ご意見があればお聞かせください. * 一覧で, 前と同じ名前もいちいち表示 (()) (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 と((*直前のバッファ*))」を引数にしてそいつを呼ぶ (()) * 使用例 ;; 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 は将来廃止するかも. (()) * grep へは標準入力でパターンを渡す * {全|最近|前後}メモ一覧にデフォルトでタイトル表示 * 隠し機能の公式化 (▲ は「おすすめ」) * 1.1.1.* 以前から * howm-view-before-open-hook * メニューの todo に旬度を表示可 (()) (setq howm-menu-todo-priority-format "(%8.1f)") * デバッグ用変数 howm-call-process-last-command * (setq howm-message-time t) すれば, 検索等に要した時間を表示 * 1.2 から * come-from キーワードの alias ▲ → ((<メモを書こう>)) (()) * メニュー * メニューに「%recent」や「%random」 ▲ (()) (()) * メニュー中に変数や関数の値を表示 * 一覧 * ソート法に「random」を追加 (()) * 一覧表示窓の行数設定 (()) (()) (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 (()) * 新規メモのファイル名を手動でつける: M-x howm-create-interactively (()) * こんな感じでしょうか? > 367 さん * M-x howm-narrow-to-memo, M-x howm-toggle-narrow (()) * ついでに, M-x howm-toggle-narrow で, 隠す・見せるをトグル * メモを開いたとき自動的に narrow に (()) (()) (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 で飛べる. ▲ * (()) や (()) に触発されて… * 記録は, 「固定文字列検索」「絞り込み検索」「リンク」のみにしてみた (()) * 例によって「メニューに表示」もしたいけど, 「メニューをキャッシュ」との兼ね合いが. * 1.2.2 からは最大記録数を設定可 * 1.3.0 からは重複を除去 * 一ファイル複数メモのとき, 前・後・最初・最後のメモへ移動 (narrowing も考慮) (()) * 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 にしない. (()) ;; ↓デフォルトの動作に不満がなければ設定不要 (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] とか記入 (()) (()) (()) * 1.2.2 から * 自動酔歩 ▲ * メニューに「%here%(howm-menu-search "ほげ")」と書けば, 「ほげ」の検索結果を埋め込み ▲ (thx > Konstantin Levinski (kostya@pmail.ntu.edu.sg)) (()) * 新規メモまわり * 一ファイル複数メモのとき, 新しいメモは先頭に追加とする設定 ▲ (()) (setq howm-prepend t) * 「ほげ」を検索して一覧した状態から新規メモを作ると, タイトルを「ほげ」に (()) (setq howm-title-from-search t) * テキストを選択してから「新規メモ」 → そのテキストを自動挿入 (()) ;; transient-mark-mode でないと, この設定は無視される (setq howm-content-from-region t) * howm-create-here で, 有無を言わさず「現カーソル行に」新規メモ作成 (()) (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]) (()) (()) * 一覧バッファで, 同じファイル名をくり返し表示しない (()) * ついでに色もつけてみた. どなたかもっとましな配色をください. (M-x customize-group RET howm-faces RET して, howm-view-name-face と howm-view-empty-face) * (参考) 関連する既存機能 * TAB・ALT-TAB → 次・前のファイルへ * u → 一つのメモは一行だけに * @ → 連結表示すれば同じメモは一つにまとまる * 一覧で T → タイトル表示を「トグル」 * 1.2.1 の隠し機能から改良 (()) * メニュー内の一覧では, 行頭でなくても RET でジャンプ * リマインダ直叩きで「臨時に開いたバッファ」を自動で閉じる (()) ;; 叩き先を自動で閉じる. 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」を抑制 (()) * riffle.el の仕様を変更(gfunc.el を使う). ユーザーには影響ないつもり. (()) もだいじょうぶと思うんだけど… * バグ修正 * 白黒機でエラー (()) * カラーディスプレイでないときは, 下線のかわりに反転表示して, それ以外の飾りはなし * %reminder の区切り線がずれる (()) * 一覧から T でタイトル表示したとき, 無タイトル分が多重表示されていた * make test して C-c , s top [RET] T で発症 * win で「…\.foo\…」などを検索対象としないように (()) * howm-message-time をセットしても「No match」メッセージを隠さないように (()) * メニューのリマインダ内で come-from キーワードに 下線がつかなくなっていた. (()) == 1.2.x * [2005-06-10] v1.2.4 * bug fix * howm-search-path 内の予定・todo がメニューに表示されなかった (()) * メニューに表示される予定の範囲が一日短かかった * xemacs で, ファイルが少ないとメニューの %recent がエラーに (()) * メニュー上で C-c , r したときは「メニュー更新」 (()) * howm-menu-list-face のデフォルトを空に (()) * (require 'howm-mode) したら cl 未ロードでエラー (()) * howm-1.2 からは (require 'howm) が正式. 「howm-mode」を require や autoload していたら, 「howm」に直してください. * (()) でエラー (関数 howm-view-sort-items がない) (()) > (TxT) さん * リマインダ直叩きでメニューが崩れる (()) * こんな設定で発症 (setq howm-menu-expiry-hours 2) (setq howm-action-lock-forward-save-buffer t) * POBox の RET (変換確定)を奪ってしまう * 実は POBox に限らず不本意な動作をしていた (()) * howm-message-time が真のときの所要時間表示は 1 秒未満も計測 (()) * [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 のように空文字列を検索したときは, 全メモ一覧 (()) * make でなく手動 byte-compile したら(?), %reminder でエラー (()) * リリース予定版 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 * 気になる指摘もあるけど, どうもはっきりせず, 見切り. 再現できた方はお知らせください. (()) * 途中から ChangeLog をつけはじめたので, 細かい直しはそちらも参照 * リリース予定版 howm-1.2.2rc6 [2005-04-29]と同じものです * 仕様変更 (たいがい影響なさそう) * 設定 howm-menu-top と howm-menu-file の優先順を逆に (()) * 旧: 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 はある, という環境(リナザウ?)に対応 (()) (()) * contents での絞り込みも C-u に対応 (マッチしたメモを排除) → ((<応用例|URL:https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?HidePrivateReminder>)) (()) * todo リストやメニューの %reminder でも, 旬度が同じなら文字列順ソート (()) * こまごま * 一覧から「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 に 該当するファイルはスキャンしないように (()) * …というか, もっと根元から対象外ファイルのチェックを見直し * ついでに, howm-excluded-file-regexp のデフォルトに (image-file-name-regexp) 相当を追加 * 0123-45-6789 みたな電話番号に下線を引かない (日付とみなす条件を厳しく) (()) * 「%」を含む message のエラー * emacs20 でメニューを隠しバッファにすると色がつかない (()) * 一覧・内容バッファからメモを開く際の, narrowing 解除の判定ミス (()) * come-from 記法を変更した場合の手当て (thx > taku さん) (()) * テスト版・リリース予定版の 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} を使いわけ (()) (()) * 理解してなくて, インチキ手当です * 一ファイルが長くて着色に時間のかかる方は, emacs20 でなく emacs21 をおすすめします * howm-list-all-title が non-nil のとき C-c , a の並び順が逆 (()) * メモを開くのが異常に遅く (()) … 直ったのか未確認 * Meadow 2.10 で make がエラーに (thx > taku さん, 「も」さん) (()) (()) * Meadow-1.15 だと, image-file-name-regexps が未定義でエラー (thx > 逃避さん) (()) * howm-directory が ~/.howm のようなドットディレクトリだと何も検索されず (thx > taku さん) (()) * [2004-12-11] v1.2.1 * Note * 表向きは, ほとんど bug fix のみ * 隠し機能は, まだ隠し * 改良・変更 * 予定表で, 同じ日の予定は記述内容でソート * 「[2004-11-04]@ 07:30 ほげほげ」みたいに書いとけば, 時刻順に並ぶはず (()) * 「同じ日のは重要度順でソート」って要望も, これ使ってなんとかなる? (()) (()) (()) * tag2plan は直していません. * howm-template のデフォルトは howm-view-title-header に応じる (()) * 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 日後まで」 のはずが「…日前から…日間」になっていた * タイトル表示時に, タイトル欄「= 」がないメモを救出 * タイトル表示オンをデフォルトにするための布石 (()) (()) * ((<奥山さん版 auto-save-buffers|URL:http://homepage3.nifty.com/oatu/emacs/misc.html#asb>)) との併用で, 「.howm-keys has changed since visited or saved. Save anyway?」 (()) * [2004-09-01 23:26]@ とかの当日分がメニューに表示されなかった (()) * 表示されるってだけ. おすすめしません. この書式を本気でサポートするか未定なので. * meadow で, [2004-08-08]! の「!」で RET 叩くとエラー (()) * 再現できなかったけど, 何にせよこれで直るんじゃないかと * メモを開いたときに narrow だと, 隠れてる部分の初期化ぬけ (()) * 内部整理 * howm-list-migemo が直接 howm-view-search を叩かないよう * howm-set-mode-p を howm-set-mode から分離 (()) (()) * リマインダの action-lock を整理していじりやすく. 動作は変化ないはず. (()) * 副作用で, howm-reminder-regexp-XXX-pos のデフォルト値がひとつずれた * その他 * 一覧バッファと内容バッファを「o」で行き来 (()) …は, 書いてみたけど消しました. @ 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 ほげ」 (()) (()) * メニュー・予定表・todo 一覧から, -+!@~. 上で RET を直接叩ける (()) (()) (()) (()) (()) (()) * 小改造 * 一覧 * 表示切りかえ (0,1,2,v キー) (()) * T でタイトル表示, TAB・M-TAB で次・前のファイルへ (()) (()) * リマインダの日付によるソート・絞り込み (()) (()) (()) * もうちょっと吟味して一般化したい気も (赤字箇所でソート, とか) * 絞り込み基準に Region, Around を追加 * ((<カスタマイズ>))参照 * 一覧バッファへの色つけ (()) * ○○のときだけタイトル表示 * howm-list-recent-title, howm-list-all-title はそのうち廃止の予定 * howm-list-title には関数も指定可能 (()) * C-x 1 後は勝手にフレームを分割しない (()) (()) * 検索 * foo を検索したら [[foo]] を上位に (()) * デフォルトにしました. いやなら (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) * 検索に使う関数を((<カスタマイズ>)) (()) * メニュー * [今日] [昨日] を拡張 (()) * 一メモ一ファイルのときは, その日付文字列を検索. 一日一ファイルのときは, その日付のファイルを開く. * デフォルトのメニューに追加しました * もっと便利そうな ((<別解|URL:http://pc8.2ch.net/test/read.cgi/unix/1077881095/39>)) がすでに :-) * キー設定に C-i と M-C-i を追加 (()) * action-lock の((<カスタマイズ>)) * 「file://…」や「http://…」 (()) * { } や {_} を変更しやすく (()) * {_} はテンプレート書式と連動した方がいいかと思って, 小細工してました * 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 に書いてたのはウソ. 作ってませんでした ^^; * リマインダ * !+-~. の旬度の((<カスタマイズ>)) (()) * こまごま改良 * file:// でも画像等は外部 viewer 起動 (()) * 日付形式の直叩き (メニューや todo 一覧から) * メニューの %schedule, %todo, %recent, %random の action-lock を統一 (()) * 「>」で 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 一覧に曜日を表示 (()) * 文書の更新 * インストール法の説明は, 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 オプション記法なおし (()) * Fix * CVS 先端 emacs で色がつかない (()) (()) * メモが narrow されてると, 検索されない・閲覧できない・開いても見えない (()) (()) * 「>>> ファイル名」のときはタイトル表示を off (()) * >>> から画像を開いたあと, 元と違うバッファが表示されたりしてた * 「<<<」上で 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). 挙動は変化ないはず. (()) * テスト版のバグ(抄) * 「メニューに %recent」で対象外ファイルのチェックを忘れてた (()) (()) (()) * ((<インストール>))の「はじめて C-c , , した時に読み込む」の設定抜け * テスト版のバージョン表示が, ユーザが ./configure した日になってた. * emacs -nw なとき, [2004-08-08]! の「!」で RET 叩くとエラー (()) * 各ファイル個別に byte-compile したときの不具合 (()) * マクロがマクロ扱いされてなかった → ファイルまたいで使うマクロは 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 の省略形とかぶってた (()) * 「make test」で「素の設定でのテスト」 * メニュー中での「%|」による不可視トグルを公式機能に * howm-view-real-grep は「パターンのリスト」も受けつける (setq howm-view-grep-file-stdin-option "-f -") * 特に linux 以外で grep 使用な方は, この設定をして不都合が出ないか, 試していただけると助かります. 見た目の動作は何も変わらないつもりですが… * 「come-from キーワードの alias」に向けた布石です (()) * 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 不使用時) (()) * メニューの予定・todo 一覧の「>」で RET → no match というバグも出ていた模様 (howm-keyword-case-fold-search 設定時) (()) (()) thx > NARA Shinsuke さん * [2004-03-16] v1.1.1.1 * Note * v1.1.1 からの bug fix 版です * 「隠し機能」も少々追加 * 微改良 * migemo-server を不要に (()) * grep 使用ならまだ必要 (→((<カスタマイズ>))) (()) * howm-menu-mode-map をふつうにキー定義可能に (buffer local じゃなくした) (()) * action-lock-set-rules は勝手に remove-duplicates * fix * (setq howm-list-title t) しても C-c , l でタイトルが出ない (()) * 日付入力で 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\\}") (()) * grep 不使用時, S → foo で「Foo」がひっかからない (()) * README の修正 * todo 表示件数のカスタマイズ法を追記 (()) * {_} のカスタマイズ法の説明を修正 (()) * [2004-02-21] v1.1.1 * Note * 大量のこまごま改良 * 目玉改造(保留, todo 直叩き, ソースコード閲覧)は, まだ「隠し機能」ってことで * v1.1.0.* から, そのまま移行できるつもり. 書式変更などなし. * v1.1.1rc3 と内容同じ * 新設定 (→((<カスタマイズ>))) * todo を RET 一発で済に (howm-action-lock-reminder-done-default) (()) * 内容バッファに色つけ (howm-view-contents-font-lock-keywords) (()) * ほんとはファイル冒頭と拡張子から自動判定すべきなんだけど, ひとまず. * 一覧のソート基準 (howm-list-normalizer) (()) (()) * メニューの予定表の表示範囲 (howm-menu-schedule-days-before) (()) * 日付の新規入力時に年や月を略したら未来と解釈 (howm-insert-date-future) (()) * howm-template を選択可能に (()) (()) * (setq howm-list-title t) すれば, 一覧では常にタイトルを表示 (()) * 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 と同じ) (()) * C-c , SPC で howm なバッファと howm でないバッファとを切り替え. howm なバッファがなければメニューを開く. (()) (()) * 一覧表示・内容表示では n, p でもカーソル上下 (()) * 「file://…」上で C-u RET → find-file-other-window (()) * [今日] [昨日] まわり (一日一ファイルを想定) (()) * howm-open-today は, 新規作成時にテンプレート挿入 * M-x howm-open-past で昨日を, C-u 3 M-x howm-open-past で 3 日前を開く * 変更 * 一覧バッファ・内容バッファ * 一組しか作らない(不評なら戻します). ((<カスタマイズ>))も参照. * q したら, フレーム分割を強制解除 (()) * 「元の状態に復帰」は give up です. ごめんなさい. 私の腕と気合では, 根本解決は難しそう… (()) (()) * sort-by-date を「新しいものが上」に変更 * 一覧表示から @ で連結表示に切りかえたら, window の分割を解除 * 連結表示で, 各メモの最後の空行を省く * 「>>> ファイル名」で RET×2 したら, window 分割状態を復元 * メニュー * > で RET → 該当行へ直ジャンプ * 「済み」は表示しない (()) * 潜伏中のリマインダは表示しない (howm-menu-todo-priority) (()) * メニューのキャッシュを設定しない限り, メモ保存時のメニュー更新はオフ * schedule, todo 欄に表題・書式説明を追加 (()) (()) * %sdays (予定表の表示日数), %tnum (todo の表示件数)も * howm2 * メモ一覧にタイトルを表示 (()) * howm2 -r でファイル一覧を逆順に (()) * autoconf, automake に着手 (()) * navi2ch から恥知らずにコピー. よくわからないままいじる. * doc/releng.txt よりメモ: tar.gz を作るには (開発者用) aclocal && autoconf && automake && make Makefiles && make dist elcdist * 参考: (()) * デフォルトのインストール先が /usr/share/emacs/site-lisp/howm になるように (()) * 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 のときに限る) (()) * Wiki 風リンク [[hoge]] は hoge に下線 (「<<< hoge」の有無にかかわらず) (→((<カスタマイズ>))) (()) (()) (()) * 従来は「]]」だけに下線. 「作成済みかどうかを下線のつき方で区別できる」っていう とんちだったんだけど, はまった方が複数. * ttp:// の類も http:// に直してブラウザへ (()) (()) * howm-toggle-search-other-dir で, 予定表や todo リストの検索範囲も拡大 (()) * ((<インストール>))の説明にバイトコンパイルを追加 * howm-reminder-tomorrow-face の背景を茶色からピンクに (()) * ユーザーには関係なし * ファイル構成の変更 (→((<実装について>))) * howm-menu-action の引数仕様を変更 * copy-list → copy-sequence (cl パッケージ → built-in) * fix * URL の抽出をちょっとだけましに (()) * 一覧バッファのむだな書きなおしを抑制 * howm-list-normalize からむだに何度も howm-view-summary が呼ばれて… * いちばんひどいとこだけ修正. まだむだは残ってる. * meadow 向けに, ドライブレターの大文字小文字を無視 (howm-normalize-file-name) (()) * 英語メニューの [String] と [Regexp] が逆 * xemacs canna 対策 (()) * split-horizontally が t なら C-x 1 後も横並べに ((()) > ヽ(´ー`)ノさん) * howm-menu-{schedule|todo} のメッセージ, howm-view-call-process の戻り値チェック (()) * 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) がない) (()) * 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) (()) * .gz, .jpg, .gif, .png も検索対象から除外 (()) * 最終行に改行がないと, 内容表示でその行が出ない (()) * 一ファイル複数メモで (setq howm-list-title t) なとき, 一覧で「S → date」をくり返すとソート順が入れかわる (thx > NAKANO Yasuhiro さん ) * 一部環境で, global-font-lock が効かなくなる (emacs-20.7.2 on Vine Linux 2.6, Meadow1.15 on WindowsXP Professional). (thx > NAKANO Yasuhiro さん ) * 一覧表示のファイル名欄のデフォルト幅 (thx > Jun Kuriyama さん ) * Jargon のリンク切れ (()) * コード添削 (()) * skip-one-link → action-lock-skip-one-link * *.el の先頭・末尾に定型コメント * (()) との併用でエラー (()) * 「<<<」で RET したときにも howm-keyword-case-fold-search を反映 * (setq howm-list-title t) すると, 一覧と内容の上下が逆転 (()) * バイトコンパイル時の警告をほぼ退治 * howm-keyword-regexp-header-pos → howm-keyword-regexp-hilit-pos * howm2 のデフォルトで, ファイル #foo.bar や foo.bar~ も対象外に (()) * ruby 1.8 系で howm2 がエラー (()) (()) * 明背景むけの配色 * カーソルがタイトル上にあると C-c , K (howm-keyword-to-kill-ring) に失敗 * CVS 先端 emacs だと on-the-fly で色がつかない (()) * 一覧で ! による shell command の出力がすぐ消えてしまう * ついでに, 出力が空のときは出力バッファを出さないようにした * ついでに, これも短縮ファイル名に * 連結表示で TAB を叩いてから RET 叩くとエラー * CVS 先端 emacs で, 一覧・内容バッファに色がつかない (()) * howm-search-other-dir の説明を追加 (()) * テスト版からの変更 (抄) * 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 対策を柔軟に ← 結局廃止 (()) * eval-after-load だと (load "~/elisp/yc.el") がマッチしないので, defadvice に変更 * ほんとは, 同様のことを egg, anthy にもやるべき (patch 募集. howm-misc.el 参照) ← やっぱやめ[2004-01-18] * メニューでは [2004-01-10]! 等に下線をつけない ← 「直叩き」として復活 (()) * fix: メニューに旬度を表示したら > から飛べなくなってた (()) * fix: anthy との併用 ← 結局廃止 (thx > Jun Kuriyama さん ) * fix: index-j.html からのリンクずれ (()) * fix: ドキュメントのインストール先 /usr/local/share/doc/howm → /usr/local/share/howm/doc * fix: README のミス. 全メモ一覧は C-c, l じゃなく C-c , a (()) * fix: ロード後に howm-keyword-file をセットした場合でも, 初回起動時に自動作成 (()) * fix: (()) で「確定」の RET キーを howm が食う (()) (()) * C-c , d → d で日時を挿入 ← 廃止 (()) (()) * ついでに prompt に曜日 * ((<カスタマイズ>)) の記述ミス: howm-directory → howm-keyword-file (()) * configure.in に Meadow.exe を追加 ((()) > Meadow2使いさん) * 廃止 * canna, egg, yc, anthy の個別対策 (()) * かわりに, 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 対策 (()) * 英語メニューの [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 で色がつかない (()) (()) * 最終行に改行がない場合, その行が内容表示に出ない (()) * [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 さん ) * fix: 一覧表示のファイル名欄のデフォルト幅 (thx > Jun Kuriyama さん ) * [2003-12-29] v1.1.0.2 * fix: anthy との併用 (thx > Jun Kuriyama さん ) * メニューに schedule・todo の表題と説明を追加 (()) * [2003-12-27] v1.1.0.1 * fix: 連結表示で TAB を叩いてから RET 叩くとエラー * fix: 明背景むけの配色 * fix: egg, yc, mcomplete との併用 * fix: Jargon のリンク切れ (()) * [2003-11-22] v1.1 * Note * 非互換な変更をまとめてやってしまおう版 * オプションで, 従来どおりにも使えるようにしたつもり * 「((<インストール>))」の移行例を参照 * デフォルト書式の変更 * リンク書式を <<, >> から <<<, >>> に変更 (()) * 対応して, 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 ではなく) * 改良 * <<< での大文字小文字の区別 (→((<カスタマイズ>))) * <<< などに色つけ (()) * デフォルトのメニューにショートカットキーを追加 * 日付形式「2003-10-30」の action-lock に「くり返し」を追加 (()) * XEmacs, CVS 先端 Emacs, Carbon Emacs に対応(?) (()) (()) * 'や'さんの patch を取り込みました * howm2 * <<< と >>> がからむ場合を修正. 激遅になった ;_; * 対象ファイルを選別可能に (-list) * オプション追加 (-goto, -comefrom, -i) * (()) * 小変更 * C-c , d と C-c , D を入れかえ (()) * ソースファイル分割 (howm-font-lock.el, howm-menu.el) * デフォルトの major-mode を text-mode に (()) * [前後] にキー割りあて (C-c , A) * 内容表示とテンプレートのファイル名は /home/hoge/… じゃなく ~/… に (()) * 新規メモ作成直後に undo すれば「>>> 元ファイル」を消せる (()) * 微変更 * face を変数で指定 * howm-menu-lang を設定しなければ, おせっかいに推測 (()) * 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 も検索対象外 * ドキュメント * 「((<動きませんよ?>))」にチェックリストを追加 * 「((<インストール>))」に設定例を追加 (()) * メニューは ~/howm/ja/*.howm じゃなく ~/howm/*.howm (()) * スクリーンショットをカラー版に * goto, come-from の書式変更例を RD 風に (→((<カスタマイズ>))) (()) * メニューバッファ隠しの別法を紹介 (→((<カスタマイズ>))) * 実はコンソールでも使えてた (()) * <<< が RD の include とかぶってる旨の注意 (()) (→((<インストール>))) * カスタマイズ例におまけを追加 * 「インストール」の移行例に, GNU touch にがない場合のローテク版を追加 (()) * ((<カスタマイズ>))に「メニューをメモ扱いしない」設定を明記 * yen.el の紹介 (→((<外部ツール>))) * tag2plan の説明を修正 (-date_sep, ~/howm/*/*/*.howm) * 「参考」に簑系・超簑を追加 * fix * grep 使用時は「-hoge」が検索できなかった * 内容バッファの font-lock (仮修正) (()) * v1.0.4.1 のバグ: 検索文字列の色 * [2003-10-05] のバグ: ファイル区切りの色 * 一覧アからさらに一覧イを表示した後で q したら, 一覧アに戻る (()) * 「フレーム分割を復元」との折りあいに自信なし. もし不具合が出たら, ↓で従来動作(アの前のバッファに戻る)に. (setq howm-view-quit-to-nonhowm t) * [前後] の実行直後の内容バッファ * filter-by-date 等で「2003 年 9 月 * 日まで」と入力したら, 「2003 年 9 月 31 日 (= 10 月 2 日)まで」と解釈されてた * これ以外にもバグまみれだった[2003-10-26] * 一覧バッファと内容バッファの位置が入れかわる症状 (()) * 再現法: 内容バッファの方にカーソル置いて, g で検索 → q * 二日以上起動し続けると, メニュー(予定・todo)の当日と翌日の色つけが変 * mailcap.el がないときの >>> /etc * >>> の後に何も書いてないときは無視すべし * 正規表現 [^…] を [^\r\n…] にひととおり直し * テスト版からの変更・fix * font-lock がどんどん重くなってた. よくこんなので動いてたなあ… * fix: xemacs で font-lock が固まる (()) * やっぱりデフォルトは「タイトル表示なし」 * 移行例の旧キー設定が, 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 の実装をすっきり (()) * ~/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 でカスタマイズ) (()) … 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 でエラー (()) == 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 (→((<メモを読もう>)),((<カスタマイズ>))) (()) (()) * ディレクトリも対応. 「>> /usr/src」とか. * キー割りあて微修正 * (一覧モード) 一行スクロール: n,p → j,k * (メニュー) スクロール: SPC, BS * タイトルを kill-ring へ: C-c , k → C-c , K (()) * fix: contents-mode で C-h が未設定だった * howm-mode なバッファの save 時に, 下線を引き直し, メニューも更新 (→((<カスタマイズ>))) (()) * 検索対象ディレクトリの追加 (→((<カスタマイズ>))) (()) * ドットファイルは検索しない (>> や howm-search-path で明示的に指定すれば探す) (()) (()) * メニューを過剰に強化 (→(())) * HyperCard や Um4 に刺激されました. ほんとは別ツールにすべき. * 現バッファのコピーを howm-mode で表示(M-x howm-show-buffer-as-howm) (()) * 需要不明なので様子見 * action-lock の "...Done" メッセージを廃止 * fix * 「>> ファイル名」が howm-excluded-file-regexp に関わらず効くように * call-process で STDERR は捨てる * action-lock の説明に file://… を追加 * 寸前の window 分割状況に関わらず, 一覧を上, 内容を下に表示 (()) * sort や filter にファイル名を使う際は, ディレクトリ部分を除去 * howm-menu-refresh を M-x やキー割りあてから呼べるように * テスト版のバグ * 一覧表示した直後は内容が表示されない (()) * Wiki 風 link [[○○]] がエラー * [メニュー更新] がエラー (()) * >> で該当ファイルが先頭に出なくなっていた * 「参考」を整理 * 以下も実装済みだけど, v1.1 まで寝かすつもり * リマインダの書式変更 * メニューとメモの統合 * [2003-09-23] 反省してテスト版を分離 * 二系統メンテする能力はないので… * リリース版は放置 * テスト版は遠慮なく更新 * テスト版の更新が落ち着いたら, その状態にバージョン番号つけて, リリース版ってことにする * [2003/09/23] v1.0.3.4 * 日付形式 [2003/09/21] の action-lock を拡張 (→((<メモを書こう>))) (()) * fix: howm2 のリンク一覧を相対パスに * fix: template まわり * 前のメモとの間に空行を入れる (()) * スペルミス cursol → cursor * 新メモ template の %xxx 置きかえが, 前のメモにも及んでいた * fix: 「次(前)のリンクへ」を修正 * fix: canna 対策を, ロード順序に関わらず有効に * [2003/09/21] v1.0.2.3 * fix: 初めて起動したときに ~/.howm-keys を作成 * fix: canna 対策 (()) * [2003/09/20] v1.0.2.2 * HTML 化スクリプト howm2 でっちあがり (→((<外部ツール>))) * fix: 「!」するとバッファ名が変 * [2003/09/18] v1.0.2 * HTML 化スクリプト howm2 の試作 (→((<外部ツール>))) (()) * 未保存だろうと委細構わず, howm-mode なバッファをすべて強制削除するコマンド (→((<カスタマイズ>))) (()) * 「やさしい Emacs-Lisp 講座」の URL を修正. いま howm があるのはこの本のおかげです. * [2003/09/17] v1.0.1 * 一覧モードで「!」 → shell でコマンド実行 (→((<メモを読もう>))) (()) * 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 * メニュー (→((<メモを書こう>))) * 前後のメモの一覧 * 説明を補足 (()) * 一覧モードで「X」 → Dired-X を起動してファイル操作 (()) * howm-mode なバッファをすべて消す * fix: window の状態を復元 (()) * どんなモードでも C-c , Q が効く (()) * [2003/09/16] v0.9.8.3 * fix: タイトル一覧でエラー (()) * pure elisp 版のとき * タイトルが一つもなかったとき * menu.howm を一覧に出さない方法 (→((<カスタマイズ>))) (()) * [2003/09/16] v0.9.8.2 * メニューをファイルにして編集を推奨 (→((<カスタマイズ>))) * 同梱の ja/menu.howm を ~/howm/ にコピーしてください * (()) * デフォルトの変更 (→((<カスタマイズ>))) * grep 使わない (バグ出し期待) * メニューのキャッシュはオフ * ファイルを開く際, 一覧を残す * 楽しい連休でした :-) * [2003/09/16] v0.9.7.1 * Wiki 風リンク [[ほげ]] (→((<メモを書こう>))) * 「<<」上でリターン叩くと「関連キーワード」へのリンク (→((<メモを書こう>))) * 古い更新記録と移行例を移動 (→(())) * howm-ignore-comefrom-same を undocumented に. そのうち廃止? * fix: 曜日表示にも言語設定を反映 * [2003/09/15] v0.9.6 * 「n」と「p」で一行単位のスクロール (()) * [2003/09/15] v0.9.5 * メニューに [全消] (howm-mode なバッファをすべて消す) (()) * [2003/09/14] v0.9.4.2 * fix: タイトル一覧が裏に隠れてしまってた (()) * fix: 「カーソルを対応カラムへ」の微修正(マッチしなければ行頭へ) * [2003/09/14] v0.9.4.1 * grep 脱却の試み (→((<インストール>))) * メモが大量だとやっぱりちょっと遅い ;_; * fix: 「Wrong type argument: window-configuration-p, nil」 * 一覧モードからファイルを開いたとき, カーソルを対応カラムへ: (())に向けて * [2003/09/13] v0.9.3 * 一覧モードから抜ける際, window の状態を復元 (()) * 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: (()) * 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 * タイトルの一覧表示 (→((<カスタマイズ>))) (()) * 一覧モードやメニューモードで「?」を押すとヘルプ * 「参考」に 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 で効いてなかった (()) * 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://… と (()) も残してはある) * 用語変更: 明示・暗示 → 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: ←直前ファイル ■ ← カーソル * ~/.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://…」の変更 (ましな設定募集) (()) ;; howm (正確には action-lock.el) のロードより前に. ;; ・file://… (setq action-lock-open-regexp "\\") (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) * (())を使う場合: ((<"行頭の * でエントリの開閉ができるように"|URL:http://pc.2ch.net/test/read.cgi/unix/1063800495/237-238n>)) * おまけ (setq howm-congrats-format '( "%sキタ━━━━━(゜∀゜)━━━━━!!!!" "(・∀・) %s!" "(°Д°)%s?" "( ´_ゝ`)< %s" ;; …以下略… )) * もっといろいろいじるには, *.el 冒頭を参照 = 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: (()) を参照ください. thx > ((<100|URL:http://www.bookshelf.jp/2ch/unix/1063800495.html>)) = 古い参考リンク * (()): web で誰でも編集+お手軽リンク+お手軽フォーマット * (()) (EmacsWiki): Emacs での Wiki * (()) (RWiki): RWiki を Emacs から使う案 * (()) (増井俊之さん): PDA で Wiki * (()) (SHIMADA Keiki さん): パラグラフ指向 Wiki * (()): 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>)) (神崎正英さん) * メモとり環境 * 分類せず, 時間順と全文検索で管理 * (()) (増井俊之さん): 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>)) (洛西一周さん): 定番 * (()) (中村聡史さん): すごくいいらしい * その他の Emacs 用ツール * (()) (John Heidemann さん): link の便利さを知りました * (()) (西本孝志さん) * (()) (原田哲治さん): MH 形式 → メールリーダでも読める * (()) (臼田拓史さん): いろいろ保存メニュー * rd-memo (拙作. 開発終了 → (())) * ((<「コンピュータ環境でのメモ」|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 関連 * 移植 * (()) (七島功一さん) ((<+α|URL:http://www.google.com/search?q=vim+howm+%82%AD%82%D3%82%F1>)): vim 版 * (()) (kimura さん)と (()) (deecay さん): xyzzy 版 * (()) (Mr.M さん) ((<+α|URL:https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?HideMaru>)): 秀丸版 * 浮沈式 todo リスト * (()) (Gonza さん): xyzzy エディタ用の, Wiki + ChangeLog メモ → ((<経緯|URL:http://pc2.2ch.net/test/read.cgi/win/1053880433/n29-36>)) * (()) (鮎川さん): PHP での実装 * (()) (ふしはらかんさん): 付箋ベースの Wiki 的なもの. 付箋自体が上下に移動. 脱帽. * (()) (yatsuさん): Ajax な Wiki * (()) (Nishimuraさん): Web用マルチユーザメモツール. goto/come-from リンクあり. * お気にいり * (()) (OSHIRO Naoki さん): 箇条書き支援. べたぼれ. * (()) (OSHIRO Naoki さん): 今日の日付を反射的に入力. べたぼれ. * (()) (高林哲さん): ローマ字を入れるだけで日本語も検索. 愛用. * (()) (Toshさん): この README で使ってるドキュメントフォーマット. 愛用. * (()) (Naoto Morishimaさん): GNU screen の Emacs 版. 愛用. =end kaorahi-howm-fc61c31/doc/README-j.html000066400000000000000000002125661454422607600173550ustar00rootroot00000000000000 README.ja.rd

howm (筝篋冴荵 Wiki )

Emacs ф<≪医с. 蕁罘純ゃ障. , 罎膣≪<∫潟荵純с障. 掩後ф劫筝荀 :-)

篏帥

<≪吾

(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
      ( 泣泣 )
      • g茵腓冴с, ( 祉祉 ) ( 泣泣 ) 蚊障
    • 罩g∈後,

      (茵)=(腥榊)(帥ゃ)(茵)
    • 帥ゃ, <≪阪篏帥с OK

      ( 祉祉 )
      = 
      ( 泣泣 )
      = 
      ( 吾吾 )
  • 罨<吾潟
    • goto 潟: <ゃ(c) or 障絖

      >>> ~/.emacs
      >>> /usr/src
      >>> 祉祉
      • 筝祉祉絖<≪吾潟
    • come-from 潟: 篁<≪с泣泣絖冴, 吟<≪吾潟

      <<< 泣泣
    • Wiki 蘂潟: goto . <<< 吾吾遺.

      [[吾吾]]
  • 潟筝膩綣. 筝膩若純cc帥若潟!
    • 荅峨<ゃ筝荀с茵腓冴 (<≪茯)
      • , >>> emacs筝荀

        <<< emacs              違 come-from 絎h<
        <<< emacs lisp         emacs come-from 絎h<
        <<< 篏 emacs lisp
        grep, ruby, emacs  regexp   筝emacs<
        emacs 罎膣≪若?[2001-08-13]       (違)
        
      • 茯帥<≪若純帥若潟! <≪
      • come-from 潟 <<< 筝с帥若 ∫c若若吾潟
          • 篏lisp come-from 若若
          • <<< 篏 lisp筝с帥若 篏lisp若若
      • <≫賢<<< foo <<< bar <<< baz吾, alias
        • foo, bar, baz с帥若潟 foo 障 bar 障 baz罎膣≪障
        • Tips: 篋 alias ф祁絆, 翫
          • <<< foo
          • ャfoo <<< bar
          • , foobar <ф膣≪foo <<< bar筝篏
    • 絎, grep 泣泣激с若c
    • come-from 潟号
      • 若若冴, 潟(= 罎膣)
      • 若若罎膣≪, 茵腓冴
    • come-from 潟
      • 1 ゃ<√ 2 3 c
      • ャ<≪若若吟c
      • 帥ゃ若,

        = <<< 泣泣
    • 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 罸綛
      • . 篁ャヤ吾
      • <帥, <ャ若 [モ] фヤ綵√ュс障
    • 潟筝腮
      • 篁≪ゃ≪c
  • 潟潟 ( howm-mode 篁ュс絽吾)
    • C-c , , <ャ若
    • <ャ
        • [space] [backspace] 鴻若
        • TAB (M-TAB) 罨()
        • [] > 筝с帥若 絎茵 (吾c潟)
        • ?
        • q 怨
      • 帥 [] (潟潟)
          • [荐] (C-c , e) 宴宴c<≪ (C-c C-c т絖)
          • [域] (C-c , c) 域<≫ (憗若吾с潟帥ゃ)
          • [茲茖] (C-c , D) 憗<≪茲茖 (篏蚊潟若喝)
        • 筝荀
          • [筝荀] (C-c , a) <≪筝荀
          • [菴] (C-c , l) 菴<≪g茵腓
            • (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) ≦若篏臀筝荀
        • 罎膣
          • [罩h] (C-c , g) 罩h頫憗罎膣
            • 堺紊ф絖絨絖阪ャ
              • 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) ≦罩h頫憝膣
        • 膩: 絲乗院<ゃ(膩≪若)倶<ャ若若吟
          • [贋] (C-c , r) 筝膩綣
          • [汲] (C-c , i) 若若茖絎ュ莢若ゃ
            • Tips: M-v у茖筝荀с腱祉c migemo 罎膣≪罐
          • [モ] (C-c , d) 篁ャヤ [yyyy-mm-dd] 莢若ゃ
          • [] (C-c , T) 篁ャユ [yyyy-mm-dd HH:MM] 莢若ゃ
          • [蕁] (C-c , K) 憗<≪帥ゃ kill ring (C-y ц下ゃ)
            • 帥ゃ帥ゃc<ゃ
          • [] (C-u C-c , K) <ゃ kill ring
          • [menu 贋] (R) <ャ若篋絎茵贋
          • [menu 膩] <ャ若膩
          • [羔] (C-c , Q) howm-mode <鴻羔 (篆絖ゃ)
          • [罩] (C-c , w) 潟潟c画Η. 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 , 潟c
      • 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) <∽膣 (罩h頫)
    • C-c , s (M-x howm-list-grep-fixed) <∽膣 (阪若若)
  • 罎膣≪潟吾c潟, 筝荀с≪若
    • 筝荀ц;腓
      • 筝荀с + 絎鴻
      • 若純篏臀<≪絎鴻茵腓冴
    • g茵腓冴с
      • @ чg茵腓. 筝綺 @ т荀ц;腓冴祉.
      • <≪絎鴻吟ゃ茵腓
        • <≪吾 ゃ茯
      • [tab] [alt]-[tab] ф/<≪
      • Tips: <≪「, 罎膣≪с腮綺若, g茵腓冴 migemo 罎膣≪罐
    • 筝荀ц;腓冴
      • 0 g茵腓冴違 (@ )
      • 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: 絎罩h頫憗筝茵茵腓冴罎膣≪, 筝篏腱祉
      • summary-match-string: 筝 + 絖純若
      • random: 潟激c
      • reminder: ゃ潟 (筝茵茵腓阪 [2023-02-10]! 絖「ヤ)
      • 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 с潟潟絎茵
      • <≪e, mv rm
      • 2 絨顚≪障 :-)
    • >>> hoge.png 紊 viewer х糸

ゃ潟

(篋絎茵todo)

    • <≫賢

      [2002-10-20]+ ゃсゆ 莢激

      吾, 筝荀сцс障

      • C-c , y 篋絎茵
        • . 篁ャ
      • C-c , t todo 筝荀
        • 筝荀т賢筝筝篏臀茵腓冴, ヤ腮蕁
    • 菴篋絎todo <ャ若茵腓冴障 (<c荀荀)
      • <ャ若с, 茵>筝 RET <≪蕋潟障 (篁ュ篏臀с, 筝膩罕)
    • 潟若純 plan 吾 export (紊若)
    • 荀 (-)

      [2002-10-20]- ゃсゆ 莢激
      • 絎ャ羌, 篁ュ緇羃
      • 絎ャ障с綺羹篌
      • 羃, 銀ユ違ф絎( 1 )

        [2002-10-20]-14 ゃсゆ 莢激  14 ラ羂
    • todo (+)

      [2002-10-20]+ ゃсゆ 莢激鴻
      • 絎ャ, 緇羌c
      • 絎ャ障с綺羹篌
      • 羌, 銀ユ違ф絎( 7 )

        [2002-10-20]+14 ゃсゆ 莢激鴻  14 ラ<
    • (!)

      [2002-10-20]! ゃсゆ 
      • 絎ャ菴ャ, 羌c
      • 絎ヤ札, 筝筝羌c宴
      • 篏ュ羌, 銀ユ違ф絎( 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]! ゃсゆ

絨ユ

ゃ潟鴻若

MELPA с鴻激сゃ潟鴻若翫

  • 宴若吾howm MELPA сゃ潟鴻若

ゃ潟鴻若翫

  • ゃ潟鴻若
    • ./configure make , root c 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 c激
  • , 若若筝荀с ~/.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 篁ュ翫: 腱, 罎膣≪ <URL:OLD.rd>
    • 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篏帥翫
      • <<< RD include 吟
      • 絲丞箴
        • include 篏帥. 茵 <<< 吾羈.
        • include 篏帥. rd2 howm2 -type=rd .
        • 潟荐垩紊眼

          ;; 箴: .emacs (howm 若)
          (setq howm-ref-header "==>") ; goto 潟
          (setq howm-keyword-header "<==") ; come-from 潟
        • howm wiki 篏窮若
  • х腱肢 (綽≪c!) <URL:OLD.rd>
    • 違 make install , 篋冴<ャ若<ゃ筝吾贋違障. 綽荀, <ャ若х隈, ja/0000-00-00-000000.txt с潟若.

鴻帥ゃ

堺 M-x customize [Applications] [Howm] . 眼, [Show] с<√ゃ御.

荐絎ゃ, ~/.emacs (~/.emacs.el ), 篁ヤ贋・吾. (c膓牙ゃ茹h, <URL:OLD.rd>)

    • howm ∫c<演画┃絎

      ;; 祉[泣]
      ;; 肢┃絎羈荅括完, 紊 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 篋絎蚊с篏帥c.
    • 絎鴻< 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")
      • <ゃ篏綛贋ャャc, 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/ , 罕膀(ゃ潟鴻若).
      • <: 罎膣≪? (篏с祉, c帥筝)
  • 筝荀
    • 筝荀сс!潟潟紊

      (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 "祉") 祉罎膣∝莨若
          • , 脂蚊∽違篏帥障 (c)

            (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   . "c3ュ障р")
              (nil . "todo") ;篋絎todo紜
              ))
  • c荵純 (cf. 絲莟違潟)
    • 筝菴違 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

      (setq gc-cons-threshold (* 4000 10000))
    • Tips: grep-2.5 с, 医紊 LANG C , ゃ絲上c ref
  • 罎膣
    • 絲乗院c菴遵
      • 罎膣≪, <≪絎c篁ヤ絽亥「

        (setq howm-search-path '("~/Mail" "~/News"))
        (setq howm-search-other-dir t) ;; 筝荐違 (t  nil)
      • M-x howm-toggle-search-other-dir , 筝荐c罎膣√乗院違
        • 若ゃ潟医 (ゃ潟帥若с若号─膣≫賢ゃ)
  • 篆絖紮膣井, 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 翫<綣違ゃ若吟 c篁莨若帥障
  • 後紊岩 (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) ;; ∫c若若
      (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 障 [モ])у拘ャ, ャ茹i

      (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 уャ篏 (c潟祉, 荐垸, )
    • 篋絎茵todo 筝荀сゃ潟荐垬х贋・ RET , < save

      (setq howm-action-lock-forward-save-buffer t)
      • save究鴻
      • C-x s (篆絖<< save)鴻罩i
    • 篆羌羃膀

      (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 . "羹篌鋇")
              ))
      • g茵腓冴純若翫障
  • 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

      ;; howm (罩g∈ 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篏帥翫: 茵 * с潟с 237-238
  • (setq howm-congrats-format
          '(
            "(卒始誌) %s"
            "(鐔始斬) %s"
            ;; 篁ヤモ
            ))
    (setq howm-congrats-command '("play" "~/sound/fanfare.wav"))
  • c, *.el

紊若

(罌宴若 ext/ )

  • HTML 吾紊: howm2 (罌. 荀 ruby)
      • <≪c ~/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 遺賢g機 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
  • 膊≧吾:
  • 膂≧絨c絽
    • 若若羆冴, ヨ筝吾

      $蕋莢$ 500 若<
    • <<< $蕋莢$>>> $蕋莢$т荀с茵腓. 腟莨若帥祉純若膀我絎.
    • M-x yen-region , 荐 yen.el
  • howm wiki 篏窮若

絎茖

絎茖ゃ

  • <ゃ潟鴻c潟c絎絎茖
    • ~/.howm-keys 若若筝荀
    • <ゃ
      • .howm-keys 若若ゃ, 榊憗<罎膣
      • 榊憗若若 or сゃ罩h頫憗篏
      • 罩h頫憗 font-lock action-lock 荐絎
    • <ゃ篆絖絎鴻鴻c潟, ~/.howm-keys 贋
  • 罎膣
    • <≪c ~/howm/ 篁ヤ絽亥罎膣. <ゃ≦宍絖 ~/howm/ 篁ヤc罕, с.
      • <ゃ句,
        • <ゃ綛贋ャャc (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)
          • (罩h頫)薛羈(∽)腟脂
          • 帥若潟弱
            • 筝 薛羈阪
            • 篁ュ ャ帥若潟
      • riffle.el
        • riffle-{summary|contents}-mode
          • 筝荀с糸絎鴻宴宴茵腓, 絎鴻g茵腓
          • 筝荀сс, 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
          • 処院
            • c 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)
            • 筝菴違鴻c潟
        • 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
  • 茖莇: ゃ激ャ筝膈
  • 篏荀
    • 亥紊 howm-call-process-last-command
    • C-u M-x howm-bug-report ч∫e違筝荀
    • M-x howm-elp , <ゃ elp 羣

. 鴻, Q-pocketHashedWikiChangeLog <≪c宴障障. 茗.

  • 綺篋 Emacs-Lisp 茗綺с(激鴻, 1999) ISBN 4-906391-70-2 潟ゃ括 (?)
    • elisp у
    • 6.4 腴馹泣泣 dired障

贋域

thx > patch紙壕罅紙c罕

  • 若合 howm-1.5.1 [2023-12-31]
    • ゃ潟<潟帥 grep с潟
      • 罎膣∽絖ュ筝 (RET 若) grep
      • M-x customize-variable RET howm-view-use-grep RET On 翫睡阪
      • 荐絎紊眼 M-x customize-group RET howm-iigrep RET
    • 潟菴遵 (沿祉激∵ャ≪, 沿若吾膣剛)
    • 膣違違篆罩
    • howm-1.5.1-snapshot6 筝荳с
  • 若合 howm-1.5.0 [2022-12-27]
    • ゃ潟<潟帥 grep (с)
      • 罎膣∽絖ュ筝 (RET 若) grep
      • 罨≦若鴻сс潟篋絎с. 鴻鴻 M-x customize-group RET howm-iigrep RET у howm-iigrep-show-what 膈荐絎.
    • 罎膣≫荀с f (filter) 若御≪uniq菴遵 (筝<ゃц医筝ゃ茵腓) thx > Andrei Sukhovskii san (qejep at posteo.net)
      • ゃс, 罎膣≫荀сс u (uniq) 違 (若潟uniq潟)
    • (ャ, howm-1.4.9 鴻 1.5.0 )
  • 若合 howm-1.4.8 [2021-12-30]
    • fix: emacs 28.1 絲上 thx
  • 若合 howm-1.4.7 [2020-12-31]
    • fix: ゃ潟潟ゃ茘 (`font-lock-fontify-buffer' is for interactive use only; use `font-lock-ensure' or `font-lock-flush' instead.)
    • fix: web若吾絖篆罩 thx
    • fix: 篁颭遵小篆罩c紙贋 (docstring, 潟<潟, web若吾潟)
  • 罘 (experimental)
    • 1.1.1.* 篁ュ
      • 純若鴻潟若茯炊吾 howm
        • GNU global () on the fly
        • 障坂賢. 活
          • 紊 howm-configuration-for-major-mode 荐絎
            • major-mode 綽, come-from 潟膈後紊
            • howm-misc.el 潟<潟
          • M-x howm-open-directory-independently ~/elisp/howm ュ
        • 罩d腟絮 grep , 障莖≪篏緇
          • elisp, tex с箴水, ruby 篏帥.
            • elisp ∽医 tex 紊у筝. ruby .
    • 1.2
      • 筝荀ф絎鴻<<ゃ篏茵腓冴

        (setq howm-view-preview-narrow nil)
        • g緇ャ(<√阪膀蚊)
        • howm-configuration-for-major-mode 篁ュт戎顔≪, 障с
      • ゃ潟
        • ゃ潟鴻帥ゃ thx

          ;; 違ゃ潟*絎臂箴:
          ;; [2004-07-11]* 祉, 絎ャ障т, 筝.
          ;; (綺 = - | / 銀ユ|. 銀ユ違 3)
          ;; 1. 綺∽違羣 (銀ユ(≪ゃ)蕋c綺)
          ;;    : 絎ャ篁ャ障сユ. 障ゃ.
          ;;    銀: [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 茯荐篋 冴障
            • 筝荐垩 (罩h頫 [] х劫ャ潟よ垩)
            • [2004-07-11]- 祉-筝 RET *ュ
          • . сс?
      • ヤ綵√
        • ヤ筝 RET2

          -, +  , 膺
          (, )  , 膺
          {, }  , 膺
          [, ]  綛, 膺綛
          • C-u 20 - 20ュ
          • cヤ「

            (setq howm-date-forward-ymd-limit 90)  ;; 90ュ give up
          • c障取┃絎
        • ヤュC-c , d篏絨顚≪

          (setq howm-insert-date-pass-through t)
          • ヤ潟潟ゃ罕
          • ヤ潟潟, <. C-c , d hoge C-c , d C-a 荅違障.
          • 障c. [2004-05-21]+ュ障. + RETс+水ャ帥
    • 1.2.1
      • Major
        • howm2 篏眼? (ext/howmkara)
          • 綽荀障сc<. .
            • 綽荀羣, 障丞舟. 茯違謂
          • 罘純. 純若鴻障.
            • magic string <違c
          • 筝<≫<ゃ蚊 ext/hsplit.rb 吾,
      • Minor
        • hcal.rb [2004-09-02]?絲上(絨違) ref
        • M-x howm-return-to-list 筝荀ц;腓冴祉 thx
          • ャ莇сc<. 帥綽障.
          • 筝荀ц;腓冴<≧祉, 筝荀с罨♂贋・:

            (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
          • 篏潟, 泣ゃс若吾膩雁
          • rot13:xxx <, C-c C-c сrot13 篆絖
            • rot13 <ゃ, M-x yarot13-find-file
        • howm-search-path , 絽吾c篁ュ吾

          ;; namazu folder  rot13 folder 罎膣√乗院菴遵
          ;; (M-x howm-toggle-search-other-dir ф鴻紫≦鴻)
          (let* ((nd "~/PATH/NMZ/Mail") ;; namazu ゃ潟鴻c
                 (rd "~/g/r13") ;; c篁ヤ<ゃ 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 潟c
        • 羂, c障絎茖 thx
      • ext/hcal.rb iCalendar 阪菴遵, 篏c
    • 1.3.1
      • 違違罅
        • make test emacs 莎桁
        • 違榊
          • 榊, .emacs ∫c 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 若, <ャ若茵腓冴< 冴鴻絅純帥, currentprevious眼
      • 眼ャ todo list thx thx thx thx
        • 蕁荀ゃc宴, 篁ャ羂障羂 荅. 罩e閟純絎.
        • <ャ若吾, foobarbaz todo 蕁茵腓

          %here%(howm-menu-categorized-reminder ("foo" "bar" "baz"))
          • <帥, %here% с若筝荀с
        • , 茵foobarbaz羔

          %here%(howm-menu-categorized-reminder ("foo" "bar" "baz") nil t)
        • misc.茵腓冴

          %here%(howm-menu-categorized-reminder ("foo" "bar" "baz") nil nil t)
      • 筝荀с<絎鴻綏帥ゃ茵腓. <帥緇ャ, 絎鴻帥ゃ茵腓冴. thx > Highfly

        (setq howm-view-list-title-type 2) ;; 絎鴻綏帥ゃ茵腓
        (setq howm-view-summary-format "") ;; <ゃ羔
      • C-c , M с<ゃ絎<≪ thx > Eduardo Ochs
    • 1.3.7
      • 筝荀фc潟蚊紕荐絎. thx

        (setq riffle-keep-window t)
        (setq riffle-window-initializer nil)
        • 絎鴻<茵腓冴障.
        • . 篁緇紊眼醇с.
      • M-x howm-list-active-todo , 憜鴻(鐚羹篌鋇с) todo 帥筝荀. thx
        • ゃс, M-x howm-list-sleeping-todo , 羹篌鋇 todo 帥筝荀.
        • ∽違荅篏. ゃ潟帥с若鴻罅違.
        • <帥, <ャ若羹篌鋇 todo 羔, M-x customize-variable RET howm-menu-todo-priority RET Hide sleeping reminders荐絎.
      • ≦, <ゃс帥ゃ. thx > Mielke-san (peter at exegenix.com), thx

        ;; emacs 筝с≦, <ゃс帥ゃ.
        ;; (<ゃ篏紊眼)
        (add-hook 'howm-mode-hook 'howm-mode-set-buffer-name)
        (add-hook 'after-save-hook 'howm-mode-set-buffer-name)
        • 帥ゃ祉<≪≦=祉 thx

          ;; 帥ゃ AAA ≦ =AAA .
          ;; 筝 howm-mode-set-buffer-name 荐絎筝р
          (setq howm-buffer-name-format "=%s")
        • 綵 howm 腴若鴻, cс蚊障.
    • 1.3.8
      • M-x howm-extend-deadlines , 絎ャ(!)鴻筝絎ユ医後散. thx
        • 篁罕ゃ潟帥с若鴻障.
        • <≪吾演冴篏, ≪c!
    • 1.3.9
      • <ャ若%here%(howm-menu-search "[]" full t)吾, <≪絎劫篏<ャ若莨若. thx > Morgan Veyret (morgan.veyret at gmail.com).
        • "" , <ャ若<ゃ荳帥絨靘医轡
    • 1.4.2
      • 筝荀с<с<ゃ | 茵茵腓冴. 帥ゃ=茵腓冴. (experimental) thx thx > 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) 絲上帥ゃ茵蕋с
          • 茵тcу茖∞∝
          • <眼. 綣激荀謂
    • 1.4.4
      • ヤュ篏≦宍 thx > Albert-san (areiner at tph.tuwien.ac.at)

        ;; [2003-12-27]筝 RET 綛眼ャ
        (setq howm-action-lock-date-future t) ;; 2003-12-27 ャ茹i
        ;(setq howm-action-lock-date-future 'closer) ;; 2003-12-27 菴鴻цВ
        • 域ュ篏

          ;; ヤュ(C-c , d 障 [モ])у拘ャ
          (setq howm-insert-date-future t) ;; ャ茹i
          ;(setq howm-insert-date-future 'closer) ;; 篁ャ菴鴻цВ
  • 絮ユ贋膕 (<URL:OLD.rd> )
    • [2012-12-27][2019-12-31] 1.4.11.4.6 筝桁篆罩, Emacs 亥吾菴遵
    • [2012-08-16] 1.4.0 罘純綣, 篋紊
    • [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 祉ャd信罩
    • [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
    • [2004-02-21] 1.1.1 罘純九墾絨
    • [2004-01-25] sf.jp 悟Щ
    • [2005-01-08] UNIX USER 2004.2
    • [2003-12-27] howm wiki
    • [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 鴻
    • [2003-09-17] 1.0 <≪c絮ゅ
    • [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 若潟鴻
    • [2002-05-29] 0.1

kaorahi-howm-fc61c31/doc/README.html000066400000000000000000000246441454422607600171240ustar00rootroot00000000000000 README.rd

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.
kaorahi-howm-fc61c31/doc/README.ja.rd000066400000000000000000001457441454422607600171630ustar00rootroot00000000000000=begin = howm (一人お手軽 Wiki もどき) 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: リマインダ順 (一行表示内で [2023-02-10]! などの文字列を探してその日付順) * 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]! ★★ハイウェイ惑星 == 導入法 === インストール ==== MELPA でスナップショット版をインストールする場合 * パッケージ「howm」を (()) でインストール ==== 自動インストールの場合 * インストール * ./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 以外の場合: 私はよくわからないので, 検索してください → (()) * 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 の include とかぶる * 対策例 * include は使わない. 行のはじめに <<< を書かないよう注意する. * include は使わない. rd2 をかける前に howm2 -type=rd を通す. * リンク記号を変更する ;; 例: .emacs (howm ロードより前)に (setq howm-ref-header "==>") ; goto リンク (setq howm-keyword-header "<==") ; come-from リンク * ((<→ howm wiki の「併用ツール」|URL:https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?ExternalTool>))も参照 * 旧版からの移行 (必ずバックアップをとってから!) → (()) * 新たに make install しても, 個人のメニューファイルを上書き更新はしません. 必要なら, メニューを自分で編集するか, ja/0000-00-00-000000.txt を自分でコピーするかしてください. === カスタマイズ 基本的には M-x customize → [Applications] → [Howm] で. ぴんとこない項目も, [Show] でありがちな既定値から選択可能. そこにない設定については, ~/.emacs (~/.emacs.el かも)へ, 以下のように直接書く. (もっと網羅的だが古い解説は, (())を参照) * 色 * 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 にしておくと, マルチバイト対応がオフになって速くなる (()) * 検索 * 対象ディレクトリの追加 * 全文検索のとき, メモに加えて指定ディレクトリ以下も再帰的に探す (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: ←直前ファイル ■ ← カーソル * ~/.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 "\\") (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)) * (())を使う場合: 行頭の * でエントリの開閉ができるように → ((<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 * 箇条書き支援: * (()) * 簡易小遣い帳 * キーワードを決めて, 日記中に書いておく $食費$ 500円 ラーメン * 「<<< $食費$」なり「>>> $食費$」なりで一覧を表示. 絞り込み・ソートして範囲指定. * M-x yen-region で, 「◯◯円」を合計 → (()) * ((<→ howm wiki の「併用ツール」|URL:https://howm.osdn.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:https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportFAQ>)) * 補足: ガイシュツ上等 * 「仕様か」「既知のバグか」のチェックって, おっくうですよねえ. * howm に関しては, このチェックは不要です. それよりも, 気軽にどんどん指摘していただく方がありがたいです. * ぜひ, 作者の目が届くところ(2ch か howm wiki)にたれ込んでください. * cf. ((<バグレポートFAQ|URL:https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReportFAQ>)), (()) * 作者覚書 * デバッグ用変数 howm-call-process-last-command * C-u M-x howm-bug-report で関連変数の一覧 * M-x howm-elp で, プロファイラ elp の準備 == 備考 === 参考 ((<元ネタ|URL:https://howm.osdn.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・改良案・指摘をくださった皆様 * リリース版 howm-1.5.1 [2023-12-31] * インクリメンタル grep をデフォルトでオンに * 検索文字列の入力途中で (RET を押す前に) 随時 grep * M-x customize-variable RET howm-view-use-grep RET が On の場合のみ発動 * 設定変更は M-x customize-group RET howm-iigrep RET * リンクを追加 (英語・ロシア語マニュアル, 英語ページに紹介動画) * 細かなバグを修正 * howm-1.5.1-snapshot6 と中身は同じです * リリース版 howm-1.5.0 [2022-12-27] * インクリメンタル grep (デフォルトではオフ) * 検索文字列の入力途中で (RET を押す前に) 随時 grep * 次回リリースではデフォルトでオンにする予定です. テストに協力いただける方は M-x customize-group RET howm-iigrep RET で変数 howm-iigrep-show-what 等を設定ください. * 検索一覧で f キー (filter) を押したあとの選択肢に「uniq」を追加 (一ファイルで複数回ヒットしても一つだけ表示) thx > Andrei Sukhovskii san (qejep at posteo.net) * ついでに, 検索一覧での u キー (uniq) をトグルに (押すたびに「uniq」をオンオフ) * (内部的に手を入れたので, howm-1.4.9 はスキップして 1.5.0 に) * リリース版 howm-1.4.8 [2021-12-30] * fix: emacs 28.1 に対応 (()) * リリース版 howm-1.4.7 [2020-12-31] * fix: バイトコンパイル時の警告を回避 (`font-lock-fontify-buffer' is for interactive use only; use `font-lock-ensure' or `font-lock-flush' instead.) * fix: webページの文字化けを修正 (()) * fix: その他ごく軽微な修正・更新 (docstring, コメント, webページのリンク) * 隠し機能 (experimental) * 1.1.1.* 以前から * ソースコードの読み書きも howm で * (()) (((<例|URL:https://www.tamacom.com/tour.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 以外で使う場面は, まあないでしょう * リマインダ * リマインダのカスタマイズ (()) ;; 新しい型のリマインダ「*」を定義する例: ;; 「[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) * 参考: 既存の旬度関数のグラフが (()) に出てます * バグ * 一部の記号はこけそう (正規表現 […] 内で特別な意味を持つ記号は×) * 「[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]?」対応(自分専用そのばしのぎ) (()) * M-x howm-return-to-list → 一覧表示に戻る (()) * とり急ぎ超雑でっちあげ. 反響に応じてまた考えよう. * 一覧表示にいちいち戻ることなく, 一覧の次項目を直接開く: (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 試作 (()) * これ自体はお遊びだけど, 「ふつうでないページ」の練習として * 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 が同じ意味になっていた * いずれ気が向いたら, もっとまじめに実装しなおすかも (()) * 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 (()) (()) (()) (()) * 「分類」の要望はつっぱねてきたんだけど, 今日は気まぐれに気が向いたので お試し. 正式機能にしていくかどうかは未定. * メニューにこう書くと, 「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) * 一覧バッファのマッチ内容の左にタイトルを表示. ちなみに従来のは, 「マッチ内容のかわりにタイトルを表示」. (()) > Highfly さん (setq howm-view-list-title-type 2) ;; マッチ内容の左にタイトルを表示 (setq howm-view-summary-format "") ;; ファイル名を消したければ * C-c , M で「ファイル名を指定してメモを開く」 (()) > Eduardo Ochs さん * 1.3.7 * 一覧時にウィンドウ分割を壊さない設定. (()) (setq riffle-keep-window t) (setq riffle-window-initializer nil) * 内容バッファは表示されません. * とりあえず叩き台. 今後変更の可能性あり. * M-x howm-list-active-todo で, 現在有効な(=潜伏中でない) todo のみを一覧. (()) * ついでに, M-x howm-list-sleeping-todo で, 潜伏中の todo のみを一覧. * とりあえず関数だけ試作. インタフェースの案があればお聞かせください. * ちなみに, メニューから潜伏中 todo を消すには, M-x customize-variable RET howm-menu-todo-priority RET で 「Hide sleeping reminders」を設定してください. * バッファ名を, ファイル名ではなくタイトルにする. (()) > Mielke-san (peter at exegenix.com), (()) ;; emacs 上でのバッファ名を, ファイル名ではなくタイトルに. ;; (ファイル名自体は変更しない) (add-hook 'howm-mode-hook 'howm-mode-set-buffer-name) (add-hook 'after-save-hook 'howm-mode-set-buffer-name) * タイトル「ほげ」のメモのバッファ名を「=ほげ」に (()) ;; タイトルが AAA ならバッファ名を =AAA に. ;; 下の howm-mode-set-buffer-name を設定した上で… (setq howm-buffer-name-format "=%s") * 本当は howm と独立したツールにする方がいいけど, おっくうなのでひとまず. * 1.3.8 * M-x howm-extend-deadlines で, 指定日を過ぎた〆切(!)をすべて一定日数後へ延期. (()) * 仕様もインタフェースもまだ叩き台. * メモを勝手に書きかえる危険な操作なので, バックアップをとってから! * 1.3.9 * メニューに「%here%(howm-menu-search "[断]片的" full t)」と書けば, 「断片的」を含むメモの内容全体をメニューに埋め込み. (()) > Morgan Veyret さん (morgan.veyret at gmail.com). * 単に "断片的" としないのは, メニューファイル自身がヒットするのを避ける小細工 * 1.4.2 * 一覧バッファで「ファイル | マッチ行」のかわりにこんな表示に. このときタイトル先頭の「=」は表示しないように. (experimental) (()) (()) > 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) したときは 対応するタイトル行に飛んでくれない * そもそも行指向で作っていたので実装が無理矢理 * きちんと直すのはめんどう. 強い需要がなければ… * 1.4.4 * 日付入力時の動作を拡張 (()) > Albert-san (areiner at tph.tuwien.ac.at) ;; 「[2003-12-27]」上で RET して年や月を略したら… (setq howm-action-lock-date-future t) ;; 2003-12-27 より未来と解釈 ;(setq howm-action-lock-date-future 'closer) ;; 2003-12-27 に近い方で解釈 * 新規入力時にだけそういう動作にしたければ ;; 日付入力(C-c , d または [日↓])で年や月を略したら… (setq howm-insert-date-future t) ;; 「未来」と解釈 ;(setq howm-insert-date-future 'closer) ;; 今日に近い方で解釈 * …履歴抜粋… ((()) 参照) * [2012-12-27]〜[2019-12-31] 1.4.1〜1.4.6 不具合修正, Emacs 新版への追従 * [2012-08-16] 1.4.0 隠し機能の公式化, 挙動やデフォルトの非互換変更 * [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:https://pc8.5ch.net/test/read.cgi/unix/1077881095/>)) * [2004-02-21] 1.1.1 「隠し機能」制度を導入 * [2004-01-25] ((<"sf.jp"|URL:https://howm.osdn.jp/>)) へ移動 * [2005-01-08] ((<"UNIX USER 2004.2"|URL:https://web.archive.org/web/20051022005814/http://www.unixuser.jp/magazine/2004/200402.html>)) * [2003-12-27] (()) * [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.5ch.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:https://www.yamdas.org/column/technique/clonelist.html>)) * [2002-05-29] 0.1 公開 === アドレス * 最新版: (()) * 連絡先: email アドレスはソースファイル冒頭を参照ください =end kaorahi-howm-fc61c31/doc/README.rd000066400000000000000000000147171454422607600165650ustar00rootroot00000000000000=begin = howm tutorial == First day === Write a note. * Type Ctrl-C , , to open the menu. [New] Search([String] [Regexp]) [Dup] [] [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] [] [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 kaorahi-howm-fc61c31/doc/TUTORIAL.ja.rd000066400000000000000000000125151454422607600174560ustar00rootroot00000000000000=begin = Tutorial これを読むよりも, ↓の方がわかりやすくておすすめです * ((<"Meadow/Emacs memo での紹介"|URL:https://web.archive.org/web/20160529014325/http://www.bookshelf.jp/soft/meadow_38.html#SEC563>)) * (()) == メモを書く 「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 kaorahi-howm-fc61c31/doc/cat.png000066400000000000000000000365251454422607600165570ustar00rootroot00000000000000PNG  IHDR^Q*4bKGD洲 pHYsa)tIME , 忘 IDATx=吶均IW1 \RzWcerlgp|&&己f'sR~~m枉n3%8?nX5G蓬畔O+*;.-U#Fm+Wl┴un拏]N妊dq槿x}jR7昊K凪,z幺uEWU)40dZIjC逓F&稿^uXmDv4(t CEx檄5U^ul^Mkgu?A=ka瘋 -)E-DA恩曁34攪3/jL殱遽l1ルh>jhボe-殄yソ抛0"|e|4._MuNOV5_8曚 傷e~@vEu]6J貴A佗毋80ぽ u:"d>L1@粒6k9Rr)P寤GE代M?襤yHK涼!WPN/$塘Y-jR']特]スj酢,視P=NずNJ毋dlVm5^<35;Yb'暢鑰vF0tg<;b+ujf/-;ZDW峽ZKl壽tw1i^5o涵1升a_({熄q~餉e-x公益Fv6UuP/}B稘干災c8曖X0j鑄z'+嘶Ml#Od扞X2s| 鈬2_B?<35.mgnj寺Db1{jdo]牙l&^享xPZa%\-^*瀛瀚 ,~tv蒐諢yKqE ?rFPz@] +"3.隙雅P麾Fg<~Pz?マ咨-o絲n“N#TrTlFYxga[5 V;齎樢qw`kVqJNk舒 4o6`j. {1^頚u製V働6密"t qvu 0返qyi8Yri)vsoΞC鎰Zq怪CHn葷#Ι]#泊腟^e \#p8サMV8?霖R>}r|_X刻{47 2j朸_nlC吉/~祠8>)2枉鑿Z1屡_|dS]Bэl髯P\c$g鴫L_頸o5~鱚|嵜) J39'}r磑DrME 拡FZ\&怪^%d#Y>L 5燒?R欒Fj桔фT}9ucHN%,B( x"gqQU,Gr]振`35詣4嫦6.]婪2)j楸o1S@&sn)w @w.q\垳mEq碵"Nb2A8kx(麥Sメ魯}k8~RрT聖1)j-g*_褂[wznJ"Rd*</j<憎>kbN 7蹇SC8@Ε鉤>*v惑fs5熏qOf%n椚$粃メ?gJ参;_uI)4禊c}\0_Dgp &Z;+&酉7eY 8kQp靴Ma,1^eyHRQ4王喀廬F=V'p陡QI剔Ob5\曳憚 L}jj-VTX者'[`;}}畳k惘"|aX<籔)e役THx9eXjR:d色:甃:Lf5[xsBKi@FGK事Dな1#蠍&Ju虜sVSl[JV7^藜BxB++;Br>LZv1牟5FのQG肘Bm絲飃wkRs?^.R偶Y翰h2~Ic2R1n'd Np-VJY1S8厦`j7IPH|[榿乱捧5J>: KKXvF3k'&<Ж澂瞻t樶Q夏g#$R_]螢襦,&=&匿c瓲!ケSs6&ldB9i/S-5`Udq;kyC/~)忰z+顧d7#-+s羣 C;blb4;Nen%~wsfI-Xj_N9)zHZ0k,淮~茫+jC跪8e瞭]N溢Jkld^7j,5n[冠/ !IN/r\~パ*p36擦.AdSW衆=}]IISS詆lOen|f6ヵJ9Li[9S.翫属GM Vg#i$P鍬,jTGjK[鱒-醗踉e踊膃cZZ`\膺%@Vd261WF$[迎nDTqED脚Ea;=b臻\X2%薛q!R6慳.e@VZ遶Tju1CgYUSd`賻]H麻Y堡BvSmp嬋*r$VP_QtG濾j隍E7oH]8LL$X置vP;W RW團譲嫖3*c尅Y*%s@3[6ニ"袙唳 689GCUg0~w\.j< :兎j]A9tfu垈=呟}';64p`4z;種l[!v '5.痙'k4]独顳k&mP紀]x4rb a%:2LHvb旁皖≪cノY.jlA屶;E3算8Jヱjj初幹oh拈R?穢J32Nd#K心К4_W8c$HH5睇QcuHq> gK-_&+:RC,lRl .k=齋ViR~Q7U]iメlC`YW_i^^0}"/5ケk椛h陵/"6[)}譫*T相DK8NGiX0附Y<;jk$S煎cgxu/P u<8juxI駻aRЖvGTXr,,縉6魚N~n[[,┣翦a+W酳:8.Z&`'T[h燵蟲WYjn<"[ぺbe&fIOT,5V<r鑵 #^_z$92提8eY,jG'B]a[Ig?B XWF{BDDDDDDDDDDD)o滾_-qK6" zGVFM~x円軾.P匠bk$y D^梛U鴇.*ZhWI 5n鈩醍U鬧遙MD羹D9S褒e"B|績襃iOD進k蹼f2{J:Г)j噺ieYHOO些O,|s桾寛夸x譫IYMkyR*+/?衄d8k強y<愽N5xesr晄K["牧Z苟翦P`1%jdxG3RG{k禊涅R jも`身snoF ]z稽\|Z9/;S,;g各2p<跳:*@YhjfWTzHTkaE事帳gcGD ※1O>9~b逝V朸}8G駒6 vk皙銃宵?YQ O/C綏B{B{VT3P L<MF欖0a\5h[||埀'鳥筆ypXぅzMhr蹣)蟷彩~R57Y弖=UJeG狙ZgQ總k殖瀉;円|cT1{TVPTj*!i雹1/q迯V2F j;揃Z 05n闊+"m`7-q@+Iカ済$,-[W裙yp垳mov賣舛c5,~祗z9k{GJj.X狒QcOA]籤┿I/y烱ム飆亦'T竢Xk縢}T粫b卷擲q3s0(Yd"m,O~CX艸Dsh"S-g*:OY9=~V5g糒V4.9{[w狗><15d 毳FPPQ&u)鈞tR);^嵎Y癈|-4yj-5|疸浚o5紜STO 9NL)L瞎mH!^&H各fuqK 5酘wL稙{B%7"9\鑒a算9f羆椅V螫ぃ XEF"蒂M姨 Mё]L)z(Q%tMM義嚶残[^,wX}翡l@d禊4L>S-*twi v| e< Q竝D蕁L,=yJ&wy9鉈Re+as.tJkx|(^朮 ]S]嵐}`BvVOW5嬾#eF*屋]>n/mbSx\羇杯P F37_ほ核涅豐5枦Zh9;網1MIB$MMq|FQ/cVw%焚\e)H;E,5NKo緻ZauR{7W_:^9 ;錬 <8mEI伐KO,5鈍質XM-^*VvwU2t.MeS(YXWZ8i謹XRィMm2#u~Ρ*g刻5濕ql&猗L遽8IDATXkI~飫 i紊sh个ltA\F[婦E鏘]vei:C[x@;EzFDg7滯lDz hkA5-q覗Xc勢=區T稼$g7ooX浮嚢N染`_~.SC["jU_F;wr]泪FFpX.j yqw&RPag#t:"st H ^Q甚* O[qn,5脅y>xPEMsEd榁L)rrr)^jN5PvqL蓊]D;羂\xutCFnl恙K&Ybe?#eIl劉sD+Y 暑)穏PLBQcZ.MS,>*j{B5zHm`^Bu]T橇1F;+S鑑>'Li}Dm6Ji相$gK蛸NN I崙m`4F"+嶋sT#乱|O9))\諷cj.+?丘,*<7壞 E/r] ,%昶.nIl沚頌0DeF’竿!Y,j廼n笄Eib薔2S,.siXW俟dA@ "" (8Y7aF墮I)tswj颪H}fsx.qO!EO>9~b"[m椁誚8{B55_IOQY- ]F6_[SfVg?YOS姜mY;Pi,!23Mtj mO┣>)/梯Q\H*豐kwjd &hdF羣立_MdN4F胛会"ワ褄囹?Ms馼w 穆F1l撓Fo掃Z0N,涓,><F!c_7N,OO K*OsQ鬧Y霍 UZ蓊S+1傾Z煮慮xvj5uPk椪stW稟碎+搶殻AVbJ 柳@SJ靈SFOXZd繊#taqh TA萎.}~CDDDDDDDDDDDQ秕+M8S[{W秀椁)zd:(ww務肓edv9>xFX5uo%[qn+尨D皚Dm{2M29akJ+nぞ抖鋸tuW讃 ~f)記h觧eps鵁_5]wL墺q+ih#B堤M udp綬譌1P邇g皋"l=%52殺=nep}[wy S~ZD`妲z#n吉:h_*蹶ly泣穃mn匝汳vZnQ_yB4Re繩u#MO※%#Ro*K2GQjj67MlFmyN念5YUH韲H02- 吩aN"deM脣_促J)n,z\戊WH;v "Q穡 挌Y!幤XFzpPu\畩xe-従IV哉lt綬bKZRD9*INSju 3J嘸4抻t轗叮om!.j3vF 2jk:)2x2/jK%?P3哀熱Y,iY迄UZ;<KBFv4f-"gpu團.疸Lz4`5w[m+'Z溌d~zK 9K輒/2擅&R~W/n[V 粗uV7l,N災@;J蹇33lロa矍RE4q仇愉k4V幢1_PV9k h_h|? V5HZkO撥SV-+qQ1#綻H+FQ\~_ZR:c? 蟶拭*艀"闊K~bE見j耿jsVy*(~%mJd1榻50_5F/鶯 伎K\S";Ynq龝5&"赫'9ズv$c傾3] 藝=KSX%)3Gd突O汽$宙洶e楡+*]3T.NuR,E禧e4kg}"e袈^>,叫t3uY堆Col9sj `廬苓$?hr2,MF贄}iN色'弭;hJ XOZ%h _/R3"*8-unv8bnC筆 ENp(:sgR9[B枷лhu,JwI佇WzK郵;惱P a)(wnGK栂妣\母各Am\}WWkv咨(mGl&/U2%{D1qz飼;馼.;鷆 ZuBiV9鰮Gm4XgZ`e6KWKo}kf碑rU渕惣! 筋-&UR6想縛NU}Gl6|;# 填g*%Gcp紆臚網B%9~播>H!vJWS g楪e[Gx[楢t$X覡Zv5汲z"5陏g.J6i鴻|uwLr P柤2iM猶<*M/[`E野B鑓!?[俾t,# 眸L! VV.JR荘蜍廰f|_@禁7oX晋| :!4T畫V旺 2`Kn .「JZ`旛X聚踝AN?hв]Fc措vu`,@vSe~[B尸-齬[逞6nM-U蛤L隈llK^sz9t+o陰EI#貅P4 嘉zP 0泙jf+C蝌OV0[阱<畑Qx麁w}WHj8酢藥dj?+s簒9mYSUL證霸=8天搖6kぬ稟 rL}&\睛Ekur03ooRs7hJ%>UosvUibsATQ Yl kaD7駐%x巴絲K峭5*V9QJYPfE翊⊃【V2"b5i+ピE [a+@Y*S)Y4MWD怎{62鞨c2&]捶)3X撻 O}r|n5feV富馼n",E}tLhr~_秉.d-bmy~Ж'TDz/ibI/jw癡I螂N]lX-|%]V慣EE%QNp]JMs_ +搬QdeN?%_GopQ Q#]碍/(d;V"暄濛w 韲Fjmc<wKx羹yW惶@TCiWT銭S<盤RM鎌l,朱tWYVjU襟蟾>黨1a炬^+1/匹7o,29S]A iy陰醺;フ}眺N3虱]>賓U#=劭iП諏薦 VgP汽e.0(蹌。68<擔Z:K萃1F#笂侯aR?Q*MMOf82~W/Nn~FL}如yR|t咄H"花&J"}{*"-[E隻讎(DXaoC7o#x炎同蕀h'{hx<蹇<d:p嘗QiOΛ+缶T$眇:uFihZ]于蘓aF&U$霞VFq~ jKN碌DU ?X2V`fDV O{GqDfsォ4E^SQM _tg髮H?=Dxb5S,S}5EZcKzu它展慫WZ0vfD-3!#馗~羨8v{Rm/q!411/v"YOUJ輾I, DtHJY#X宸X:Dewd"鋸~Umza%zEYm*xxy奘.DX-燦.*n}?MCN;3 F,S雋)獎姓鍵V奚o見xD胱oJI唹~UD.#Q#ZM娟h<|D:Q^タU"$kGz[?5騎猿8BF`YcLgp蠧X0"'g檣uwjq;k3xdNpqWeGjp濁@fD 9G;pQc笏-該^f乂{QM_5`=ZR4W|:"\j s/LVLSDQ溯tXq鞏P=wJS3`$qnKO>6g:9Z蚌q5粧 v<<乏3,Z#:m)O=W#_~綣ON)鯡&5;$M4C=喚V=U{蠣_R7Vj^&&*/(+箇.S1"WgiYvC5nAnV7-逓r%FOV_Q揖hu琉iセF ]n煥学X海:音9z篏嗜?@/愎RZV1Q搦悧#V 52来n岩他5g~B ^be筅k≒e9$]%oU"逅nT9T睇QXIB._{區刻D37RiVl/窮eQ売64疵BHx7C/S-7*戸w@8|蔑4P).IWcc遅Q劬7,7,5拾FuUN;彊|"臈Q 鐶P2O軌<= b彙Adc挟!*設A\A鯤P 孔~7?yP@酥_\vxpjEC酥kISO瑯4= sQ s茉cBcynk&+G*j~/8洌電юK涓竰P|~;+PK9壺;詔-O<0n &偈dE7LSCB* +US{V.rjvXP閃p}2UIMy%O瘁Ym 瀛]蒲 s}jB国\勗 調q{gWs$|]皰宇Yvc2@yv蓄,:勒+Sk)k:銃{\ ]o[^PT!C({sE5Aj倡;u兼C:.[t檄疑j@Q9 C,7s]FUkCP^B#0;zn c;O還Q躇 L"Kゥ螫nz.@'e炯j蹟NGUl.舘舘p]jBn!XF j咒`/5]/5,7-榛.「hW@B^R;bm^j.83U5幟<1 沁1+$篥DN遣杯7Bxla "僕覡幟Z ow 寞t@BP7R怒I` ^蠡『rru埃F没C握C淫@Bw駑O"K7 秩意+nZ jxA`+咎eko 諫0S b僕"yij恍=!★`AG{KO[~)q) RsAO5ky滾Ry$捌M>蕭I;繪}mh%g LfZQ:7W27d}W;f洶F VZ6@臆I0|薦貳~A,秩2 BYt?<麹{2fbD帚/&鑰=t|GEFfMbr[溘zdW 9$t脇{h* ^7wA#:%%pD哦逧錬uuD 鵆2v曾鏘&-睦\2(8Cs~閂 g漣込僉覚V{P#Gg>B泗店JyXc6Gg>b RmiFtT@~/d願s莞&爺~={'Olfx@臺=+zk]航韵(:*jqc"D#O}2Y柎喘.f?MwtlTm噐t3xpi RF)1K睫`]1s7etaLg毎鬟燦M譬e8k'6s23K$f辟6.kHqシ^`2f閠6dOOFd1> l∋准Iy^,n莢'EtzE#~;=t 輸Ll`.5TnS畢'Gow<粍天TMd藷h)+S/:蝗bNュ R眤瞽tN+e4MRXBr8oXBs:nAt8/ )問u罐qBHK5) qG緋NMrk%E浸/ c陳&bv X$n萪O pI OT0@托8qA*x h%Rn礦堡7>五7%csIt+ Mm&j籌MEi兢]祇ZX`6m矇WWjI揩P]嬰$皹x#ZAto旋XK&)HoV+簟) 睨襦頃凸阻觜BWv9uP]b:n"J/4W\E&<,M痾U]qr&ce'|,M聢ホ9utWrPFg皓k@ r,姓kT!餤$PEg j6Etf髪P|Co]>V[f鼎s`vpKI,@CW;e判O Wj沖鮖a檄^V麩2愎`:l+ a-<},)紲Fq{e皰v_0灑//芦+ +ZX j.m2`稲x譏{4鴫@~f`I鍵羊T鴫6k>"=} 5,s2?/爾oCR@n汗Za~z f:疊\L+ q 然+B曇M+ 4%JNY鈷襰#>判OK鉚IF-;鴃Q;鯰P*P@>r襰#>判O>r塾H!4l黻_y >r襰篏糘jぉK=Y %qL3KgIENDB`kaorahi-howm-fc61c31/doc/go.png000066400000000000000000000065021454422607600164050ustar00rootroot00000000000000PNG  IHDRTbKGD瑒 pHYs  叺~tIMEV^ IDATxyTSW膿 h^b記X牛股]q船嵎 hUjgN;st:ZufPh.呉菖VKqG+ 5# X- 7泓2風w倪渤渊y鐓賛+w)品igm鱚樺{R+】Ikb橢%鑼Bx垂薨Vq唔^Vyy戳:[豁)%@A-VmD+WMU管WsS肴Wgf洌p D 8qV4|gzjg堽劫勢=?a !jY V3S';`/*簽-\Zz77-∃幤y?Z聞盗n籌K1f苗P*a(徃 W}$t u恷w j"'m^] 嘖njZ闕KF9TwD挙!yc飆o鱸K5AdO&_薯]UzV築版奘'Eu盆V6N\$簣>KおhrD^nPp 狠繽0h 9"裾wcI脣s1染V3Vqn 視_ka.寔p辭#\躬/o舮Q?Ro$/jCk>'g峺g~5O)鴒HO| )曁 9_ )9Zp/'!釀渭r&J琿テ*u醸*He~NSa奸{?aaJ睛flQフV蔘w*dV8;p2Y0X0NU蔗従 Hd~@N!SCCr号I {Nh忌^28ASq`8|兎絡<羆;i0L&椛南(mpu;A~8 r' 桃=jLixlj2oTktzFy $r?Y蠕 篳EN〃菩`2704z殕 {AVwaIoXp*悗\Lv'巾@<敗腔{qw1IFl"Xx*m 幎N&角l7 愚@L逾蝣羔|4)d7Q緝暢~_>聹;i2{戴 ^k7Z}憖5Lx=0Lb活\ /b硴NT姙](匆Bz'3p槁B[%曼鄒L瞋{A?9Tny1f/BFHω%F9体W "3D-Wf,C '8鉋2恢uN|bO穏]Rt 8 Yq> QAwk\JVq2C M+ptM/_蜍y@=/F帙bl墅筍僣?(w閹[ Z["6\ r9h2灰wcK|x545.{m8:!M=稚魔P1hX>刋Ga^<+a 奟BH恊#k\N籃'皿f~xtzZ扈>BH#PH>豢m倉pMZC]z/lo嶼6[vAv揶0ネ ?帳兆,?<5(nフ ?4XokSZA#黌3j)UD埖u^鬥8m乂綰r滑V(/枕茣腐伺YЬfL.系-倡/<Q/ }H' 厩竃>2De30^u郭,gQ7EkY`8nj葈yZZ拭揩FkQi%鰹T9餠v蛇劔[H<~}艚bFq w/:'鏨K取.鮎哺9>- GoIA"#L\?g\城蒔?a_G青/冐)挫[=;~!Ft湲cL慕c:A^QуL % 9墳Eォ9鷯C午庵W 剛補溽!'I4yr{:<TG/ L4';J盧mD,殳uv商d})&t)^2M<,sV5-r^泣FLuNN:?P5ah慝lN%.z0k,)T Y-齦lmX'qLRyC>qgbVhsILE<'03鱠?年XV$Y迪frM2#雀M{渋wlE4b!O槨ofhP錐v甜賭h9sy=O^rygf@^wj墻踟R挙v梦籖塙|D聖 攘!?*X#q借舒淵$`NJ 糒=Q}功R糧7Fk病反p'&_*cW堕暢yCcL无f *{ 3b f>撃b.+H =h0N), 鷓7X8阮gbk@:p1 b @ 紂s_FF登橢% howm: Hitori Otegaru Wiki Modoki English

howm: 筝篋冴荵 Wiki

Emacs ф<≪医с. 蕁罘純ゃ障. , 罎膣≪<∫潟荵純с障. 掩後ф劫筝荀 :-)


医我

screen shot <∫潟 (Wiki 蘂)
screen shot 罎膣 (筝荀ц;腓 + 絎壕;腓)
screen shot g茵腓 (罎膣≪<≪絎鴻ゃ)

罨<吾с潟

  • goto 潟: <ゃ or 障絖
          >>> ~/BabyloniaWave.txt
          >>> ゃсゆ
          
  • come-from 潟
    • <ゃ A
             <<< 腟倶
                  
    • 篁<ゃ筝腟倶c絖鴻 A 吾潟
  • Wiki 蘂潟: goto . , 絲上 come-from 遺
          [[腟倶]]
          
goto link come-from link

罎膣≪羇紫

  • 筝絖潟, 絎罎膣≪激с若
  • <ゃゃ茵腓冴罘 ( <≪違違c OK)

劫筝荀. c鴻帥ゃ腟水.

  • 鴻鴻<ゃ掩後
  • ゃ若≪若у茖 篁≪若篏窮
  • 潟後紊翫

HTML 吾紊

  • 絨ャ, <≪障

篋絎茵todo

screen shot 綺 (荀, ヤ)

潟若吾荵∵筝箴

  • 罨<綵√с<≫賢吾, 遵
          [2002-10-22]@ 祉祉
    
  • 筝荀с<≪娯冴吾c潟
  • 潟若純吾 export
todo list

荀荀荀

  • <ャ若篋絎茵todo 茵腓

todo 鴻泣

篁倶違泣 荀荀 <c荀х脂 ゃ潟 雁胸
  • 荀綺綮罩
  • 羌羃劫ц;腓咲綏ュか
    • 荀: 緇羃 (с障 :p)
    • todo: 緇羌
    • : 絎ャ菴ャ羌
magic sorting

泣篏帥障

ヨ羂

  • ゃс C-c , c ф域<
  • 吾<≪ヤ筝荀сх冴

ChangeLog <≪羂

  • C-c , c <≪, ユ荀<ゃ水
  • <≪<ゃ吾贋ц新. g茵腓冴у莖宴筝ゆ臀.
  • clgrep 後罎膣 <≪ヤ純若 g茵腓冴

潟ゃ鴻羂

  • >>> ~/BabyloniaWave.txt筝с帥若鈎2 BabyloniaWave.txt
  • >>> ~/BabyloniaWave.png筝с帥若鈎2 糸 viewer 莎桁
  • >>> ゃсゆ筝с帥若 ゃсゆ罎膣
  • 鴻, 腥吟<≪綽 {S} 吾荐垩羆冴, 腥吟<≫荀 >>> {S}激с若с

Wiki 羂

  • [[腟倶]]筝с帥若潟, WikiName 腟倶c若吾篏
  • 篁若吾腟倶c筝膩ゃ. 帥若 2 筝若吾吾吾c潟.

ャ絽潟羂

  • ャ荐(箴: $$$)羆冴, <<< $$$吾
  • ャ篏帥c, ヨ筝$$$ 651 ≪с若吾 (ヨ莨若)
  • $$$筝膩ゃ. 帥若 1 ャ筝荀с冴.
  • ヤ膀蚊罩h頫憗х
  • 筝荀тс帥若潟荅峨ヨ吾吾c潟

若ユイ腓堺帥羂

  • 若, <<< 若吾<≪篏c
  • 若腟倶cイ腓堺帥腮帥, <≪吾, 腟倶c吾
  • 腟倶c筝膩ゃ. 帥若 1 筝荀с冴, @ чg茵腓 違ф腮帥筝

莖(鴻<) + 潟<潟(弱<)羂

  • 莖吾, <<< 莖吾
  • 莖腟倶c潟<潟, <≪吾, 腟倶c吾
  • 筝荀 g茵腓冴, 莖, 緇違с潟<潟筝

email ≪鴻純若鴻<ゃс kaorahi-howm-fc61c31/doc/index.html000066400000000000000000000110771454422607600172720ustar00rootroot00000000000000 howm: note-taking tool on Emacs Japanese

howm: Write fragmentarily and read collectively.

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.

screen shot screen shot screen shot screen shot


Hyperlinks

  • goto link: file name or keyword
          >>> ~/BabyloniaWave.txt
          >>> highway planet
    
  • come-from link: If you write
          <<< crystal star cluster
    
    in file A, all strings 'crystal star cluster' in other files are automatically linked to A.
goto link come-from link

Full-text search

  • Everything is based on full-text search (grep); the above 'links' are shortcuts to grep.
  • Write fragmentarily and read collectively; you can concatenate all matched notes into a single buffer.

No conversion

You can keep your favorite style. :-)
  • text file and free format
  • implemented as a minor mode; can be combined with other modes.

Todo list with magic sorting

  • Reminder: sinks slowly.
  • Todo: floats slowly.
  • Deadline: floats rapidly when the date is approaching.

Install

  • './configure', 'make', and 'make install'. Files are installed to /usr/share/emacs/site-lisp/howm/ and /usr/local/share/howm/.
  • Write below in your .emacs.
            (require 'howm)
          
  • If you see 'cannot open load file' error, put this before the above description.
            (add-to-list 'load-path "/usr/share/emacs/site-lisp/howm/")
          
  • (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.
            (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*
          

Customization

For customization, try 'M-x customize-group RET howm RET'.

Update from old version

1.5.0 to 1.5.1

  • The incremental search is enabled by default. See M-x customize-group RET howm-iigrep RET. This feature only works if M-x customize-variable RET howm-view-use-grep RET is set to "On".
  • Added links. (English & Russian tutorials, introduction video)
  • Fixed several minor bugs.

1.4.8 to 1.5.0

  • "u" key (uniq) in summary buffer is now togglable. You can hit "u" again to cancel "uniq".
  • If you are interested in the incremental search, try M-x customize-group RET howm-iigrep RET and set howm-iigrep-show-what. It will be turned on by default in the next release.

(older changes)

Contact

My email address is written at the beginning of source files.
kaorahi-howm-fc61c31/doc/menu.png000066400000000000000000000531221454422607600167440ustar00rootroot00000000000000PNG  IHDR'0sgAMA a8tEXtSoftwareXV Version 3.10a Rev: 12/29/94 (PNG patch 1.2).I IDATx85e#婭>4嵌i 8!EGIDx莚}?q~X 8j珮g8M r_愁_ `l]撰持Yl8o:比$'楸~s. S>+LE}.(扁-% }1TOW撻Iz滲RnJ~6櫪?[hP=D%W)yo'=殞yZUJzGT^Jtr 6剰l~Xb垤| XK冤^b!`MB'TM}N Wッ?+M,xIr樺+.?vk朗悄猶q剄4娑嘯h*溝lW'o5S戮Q,OBPe+2礫~溷U遵fg囓|>蝋J思|qr哺IcMeIq>%繆7+k\GR vtzd\Pw'Q屈xqr灑NXB&]w'p ュ筵c6:N▲#eT[i A{已= ,2;|L燭}惴n湟YIvJ!wKJQ笳 徨 >銛濛5gGtW>%q sN懈帆馮j v@j-堽Kg-n!J+thN8 oax\:C1;B:.shAzaV^`崘_た迭湎暇鶏gZ-)式]]^u宀J{r!Oj璃_"vy)轢集MUl逅縉95J混酸?瓲~;c!FZ豹蟒.oe>67zkx_磁lz<)o裝U_ {8奕JoW&孩R%byL/ W搜tF=弥議zE中"xo>5Ha迴/t寝wz嚏C|[%{堝a吝鐘腆焦滉=.XVn闃VP;=~n/-q,y過B{F粹l{Us杤yzKw饋$]^eefL[D)Г滄本蝙\f /Oo瞳]i cHzWH磊恚0>+孩[y\y烝}扱F2Df=5l^QG_+,]蘰'd輛6侏d4舘oeaxU奏XK[TR狃畑r樺[`GBK`e插xt壼Cx緒闊z^/M,{怛T}*仁9-5iDM浦kWY}{0a豁dKQf冤<V6K8{yJ|釵V?煦Nf軽>找鯊q机6cz)brk詔7$u ox9叔ls\xw|U}T7y8.朱g茆'?Wv娑9D{66s}妥%99ク\U"編*綛匏栽雖am~2ч扛ii&7;Fu涅fu3iM!>竃 3Bq翹#薊N嗣N>*]*-豺日7s+QK茸`スI顱V_le,r$5 wabc~趣棠聴>依w]>6o#R廡t'e+ E\]% {9')9脚@}+慇賀B?LR5jq>2簒q!mS,V.~Z>認從Y+mKgl掛}n垠P挙^;C*uJq章 A丘藁轅4> I9坿 "枴舎}Pr耀宮裁D[PC;1) 墜n~屯 nm~,E"ツ"*^?m猥y5+G尿fH UQgXnxD_義=_詫amsuK~z贅B轡K>aK8бwSq.cMG鞄ylhX}p(u*Pf浪k>%zlHUナ孝r1d愉s俾緑t8 ,:k>闥 Аs9坡庵{kTXGU繙pJa`孵筮V褄30l~ =wDUL覘(詩ゥ碗SK(A吾+酋~梼幣#{%U8)(mi7臍(L 麹a?洌畄S06l~8蘭pV7Gvrn[&?,>*S6エYaJ%負=>)l'詆jS[1*l|yXi&MhRUf#S7=駟3>Oep澡愴款ZYA,"慫iz*E+底& 鶤.9J'i [Bg秩z( :>沖< KXASul^gY閑oHI%Oo4K?笑梍c_懋H)E1.8滅*bo[gs3s4腮+FD笳 6胃o.J| 蚕.\JB\UP.m&:w剴pZ培針}@\噛H9+賦Odz0OoB%!WJOД逾E+8o槝],細S郎婿xr偕$枋flЯWir:缺\9u!竡.'塊MX~t6i@]#se胡[ 3叡Z5Xhg{$[ドz└eM4v"! X;yk&&v/gd?1xWv{CX冒y:e@欷7?|+UE`&u\偸=4wa'A岸肢 更U呱7鵠nz#_EOU"淹=ezh璽F;?;諞闖y/1zD_s色.Ez%%F3;r_T!A^鴣h棲=*條-3H輛|s2;w\ iZ8!wb)緝UF9(_d+Ft?i5TW 線>碇毀?KЙ+臺J- 綵gNOyj董gdJ/w通>Z4Ht*6嗹T%FMzt3&冬R[p\lXxc納tÅ紡bowQY5疎2,a 4K,(Yr粂Kmq快k-jl*P旛曝pa&-4=濮nヒo`葭計r;j#5S(阮>勲服-&尉^[4g0x/o(脂Ks'B[^%yt5F0SjiS9U UUvO] eZOЙ~I:l7xP&oWPkn∞dY{#9U9j[9S唱]H>?k碾S↑9e 8Z`C=oz==3=鐫邪E,9/[%v ) 5J}#=p[ {I震 EO6N燔YqLaOY EDIN4|茎鋺e F0mU耒癲^ys;Yer頻 M/捨2;;棔;{j#@ 夷6鼾+4幺聞m'J合AH+ S-:_l"z[2zc:W5QlKW)z6`Iyc并/蜻uEw鶚*W5mァmモV\*wE/M/q]e紆d緯黨oxT[[Y碧5  bm^%<^>}5wIXcG{B契p KlVR惱b-X躪A爨<提7s_-3Tq蜀ls75刑N'呈5淙檣拗奔AI*V>kj_膰RMgびn,7`4y漱,<{翳b.F[銷_蟄;%jb杙W/BS謬[K挌2nr*]y 遐\?o.j諠oU/ZY 轡I>)WMc&e(EY|g鋼e'r]*x7Yn1) [碧.K+\^CFB饉 t釐桂k*S2吠{bWa9.VYz.-b-79Hx_墳%wi套1NgSg3Bn棒磁(r a銜C78'爺SxV)P歴kyO澤庖>=oメ2;爪碍SV債曰"G_S$JBO+Rd2.Y!7静1鑵J=E:3UF}]rvs潛N5=P賵Q!Lz獵亨評V[^x送c1嬖)?! 19麹D)'%k-Sね奪5皀L掉m鍬wg順>怡溝略bXJ儚KJo五至闃AI芹Ur_丞卵YjU?J*'kN*]P=:]: { e順5E /)y濛桴H體袱Wu^:送首j't $l>駲妣竄4%q$椦 [g斉<提FvG照祢a_e)S'`^g丞^(S&797# Tw~V\p狂i臀兮\_(3_wu訃慱%t4s轢<L5 v+HCcc3S檎癪f瑪鷓&W赫ゅaeNE-wj]SXkz;4g幸=VV:9跼=o暘n1P2やoJ愾xН<]<錙!鉋Pq{翫/匙\ ]丞}聰`vN,Na將i[惨>8_9=簟 l肝{儘宼M$w峅緊2梛v櫨 dc綽蒂YH`槃F`dcx3WvRo}sr麿`c]|9Z%樹Y1JB']ln(邇gPi^ IEJΞ %ok({暮Jh病.o%?u岾針 Wk]獪3h悉1道U集 鍋lOe蒂:茆橙{洸璽>$閧D &范S'Y*%[s3竕鞐M瞳鯖n{~Jlp@NM22m^[W=%齧鈕+O/zq'znYyW^P?'畴^;<\{HboU?oUS砒t峭Z_庫A{y 宮O尅蔭終W蕨RO慊X儁:lI? Yy+蝠B台UJei\仮s|[3Rお*b_tXn&l1]Qn(0郷Y嚮跪tV@坂Hk5!沃n+^M疾4`座!哮肚@0YZ翕+2よ:U_A」+v5l佻^7_L鯨V\覩卯粫ヨXclI 啀nMY嗾Y,JQvNt哨L篦掲2{Qzwoo贇tY`17賭e4'=鏖 U0Sw贔{T靺r];U悔dべ虔fA^I嶢k"ov1ya4yj't  |k:遢v8a+,J`;緯NMj2SE:1svf4;蘖@]!v+wmこv8廝z`k?)`"FJBiiz醴9Ha{h;>mm合M楫jLu効PKSypZlB=BJ,wc;-Ws%}Xわav饉|;枕NZNN剄d) |{泌^rK#w5BlW}Qr麿`郤o圃t艮る, H嚠`>[x溲,皙独Y^OW規l祭v磚6U鳳JK楓泉l述ovq%&憇Va運t#?F}<-\o筈KJ9熏 = V&通0殼tvB残妨J册 s#A; *MJsPL瞼OY44w鰉圃+$扱.'kSeO…0-銅/$o_C市i熏v}[q]r貶o}+穐cm彑T彗IS. 沫?TP座肅廉 S槍a\羔;豚2羨),9 4^F限陵OX|KrRl1兇43(ビm井Yl屶/gA].} ;膸iUr]8ヨ4j\NqM蟠塁(栴V/Q;驀?4f凶)){1Jn#NoS|cRuj逸yMpL.UJSmM/Qk赫i絮縵*3S4b["l瀏逍5F2V燗o!捲fk桿(+mY] e1A邏)(f窄悉M4p>B2?d?b-rR %憇+|\M賜 燗U弭k[T隨?9Us IDAT' <]3yV)P琉某]IW+祷z6W鏤[-`茆 z濤](2M♯[)祥.LC麒☆Cu闊73YXQC}^Y!mz&Ub8k;蔀WF`讙tV痘u鰮?wλlA-G3л`Hl*EZ瘋Fbwgc"`M+鳰 眛{鷭精'8q~針WnUzSU蚯cu abTN)Fc*\ド]_sy ursmw5M/h lpx`N5.r[M71R冴1} .hw擬J釣7rAM{=諂穽f<組殯<+@P|G執]霄}S惠Di]湃1{竦xr jz莢DW[% 8V忱醢?"i蹄[鼓G犹2wYZy倔蕾zg期蜷}1#tSc{]+iNN9 _;4XO+R腟嘔c搬7qsI8=uZ麕tz槎,K9ZUVr#J梛;8_Z嬉ッCc蠹l>-K6~w黐 挧f{G &窘\s法薜 ynxV)P琉柾掌促HギK悟-J=.鰲觩.LC麒☆捲A呎w諏]Vf%,k廃1NM/5{m]JM} 称[oW"*x.9R~kv-nコ.$災u褎#J舘C%ENSW%>胃K廉ze`.\k6k囑]‥inIKq]mTf{{‥$ン婦c zg/殕m=hFt┘ _ q`[鬣卩~Y啼LZ郢備7幢uYJ2Bg猿執zR3鑚|An@:]mv=&tO1#s曾閊oP}d$P(t\]OWo燗 udJQt5MrSW漸c1f彗)|ZB nT1償;J鬣鞁衲G)W} 蹄[鼓拍椶Xe△]Vxl閤揉X[OgG廊矚# 瀛sf剋e>-慫>2G穐l祭v"T*$抗吋Akce%g.$;欖蝟I$忽医臥9 "hO|Lgy QZξUghc船$+\^怦zmLV`'移b粡\=}G濺U ,3跼'洙柤3N^1rQ};@噌尢芝!2冉n6SV2 +罕c?'6辱 鰥#}F囀)碓X}\墓+al1聟ぇqwD |bXb:碼坂H;釖qeZF>囿)`t+{┨u怏匯次h眛^廉vT0以甑 Ar.s [wa0C<iYuQf#←C彫lyxi#b=vn~JGn<@6;0p償俯3-5SvFvYh?CRF剽欝&厖Ja耒fqo_eVu7i,啜ZI%af%坏jGЗk驀[))o h?U.dIo糴py贄!p帽gwh:R ug 葛/>og9熈V0斥n7p3` u吁HG:Si"K:oF`7p?` ofx70斥oi送顛U ,3iINaY<!乎g(阪VeJaOYSE,U$JB\缺s碼< &=)支 W蝕jT<6|}47鷹TP)匚薔2U剛蔔紕,/捨*-跛8s撈+6\s鯉}sS I氷m'J合AH+ 5C餾寥l"提=3kh%X4Rll'$$7\[鶏Hx2wq晶6"W,%6K*u]e紆d[42x\V2iMu扣$9K$>dfz&廉?j't | 誘o%N5圦fOt予x溥f酲抻zU\9桀8Md有Gx+r~拿ょOr#v#P;Wa,b翫/斐fGO"?\k十U6rF沁90<E蝋4~\辺A嚆E+濬<_)WMc&e穐躑Z嗔洩點m彈 占b]樌4B+.K+\^CFz2燔)w@\潴=@蔘tX吠{bWa9.VYg喪宮0#A} O*椒IZ8Mk kw?薤 {". `=跪様v茅0廉V)P歴盆}nk5'=W."&y段6|w2~毘\?)髀!rBJU薯6"(G椀tXn\C絲BdEwWn'鳶&v}81[<榊蚋JeP悉貶,VR耄熙2座a9w笑uTt{1T~Y+充DopAQn]獣vi狆3n_4QytFK斧2勳^$g国ucSu_訟x_OVy=}n{K{=躁[YI~%~SJHグr猷[U俣JC忱fX拈*E9W=n? B|4M岡7[祢 u}鈴 覦蕾l6F9址=ELオ梨%K^^I[NZIU卻 >SRTn?裟興昔-mmj_8COW0\藤j棒,}U"Krl'^5VV゜簡"該d%%`C:%K,撼l{3Au1rC麸c,瘰鵞V5Km寿tcWHL{JhV第zQF-Ue_*3Uc問蝙D猪,~[Y4CgP=42呉zX9MGG+8Kh蔽睡{`嚶!`Aj+OV謾x縮A^hqZ?^;R`TEJ{胼6i症Pc泯-7zk76-nヒJ鐚薬D-C3~u0?='ovp- ).^rjm將Z&室飛KYQ"sJz7JiHGe七眦L[T[勇[)ウ^[g韈ttO 燒UQ柞@#{q;,詒JnN.c猴[}Xf]ImE廿&(EΨq~燗f4z9gW枉1x?燒=v$zRTvr*<魍Y5<&kK輩K痩∀駑刔вl`_U>qc馴v~Y"_FG]A# 秕R;嗷i+〃lRA= BlPp/廉4湎]j鍱_囃n癇00{c而> >嵯0/oS9瀾H9G-\A覽!竭UWV黨{.}9>eb{洳0wma.byC/0搗ghg -]]r轌商SLnO8潺2M:捲>9Tgrc鬧^9N2bBaXWL: t&\a艷'@F|XRbo胱燗-pwVfBZ]Π薇燗=}Y[U-N 0C_=閖,ヨ4lnHx ]m]樌nj+|伍9(麥(坿-w9燗p$n=o剪ョz.鞳橲{\^]丞]ic5-{ODo迎霄7i0="# 器^OWXl祭-vvn~!BZF6奠#哨*1}{候跼;RA6SIt}&>5n<可z7}#]9n+{mO} 7nY'衵GC靡wGwOfzO!BfK[6w;ZGET o#yEKmi臥畿 gコ納r勹外裸o;}y6w虐nDVy>晤d戊c駈c9;_提睡"`ヨ飭麒d[q]U~Y4#wY納8Au,l/Ts7笙w扨}W5l1Vn 羈 阿LヾAnで憺s;d(42wyχm<{%^,Ky'/鴈f: 抗\\軅Y椦罪芳|{葫檪Eu銛8,躊潼ul$巒e/hZ 6P4&照君Rf+>o5o = [掉T#e^R%^)F+D}~G]欠py舍h)FZ7lF革XRLfMQru=[J枢j0;環K钁iM^9穂bv(@2;罩C縫癩d`thWqF9dx=以]nL4}&AXaC熙PpLHq~cFg斐丞=Z{Bv:koROm^榊;%娃y#F薇X>| 杙f+m嚶#. a粉ye"CCKl g{籠{Y"owL{s 痊耨H6uC]c耙ecahB閙10魯 湶4 ;繍n$420Wj(專M-t8何槭|*~%}e)q6\vH暴慳m倬>Z婁2TM,滞A^Ye;L8骨,'4g=J峇pw啖\9吶7o鯔k#J騫m k章{ @燗f-4k鵑出赫U](rh~EZ`:司$ O2Q授OZ惇G拊v欸85;6QI|9*O 9IJU=u\OO&擺MF=澀*~_Y44Cgk`-|C境rk*5l1Vn 羈 阿短[W*szZ2gaj:^k 俣睡@Z眦dw""tVZ謫FlCK\t <鞍驢W$0式珊 E榦 `4{n嶇LWRn>M郡5N,D凄kSJ`==+9PE燗P=[?$$:穰)JGPcW怫6- 7ImN)t'廐,{8醯樸0ow {愈}活級l=aC椒?uZZ]F:e玩l~ v諄 栴f`進0r?N:;H,MYj:JF{0zy [架-7昔}S免]0Vtq^[P)4Q)麒3技3o]ao 鯤+B釛列=鏖1A虚j3)eme計θw-@o蜩RgwM纂J*髦-賊q0=~f燗vQ△wsc劫}^^cb/-h洋k鄂l'宜挺^wU悩[紬[ ~UL票kfl轉蝨If`8O(7]cM3Hx我IDAT&JE}經rb2%O(#茆U叺:s -\x>Pz@蕗>瓲I幎(Y[ダB9/?W縷耻x\d}? 鷯燗_jX+cz+~J`鼡KrO"+apx6稽xW`( *N?w+3X5G:3秋棘朏6?f互y$Xtn燧 9qZUR裕9nH]D鋏=ov鉤Q.奪e,Z9+揆2J_]]并:8s*v彜>I1W .M_glq?{u啝-buΩ坏対VF僭>;1<*.|rn'l+A% ]行苡5S5<{湶e]xR〇nxT[YYR)(=~付FW7CypxYS2l\!;儚WPkW輅%V蜻栴`衢Znp(x5廬N襖jFSw猶遺C肇Y +TAr/y;67Cymm耘,(bm億ik 轗最rceR.f0g~;鏃q9qbf7rY哺TM謔 恆VHyg7\Y踞h=g Mk`m>佑Yョ傭jxg\{/r`y.c拳帖5"6昨z号題'|Y@(fGJ]f.YR]L喀n7+б哈1Q._n穽謫(q沌8{[Ao -蓴ky[Zsx6w5#*%|oX/S窖Rxgq^Og*貧m^UW蹕xVrR的Mr檎mT腿o[i\^HRgヴh".GO@t]"1'O1-dbq胛w u-y= 藝^\t凶rg00/G G冑z豺枇璋雫Pq5r顛U ,栢Wr雖~*PD O3}睡`e粕)祥.漕%qu*@XKW/i2虹/C?k樞旅/B2lrQ,PD4eKb(降8漠*3fu零Lo&*携pLuENzo /Y樔Yt寨惺={_zi2殉 }Fア静丞p除=2V.s]{,|v壁卩&U,WB燃-dka撫4_硴[~MyS,\懴>g iM.bu脱\Fq77啌F>V1>mU|Q6;W騾w =#u+ mBz珪jenM&W6瞠D?-n+h9岶[嗤8`納7r`癨w/蓑n77tu)-Zl斡:W7WfJF^=B杙c干gY j7稲y鑵6 pF4S =秉-&艨47D滀/ c-K&F酖}MU,蕉 6d必_[,6嶋v%z揖HDu (HgY髣 け5韓+>7<_K7)[SfS[)F努梛榊M-X-XtsU硫s6?t史WC*Tn隔朞& F br塊咨K剣Z胎 bT出 Y慕&,uIg起yMK'A{凸TU-.KA饕(;n:cE拏蟇Bod%畔o貨`挿r>0茆禎+るzq噎]P,MV洶?n} 烈 Yn認n墜寿煎*Y~F竺7bXtc渙jQ)}EMN?e+柵q氷鄰u0x幗VX咯;uM,僧皖ZPkMY鋒t鑷P9YW@|颯b舗XK勞f,7u:)xWKPUJI〆=aW覲瀦]+>宅{x奎;YJx柎泛VWNyZ,蔘娟W宰q墫邪X絲rio鼕e0O无|k弁vA\]`餒QZrB2$/.} )朖7%06#6-fB[wq垣閭8?&苜}i7[fYu[弱ヨ鶇寃ー驀jWs J\(jX9衵G#S&^膿xKJu*uamy5P=囃}Iy.銅o'VR耄t喰龜?>)"_貘鱸kc5;些(+lWt^K瑣_7_h^P箇6l噡合丞-僧.3腐)U麒y簀亘rcS差2┓WU\@腥7厮朶m#wYO砒O)]gKr夏*5j<]万驍|["Fih 鵆:sri~ uOh讙`0'[hイ泪宥\J)ti;│JJ(EO>^r] }V@JbvK脅G学:t y襷l90\狄)跚A@bSr cW嗜r iBir貶oi"j=.\WLWM痳z萼圀室\(wlxT杙=]F/3L~ 癬E額n,謚P閼M⊆梨eJ刔I!K况|^Co)茖k?dR:艚]ニ1o0祕DSdc邁mT卯,:杪G[_実2rGu貍#KXY勵v>~=9<{1}跪窕S[ t(WcNG6\[UPw夘V呶雄Jg_+陋=Q?笞T6+Y1漑湎hHqC鑞FU^,W z e脛'B籃学tIセ{9$",WH Cb&摎8ヅkUz耕燧I咆\*/孰柏VCO席w@:L/PDURzv}\P必4Vsl?>I%8Y [=K階R?8B<藏W浙WH4螽d洽7l?nMQO' lKZ 3沖bSw{v哥簟|窮$rMYH,~&#YJ]G膜-鋩H[yb投#_/Klk \4艟閥勳Tcc0Y[]R/Up"?k=%|范膠R1~古0F"sCl-f鯉OvFJ%.,y釁s"g\炳%l!g彦?5+泰]r? =殲ywG阡 Q螻>$[e4l 匳rY<)~中W糞+u燒$kU悟>^y諂h廿y愁"蛬9o]l0oW^=割xj7cB_/(hY"蛬a}偈,.8-辨v^j]< NX釜UJ{t7朞.\3琳Fxt x[. %=KK4fc0椌_'aDd`V7qS}-frs忸D借^;0do龜Cs|跼Oi]u \*嶬鸛t゚W檪x; Old Changes

Old changes

(newer changes)

1.4.7 to 1.4.8

fix for Emacs 28.1

1.4.6 to 1.4.7

fix a warning in byte compilation, etc. (`font-lock-fontify-buffer' is for interactive use only; use `font-lock-ensure' or `font-lock-flush' instead.)

1.4.5 to 1.4.6

fix C-c , : (howm-find-yesterday) for newer Emacs.

1.4.4 to 1.4.5

add French menu thx thx

  1. Delete the old menu file 0000-00-00-000000.txt in your howm-directory.
  2. Add (setq howm-menu-lang 'fr) into your .emacs.
  3. Start Emacs and howm.

1.4.3 to 1.4.4

fix for warnings in byte-compilation, etc.

1.4.2 to 1.4.3

fix for emacs-25, etc.

1.4.1 to 1.4.2

fix for emacs-24.3, etc.

1.4.0 to 1.4.1

small bug fix, etc.

1.3.9.2 to 1.4.0

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.

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.

1.3.9.1 to 1.3.9.2

small bug fix.

1.3.9 to 1.3.9.1

bug fix for emacs-24.0.50.

1.3.8 to 1.3.9

small bug fix, etc.

1.3.7 to 1.3.8

highlight late deadlines. small bug fix, etc.

1.3.6 to 1.3.7

Maintenance release (internal cleaning). The variable howm-list-normalizer is obsolete now. Use howm-normalizer instead:

  • (Case 0) What is howm-list-normalizer? I don't know it at all. --- You need to do nothing. :-)
  • (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.
  • (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).
  • (Case 3) I've written (setq howm-list-normalizer ...my_original_elisp...). --- Modify it correspondingly with the below change.
    • Old (howm-list-normalizer): Specify a function that sorts and REDISPLAYS CURRENT items.
    • New (howm-normalizer): Specify a function that RETURNS the sorted list of items for the GIVEN items.
    Or, Ask me in howm-eng ML.

1.3.5 to 1.3.6

Maintenance release. Font-lock problem was fixed for CVS-head emacs.

1.3.4 to 1.3.5

Maintenance release. Today's schedule didn't appear on menu on the last day of DST. (cf. patch for 1.3.4)

1.3.3 to 1.3.4

Maintenance release (security fix). All symbols are marked as risky-local-variable.

1.3.2 to 1.3.3

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.

1.3.1 to 1.3.2

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.

  • M-x customize-variable RET howm-list-title RET
  • Remove check mark on howm-action-lock-date-search.
  • [Save for Future Sessions]

1.3.0 to 1.3.1

Maintenance release. A few bugs (locale, xemacs) are fixed.

1.2.* to 1.3.0

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.

Among several new features in howm-1.3.0, the most useful one will be 'aliases'. See README for details.


kaorahi-howm-fc61c31/doc/screen-shot.png000066400000000000000000000336561454422607600202440ustar00rootroot00000000000000PNG  IHDR^{bKGD洲 pHYsa)tIME 9d IDATxK俄6@^E修O榱vS鶫mxwzhA+)9Qq+ L叙}'l椁zj3n曽_Wp/鈬審}nU梹\x(T9#Sn*^k)2S~&aeadzхZ遙竃(SjC^s擱m!k褒&5#O}_變\\7Qd1qXICld=7OE鶤 vvLva h6棉{ri轤H貢9=Eq! [G/:菰N球U礙双S[ -C螂g跫"臘>o汐戒湖P/Rk8#5t溽U躯F?†]:n武歛c@陜Aj雨y<圍恨^?s蒹h%;mT4[y管2z澡9\61Is^傘Y衛@vMP腥雕x*)f簔T妖樮者9wR2] 8-Ts企Jy:S麼旦h洶\:K6qU<跚r 縲'R\5~f5\R牛;?勿e潅rc[嶺:8i'ERb}|1dUJm;{s再~gn>h2zdsJOMk匪|V2#q糀U4z囃6舍5敘1O溜5\唱I/L竰g殤苹笛F9c尤}鷲ll茜捶8C=vH/;={掉 m719;Qb&G∝'r暸Xe薊 堂gk/BzM1p'"X]遞瓲V【2HT條o樟緤5擬纃Mwxb拭\|T桶\gP?歳Mcu~U&Wu甬?#?矛1~(N= VjUfM^|[v)5z貅 v遞5s耳9jc虚6~FYT)[D^\T停謌r$舉 Rb0W/nlSOG彎W-gm'ェ k\AO6秣NL\Qz:i+M_鉃z~aFnO,#貶IsWT無-拭削助7晁(xf@nM[$r2併x朔|wg剣降L58K8s{M P謡sap7雛z1舌隷~ wa燉8j{宀/&J`b{牋N髮鐃齒 0k >齬 0%j驛煤rE6L鬻^+/F!<|h(~|| 硴/m82j]x.Y3jmzN5 j8ApQ# F哥e>?m'喪w`w!v\羨qak?h}う^NYvl遼o卆bOn適コ6.掘3炯U"潴Sf減T跏I?E21D91ATj;Q-5SW:5乍奬eIW ! Q;"9R>pd纈mn} ;k +瞑ギ.agzmI名aGZJn\jI1iSeloX)=T~F 叭l註7革W侮hsf:港 Y5]DK]Ym骸)^Z菅#薔*ub1M踵9扮+Yc9悦m.g`a3Cqseh獎r+皸+栂a兌xxj代Z抑5tCCD刊2e;mA hK.!h(娜F6#9=Qi荳XQfF来紵qkcfjUg!4Xo没ha3蝙麸:2>LS皇!foヘ:Lii喩UQs躙-U=i彦3駐5F&]陀?MH( rzUxiv4':Cer0];(j槊#(.転fi堀)G鈞?pE|"搶5覩GJw襄Aqthg9p 5畦wl>&kse蛮imZ|1i9'op邸?茅Y笙:C51J3夭掲]|(.5$xhdSQOx%=奐^纏具cFQ珸];送閙=蛭r朸/_i殘]IkXml'RO樛0O|Q~T∵Mq.wl渓YU稗jg}jZUe蠕9d s(況擽辜cw絳傳}oFcLy 7∂tR省/z7eWrT~$w,`~M迫W曁鬨f蕃爛G ′:yIM(;T=;k,奏c*)*f7O=68i \zT:Ceo纂*=(疑g譌c=ZJ4ャbl猛GY3uV9hn5&=9bZ'_O=巫4mn /b1鶲 Pc|(&=.$幄 %-(e:%`>5IoR疑g辞琢G俑3|誼yT抖崩謾ト君mS\ij>Fw ~鯏T$S:)鋒 g9O弟_m{b{m>>>}]xmc鶚f;COГcq5;f衡わ榲}廃尚;z逍iCt岑{5QwLh}A.#Y9 芸:J轆%綱 3t戻vQcCvA[{J=";w?IS篏=%qで#Kn&P裾襞aO6w頭A#|VT1C']_~_喫注Yr],榔o[|s薺u図PnO紳%S[js&HnVz/y7XCyv垳H6C8wzoy郢J1Z"5齢'zp^N}償m褓RH鴾悁+睇+]F{:7褓@滴gQd`\SH|p鐙iゥ~(L 却-閲6"迅 >lK}尻"gamw;C'xF5v$5*`み埀1T2終V釋IOR田痩苜;)z鴎Xo┻P'攅W娚A51%x鼓7Q瘡`mP )眕w> 'o7UEa秤up9珪C`=D'N5 j8ApQ# FD'N5 j}bp6_gQ2;,F&QPgsm0cr6_Dc{I匁pYK=a&$鰔#廼Kft9U:J魂ピV窈jiy曩V邃0fY稾h燉{ォ2C:x 垠郵N嶷PLU湧\bd盲篳>鞋1j|c釿逃kcamhn+xq}~衂= 安U!(i又#Uyf"[&昼;[EQc巻-Y罕東Li$ndWeRv旡3*r1Pm[R-w~\~〓卿W~@槇Wj]厩77籔If"j槝Kf5XQmN#piQ2HP旡`D*,Q椢y )jV -FJ+l園袒]Y%罔KygvN滬Qci?i1層衛孝Qc(vjtC(航棕求損`g陰d:Q:r[軅槧gk&qu豕{+7 ;峪冨Pcv玳赱5"R;,丹6V5,膺 ^Q@潸zV吩rU{譌4p%6^g05郵oQ(m Jx襤昃J杣o~,!&KWE誌L(慷戸{ぜ爲p(州此)榲aQk捌Do0燹逐+蓙0#>d!嗄HpIjU悄Cx剌mxgo愀l條nFON9l 篳Y3Dm `8Dr) osT 痢崎ノ磋swR 勸Y[Ny俤窩7mib4rW=瘢r>泰iI:t3i18uAp!lN牧#j{p/_ G26.V覊\mz%纓潘N盥b{蹤Z5蕾 婦攜D[Q舉g佩I-hZm瘟C4s_@[1~rMxd鶺vACV只G朗a,c枷QUSpE刀k_g捌bO類d剴隙Av(=i k鋩mE[裝|G飲-助m机*\娟N~;@54jm舮=' E鏡Qg_'uQ\Urxk斗\UM矧;L孳ZTeRTT\東長m3)41s]FG^MQzjmv=yd,OMh蚋嫂U幪vi Nm鼬l柿L観xUjmQc銜疝5%?ns2 TDp齡牢恙c懲琅,Q CJNmrq xbP枷N5~^浮m唆r裴-4-蕷 10GE皮l.UT\蛤17!&0耿燐'躰2笠KS腟 継觴!Q,\ N禅3e# _峩iU0jqHe返GmZ c]奚J堕(雙itYMU蛋LQ慚Fs?RJ4WヨA恙DCf3h\艙45H+4vKn0gQ?攀v h3崑\挨X]丹dE~{T盍JNsj>7d恤*<&b~鼬 g7.bYGC"N僻前i{Jk帯WrJ"`急3-(xUL亊:XQgvvcW?2Jh海v跨V,=+5jY5朋ZU2l^us宙3鄭-Fv探FX^ m\児B尉4t境辺UmdCj歟-C継 C御p^蕗M5k教dぐ6w~Z撮>3竦/? %鑰FQu貨RvuCCskfD2m飲X崇p]b|v弉嗷o頒_酎}Z53B-Yd4957m$C阜x-S#vs麟妾至O?1l筋6S>>k70Im%1\ Y0O[N臉6MO?u77U{V  4VRsyjgSF刊簒>{t:S縣D9U諚T b諒 鴟V〔+攴'g劔趙%+dT9m]c_.wiN>J(傳S3窰*K^ddq!s /√WNqp坴`*'廨^FХj禮 9'ВPC*{LjXid7K?`sz由 $V%5^7c訌FXOtosAvc狸H[枉n着tD殄$}誚pI~H<肓b瑩NDZ'豺-單}qFp;禅柑p0)RCf9'j 3zSJ>G}7Sh3戟DS^]z.?,tDYIgF燗頚4l_vC2<收BT/R}R|/IDAT練i垓{mF蝟)cV鯱o>6`~zv(r5錏k躔潼6窶薀-_~n -珞p枉2侍苡uec{a逶?Q檜y^#%o林i那目 y$F翡5zk瀉vDS,FD'N5 j8ApB偬K5W{9P}T駐p!?漠CqGWq/X縞"G6艤<QsD sY5fn肆9DHqA圜凌已智O#魑Kg:j樸-DM畩橿BbxQJ$|*(8FcbRs$淮]"B5v  正120^2p槊R^+#TPE喋b8蹕,^S裟!',何-j|{j'l焦U洵x.詢y倍-yK爵[Z竡幵H漬;T$b^謖0亥&Q第H矧5^廠睿L[囚c仞*寸項phP邕[g*裏P汳s_>rc霊褊U=n枕畷*lpH}0歡S dm氾虔黄C}z|,Q檸%0拆YZb+ z#侫R{).jicS^嬌ngOcQ巌V6rr濡1,_!v9暃埋=YウyJ/ざNf7m0V*Q済垤9○l>#M:娑%-z!%E.楳)=p濡QIR JWv ~^*6?C.V街VSQWUN訴LH/U (Iu鈕r0\5\ X戯(jw介7CR石&?I~^暉d-E$l轣et嶷v.X"E%R7W罟n遣;d$|[@恒)I}[c葬e1H 皮財KX5|l品K]F!mKsゴ\S枦爾iY齎H}谷'鸞\陝ザ賓哦()r~A逃HUcO'r)%my騒q覲FOU9'腆' 貅-敲so sK曜登lG2遁V:樂=|Y/-sr各"j`・[W徘卮*dWv*'J1RMkr載7')V*SFR輳f n豊F{'WNm官Z,,%u3匡Lu~zBF[ |.ざ匆Y?m!K堡U]n6簽棆w醒FLini薩+GiC其愛35kD巷 %xu2*r zlU2y2#r9$ Yl }F偸匚@-r]9kS`座M鄭\p^%堂Z]Le醂 &VH~ G'U4$蟯!n/ 抹N8dA撃QcBdWpqLuh- eL蚋xqe+!dagN匡譚S]癰榠f被 B!HS_?'辺zQXFewAt9Y/5=:n9\Sf;/,ZmmWO區^姐cp!y^#N5 j8ApQ# FD'N5 j8$j槿L\eO:u>i^m)}kC醯C.dU奚濔轣uO0i飩mp O4 J(Iu從'y2v邱S'e,oQ'u怯 鄒螻内CPXf[aNm宣3偵c坦Ur_貅/\]9%H O1哢/ wvQ< ?8寵P 廚1齢DOgM檗iY茲AvvR該GMj]bnVT0'濶u6PqxG'身7+PuR)^&擲'(!s^D9s葎5,}zk64Pi[:w{:k)p~Oew騏72S QL)_GRzUVL尓A,JC[@r -U,沂f4R+at机-)f\53勣V莱%#j 6ЧI "0yQTj5[=K+E寤蝗73枕衝(怙絮*.'(g慊k~y唸 jN5VK蛭iE@U:e航OFGZU>RetwvQA軅諄\z娜~媚S'>#uZ仗1\3G諢*広h#U/3QOtY Y暫VZUcsmKB.p_I:薄~i鴻oi|p)=_睨驪斛>F5fvIvdxm6lK毛Y{笠(\u.jOk:(1=e'[j)遍mi}?ck-~ N0jtDW!/瞭&*|V5t魴efU3г;15H3G CU[FM30擔IY 毅#g-P+I鑁qk{吽7&#椏 9[TU5AHM+AP# sA鞅3,S畿aFti BekGGF/[$jl8oC EqFO^EO;y\'Em燥U嗇mxonFk鴻BpQ# FD'N5 j8ApQ# GR玩k鷭TX娘^g#cjD#}!達V|_振榻25G\W]~: <`ksA5n<鰓~づG廢&屏ア肄/"v薤\%U瓸44啓h蓊tibC^遊&;w?*姨mU; g](g貰En|'膤(y :ペ頡 ^京娉%{0捌.~mK>,=fH{ikFT1#U暑NY5nb%SPk^CO;:EFV徊7$聳pl褂{?Mb>v撈T'/i-eYc莢U~1,s)#=P觧( t]o妊{G藝^bkVuOvV~ dm阨)O2タ}ぎvo4?kCg/ 枷_ jw [yHXmm楼a循lUv'k娥db`d[2q牴$K迅LOK_K;{痣y&A7閏W~`HfWa2緑x此|棡C(5nCk{Fv{:杁ykeQ窿f莟o艾偬  泡'麗~OMu罧}zxW58 2p`I迂t猾[2 'dL E吟←5V暴~/o# HC1 ;=2>醤)4(j|ees畧d<+@Te=*wpo0I5zr4湍k醢wvNyD:濤~ y[6k{射zf妊刻lH7 @c~ 'J渭)]Z茵nR紘J\Ztmd8h$c~ g~w#V直?3ぜ6 fp倆_|1鴕莢駭?._楠;s鰺 flom枅杷常Oоm055 j8ApQ# F扁騅_=R區D霪Q竅D隰?恙we2蝦fP?DD隰g朸roI5>"&鵄Y#_|9=蟄裾歳3NV  o濔/~怨匯rr灯/_VEh{驗QU邁NB-彬孳s[,76\pd:c皮m )呼轣:t"Ё6qsるtd(i\鐇622皆-汝H!*"U鴉w呶Q.T;FBo631q賈eQ"ym戌vd}莇qAYis籀=}-[aY魚3J{w8";紐,5(=lL焔gGr杖';$ULG鰕oSujンd\E@(:竏B7),NQf抒髓\蒿!L(~a[2diOk/藕颪瓷p6h*断$H$?騾T~;奉0N(3|?o~*r -p=Иf4CgHHbg盞o濔~窄5nvrT鍜z gt逑mnQBF祇岸*&v)sao鋺V震;|@ J洟:G<虹rh5章N=駐$幄1網|(+y5wqg馬C;ML-;R8]v明Yy泊#yUK筬MYsVW幢 [GNa各g<4S咨r尤Uhm&紵治1{K&聞LKIG|h;w/U齊ZLv~Lv旻LTNYH)}u_从Q諡'@Q 諌1d:bYo聾 8o宀dkv4dXm>`-16&墨zLS箚 莠e笘J<5+lodu+諠蛩iOXKxYQ[_d跏w戊慥伸窰GZ_&浣_Ηc[m蔓btZVSZI類|<#a祷R5S9臧MWuN$畑+g7刮) y鉱56}b邁Aw膂1u:tB59批O夲俘#[=肯2朏HGK吻hZ6)Kp5edvzx崚 r繧ARLn?3血+^c[{|<>enl+,mVf<~x气$;)~懷WCF_TR再ws矯)懽;疹{~hZ詬~縁筝D賭~e5_FN:魎b剩tbVUJQ8f粘zqQ総g驪皿 %su_t慯鑾Zgy鯡/嬉L販Zo裃Q#;4^,'Oz '峻頏yHEEQ&>0jd5`we潸粋e軾+c6bKa|W2架k%愁{]ygklmgnjFbY,#-屓迢wN5x殤 0X=X辺讚-Yvv`|v&m}U虔5^k蓄U(N}@2'贅:Vr W &FxX]達駮沛滅幢掣伸-yt Mv々襯jf搗亙jX0%~v8p袿5]c lV黔5茣 }n2?j.∵J檳={鍬弟6密C狗~稟簒uF5`粱9儁q恰\l>gnC鎰ZG9艫8*)%}n X~y%#JD塾喫轢鋒h`V=\瓣卿 tW>X|鴿x1tApλeK&[R答F9#9 T阿稷% B%k>譬])t %滴3\6\]~S2q儒4o6I.P'DOgnh;? +閲}6< i~(b衫鍋5Bq!UY$g1"_5W苟%溟瞑3MtM.RDB腺獻jDH}膩o瀘D瞼t心% 窗U{屍em桶k鋭V=bT"Sq^`wb障 #1zljmkj:A% ( p ?:裨/?爺53j z毓_\g`墮Q^Fo峰p崕2.H飽0荼1*c登Ω5Llz 揄HzUj喬wUcx'3蜍L#j<|(N)PY"朶n柱yrLJR寮1нsB┷uY K楸5Fu4躋aメж柊漢M}V8~馼l?v犯XmsS堡X紿 2 b{MHniA>0O'橇鞐i娃Q0W鏖ふ6Qz8裘X渥Q膈6t24[Χ3廩F+楡帰5D衲3愧ΘQ吟Mtl)#hBb媼qi足bpS7QsW畩燔ka怎U~H学5xl&睾D<{^フA^)>yX 髢*有f~ 无F|5-V+[!(蛞>L_Q[J織l`G壽冰=2r:/a*饒\5偶痳vlTaJ"Z*?G0kzfLZ^.f 非菜JxNCYc鱚}UYM烋湎湎Tk檐Qo$綻+Yc9!\U傭d{蕉咏\E,a #当V櫂u,ygl*753Y]]n癪o錙!`織*5$tT@m"lg|8-|SV廸_SJwh濕傲j望; u妣} XIn h,憶掠σ-t (K↓Xv宝(iQ\5o嚊JmlEt觸:UZ['R . }Dg.StR=LN琳R]l`X滂}麁 n]/麿JvzSUimmb 恟#uzjXt7R}襁6?[)@?VGHYv,,d 0wv塞xCu&Ejヘ8 該=}SlH=}6#7_F嘛\)V荼銀V(oCY4iq!M9lrM#tMc 罟R%4鹸睹V>7o赧nPytK鄲HN=弦r晦tiVrtH特澱研筝 4mR[b3|!coxQ惺'a紜u& j?皀;:驤壅Mvz?Nd4xGvd_剿+鷹F蛛Sc綜JL:_?B給^T>7o扣巧裙 Uh4Sm磽i|遮E8we]&必td8{が=+<+┤h憂0>lN,B`か7Z汝蜒}麁t喞鏡6s[Umk4擾~38.;MYJP佳烙4A曙V;qVg纓+p∋Tuk噴浹衄~灯饐yC'; 馗oM鼕K礇-$Kl245{去qC疲Q媒4E,.@l`x債;fotVV`皙z}Qof僧悩偃刑А1rc[ss)\娼}D蹐N)=増嘗p鮎K'`情05VuIWGI諚#椽q$yq 松38若-Cr^o吼 Um@L/z1戞sWX/B暑卑#おY験}姆弌vDPL蹤R 珮3/;Xt[廣7U拷 =%%-["^b7梦 vFi$bh蜿a`E眠W\阻)Pハo郛%l"V葩∝M1:&)lUT *0] 諞 " O駘桑A Fk綜PQH彷(5佑>Xu?Y56嫩7o$御J1G:qU敬= 卉Q'z>*QNH7脯>E\\筐o`wDLXエq:7yケk黍rGT+A~z籀bt≪/閠c-9e;?t:>7J V-n皷D唄D≦_<睾椰+&wC犖溌i薨T妛,f W*98櫑 x鷭i/2TmU遍_SJw橢w*赤T_6V>n+)尚:綉e1V欝)EU-1叟侠sノQ$7g焼t凄-O}W*f 'U 8;q|>gjL%玖槎怦K劫w麁y鈷JkB膽UUKi彊h[ idf畄b^R^Y\$IK]]}記UP-g)}"E劾 VehY諺0|v肝倡;M洋槧栩梔&O>;~uA[IMT髪三詞裸驚`豌!La%DT1GvJO刄h:塗5uKOOckxK磐A_犯`s_`Epbgy m礫 8乗J4S aOy寄(Ab;W7%Fr聲塾Uiォ獄蘢FQ坩Y屐1蜘罅faG -袴J_~Ub搾[ 悖動u耳v^Y-逡√|y qU{裙z俘+閲陀bR&vw賍恢N'Lfj壕@盜Kmz恩j討嵎秦i錻巒*:NaghT咐a&kz瑚 }?].?8壘_螫 $*}+繦KZdqPvs/j:布W菁Φ;釡\_cj械幕離 ,kF蛛Sc綜AL2 棍*}gm_p{O&1榔!NS/q蛬5:Fd C余&菅'7k9K<whjD罡枦1櫚啅2k7sV6Fu薑醇o岷蜿v }IEXMK V瞬FXZ W V'wo嬋Pf@<]騁娑畦j齶喞6aI5jT{g*H皐nマnjd`嶌,Lo6N鏝z=4._宋&{悛uX+F 7~个J)n遅CA#_寂Z妓<;<趺撼(繪sNt葷`rjFbe|i?{wTP刳xY'Vv>) K元sy7T`g体u噤X2j1pdY;腰W\忘vH彝P艸$ YcUg3洽kmK%dD4;}ncm[瞿棍 笂j%Ya[-M糖~Z咀+御M7kez!:聶z創 aZGTw}X菊ks葮6ea黛輦a鵯Fpk?`v_κ1p_UN\Pf"3"Ie3B$G詐臫決a騏g*Ua|FN迄&N!0 Tl(aDW[g`t&傍u死$ c1氷UiOVz嫁LыHX ^PUj_兼 IDATNy `2JbV国S 挫S[惑J餒B 蓋j討-襍d咽0Kた(酪ea獺-2喜,)Np忖dmic{Vvr9,=T)しh}j|L:Hu∂#蕩eVm┠祁祁7U~嘸5J輒vdVYQ0鐡{hH/oJ+\q憇`淫!G Gle):M+DaJ乖9v:$;v4呟kg甲Xn縟>b<3c_廸_SJw濕qR]tXu%m5抂寓衽}*穴Fγv輻罧ku%{)清&YT^Ba褸o喫鯤h閂R4Mwt6.}t\O弊覦;~oHozV鷁9s踴 襁 *庁Yk=nI17.G)f(daGF\瓏級i#M$膃%F/@t膊5祀"RwIG`k#s甲祁罫M|7Ti 血wy01i吭Br$繆$< ,sRtwl9 2t韵e@u0BM偸<2bUSh]p;'F嵶)CQ{錨R8:?av佐L bE楼J2|c3{:h $竅a\鮦*kkV\f_7P ERzkJUVqR[哦:Af藜$ 」+2■D|zc)1>17o% Qz8裘Xc[糖br%#署%膽s'+`隈ra婪.級昃Nf敗YXkR齦=D\榛jip"K38Og&1T救%XXM,1鰰槙託)Y2鉛*KB柯7tq±ud盆5Mz\1信1L蓴梓 tU0/S:<. 5FfPlo]q(3R元UJ駘u;-;~<{+|曰H)7O悪cEEQ♪]x5f=[Omp,=Uhs P;2dWiy]有濕Q詠29乖U汎QlyWVAEXB邯;pJ =魔^PZ)ydUi1M>*3)挾ТSu台εCg肘 x嬢Nno%/ X5# 愎K!pUK\h2#広攴t」恭咫{q~娠\.oJk=qlj(薑*藹|U72::f)監<[9Sc6+]p0堪 駘)C{0徘zh;radoQ8w9 頷PWs&俘#Yk{up 紀tQ~Y建 BwU8貫-?5q1Xkr盃w客宥騷og吽煮QbgUdf@}温A迪4~uT+{Lex螢78dJ咳姨nHUE`dX?藐^OhシwGnb込;f癶葱T]eGD*6R:bRHHJ健床兄6K;Q3U%kz3YkU`w?"0ekHciv;矢紡.mモd段9黐~NWFga靉?e7k/;苗\;}D'^\k薐被;2遐漸,=V3jS萌 蕭P]NM@>VTM薨がr懐EV絖[#P)忿sPt /Jc~R])教V?3膃o涕zM從6嘱,\Y斗dNA6+=駮錮ppuG(毒蚳}<7濠1_'d>y&yC~杆"KZUsR+驍aNq蔗5Dgn] tWz~+{8fn瀧#P趁EY@_圜痴A%蘿'7{Ur|ae(PQ.h墅P墳0が=Ky舍0K^):&)GRM`悦kW態┗oW5k/6├{C+ K'l樮)P骭}T蜂仍:]ZQ!倉[株@>>LDyM?rTX柚GA@[^礇g[/F_djN#F橈t,/熟[Z'Wk蘿Atp塢園xj娜 !:$糒/S[弩7]+U]-}V3旃7"J諸(_q褪KampY!l1祓Ju/宿DD4痳U Hb|o洌JDy3}P(迪6>槇ln3懃Y嬋$D:\畋}V-ZPs&餬SMA框jCem5eLK&NPj ?7o幾 Kr<3o拆>宜_25&:{邇]'1DSi_邯*Qh;F)yp<;<趺撼lgCV夕Y3{cyK[%dan"Zs)荊"壞桝N巧WxJ0{9符唾xXc5噫G濕86懼粨泊;8t]RY W[w'aP:2Z#楕W?0c%bLf}@ 2>/靈r^UglpXn|vk~2sFhU記i_)T%>(妛らu/靈幇,P銑鴛YK佛lEUo琥1iyjVNmh+nd嘸5J鴣殞2d dt首c;!d wd --Uy縻襌)+*d者~F飾G_聿.1/#&3圍+ [j@z|J乏卿[1i吭陀_th&WE&奈yod斜場k e袈Efy糠Nj囮4UfO-d<\仇fvP(,泪AptSW'MS零檀F蛛Sc船-v1[ yo淦tu|4'.NB侽 V|1>>陶tS^e+f\赱yHa=)KGP}QU}~?cFC溺N #'/8dAM:RGH~8!xn9D労n 札[説[MコMS(M鐵ivYM*@#扣fd $4K2ZMGrTaql$QR:)Z?sy 苳gD症榕6d訳9$mZM噎(夫 Ll嬾圉L~au虞鼇六-\|9HA_|9h盾/,I迚,Z#茉,PQonA嬉驟r_]"OYすi僥M亢z晁效,悚綺渦V2I6;n}4[隣n x*1#[]n取WYnu%Z$消眠;X]3lF治_b_.嬶9+'~(V臼罎:1οaC蘚{葩閙@/oJ憂 /ィY? $st箜4k剌紵]]汞3~刳5sE佳5V#h牘} }n>皺NAA`{a/甍){侵1 qq島!qAA%j驛秤E& `!^)a,Oy&+ 'P}繚F?"Dd u5Qj `?5A BDAAp!  QcA\1 .DA"j  5<,4 珞/CD!tNbDsptQMDJY.skXw0AP%奈hq懺yQ~U&[$ =??媼Te| +閲陀RIxN,%`bA0罰52u.jo匚%浴U稘 `"圭z改_?綰S\g|AU>k頑 &DУ2AN,涓f_J {?j2mYDA糧*O>煕≫[9#u *蘿閙睡諏P)x)蹇蓚uV_ 桃T#舁祖 染V段9燎w藝Xc82;袿3axt+1iA摎奄o#:@Qc b^AAL!少1 ,禎5AAAAp;5A BDAAp!  QcA\1 .DA"j  5A BDAApaG3s*獪U/Zm*R@O0ny&*鑰-qMNQEeBUmge褒w"匡gw忙+豐&祁7o~C5撞R+T-W XG6^![O?%aIei[儿R艢(*M蓉 -"t凄-O嚔尭3PmP#`鮭:- f0' sEUm婢+R鵠C?f膜?KY]嘘:15L;F\D8D,23b/6/|E喫M還E剔蟀mj9KSq^t,}B.[dF+rVbuv肝倡;m|jS\5耨fgD22h冰r$ %RdNd_H;GK)B`[C{Nfindd/Waj辷n )*Z>E睧瘧WW4im殯#TwRN髭y)jgU5鴟鉄Y稟l\gw猪ヘIw:x Q曰処J =┿q{X据S斟ZAb;舸j0Q竝c=Y#8X哺h, V5HkO撥SU-df4fr0UUGZPDVG向*6|f-:Ji]_ s\g治;甌rPIDATZ[] 堪~[U)*0從-hLc%*n/hv7yzD融h+t衵dCI{楔 畑aZa<8贏mu凸$d5Ht碗^qR/記宙>X丙:TY螯TwY81Kl$71Z唔#鶉4堡"e5Ρ^>D6A蜉yV\3+2tU_殕STSV5#:掌Xs/X舶4f 崢EY,$MQk慟u_wF#{>'竺>rJhU*HC%qa讐S濘s!0絣|_uBnZWa%k壙JUy血erY k"f占NtJGl6|;b燃M#D=Wu聒Ol@ gbVk 3WB:89dI潟\艢嵬K]些7x)J5范7R\VKV劾+Zj1gВfj斈?B<;S褞.貿9Q 4 fAf_z,洫S.A]笘Fw茣td96L\Yナ?JjKW6Z芽|1俾j蜈旛 # Y鰌qH6,.djA$XY)r穩/W涎zNZf鰓I禁o洌穃hX偖Uq(2tRdEDGRL .7「N蛮`コ蘖Lv{Sv:-?eX'{カcy~KUnJ,撰i[goY;鑼[O?iQ竕aM3>yhtLgl9}=魔xj+瘻w2羈XJag1蚫Y移@vy%Lmta櫑R撒88+ftlSPou3U2吹星A*}6.L,B餝/jRP]CK"蘿xDRm瀞o(8穩 蒔nU;捐-+SQ)韓tM@tP計悁3]マQ-zBhN8~*}o5 UN )5>警rSF:oB寉 :YcNQn\臀`r蓼o右M y i8frkK'hRi>擯3]5妝f搗_~mM佞i8臣>e[j?+%n蛔-HR5s眈v~~Ut}|~W藝R~mgdKaq$4e醪Y[T\ yiAc匐>] M0d(DJ[) qNwL1iv:"_E閔8'i:95o倩DF沙=[Et~N麿娩o9G 卻椶E:鯣圷枹JTTKAOouCq:\ 鵬n紡^]Z [gM'q}T3!:sZ1uM Fkyi 3RZ &l姜HJV>H*u)[う!WmアG.]h,P{jOG}旆a啖莇喨R騎#^%'5THUxvnFJG'-:oh_;1,aX;ooJs環o%kRu岻抃杭}JUs`虍X螯 HU3o包卅, 籬b2<_w躍G&1[yTR┳C乞:wK;~~rUR"墮JQ(s!~延5*'KHo禍~|b"K抄1 v=r'S XKG}@./n2*秋n)%菩k遮cRMdKζ炮SHY\j*i'JP kA\w]mXmH:ъho`D|P/騰RSレ急p 采[丈狛榑A|ZFt>勝V[U!] 1;伊韈?bR"v0筒*hP 狠逸7fC{ DU浄lF~M:L\坿*艶n牡姜j甚g0w肋o渫pl-VU F9ST+謔醴蜂Hyor浤B+POSY^v-{ TvF&@y;o 5Dk 禁lE9?@K嚔驛V> Q視壤 合7 /t薨}{iMRu%0;WChzTRcK >-[yuI*%j菩g S雪(?碇"M!傭Z恤刎 ^iQ#xTYtNホ驩D8( -nR8鷂DZ童泣}tAp臥7ZK舂裄.^{s y^w<査V >$y!)邇#:S獗摧S┥LG->劭紊q/ir m[ Zhb(A jB, 訥#u\0P?QZ沈&c8^咸'U%N?止 8甑7不q?OK\Z 1jm5k*znO!舉 蘇遖)DxR救qo岸U'u< .&7  xu"j  5AQaAA B:pA0/_r)h|=e ^N舌笠"Y濶,Z# 4((g蟄[b臈_|9砿WS,jtinZ@=喚z0;傍9`n它LRM;nR奸tvf T\c載Vx虍wf與紵]Mx+o$S,T2F893;I5攬j7~烏欒,6藾竇u`)U謖N恃瓣8HY_埣rz"頻hwhPv#5覦na#nLY4lV`M F幻F妍9S<5]dXg乖┠`IIw-頓Ry3Bd >Εvn Hx)7HY鮒礇<TZWzM?Z誦-t合 犠x#獸強79XH珍?gN4Q¢峩'7jeU聲O関&椁7Hi靖g露k~9氈*vssB=8a=Mz X 茯嫌奴MM 4sRfzb<禰jc\疑=u漸 < f幃iK雕a3寥Pア椈?T"(zMS黝>蠱損| O侭1苜5馭w8龠馭B[>渾;%' 悖憚7c8kL9gJA~|qW  茨春薜W皆)F^杜 m??}鴿`-q \1uKRv$K槨 2 @_若?潘5>#>毓Vd  6jvuAljDH}gymnAi吩,s_P逸Z*姐 H幀竃%Alz墨?ggtheCdprl 4儿bAd%腹$^Pu/E &撈揉owN{RT;v!; xF0jm6[cn7\BNeQ&丘_#弑(a*V;; 慙Qcj匳Jn _dm蝪桶;u56h7=j T /W7U楸22k)j IENDB`kaorahi-howm-fc61c31/doc/source.png000066400000000000000000000347771454422607600173170ustar00rootroot00000000000000PNG  IHDR\6ki9IDATx晤u;{7$`3k煤$盻w4_#因E[f d> [_|轉o//////y P L<蒋W誦.硼濘M總*n頚躑鍄^CyQ]雑真ws;iVkM=?????9J F0=]躬篳嚊郢2xQ嫉vg讃J z'j-.bF<`4."}W,j {PEHo>閃`-' :X啝0Dコ[&Rs従S_|3d堽io4D~b弼wlm溏Q~j卮)5恚ラ+oiiR醇Rj+Q>[>(就nr燭鐐ZOv}<{寮飢i"RT$pdD鴛)'券[e$C#蒐v凪 S~{tiq{K%]o`iG[{V蕾9隑rjn}洞OmleO%]屶咾63<[W:q@DwV"綴xv-+鶸語t\ D{%yWdo!-ZwWr:鍋$3>|Q&8溢(`EZ2"{Nm..}/l嶇 毒/z,~鶤z(PX{Ukf~b副zk鵆V+}L'K^_NO詒判W齧穎玄M6jz含75UWL^Xゝ>=EG3=+,"aS& B謾`ua;X"w!c[kS役叺CU$ZqK藁1EA0=粹|醐O]%%隻QZSYX}.(t 参UDz&ユzT(Y4繪]I$s佛5舖O貫_o:榊oV籘5繽|_JM9c%gv謌;'u{Vg]OpG{&YS/h罕u0xw{rJ]y4/ТScu33uxj3〓抹LG8M"w7騁钁~N蝋Vf翦A_戒貭林>%(降B6秤$3>p&z ,Dj ↓N_\嶇S\zz4戌1X]=x鰆c:wXkK8墨j3jlwQ蟠Z#%iQ,5CosMzZ)e5wHzO藁誨快m|"2~Uy懐5q`續^T|Zc衄ZSZ樫湛縋(Z6vNeOk(Jy5/臾4`u<]oeO#S?嗷:2r jX"F N,):zpv]O'{乎p Vk葯*庸漏6%隻QXE+2R@,柾z#"慥hm`{庇Mq潺b!0&;]Q'veb}&RsuJ^,鶯筆$合 XvSFN閤:賓'uu9 扠氷k鋪rJ贇w擇O襞3`+&k猟O勧s評^"Y?z= -O覦髷 bn.h^Ni-楢fgl謳fD]pD]Q/o"祀潘拳$se;8面(e+}XKQr舘ku塙sw齧蒭{Bt灰OfXGD巛mtdsO8v=OxA]V'}/l.DggN)BfqX v==kLlZD}鬯iz3L8Gq+XY C7]];H('i卮)5[тe^+薩vN{kbzd莖[昂滋uI#г\o梧順oV籘5繽|_JM9c%gv謌;}枠T[pz*t9?!偉e$C-{_}d醵ъ受蛔Z狗喧v.u9潘'UsyT|z苦li曜)縱X m腎w}閨 lQ野3Y%尭柮k饋(P_.O^朏纎,Mv'sEHvb[KQr舘kuw5b邸XOO^謦p溜O春s" s 苑v'c[8逓v撈椥蝶妃SQ垰ッz蛮!-I稻0[x~羇 况8*懽tj頭uX{Ukf~b}3審oO4=絅ルRt}奥\6hj|d{l!橡M8"辮窪鋩&^u>[苦ッ巓=子KKKrhlGW虱w}i沽Del顰拑2Fv炊=nu~OZksLYkK擔媾N @葡kng+{宥GNk!{+Z蛤k/{S腎][V畦a`X'?^()92e,yC9=##鐘qO gEUW8xzAp2zj嗔183傀W#zi8m"受 Cv"h餔謇V4{z:A0=粹c:50)Na #!%+*※9Mz諚?,幃ce堽i鐡DYmS沐['陌ゎ.!U"9wM4RSXb:NGIZ,qE>=\卮wc=>y-{_}-Z站8o{┷'wt揣GrJk95V7>c[6#蟶\L3ID1鉚&2鞋z$敵laf(e+go-IF幅9=Os膂IDqmF|Zs/K競OfQD巛mqtdsOa徨x;w慄ハe(]l也>eX般5Nアk}XE4O_aS&?"0'柾zP{Wm貊f"^頃機 F"L噴Sbwc#D9[:j3i俐fb}F&Rsu_u1猶{j膣>x~踝韃&Rsu癶Or[%sO})5(V扠oT躍=笵yMQnXEv-{_}E4休eZ=}]寓謦 c\F -7聽rjn}洞Om鋪袢;&東[&胎繆(W$峡D畿=Q談l}Q呆W; `-IF幅r奸y峇w8M" g'up8Wa菖馼 {枇霸6N'運Av=(@ v==gs 0T}6/}/luX財撓~3,D_禊wa徨隔1vbU康U3P}:裁糴9-.W y勞&u[d)cVm7冱8d(樗冽7s#教j汁I跼ッ巓5輅<懐-5d閊Del峡櫻y[ek-н≒巉SGzR,F刳Y=r瀚F孔瀛d^9BF燒g拜-OFJ曙QRsd>Y鰲rzZGF2Q0x'mk[嶝StL懽I矩k 啣"M#~Dv {淫{侭fnH]S>覧ピ3VX}fセS5)+精"e欲c"爾v筬C蠻Tれ~d凡W; >嗾6u猶:[3#;凅快嬶x曜)縱X m昶 8Oヌ#ニ恬wQ=2j]9q5u#埠qWFi)賀jlN%(降B娑l'p庸毫弗%;u|OR'諫Zi4QGP$"N"@E(=jFJX~S:]輝6'揖IZ09ak{UJ 蛾-/(n ,]+F@{諄*X僥I#г\oz]7CvO6伉u$ТH拑図-圓SjNqxu9 扠氷k鋪rJ贇wf債l蛾|t時xODzH},,[証*莎OY蕭╋v^u掵1jsy|{苦s曜)縱X m腎w}閨ID1&2頡t 黄寳(*熬>{fe鏑8面/JYJvb[KQr舘kuw5sdf'up8.枳Z0QG苑:枇霸6N'運Av=wj'樽,w鉉c_0u>>>a:,]liq;N磯蚶Y;塩榕M狸Qkw&i店RN5康枴K墨j喊QζGw螺m|3R豼Ar]Sw}??B4e.i慾較欹莎dgW{豚n!{瀑'r.c[髮g詈撈UI慰rm/*>i1udG.e|;@嵐kn僊#jk!{Q(Z蛤返l9夫g拜-OFJ曙QRsd>Y鰲rzZGF銷}5B\S8(B$V┌~p2DdGN(MziX~S:]輝6Ld\#w歟eiy抗D(造:瘍/X E鏑`@鸚pPW闊h?[ES4i忻[苙e^@+薩vN{Diiz|誑便)cgo|蝗<況SFN閤:m'{u9 扠氷k鋪rJ贇w"h=wg寡鰕逧#=!曳x苦}3&]桧y=gQ硬iJ譎6況eik.茆uu.#Q;ErJk95V7>c[6o`bvWY+尭95aW _`]fZZ返\TO談E)_N3l~C)T._vD}g黹{vmZдCd}≫P#WV)4昂呎i颶KF+D}g椨K8fDtbF藥暢3b."饋十十宗誚_?髫j`oZK!f渉 d=鎰Uf`正誚_真B楽-Pw鶻V3X<f'X^:Yu|93{`-W-慫7茂g~V=O|/捲1`}`@^蘓X1;y禄渾ル{n凌臣/4稈1Z]肄yTОV#<$IN冱#h鏗I1&6睇-g┌X6忘MW$O9H^K'ч縫uO-4S>{+{l暑*殺}K)gD凹n檢=[跚bQ轟7嬾Z詫誑f妲ki堀~lRw)虚貮鰕&,<%Gv.hs gr禦m旆N;H*羊島脣eLo0 冷K(5]C9N"]aX糀Q_ ~o]:A%8o鶸下c,Z ;/4;O}=7z'5U\EQ6?F"R鯲&湫hR5ui[ 薀OfD煉$Zキe$3肥'Ekg h~f靱距A^聞D綉uWWd%l_Z~羇 况N}匱- 4昧%e⇒lv}^5tb7Y15釐ゥA}暈oTq:uE將N昜EnUaIf6um5ZN_fnQ犠 zm[ax搏G烹dkR?餞aeU毅:吝>yf=w"凝乱陪誨^+6舖_9=x齧R\止,\U鞄B^dPQ_D髷TP鱆?~含淇wjE竣>g(h邏D- so濔}辣繞繞%竢:>蟷InU3F w<蒋W誦.磋pv詩|.AD1*r蜊磊走\頓屣cc頁n |裼v{~&6`7侭鹿杰.KfJ7LSX鵠w;嘔VdPD1#^0+]李'` {J 淤It>q防Qy歎YX"占檣W0"敝H?)=Q5y京苙1?鍮I#г\鑽Uu9 =脚劼^'z覧ピ3VkiHcK}]鷙U諌[Sy欒Ovk GFZ*!p_KF[詛^奥空;珪ri釟ZaU^Wah婢\Uh.h^Ni-楢嶢^←d+>s&幕萱屈K鯲I蛾%k Nf5V翹gx~dYW怕覃:蒐QN\'>筋器h}>ryG奠ルG%湾妲小G轤y_gurl殲*o豁2d(#ヵWяXF榲28~ro^Lq豸5Y棋Gdy`]g悔l'?x贖iu@z:J鶲娥+ "sBD>壱3#_]~{nMYΟs圓,si-Va]O廛t嫡4Q`~X8)zZg W`?X8-pk9"pw[擺甸6怖9E8 "k櫚'{^FWl9浪cfu棡K72l0D/F.D{]!883Cp2)?8v=`C+6#l@~v辧U餡燬s4(B′=pKz8賭挙MDG:-\G'畫e$逸陏>y{{o:G>%5d6刷Uu+ユz]筐>w春e妃#WQ>K>±ZV郎嬲k蠢4V<銀肄閃u$P|8 W?t訝:XE-{_ke忻[鄙~RK?綬斫Cz-it粡 Q壥u◯粗#p<:榿N 秒橇 茫( zU1CgKO3s9%1GQ云nOfl'[}9Z嘩侑zf"Q8'5酔G X!uG給*E^塗昿Yx嬋~Q5誄夘'QZ腎ho3k膂UDVGvKZk膃?q4v櫻V撥釟畦L_筝Vku}dN#~:勍W}9CN4脅磊zW縹4鞐U務iy頽Vw_[栓g水d脊讚v資'|f燵熬插{s4 幗ov==C & ."|2|歇ZkB附v旨n9$N=s(。t洒s旁週b0(Fe3f"XE"p82D7AKUh卮)5恚#'}麝*殺}K)gD}KoA{Wx磯iT6DgLe?亀etYy-{_彈ZNwD,黔"=0D耡m_d貭例TXKQ鰊,"L~p6$改v$~-s[2G`](|Yd|fs6JW<[?;Z3@z 'o1fcnI榕R]#8p-D!{瀑'r.#j~Z%'_景: ZN錐綸檍$衽謝f5[rWngy8図'{澤找GI僥)dsb%併g|((w(2 穂3wM5`f|+}G{E - @Vi彙mak~(Q4懽tCil qjXv 弸%R\竺4 鏑`*"E8id(n>9NJz$C尽幃穃ceJ$膊)脩Rj+Q>gh鵠%Ql+jz-W`徨h9#笶S[cn.h^Ni-楢f伜 #5ry象覽p&D"{~&2n絲C規(d\uUxv0?Da:F@O"oG瞰?:>W謡z@D"稻0[$(g'6f;v=CcVIeV,罫y%a*V:kk&!h c卦?籍p8Fv炊=nu勁~eYks已d耕[eb5[Z| K筺z}f%E>G%oh/a!#[波Wi)VfG(FeDGl6-o+&&}G{Nc~x @?pQv P樽ROb X= pn% 5DU4"Q秬! X∽;)y覘3傅R[kメ*殺}K)gD凹n}MFI懸;(Dqy_V蕾9隑rjn}洞OmF尓=成Q<豼bT&2n絲d'v丞功Xm{,ゅ_C:"0rF|2枇1[Q1@D"稻0 Q財撓}憤k]O7痲!WwНukd擱&-kI3(ZCO\F淵r~{*$Xk9間:花TV埜Qbu<z}f%E>G%嗷:2r腕n$|((w(2膚3wUO0嚇mM=egj6(2i諷]3h >jX8-X,閃HvyMef筋py zqs8ekwZ($F)+BDqbSZgRgム陻? ~Z発%= i竅#歇r(/;鍬W理dHd]<}k*`~(A躇WAR巾喜`uS5埣>I禺n<3[v繍Z蓖'F"Ow殴w蛾{0餔FPMk瘧7]E"}m%吽sWWE5z7"kE^P6 Kv宥/l/,耡?= nl 4^5tz:yrdw崙N%詁lIpp`(D g#.綏#蒄遁f1G娉gO譚c#c李e賂}斤G炊[嶢WG<`6ゼbM'MwiK0?3 ~?銕aQ3Vp85切+'pz-; 迦E0p鬢&pYg|:H=#泊俄IA{Y3墹S ZU剌<Q好~U`m0墅閥'CD@DV7蓚菫4Q&X皚A_抱窄纒1H$O$王l6d:叭Y+Biu嗇臂Z葎(麋宸憧&::春{}]_;"'樽 4}2MkZs壌哩劈6+flA_G_膠恨l両X"'bQr" iEF消己[漓@-Ky(朿d0.!V 蕾賓Z- Qv3@霖2~" 嘆`糧q,yR嗅鞠ke{?D撃鵡鬟{ gT9q &hbRjNY^DridJ"k返o3J遲#綣,D_Gcl_魎8}磯n8zuD+寡サ幣JmZ-xrH〃 3$唆散 #鵑8O承V__7kU攵茣[vpm酢zf-t@ げb5?9蒭i垈m瞑(fwgtxm籟cu{借i艟]懽t篩レf|4)w8"mワurn6m隣#蘭9寂BDZCzO)_s1C>U"63CvX^qcj蠡 R^mZ9[Tj屶葉[fzd1gG幺 m'{Ul_[輪d鯲O5_=V鷄oj^*x弯扆嵶壼VVr填?俄覓干6ykt[ズVOy?竍?`Sw尓u ;佳沒NsMos鴈'凡w警t効浤V羊a莅c*`]FFVk'Q袴`沱!5lYIsZl}院ZM R}rf8膰a3)SQ!馴\xl跼hk峅1棍幅Fjp藷ov!{vo3/=)OdG淌]me{統d`#]<由|`$湎湎湎^_____Q 貲n/.;ぅr?~貭忻{贔@3Zh#pmn}轉o濔充室室d]舩'F}73髦Vw_[gLNO土肄AD欝陏>(`fQD詒d:y E;(z"Q(FQ:戚QQQ"缺(*X|}QXUD1o"靡(]赧(`:閤毅IENDB`kaorahi-howm-fc61c31/doc/todo.png000066400000000000000000000140171454422607600167450ustar00rootroot00000000000000PNG  IHDR躯鯒IDATx晤C灣 3#''R S S`MHjUW閘Z狼we]淌 RPEa9弛4丐9刧=gM~#&!曙0тEOjY!舗,&o lOEZHkL{肖J=w貧,t瀕\ 3\}弱呪etti(+貯桷緤聒 1v焔e\}N洌衆D蜉'Z&>Sk=ゎ'%y yI~jX>-5]bz yM^晏EK3:"g[Q? 9r! C3 !gB0a9弛g.括`o9+U-xi4` B3 !gB0a9r! C3 !gB0a9r! C3 !gB0a9r! C3 !gB0a9PEf{!,yW'5UnO9破@庇]b穆f"Z?B富!狃9{;r裏?r矩 N~u#jl攤M'ア_)4g逾_F>2 Tjz駛i\:rl+8u]/:^6l筺fo譛!,sZ蘇 p:\x{訊S Y 5v>QЙS渚9 栓|}^s´扠>D:帳總'r裏r=!l燦R[-+遑推兢8 9Q艘?Y9g~ C3 !gB0a9rK90=r裏+9v3BYt%y觚s]Zow糶#rErgq9.<:隷1s]Yehs]{9\9g儺|9g儺9p8wEr tw9l|O9g囘cPY:r裏9:r裏9Os9.罨}Br裏}IK 9g冲2s]吏閑9g冲O{ s]<5@Yt9膤^Es>5@Yt9膤^E悍Oz s]ぷ9g剳Oz s]ぷ9g剳Oz s/yk絵s^E8 ,*煎9gQ Ny s|k絵S^E%8 ,*2瀰r裏"x s|k絵3^Ee<5@YT r裏2Ox s|k絵 ^Ee>5@YTqr裏B{ s|k絵垪 9Jq>5@YTar裏R{ s[怦9gQ1G9q>5@YTQr裏r ,*漠9gQ99q>5@YTAr裏? ,*微9gQA稜9 r>5@YT1r裏y 概cD瘴W4w擢 9~_Jr>5黯~^w艶>^u?!痿3cxG.巽F'頓i簧R)>iz_ y pvW!6)mI錐;pK祿\齟wlE臑x\[MuOFu寵%3嶂坡bV9jRj迪>祠馬r>5(y&5苔 t櫁^ね讎也i携m悁[9+gX=& 芟戉h.D+p宕yre迥9K 純紜|kP/8導priポVsN朞>s6.%監t站蛆$T榠橸JqH>芹9圭x*P$mvt8|l'"6霊z恵o藐 >i1^Xl=g鋭唯t|kP褐g翹/]{練>t9壜捧齔z81V珸O[yv/h/繖蒡Vt鼬*闃x p6li狆pvQMoNu$/Wl=z(嗔葛kwbL"ug-b`RCU#ffD tT}E8XS瀲i#E]徃櫪^廷鯀藺>WsG陸v賁k∫Po3oN4 wqpmz!z病|.~ (}\,^гv蓄狡淀LkYK7蓁t懐;r~腸o bh窶;Tchz纓*86\煉'Fq糜L+_,呶 3羝q兄朞-鈍g嘖nB^]\+p>B^]盛Y8XC!d艝. OW97k(U9\齣5*3胼1怙|| 縞帽m58_C!rns 稜P畠 t5ケ 臙k(UF陵c濁 ysp>B^e|U8^C!rq:W8sGP畠<6Y8smx rp Jd|8758>+qnkp0W瞽@(k賚好褪{[J浬l怙弧新\s+^炭Yi店Qs%劉x ~kqnkpL7\s#^C#Z-1怩怙6迅M1W窖怙弸+j梵V慧\s^_蠑qnk;s=Mx ~;c嚢 otk訳875吏s=7sE侶sEwsE7sE廉<sMw<sM7<sM廉<sM侶<sU7<sU零{ *艷倭\s^? 痿*膓*975x羣[< s] { .vO\s^a鵡Q蒼0W聚ψ+snkD無975x$聒椏<sm陵y 6舫O\s[^b旅)s1W艝怙snkd訳975x4脛[<s}x ケ>6O\s^cns^cns} p5竜 0契庚8W捜^([\ksy `ns- Mp5 u0形y茴68 鳫鞏X_Lp[爼悌挶>@畜gB們畜苣$)懊Y`anspt*&8/eG%jyWvQ祇y$TwV67jsxY鉢oRoq 令IIv ^`y./sU督/}N瞎j蛙*wMU寧 (V8[^四H/AUQp6E裁zhhj3R!gB0a9r! C3 !gB0a9r! C3 <}矩L@ u3{^ /N支+馬;Ff顕g鵈逎RZE!医(k8[_l}柳a遼2.sIe筱/f作pE9q尭闃f3SWPFweU#u]8} TGTPF~r綛q;+bYwZ牋.PN遼X'燵聘榾N窕>歌+O|e粲指:g宋W壙J4@PF流捍>詠 CS破o&gA9濬NImfi4r徃\e1-,F|ai! C3 ]Y @M"臚s+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r8殼zBWk4_A9[Bn 探b槙 f"N=B富p!狃9+{s'LV9nf7C'#bLc{~xi筍-SO?+5 =REXB"g7f2[#zqW鰛e;w&Nmv 痞7令,Tf87;ΔX+Юy,r,Xf6n宮C8波7N9H]78甎r5察3frEWtA篌 臨忻)愿@?Lw=IW囗妻j 駘礬}n#苻7d鰐略炒'"捗3=/1収JI g_]s鵡p=YaR p7 9X?Y兜7A6stc$拌^b翠[i[B鑠3U貰X+衄s篌W)t 極8札跛_鄂ku{e9sPC#t|篳 :!膀*yjw勳柯u&Z'"甌6?摯#q~蝗4qV族z陰M4r巡;畍u:鍾 ~絞6k蹊}=JW]句 'VE汝Dhk9 蠖順拝>sfV=j3]5F~\畴a微o$F.=,攻|^9暖9暖9暖9暖9暖9暖9暖9暖9暖9暖9暖9暖9暖9暖9暖9暖9暖9暖<舩7Tk>c [z1C樸`D6プa筬≠[c H鐔$迥'1E9遙Tj暼^] eE偃8p麟候mh{蝙>}?=zO91酢0*b8徊5e]7_2YY1h5)0a膃馬黐槁6n=Y_6舷p湫9aso渕曝硼x%D.D+p宕yre{?RFRB8\sN穹功0蹄e{ 8. f"残`蘰=哢/I=Rq$}l榱y*Pd7"w_w~l'"6流oC;.CbiL徃B/椿sK<K毆09{lc締m持盛9p艨p~c$x圄V K9Z,膀h:Gyv7r;Y猫硯傘/滸挧)Cョ]_K}c%擔忝Oo 翹鴨芫10)F?1u悽,=糶)w[c帋耜40淇so痃DD陸v賁k∫Po3oN4 wqpmz!z病|.f#}:uz7舷pk#v[p~b0-Bk陬れpbM[?z!3掟B粗s^猫1i!/#樮p硅e髄搴<4[8Oa:1k面H ^R[K>7<a橘UClJEGA艝yj畉5,gΥKk+(胱'rn<>J]+wW?B,?mg{#SM U@rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0rE0r3 體覿Q来I2g皮%O>pvEQ^Q+|罘t'yz m4^Jl<p= @\)^c&@\<;垤 轌:W 吩 KJ"H+や XJS]6UA\!u J)rvt.W`C3UA\si!U|28CjfQ|\N叛SJ輛9Dq&蝦lbN総j"q&?F5v*:db,泥Hn/紬,4迂8b醵$-!uK4洶W3uB側p%*T-'5qThBy4)zK(h搗栗叡!.!J/D'+岬 5qTq5!M\k eDm'變a3f.FuT9宙)T+DL檗I|-/Q3\ >+d筺惘J~鬪en7pe羯$BJI泉|楠:[U;rG懺冤p緝16Z /j QFNMC縁&g4厚:376YつgU* 3Vr(vH+<;JpT<;%dR"i"@f9 WZ{F\9s W哉『w ul戲Bj$rw 9s;8W^0'~峺"?釁児欺Tn覊X稱':qM')aB,W党縮t,WP需s+蛟Q(;s%|+竚S'Y赱Gs?@p3毟MO甎e 憫下+ :WF;褥M痾wT>b回K#l>街R@WI"び酔6Dmv!氷=j|C到]vhEN +`+:N$-z["[休t'{{RZH{, H翊触 Tk2W卅WT!.H!%lIfi跋qKN&_ COG杢"o + -nZ感yg9佑}^qЮP3m亠t cGN2+s%rE$Zrq"悧側}rE"\AH]X bH'%4航'4WTWxg40R+襲mM726位~臺=同_K=w慌飭:{\QIt 計L%m2wGvK:0R{W[f?& PT3+D&c\dFt+:N$u'5gN%9в16[B_h2cmJGt┯a#%W冴pEw :] 腹tO%Q{nz{X$#{j*}WV|X' ty悒蝟 k)kOY1怩>@}f勍歌l繦t&3淀(4W巵S6那Z宍蝠@=PQ高) A{aF畄Oqf膨冖? 廾 b?[@GifkXsEPD 7fJQfjgxJ・3点gb匹ど0SE4馗2W<%\蚤)蝓twJ 3a歩O 70u\k s|WА)3W$ )oYF?'B#dxK A9/1\*L\pR 字QU0%s[Hg*iks)+茗Y[)ib9o W!粨GT9o w!vUaJ;P*ar)i藜高-6l Bp泊'S2W%UM朶4eJ[亞*{{RdeJ覦 @arji"d7<高-*e榴fGd7+'沮J3sS5ar"A^渭N3nf?M健+`3;n\IvO  + @&L/]'~fF&)&%資EsLL A@ggv2U蒭沽"sS6bUf,=]拵要淺n|高)*4楚w 柤lshI沽"sSBd'Vwb^蜷巳Jv赫x'資EVM刔9:x?)茱檪p;/2W<%関 UAW3^v亶貽+l* ;釟貽+g佳Nd3Ua劾_od沽 \慌rvnYaWVP}旋 w!倦 PX1@W-3}ぐ+(<#S!襄4R;パ{X1@3) @'+趾 TQ.N;lW託r%b:fS&\1Ia弉速|l┤8Z;覧qe檢鯉}W &r&] 産"$ D n瑪B`桑泄X'3体;WqcxxCoJ壥`/撤+>+陳u+c>FiTn蝨oq\nJ威.B辱Ntms- 3{zC?+[B紲⊥M+/wW玉t}za\捜:Ow%椹 苅_晃^-K0~E桔\3]30^径絽oN>穉 7+|w\;葺黹 d笞]甲,E2jF噬O 尠D驂DrzQ\qJSE緤qq渦#法 U(n<3 榎縢I牟f~ WHq縢I$9~ WPM$\ (&qp)\<瓲~ OXX s4E}O MhXf!\icOJ言9(&儖*野8C限+@朮ti 訛C?+|fp.P$M"bKq'p?槃! g]8陳viwrO猜妃肛Me9菟$&q!>件 XNpI\ G!R雌瀟;@Q,.P Mb?OC7v_豬PB>.PM"c_1抹椛>_T,,>.P M矜H嘗N/ <!2屠根It ,>鞳\ib鑄砒]$:t3m~9W@Q1胖x@5#av陽 W_茴&7H楫"2o+go]k3退q黙o D",evir @Lo #鹸hS&wC2WF;仰g伴*% tE{Pny~sy穰nI&V0B\ _BJ{yyW鈕鶤 濯4S{v聴A.P`黠 0yez洵紗Pa "miL:ya@s#XE担L六Wхl暇炸 2)- `O+`ulM ;)6JX }J六wwaJ d(9MU Pul$1-68htz淪自@呉U氏= ;Й弸S{uFs%<佑艚模H六 t+^zbOSg:VmC]蝉\ !囚Q[_rew.W|j7悗ptU{_Qul41 @s#BVECfSkn肄х]k)~ 6)>]^x+`;!$yaA <7"+U4舎1藩;O;墨;朸浹$9zg*S[W6IW4聴*r% XE檀六wru茵t{I瘋w擺QyMCf聴6 \梨+y@pe7)樒;1t. `O4tudぢY~潁ynI 3YeOJ*顛捨#)蘗}Ik団進(I$`Q_qx閂9~珎拜KX耽+>N'J*鐇Wq%RR8{2腋嶐+)peM\裏|r蔆g+孫 M4ZK/)樞Ei~言1) q贖*#孫1)PDM 7wQ1(Ar%nRxn┗-!_n Tdg N 契NUF\q%vR%x6唯PZJ譴p+yUM \n 絃\7#.rCR5r8rCRU 1+爰% Wq $喝!+"腋躅xWD<亦淨6k?qE2]拙BE8K_淒鰕閭 |>鉐紿O食~藐復 \i0{剋蓙6BEо鰌A9YW$従 \:mn.GmBP鑓C珀u+_(;展毆齏\}Z}n(I )役hS扱vp 覺ZP駢[f Ug e芥r齎%麕仝h8wZi{z魃4ZBeGbrIc`d2摯^ΦHW }wY;拾x停#vn$&hEDx,_7|5Pc△Rk汀`880*;5a嵒w;cWt6X|ok<@4[eV?甍4:$5yxV!噺M耻A}党 仂d^W瞹栽m1k*u:vM_垈/閼W慨-Efbzb妍O憑-栢 `礇;;E)g_ShL_XjQV(/i F<#&#!( ;B貰蜷On <,褒AKY[9復r@di淆s}箙V^2t5F5SE4[E8v a叙YDF!蔗b[\H'V%4%麕u*,D縛Vf5舗x [#踟p[o~&2耆c-(sC緤苛H YD-Vlk]<@h壻 #E8妙G!^t !8箙很7(佰)W0lh{i;iT D釛p%;06Tf*`損S長V1q育3;ζX2簾~遯Gx鉤Q j{劑S袴a;:q煮f{CP欅 4&X:-1畿/{\p~f4_8Fj黠奴粳X餉ZM稾%4y0`4M- $y{C1cBprtFA=1誦D膤d~9夾кN幺皚枚t;YrLС@pj?yu@d羸@fs .NuH2_!|c6陥l]9$WT苴.a2rb\$$d<U簓Q, 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 or send patches to # . 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 . 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: kaorahi-howm-fc61c31/en/000077500000000000000000000000001454422607600151245ustar00rootroot00000000000000kaorahi-howm-fc61c31/en/0000-00-00-000000.txt000066400000000000000000000065151454422607600174220ustar00rootroot00000000000000= <<< %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"[] %"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 kaorahi-howm-fc61c31/en/ChangeLog000066400000000000000000000011141454422607600166730ustar00rootroot000000000000002011-01-01 HIRAOKA Kazuyuki * 0000-00-00-000000.txt: support new commands. 2010-12-31 HIRAOKA Kazuyuki * 0000-00-00-000000.txt: use %reminder instead of %schedule and %todo. 2005-12-09 HIRAOKA Kazuyuki * Makefile.am: no need to install 0000-00-00-000000.howm. 2005-05-11 HIRAOKA Kazuyuki * 0000-00-00-000000.howm: added [Preference], %recent, %random 2005-05-06 HIRAOKA Kazuyuki * 0000-00-00-000000.howm: bind R = [Update Menu] kaorahi-howm-fc61c31/en/Makefile.am000066400000000000000000000003211454422607600171540ustar00rootroot00000000000000EXTRA_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 kaorahi-howm-fc61c31/en/Makefile.in000066400000000000000000000255221454422607600171770ustar00rootroot00000000000000# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 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 = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 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) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 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) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ ChangeLog 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@ runstatedir = @runstatedir@ 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 $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 .PRECIOUS: Makefile 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: kaorahi-howm-fc61c31/ext/000077500000000000000000000000001454422607600153225ustar00rootroot00000000000000kaorahi-howm-fc61c31/ext/ChangeLog000066400000000000000000000021241454422607600170730ustar00rootroot000000000000002018-01-02 HIRAOKA Kazuyuki * hcal.rb: update URL 2010-12-29 HIRAOKA Kazuyuki * tag2plan: removed (not maintained) 2008-02-12 HIRAOKA Kazuyuki * howm2 (ls_R): fix. string =~ string is obsolete. thx > dareka https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?BugReport * howmkara (ls_R): ditto. (Book::interpret): ditto. 2005-10-05 HIRAOKA Kazuyuki * howmkara (String::offsets): avoid warning. (Book::search): escape $ in regexp. 2005-09-15 HIRAOKA Kazuyuki * hcal.rb (ical_item): don't use Date 2005-07-18 HIRAOKA Kazuyuki * hcal.rb (ical): fix. iCalendar PRODID was merely copied from output of vPim without consideration. (usage): update URL 2005-05-20 HIRAOKA Kazuyuki * howm2: support aliases of come-from keywords 2005-05-15 HIRAOKA Kazuyuki * Makefile.am (EXTRA_DIST): howmkara, hsplit.rb, howm-rast-register.rb, howm-rast-search.rb are added. kaorahi-howm-fc61c31/ext/Makefile.am000066400000000000000000000004021454422607600173520ustar00rootroot00000000000000EXTRA_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 kaorahi-howm-fc61c31/ext/Makefile.in000066400000000000000000000317741454422607600174030ustar00rootroot00000000000000# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 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 = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 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) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 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) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ ChangeLog 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@ runstatedir = @runstatedir@ 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 $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 .PRECIOUS: Makefile 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: kaorahi-howm-fc61c31/ext/hcal.rb000077500000000000000000000135621454422607600165700ustar00rootroot00000000000000#!/usr/bin/ruby -sKe # -*- Ruby -*- # require 'jcode' require 'iconv' require 'date' def usage name = File::basename $0 print < '-'} $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 kaorahi-howm-fc61c31/ext/howm2000077500000000000000000000340231454422607600163060ustar00rootroot00000000000000#!/usr/bin/ruby -s # -*- coding: euc-jp -*- # -*- Ruby -*- # 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 < lambda{|str| CGI::escapeHTML str}, :unescaper => lambda{|str| CGI::unescapeHTML str}, # body page :namer => appender('.b.html'), :header => lambda{|file| %!#{file}

#{file}


\n!
  },
  :come_tag => lambda{|a|
    # Fix me.
    %!#{a[:orig]}!
  },
  :come_jump => lambda{|a|
    %!#{a[:orig]}!
  },
  :come_anchor => lambda{|a|
    %!!
  },
  :go_tag => lambda{|a|
    %!#{a[:orig]}!
  },
  :go_anchor => lambda{|a|
    %!!
#     %!#{a[:key]}!
  },
  :url => lambda{|a|
    %!#{CGI::unescapeHTML a[:url]}!
  },
  :footer => lambda{|file|
    %!

index\n! }, # reference page :ref_namer => appender('.r.html'), :ref_header => lambda{|file| "#{file}

References: #{file}

\n" }, :ref_itemer => lambda{|a| go = a[:goto_file] url = go ? "file://#{a[:goto_file]}" : "#{a[:path]}\##{a[:anch]}" ocs = a[:occur] %!

#{a[:key]} (#{ocs.length})

\n
    \n! + ocs.map{|oc| %!
  1. #{oc[:file]} #{oc[:text]}\n! }.join + "
\n" }, :ref_footer => constant("\n"), # index page :index_namer => constant('index.html'), :index_header => constant("#{$title}

#{$title}

\n"), :index_keyworder => lambda{|as| "

Keywords (#{as.length})

\n" + as.map{|a| %!#{a[:key]}!}.join(" /\n") + "\n" }, :index_filer => lambda{|as| "

Files (#{as.length})

\n
    \n" + as.map{|a| %!
  1. #{a[:file]}: #{a[:title]}\n!}.join + "
\n" }, :index_footer => constant("\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" kaorahi-howm-fc61c31/ext/howmkara000077500000000000000000000216361454422607600170710ustar00rootroot00000000000000#!/usr/bin/ruby -s # -*- coding: euc-jp -*- # -*- Ruby -*- # 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 <#{CGI::escapeHTML str}! when :list items = command.shift @result += "
    \n" items.each{|i| @result += '
  1. '; put_one i; @result += "\n"} @result += "
\n" end end def wrapped_result(title) etitle = CGI::escapeHTML title <<_EOS_ #{etitle}

#{etitle}


#{@result}
Home Files Keywords _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 kaorahi-howm-fc61c31/ext/hsplit.rb000077500000000000000000000012341454422607600171550ustar00rootroot00000000000000#!/usr/bin/ruby -s # -*- coding: euc-jp -*- # -*- Ruby -*- def usage name = File::basename $0 print < 0 open($prefix + ext, 'w'){|io| io.print x} ext.succ! } kaorahi-howm-fc61c31/fr/000077500000000000000000000000001454422607600151315ustar00rootroot00000000000000kaorahi-howm-fc61c31/fr/0000-00-00-000000.txt000066400000000000000000000075471454422607600174350ustar00rootroot00000000000000= <<< %menu% %"e"[Se souvenir] %"c"[Nouveau] %"D"[Dup] Search(%"s"[Chaine] %"g"[Regexp] %"o"[Occurences]) %"a"[Tout] %"l"[R辿cent] %"A"[Autour] %"y"[Programme] %"t"[A faire] %"b"[Fichiers tampons] %"x"[Rep竪res] %"K"[] %"i"[Cl辿>] %"r"[Mj] %"w"[Parcours al辿atoire] [Tout tuer] %"."[Aujourd'hui] %":"[Hier] %"h"[Historique] %"R"[Mj du Menu] [Editer le menu] [Pr辿ferences] ------------------------------------- [Schedule, Todo] -- @schedule, !deadline (until %sdays days from now) !deadline, +todo, -reminder, ~defer (top %tnum entries) %reminder ------------------------------------- R辿cent %recent ------------------------------------- Al辿atoire -- Si vous n'aimez pas, appuyez sur [Editer le menu] pour le retirer. %random ------------------------------------- Format des RDV et t但ches (Attention remplacer les {} par des []): {2002-10-21}@1 RDV -- (Affich辿 dans la partie des RDV. @3 = "3 days schedule to 10-23") {2002-10-21}+7 t但che -- flotte lentement depuis la date dans 7 jours {2002-10-21}!7 deadline -- flotte rapidement partir de 7 jours avant la date {2002-10-21}-1 rappel -- flotte la date et plonge lentement de une unit辿 par jour {2002-10-21}~30 report -- flotte la date et monte et descend sur une p辿riode de 30jours {2002-10-21}. done -- sombre d辿finitivement (Les chiffres apr竪s la marque repr辿sentent les valeurs par d辿faut.) Comment se souvenir de la syntaxe: * On programme (@) une date * Les rappels plongent(-). * Les todo flottent(+). * Les deadline ont besoin d'attention(!) * Les reports font des vagues(~). * Une t但che faite signifie la fin(.). ------------------------------------- Vous pouvez 辿diter ce menu. >>> %Editing Menu% = <<< %Editing Menu% [Editer le menu] Appuyer sur RET sur le bouton gauche pour 辿diter ce menu. [Mj du Menu] Appuyer sur RET sur le bouton gauche pour mettre jour ce menu. -------------------------------------------------------- *** Format du fichier menu *** (Appuyez sur RET sur [Editer le menu] et lisez le fichier source.) == Basic format Comme vous pouvez le voir... * [xxx] est un bouton. * %REMINDER (en minuscules) liste les todo et les rendez-vous. * %RECENT (en minuscules) liste les entr辿es r辿centes. * %RANDOM (en minuscules) list les entr辿es al辿atoires. Vous pouvez les placer comme bon vous semble. Ajouter vos fichiers favoris ou les liens "goto" peut 棚tre pratique. (ex) file:///etc/services >>> wiki == Raccourci %"foo"[Tout] S'affiche foo[Tout], et "f" ex辿cute [Tout]. Pour 棚tre plus pr辿cis, cela suit la s辿quence suivante: (1) aller sur le dernier " , (2) move to next underline, and (3) hit it. %"bar%" Si vous metter un signe % en fin de mot comme ceci, le "b" signifie "place le curseur ici". == Pour les amateurs de lisp Affichage: %here%howm-congrats-count ;; embed value of variable howm-congrats-count %here%(howm-menu-search "search") ;; embarque le r辿sultat de (...), c'est dire, rechercher "search" et embarquer les lines correspondant. Pour des raisons de s辿curit辿, les fonctions doivent 棚tre enregistr辿es. (setq howm-menu-allow (append '(foo bar) howm-menu-allow)) ;; allow foo, bar Action: %eval%(message (buffer-name)) ;; 辿value la S expression %call%find-file ;; appelle la fonction de mani竪re int辿ractive L'une et l'autre sont 辿valu辿es dans le pr辿c辿dent buffer avant de passer sur le menu. == Camouflage '%' + '|' active (et desactive) la visibilit辿 comme: visible%|invisible%|apparait%|disparait - jusqu' la fin de la line (Le caract竪re Newline est retir辿 lorsque la fin de ligne est invisible.) == Menus multiples Les liens vers %xxx% ouvrent "<< < %xxx%" avec le menu menu-mode: >>> %menu% Lorsque vous ajoutez un nouveau menu, [[%menu%]] peut 棚tre plus pratique parce que l'entr辿e correspondante est g辿n辿r辿e automatiquement. %eval%(howm-menu-open "00000000-000000.txt") -- ouvrir le fichier avec menu-mode kaorahi-howm-fc61c31/fr/ChangeLog000066400000000000000000000004101454422607600166760ustar00rootroot000000000000002018-02-22 HIRAOKA Kazuyuki * 0000-00-00-000000.txt: translate menu documents to French thx > Xavier Maillard san (xavier at maillard.im) 2018-02-12 HIRAOKA Kazuyuki * 0000-00-00-000000.txt: added for French menu kaorahi-howm-fc61c31/fr/Makefile.am000066400000000000000000000003211454422607600171610ustar00rootroot00000000000000EXTRA_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 kaorahi-howm-fc61c31/fr/Makefile.in000066400000000000000000000255221454422607600172040ustar00rootroot00000000000000# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 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 = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 = fr 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) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 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) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ ChangeLog 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@ runstatedir = @runstatedir@ 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 fr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu fr/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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 .PRECIOUS: Makefile 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: kaorahi-howm-fc61c31/gfunc.el000066400000000000000000000111021454422607600161410ustar00rootroot00000000000000;;; gfunc.el --- support for generic function ;;; Copyright (C) 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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 kaorahi-howm-fc61c31/honest-report.el000066400000000000000000000111601454422607600176540ustar00rootroot00000000000000;;; honest-report.el --- make bug report with screenshot and keylog ;; Copyright (C) 2005-2023 ;; HIRAOKA Kazuyuki ;; ;; 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 kaorahi-howm-fc61c31/howm-backend.el000066400000000000000000001103411454422607600174030ustar00rootroot00000000000000;;; howm-backend.el --- Wiki-like note-taking tool ;;; Copyright (C) 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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 "" 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 "" (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) ...) " (let ((trio (howm-real-grep-single-command str file-list fixed-p force-case-fold))) (with-temp-buffer (let* ((lines (apply #'howm-call-process* trio)) (parsed (mapcar 'howm-grep-parse-line lines))) (remove nil parsed))))) (defun howm-real-grep-single-command (str file-list &optional fixed-p force-case-fold) (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))))) (fs (howm-expand-file-names file-list))) (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)) (list grep-command `(,@opt ,@eopt ,str) fs))) (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 kaorahi-howm-fc61c31/howm-common.el000066400000000000000000000567311454422607600173200ustar00rootroot00000000000000;;; howm-common.el --- Wiki-like note-taking tool ;;; Copyright (C) 2002, 2003, 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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 (- (or (cl-caddr ti1) 0) (or (cl-caddr ti0) 0))) ) (+ (* 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, SUBSEC. 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." (howm-first-n (decode-time specified-time) 6)) (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 (function 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 # 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 kaorahi-howm-fc61c31/howm-date.el000066400000000000000000000246061454422607600167410ustar00rootroot00000000000000;;; howm-date.el --- Wiki-like note-taking tool ;;; Copyright (C) 2002, 2003, 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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) (defvar howm-action-lock-date-future 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 (or future-p howm-action-lock-date-future))) ((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) (let* ((raw (howm-datestr-expand-general date base nil)) (future (howm-datestr-expand-general date base t)) (ret (cond ((eq future-p 'closer) (cl-labels ((to-f (d) (float-time (howm-datestr-to-time d))) (delta (d1 d2) (abs (- (to-f d1) (to-f d2))))) (if (< (delta raw base) (delta future base)) raw future))) (future-p future) (t raw)))) (unless (string= raw ret) (message "Assume future date")) ret)) (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 kaorahi-howm-fc61c31/howm-lang-en.el000066400000000000000000000046411454422607600173420ustar00rootroot00000000000000;;; howm-lang-en.el --- Wiki-like note-taking tool ;;; Copyright (C) 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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) ("[]" 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 kaorahi-howm-fc61c31/howm-lang-fr.el000066400000000000000000000050271454422607600173460ustar00rootroot00000000000000;;; howm-lang-fr.el --- Wiki-like note-taking tool ;;; Copyright (C) 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; French translation by french-speaking howm users ;;; ;;; 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-fr '("Dim" "Lun" "Mar" "Mer" "Jeu" "Ven" "Sam")) (defvar howm-menu-command-table-fr `( ("[Se souvenir]" howm-remember previous) ("[Nouveau]" (lambda () (howm-create ,howm-menu-action-arg))) ("[Ajouter]" (lambda () (howm-create-here ,howm-menu-action-arg))) ("[Dup]" howm-dup) ("[Mj]" howm-initialize-buffer previous) ("[Regexp]" howm-list-grep) ("[Chaine]" howm-list-grep-fixed) ;; ("[roma]" howm-list-migemo) ("[Aujourd'hui]" howm-find-today) ("[Hier]" howm-find-yesterday) ("[Tout]" howm-list-all) ("[R辿cent]" howm-list-recent) ("[Autour]" howm-list-around) ("[Programme]" howm-list-schedule) ("[Occurences]" (lambda () (call-interactively 'howm-occur)) previous) ("[Fichiers tampons]" (lambda () (howm-list-buffers ,howm-menu-action-arg))) ("[Rep竪res]" howm-list-mark-ring previous) ("[Historique]" howm-history) ("[]" howm-insert-keyword previous) ("[Date>]" howm-insert-date previous) ("[DateTemps>]" howm-insert-dtime previous) ("[A faire]" howm-list-todo) ("[Tout tuer]" howm-kill-all) ("[Forcer tout tuer]" (lambda () (interactive) (howm-kill-all t))) ("[Editer le menu]" howm-menu-edit current) ("[Mj du Menu]" howm-menu-refresh current) ("[Pr辿ferences]" (lambda () (customize-group 'howm))) ("[Parcours al辿atoire]" howm-random-walk previous) )) (provide 'howm-lang-fr) ;;; howm-lang-fr.el ends here kaorahi-howm-fc61c31/howm-lang-ja.el000066400000000000000000000046571454422607600173410ustar00rootroot00000000000000;;; howm-lang-ja.el --- Wiki-like note-taking tool ;;; -*- Coding: utf-8 -*- ;;; Copyright (C) 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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 '("" "" "" "羂" "" "" "")) (defvar howm-menu-command-table-ja `( ("[荐]" howm-remember previous) ("[域]" (lambda () (howm-create ,howm-menu-action-arg))) ("[菴遵]" (lambda () (howm-create-here ,howm-menu-action-arg))) ("[茲茖]" howm-dup) ("[贋]" howm-initialize-buffer previous) ("[罩h]" howm-list-grep) ("[阪]" howm-list-grep-fixed) ("[roma]" howm-list-migemo) ("[篁]" howm-find-today) ("[]" howm-find-yesterday) ("[筝荀]" howm-list-all) ("[菴]" howm-list-recent) ("[緇]" howm-list-around) ("[篋絎]" howm-list-schedule) ("[]" (lambda () (call-interactively 'howm-occur)) previous) ("[]" (lambda () (howm-list-buffers ,howm-menu-action-arg))) ("[mark]" howm-list-mark-ring previous) ("[絮ユ]" howm-history) ("[蕁]" howm-keyword-to-kill-ring) ("[]" (lambda () (howm-keyword-to-kill-ring t))) ("[汲]" howm-insert-keyword previous) ("[モ]" howm-insert-date previous) ("[]" howm-insert-dtime previous) ("[Todo]" howm-list-todo) ("[羔]" howm-kill-all) ("[綣桁九羔]" (lambda () (interactive) (howm-kill-all t))) ("[menu 膩]" howm-menu-edit current) ("[menu 贋]" howm-menu-refresh current) ("[荐絎]" (lambda () (customize-group 'howm))) ("[罩]" howm-random-walk previous) )) (provide 'howm-lang-ja) ;;; howm-lang-ja.el ends here kaorahi-howm-fc61c31/howm-menu-en.el000066400000000000000000000070651454422607600173700ustar00rootroot00000000000000;;; 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\"[] %\"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) kaorahi-howm-fc61c31/howm-menu-fr.el000066400000000000000000000101601454422607600173630ustar00rootroot00000000000000;;; -*- Coding: utf-8-unix -*- ;;; automatically generated from fr/0000-00-00-000000.txt ;;; by howm-mkmenu.el. (require 'howm-vars) (howm-defconst-risky howm-menu-fr "= <<< %menu% %\"e\"[Se souvenir] %\"c\"[Nouveau] %\"D\"[Dup] Search(%\"s\"[Chaine] %\"g\"[Regexp] %\"o\"[Occurences]) %\"a\"[Tout] %\"l\"[R辿cent] %\"A\"[Autour] %\"y\"[Programme] %\"t\"[A faire] %\"b\"[Fichiers tampons] %\"x\"[Rep竪res] %\"K\"[] %\"i\"[Cl辿>] %\"r\"[Mj] %\"w\"[Parcours al辿atoire] [Tout tuer] %\".\"[Aujourd'hui] %\":\"[Hier] %\"h\"[Historique] %\"R\"[Mj du Menu] [Editer le menu] [Pr辿ferences] ------------------------------------- [Schedule, Todo] -- @schedule, !deadline (until %sdays days from now) !deadline, +todo, -reminder, ~defer (top %tnum entries) %reminder ------------------------------------- R辿cent %recent ------------------------------------- Al辿atoire -- Si vous n'aimez pas, appuyez sur [Editer le menu] pour le retirer. %random ------------------------------------- Format des RDV et t但ches (Attention remplacer les {} par des []): {2002-10-21}@1 RDV -- (Affich辿 dans la partie des RDV. @3 = \"3 days schedule to 10-23\") {2002-10-21}+7 t但che -- flotte lentement depuis la date dans 7 jours {2002-10-21}!7 deadline -- flotte rapidement partir de 7 jours avant la date {2002-10-21}-1 rappel -- flotte la date et plonge lentement de une unit辿 par jour {2002-10-21}~30 report -- flotte la date et monte et descend sur une p辿riode de 30jours {2002-10-21}. done -- sombre d辿finitivement (Les chiffres apr竪s la marque repr辿sentent les valeurs par d辿faut.) Comment se souvenir de la syntaxe: * On programme (@) une date * Les rappels plongent(-). * Les todo flottent(+). * Les deadline ont besoin d'attention(!) * Les reports font des vagues(~). * Une t但che faite signifie la fin(.). ------------------------------------- Vous pouvez 辿diter ce menu. >>> %Editing Menu% = <<< %Editing Menu% [Editer le menu] Appuyer sur RET sur le bouton gauche pour 辿diter ce menu. [Mj du Menu] Appuyer sur RET sur le bouton gauche pour mettre jour ce menu. -------------------------------------------------------- *** Format du fichier menu *** (Appuyez sur RET sur [Editer le menu] et lisez le fichier source.) == Basic format Comme vous pouvez le voir... * [xxx] est un bouton. * %REMINDER (en minuscules) liste les todo et les rendez-vous. * %RECENT (en minuscules) liste les entr辿es r辿centes. * %RANDOM (en minuscules) list les entr辿es al辿atoires. Vous pouvez les placer comme bon vous semble. Ajouter vos fichiers favoris ou les liens \"goto\" peut 棚tre pratique. (ex) file:///etc/services >>> wiki == Raccourci %\"foo\"[Tout] S'affiche foo[Tout], et \"f\" ex辿cute [Tout]. Pour 棚tre plus pr辿cis, cela suit la s辿quence suivante: (1) aller sur le dernier \" , (2) move to next underline, and (3) hit it. %\"bar%\" Si vous metter un signe % en fin de mot comme ceci, le \"b\" signifie \"place le curseur ici\". == Pour les amateurs de lisp Affichage: %here%howm-congrats-count ;; embed value of variable howm-congrats-count %here%(howm-menu-search \"search\") ;; embarque le r辿sultat de (...), c'est dire, rechercher \"search\" et embarquer les lines correspondant. Pour des raisons de s辿curit辿, les fonctions doivent 棚tre enregistr辿es. (setq howm-menu-allow (append '(foo bar) howm-menu-allow)) ;; allow foo, bar Action: %eval%(message (buffer-name)) ;; 辿value la S expression %call%find-file ;; appelle la fonction de mani竪re int辿ractive L'une et l'autre sont 辿valu辿es dans le pr辿c辿dent buffer avant de passer sur le menu. == Camouflage '%' + '|' active (et desactive) la visibilit辿 comme: visible%|invisible%|apparait%|disparait - jusqu' la fin de la line (Le caract竪re Newline est retir辿 lorsque la fin de ligne est invisible.) == Menus multiples Les liens vers %xxx% ouvrent \"<< < %xxx%\" avec le menu menu-mode: >>> %menu% Lorsque vous ajoutez un nouveau menu, [[%menu%]] peut 棚tre plus pratique parce que l'entr辿e correspondante est g辿n辿r辿e automatiquement. %eval%(howm-menu-open \"00000000-000000.txt\") -- ouvrir le fichier avec menu-mode ") (provide 'howm-menu-fr) kaorahi-howm-fc61c31/howm-menu-ja.el000066400000000000000000000161421454422607600173540ustar00rootroot00000000000000;;; -*- Coding: utf-8-unix -*- ;;; automatically generated from ja/0000-00-00-000000.txt ;;; by howm-mkmenu.el. (require 'howm-vars) (howm-defconst-risky howm-menu-ja "= <<< %menu% %\"e\"[荐] %\"c\"[域] %\"D\"[茲茖] 罎膣(%\"s\"[阪] %\"g\"[罩h] %\"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 篋絎 (篋絎茵茵腓冴鐚33ラ篋絎ゃ障23ャ障с) [2002-10-21]鐚7 todo 絎ャc7ラ緇羌括 [2002-10-21]鐚7 絎ャ7ュ緇羌潟絎ヤ札羌c宴 [2002-10-21]1 荀 絎ャ羌割篁ラ1ャ篏緇羃 [2002-10-21]30 篆 絎ャ羌割篁ラ30ュф貴羃帥 [2002-10-21]鐚 羝 絽吾綺 (荐垩緇医) 荀 私絎ャ腟割@(at) 肢吾羃с- todo羌割c+ 祉ャ羈違! 私羈∽ゃ~ 紙帥腟. ------------------------------------- []篏? >>> %帥潟茯% <ャ取篏膩с障 >>> %<ャ若膩ゃ% <≪紜 >>> %蕭ゃ% = <<< %帥潟茯% 篏 [域] 域<≫ (憗若吾с潟帥ゃ) [茲茖] 憗<≪茲茖 (篏蚊潟若喝) 筝荀 [筝荀] <≪筝荀 [菴] 菴<≪g茵腓 [緇] 緇< (荀<≪筝綽<≪ヤ筝荀) * 絲乗院<ゃ(膩≪若)倶<ャ若若吟 [絮ユ] 罎膣√吋罩 [篋絎] 篋絎茵 [todo] todo 筝荀 罎膣 [罩h] 罩h頫憗罎膣 * 堺紊ф絖絨絖阪ャ * Wiki腓榊紊ф絖絎阪 [阪] 若若茖絎ュ阪絖罎膣 [roma] 若絖罎膣 (migemo) [篁] 篁ャ< [] ャ< 膩: 絲乗院<ゃ(膩≪若)倶<ャ若若吟 [贋] 筝膩綣 [汲] 若若茖絎ュ莢若ゃ * Tips: M-v у茖筝荀с腱祉c migemo 罎膣≪罐 [モ] 篁ャヤ [yyyy-mm-dd] 莢若ゃ [] 篁ャユ [yyyy-mm-dd HH:MM] 莢若ゃ [蕁] 憗<≪帥ゃ kill ring (C-y ц下ゃ) * 帥ゃ帥ゃc<ゃ [] <ゃ kill ring 劫 [menu 贋] <ャ若篋絎茵贋 [menu 膩] <ャ若膩 [羔] howm-mode <鴻羔 (篆絖ゃ) [罩] 潟潟c画Η. C-g у罩. = <<< %蕭ゃ% <≪紜罎膣≪c, 蕭激с活┃絎 罎荐. 号紊с, 罎膣≪ grep 潟潟篏帥с. Unix 膤祉罔羣医, 馹鋎帥с. 篁ュ医с, 篏羣綽荀障. 医у隙違宴緇<障. https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?Windows https://howm.osdn.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 т荀с莎桁 (罩g∈, (1) \"悟Щ (2) 罨<筝膩障ч蚊 (3) action-lock 阪) %\"fuga%\" 泣緇 % ゃ, f с若純腱糸 lisper 肢;腓 %here%howm-congrats-count 紊 howm-congrats-count ゃ莨若 %here%(howm-menu-search \"罎膣\") () 腟(罎膣≪罎膣∝)莨若 , 篏帥∽違脂蚊綽荀 (c) (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\") ") (provide 'howm-menu-ja) kaorahi-howm-fc61c31/howm-menu.el000066400000000000000000001065671454422607600167770ustar00rootroot00000000000000;;; howm-menu.el --- Wiki-like note-taking tool ;;; Copyright (C) 2002, 2003, 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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 kaorahi-howm-fc61c31/howm-misc.el000066400000000000000000001203461454422607600167550ustar00rootroot00000000000000;;; howm-misc.el --- Wiki-like note-taking tool ;;; Copyright (C) 2002, 2003, 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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 () "Restrict editing in this buffer to the current memo." (interactive) (apply #'narrow-to-region (howm-view-paragraph-region t))) (defun howm-toggle-narrow () "Toggle whether to restrict editing in this buffer to the current memo." (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 (format howm-remember-insertion-format s)) (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 kaorahi-howm-fc61c31/howm-mkmenu.el000066400000000000000000000054761454422607600173240ustar00rootroot00000000000000;;; howm-mkmenu.el --- Wiki-like note-taking tool ;;; Copyright (C) 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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 (defvar howm-mkmenu-rules '( ;; ( [ ]) ==> .el (howm-menu-en "en/0000-00-00-000000.txt") (howm-menu-fr "fr/0000-00-00-000000.txt" utf-8-unix utf-8-unix) (howm-menu-ja "ja/0000-00-00-000000.txt" utf-8-unix utf-8-unix) )) (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 kaorahi-howm-fc61c31/howm-mode.el000066400000000000000000001426771454422607600167610ustar00rootroot00000000000000;;; howm-mode.el --- Wiki-like note-taking tool ;;; Copyright (C) 2002, 2003, 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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)) (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, -th one is used when you type C-u M-x howm-create. If it is a function, it is called to get template string with the argument .") (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. Example of cmigemo: (setq howm-migemo-client '((type . cmigemo) (command . \"cmigemo\"))) Example of migemo-client (obsolete): (setq howm-migemo-client \"migemo-client\") See also `howm-migemo-client-option`") (howm-defvar-risky howm-migemo-client-option nil "List of option for migemo-client. Example of cmigemo: (setq howm-migemo-client-option '(\"-q\" \"-d\" \"/usr/share/cmigemo/utf-8/migemo-dict\")) Example of migemo-client (obsolete): (setq howm-migemo-client-option '(\"-H\" \"::1\") See also `howm-migemo-client`") ;;; --- 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 (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 " :init-value nil ;; default = off :lighter howm-lighter ;; mode-line :keymap (mapcar (lambda (entry) (let ((k (car entry)) (f (cadr entry))) (cons (concat howm-prefix k) f))) howm-default-key-table) (if howm-mode (howm-initialize-buffer) (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* ((action (lambda (pattern) (howm-search pattern completion-p))) (regexp (howm-iigrep completion-p action))) (when completion-p ;; Goto link works only for fixed string at now. (howm-write-history regexp)) (funcall action regexp))) (defun howm-search (regexp fixed-p &optional emacs-regexp filter bufname) (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 (or bufname (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))))) (defun howm-iigrep (completion-p action) (howm-with-iigrep (howm-iigrep-command-for-pattern completion-p) howm-iigrep-show-what action (if completion-p (howm-completing-read-keyword) (read-from-minibuffer "Search all (grep): ")))) (defmacro howm-with-iigrep (command-for-pattern show-what action &rest body) (declare (indent 3)) `(let ((*iigrep-post-sentinel* (howm-iigrep-post-sentinel ,action)) (howm-view-summary-name "*howmS(preview)*") (howm-view-contents-name "*howmC(preview)*") (howm-history-limit 0) (*howm-show-item-filename* nil) (howm-message-time nil)) (unwind-protect (iigrep-with-grep ,command-for-pattern ,show-what ,@body) (mapc (lambda (b) (and (get-buffer b) (kill-buffer b))) (list howm-view-summary-name howm-view-contents-name))))) (defmacro howm-iigrep-command-for-pattern (&optional fixed-p converter) ;; use macro due to dynamic binding. Sigh... `(and howm-view-use-grep (lambda (str) (let* ((pattern (funcall (or ,converter #'identity) str)) (trio (howm-real-grep-single-command pattern (list howm-directory) ,fixed-p)) (com (car trio)) (args (cl-second trio)) (fs (cl-third trio))) (append (list com) (cons "-I" args) fs))))) (defmacro howm-iigrep-post-sentinel (action) ;; use macro due to dynamic binding. Sigh... `(lambda (hits pattern) (when (<= hits howm-iigrep-preview-items) (save-selected-window (funcall ,action pattern))))) (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) (howm-list-migemo-action (howm-iigrep-migemo)))) (defun howm-list-migemo-action (roma) (let* ((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 nil roma) (message "No response from migemo-client.")))) (defun howm-iigrep-migemo () (let* ((converter (lambda (yomi) (howm-migemo-get-pattern yomi "egrep"))) (command-for-pattern (howm-iigrep-command-for-pattern nil converter)) (show-what (if (eq howm-iigrep-migemo-show-what 'inherit) howm-iigrep-show-what howm-iigrep-migemo-show-what))) (howm-with-iigrep command-for-pattern show-what #'howm-list-migemo-action (read-from-minibuffer "Search all (migemo): ")))) (defun howm-migemo-get-pattern (roma type) (when (and (null howm-migemo-client) (not howm-view-use-grep)) (require 'migemo)) (cl-labels ((ref (key) (cdr (assoc key howm-migemo-client)))) (cond ((and (featurep 'migemo) (string= type "emacs")) (howm-funcall-if-defined (migemo-get-pattern roma))) ((or (null howm-migemo-client) (stringp howm-migemo-client)) (car (howm-call-process (or howm-migemo-client "migemo-client") `(,@howm-migemo-client-option "-t" ,type ,roma) 0))) ((eq (ref 'type) 'cmigemo) (car (howm-call-process (ref 'command) `(,@howm-migemo-client-option ,@(and (string= type "emacs") '("-e")) "-w" ,roma)))) (t (error "Invalid howm-migemo-client: %s" 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)) (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 . ;; 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 kaorahi-howm-fc61c31/howm-reminder.el000066400000000000000000001165311454422607600176300ustar00rootroot00000000000000;;; howm-reminder.el --- Wiki-like note-taking tool ;;; Copyright (C) 2002, 2003, 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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-*) (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 kaorahi-howm-fc61c31/howm-vars.el000066400000000000000000001255571454422607600170060ustar00rootroot00000000000000;;; howm-vars.el --- Wiki-like note-taking tool ;;; Copyright (C) 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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 (let ((lang-table '((fr "French" "^fr") (ja "Japanese" "^ja")))) (let ((lang (or (and (boundp 'current-language-environment) current-language-environment) "")) (locale (howm-get-locale)) (ret 'en)) (mapc (lambda (rule) (if (or (string= lang (cadr rule)) (string-match (cl-caddr rule) locale)) (setq ret (car rule)))) lang-table) ret)) "*Language of menu." :type '(radio (const en) (const fr) (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. = + " :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)) (defgroup howm-iigrep nil "Show search results on the fly before hitting RET." :group 'howm-grep) (defcustom howm-iigrep-preview-items 20 "Show howm search results on the fly before hitting RET when the hit counts are within this number." :type 'integer :group 'howm-efficiency :group 'howm-iigrep) (defcustom howm-iigrep-show-what 'counts "Show search results on the fly before hitting RET." :type '(radio (const :tag "Off" nil) (const :tag "Counts" counts) (const :tag "Contents" contents) (const :tag "Full" full)) :group 'howm-efficiency :group 'howm-iigrep) (defcustom howm-iigrep-migemo-show-what 'inherit "Show migemo search results on the fly before hitting RET." :type '(radio (const :tag "Inherit howm-iigrep-show-what" inherit) (const :tag "Counts" counts) (const :tag "Contents" contents) (const :tag "Full" full)) :group 'howm-efficiency :group 'howm-iigrep) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 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) (defcustom howm-remember-insertion-format "%s\n" "*Format for insertion of the input text in `howm-remember'." :type '(radio (const :tag "Blank line after the text." "%s\n") (const :tag "No Blank line after the text." "%s") string) :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 kaorahi-howm-fc61c31/howm-view.el000066400000000000000000002044201454422607600167700ustar00rootroot00000000000000;;; howm-view.el --- Wiki-like note-taking tool ;;; Copyright (C) 2002, 2003, 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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) (defvar *howm-show-item-filename* t) (defun riffle-post-update:howm (item) (when *howm-show-item-filename* (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 ;; https://howm.osdn.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-summary-next-section] Next file (Skip items in the same file) \\[howm-view-summary-previous-section] Previous file (Skip items in the same file) \\[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") (howm-view-expire-uniq) ;; 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))))) (defalias 'howm-view-filter-uniq #'howm-view-toggle-uniq) (defvar howm-view-uniq-previous nil) (make-variable-buffer-local 'howm-view-uniq-previous) (defun howm-view-toggle-uniq () (interactive) (if howm-view-uniq-previous (howm-view-summary-rebuild howm-view-uniq-previous) (let ((prev (howm-view-item-list))) (howm-view-filter-doit #'howm-filter-items-uniq) ;; need to set howm-view-uniq-previous AFTER rebuilding of ;; the summary buffer because howm-view-expire-uniq is called in it. (setq howm-view-uniq-previous prev)))) (defun howm-view-expire-uniq () (setq howm-view-uniq-previous nil)) (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 ;; https://howm.osdn.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< item-list 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))) #'< item-list 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")) (when (not (fboundp 'dired-virtual)) (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 kaorahi-howm-fc61c31/howm.el000066400000000000000000000046131454422607600160220ustar00rootroot00000000000000;;; howm.el --- Wiki-like note-taking tool ;;; -*- Emacs-Lisp -*- ;;; howm.el. Generated from howm.el.in by configure. ;; Copyright (C) 2002, 2003, 2004, 2005-2023 HIRAOKA Kazuyuki ;; Author: HIRAOKA Kazuyuki ;; URL: https://kaorahi.github.io/howm/ ;; Version: 1.5.1 ;; Package-Requires: ((cl-lib "0.5")) ;; 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: ;; See README. ;; HOWM is acronym of "Hitori Otegaru Wiki Modoki". ;;; Code: (defconst howm-version "1.5.1") ;; 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-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 'iigrep) (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 'fr) (howm-require-lang 'ja) ;;; security fix [2006-12-16] (mapc (lambda (symbol) (put symbol 'risky-local-variable t)) (howm-symbols)) ;;; howm.el ends here kaorahi-howm-fc61c31/howm.el.in000066400000000000000000000045631454422607600164330ustar00rootroot00000000000000;;; howm.el --- Wiki-like note-taking tool ;;; -*- Emacs-Lisp -*- ;;; @configure_input@ ;; Copyright (C) 2002, 2003, 2004, 2005-2023 HIRAOKA Kazuyuki ;; Author: HIRAOKA Kazuyuki ;; URL: https://kaorahi.github.io/howm/ ;; Version: @VERSION@ ;; Package-Requires: ((cl-lib "0.5")) ;; 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: ;; See README. ;; HOWM is acronym of "Hitori Otegaru Wiki Modoki". ;;; Code: (defconst howm-version "@VERSION@") ;; 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-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 'iigrep) (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 'fr) (howm-require-lang 'ja) ;;; security fix [2006-12-16] (mapc (lambda (symbol) (put symbol 'risky-local-variable t)) (howm-symbols)) ;;; howm.el ends here kaorahi-howm-fc61c31/iigrep.el000066400000000000000000000316031454422607600163260ustar00rootroot00000000000000;;; iigrep.el - incremental interactive grep ;;; Copyright (C) 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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: ;; examples ;; ;; Search the directry ~/foo incrementally. ;; M-x iigrep RET ~/foo RET ;; ;; Search the directry ~/foo with migemo incrementally. ;; M-x iigrep-migemo RET ~/foo RET ;; links ;; ;; The original (obsolete) iigrep.el ;; http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?IncrementalGrep ;; ;; migemo ;; http://0xcc.net/migemo/ ;; http://www.kaoriya.net/software/cmigemo/ ;; brief history ;; ;; [2022-08-23] export to howm ;; [2004-12-01] rename to iigrep.el ;; [2004-11-30] prototype ingrep.el ;;; Code: (provide 'iigrep) (require 'howm) (require 'compile) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; customize (defvar iigrep-maximum-output 40000) (defvar iigrep-command "egrep") (defvar iigrep-option "-nIe") (defvar iigrep-recursive-option "-r") (defvar iigrep-default-show-what 'full "One of 'full, 'contents, 'counts, or nil.") (defvar iigrep-counts-face-rules '( ;; (threshold-of-hits . face) (10 . iigrep-counts-face1) (50 . iigrep-counts-face2) (150 . iigrep-counts-face3) (300 . iigrep-counts-face4) (500 . iigrep-counts-face5) )) (defvar iigrep-buffer-name "*iigrep*") (defvar iigrep-process-name "iigrep") (defvar iigrep-mode-name "iigrep") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; faces (defgroup iigrep nil "Incremental grep" :group 'applications) (defface iigrep-counts-face1 '((((class color) (background light)) (:foreground "blue")) (((class color) (background dark)) (:foreground "cyan")) (t ())) "*Face for iigrep counts." :group 'iigrep) (defface iigrep-counts-face2 '((((class color) (background light)) (:foreground "dark green")) (((class color) (background dark)) (:foreground "green")) (t ())) "*Face for iigrep counts." :group 'iigrep) (defface iigrep-counts-face3 '((((class color)) (:foreground "orange")) (t ())) "*Face for iigrep counts." :group 'iigrep) (defface iigrep-counts-face4 '((((class color)) (:foreground "red")) (t ())) "*Face for iigrep counts." :group 'iigrep) (defface iigrep-counts-face5 '((((class color)) (:foreground "purple")) (t ())) "*Face for iigrep counts." :group 'iigrep) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; main command (defun iigrep (dir) (interactive "Ddirectory: ") (cd dir) (iigrep-with-grep-internal (iigrep-command-for-pattern-on-dir dir) iigrep-default-show-what (read-from-minibuffer (iigrep-prompt)))) (defun iigrep-command-for-pattern-on-dir (dir) (lambda (pattern) (list iigrep-command iigrep-option pattern iigrep-recursive-option (expand-file-name ".")))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; main lib (iigrep-with-grep) (defvar iigrep-command-for-pattern nil "For internal use") (defvar iigrep-show-what nil "For internal use") (defvar iigrep-target-minibuffer nil "For internal use") (defmacro iigrep-with-grep (command-for-pattern show-what &rest body) (declare (indent 2)) `(save-window-excursion (unwind-protect (iigrep-with-grep-internal ,command-for-pattern ,show-what ,@body) (let ((buf (iigrep-buffer nil t))) (when buf (kill-buffer buf)))))) (defmacro iigrep-with-grep-internal (command-for-pattern show-what &rest body) (declare (indent 2)) `(save-excursion (let* ((iigrep-command-for-pattern ,command-for-pattern) (iigrep-show-what ,show-what)) (if (or (null iigrep-command-for-pattern) (null iigrep-show-what)) (progn ,@body) (iigrep-setup-window t (not (eq iigrep-show-what 'counts))) (unwind-protect (minibuffer-with-setup-hook #'iigrep-minibuffer-setup ,@body) (iigrep-minibuffer-cleanup)))))) (defun iigrep-target-minibuffer-p () (eq (current-buffer) iigrep-target-minibuffer)) (defun iigrep-minibuffer-setup () (when iigrep-target-minibuffer (message "iigrep: terminated previos session") (iigrep-minibuffer-cleanup)) (setq iigrep-target-minibuffer (current-buffer)) (add-hook 'after-change-functions #'iigrep-update)) (defun iigrep-minibuffer-cleanup () (let* ((buf iigrep-target-minibuffer) (alivep (and (bufferp buf) (buffer-name buf)))) (when alivep (with-current-buffer buf (remove-hook 'after-change-functions #'iigrep-update)))) (setq iigrep-target-minibuffer nil)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; buf & win (defun iigrep-setup-window (&optional create show-p) (let* ((buf (iigrep-buffer create)) (win (get-buffer-window buf))) (cond (win (select-window win)) (show-p (pop-to-buffer buf)) (t (set-buffer buf))))) (defun iigrep-buffer (&optional create silent) (if create (iigrep-get-buffer-create) (or (get-buffer iigrep-buffer-name) (if silent nil (error "iigrep buffer is lost."))))) (defun iigrep-get-buffer-create () (let ((buf (get-buffer-create iigrep-buffer-name))) (with-current-buffer buf (setq buffer-read-only t) (compilation-mode iigrep-mode-name)) buf)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; update ;; In the minibuffer... (defun iigrep-update (&rest dummy) (let ((pattern (and (iigrep-target-minibuffer-p) (minibuffer-contents-no-properties)))) (when pattern (iigrep-convert-call pattern #'iigrep-search)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; search (defvar iigrep-last-pattern nil "For internal use.") (defvar iigrep-last-command nil "For debug.") (defun iigrep-search (pattern) (setq iigrep-last-pattern pattern) (when (not (string= pattern "")) (save-window-excursion (iigrep-setup-window) (iigrep-kill-process) (iigrep-erase-buffer) (iigrep-grep pattern)))) (defun iigrep-grep (pattern) (let* ((args (funcall iigrep-command-for-pattern pattern)) (p (apply #'start-process iigrep-process-name nil args))) (setq iigrep-last-command args) (set-process-filter p iigrep-process-filter) (set-process-sentinel p #'iigrep-sentinel) (set-process-query-on-exit-flag p nil))) (defvar iigrep-process-filter #'iigrep-process-filter "Filter for grep process. This value is also used for identification of iigrep processes.") (defun iigrep-process-filter (p output) (let ((buf (iigrep-buffer nil t))) (when buf ;; Don't accept output from previous search (with-current-buffer buf (if (> (point-max) iigrep-maximum-output) (iigrep-exceed-limit p) (iigrep-append-output output)))))) (defun iigrep-append-output (output) (let ((buffer-read-only nil)) (goto-char (point-max)) (insert output) (goto-char (point-min)) (when (eq iigrep-show-what 'contents) (iigrep-hide-paths)) (set-buffer-modified-p nil))) (defun iigrep-hide-paths () (font-lock-mode -1) (save-excursion (goto-char (point-min)) (while (re-search-forward "^.*?:[0-9]+:" nil t) (put-text-property (match-beginning 0) (match-end 0) 'invisible t)))) (defun iigrep-get-counts-face (hits) (let* ((filtered (mapcan (lambda (pair) (and (<= hits (car pair)) (list pair))) iigrep-counts-face-rules)) (face (cdr-safe (car-safe filtered)))) face)) (defun iigrep-erase-buffer () (let ((buffer-read-only nil)) (erase-buffer))) (defun iigrep-exceed-limit (p) (iigrep-kill-process) (iigrep-append-output "\nSize limit exceeded.")) (defvar *iigrep-post-sentinel* nil) (defun iigrep-sentinel (proc msg) (let ((stat (process-status proc)) (buf (iigrep-buffer nil t))) (when (and buf (member stat '(exit signal))) (with-current-buffer buf (let* ((hits (count-lines (point-min) (point-max))) (s (format "%s" hits))) (when (> hits 0) (put-text-property 0 (length s) 'face (iigrep-get-counts-face hits) s) (let ((message-log-max nil)) (message "%s hits" s)) (when (and *iigrep-post-sentinel* (eq stat 'exit)) (funcall *iigrep-post-sentinel* hits iigrep-last-pattern)))))))) (defun iigrep-kill-process () (mapcar (lambda (p) (when (iigrep-process-p p) (set-process-buffer p nil) (kill-process p))) (process-list))) (defun iigrep-process-p (p) (eq (process-filter p) iigrep-process-filter)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; converter ;; Continuation passing style is used partially ;; so that we can easily control when to call grep, and we can accept ;; fast typing while getting pattern from migemo. ;; In normal search, (iigrep-convert-call pat func) is just (func pat). (defvar *iigrep-convert-call* #'iigrep-identity-converter "For internal use.") (defvar *iigrep-prompt* "grep: " "For internal use.") (defun iigrep-identity-converter (pattern continuation) (funcall continuation pattern)) (defun iigrep-convert-call (pattern continuation) (funcall *iigrep-convert-call* pattern continuation)) (defun iigrep-prompt () *iigrep-prompt*) (defmacro iigrep-with-converter (func prompt &rest body) (declare (indent 2)) `(let ((*iigrep-convert-call* (or ,func *iigrep-convert-call*)) (*iigrep-prompt* (or ,prompt *iigrep-prompt*))) ,@body)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; migemo ;; Use continuation to avoid slow response (defun iigrep-migemo (dir) (require 'migemo) (interactive "Ddirectory: ") (iigrep-with-converter #'iigrep-migemo-converter "migemo: " (iigrep dir))) (defvar iigrep-migemo-process nil) ;; (defvar iigrep-migemo-options '("-q" "--emacs" "--nonewline") ;; for GNU grep (defvar iigrep-migemo-options '("-q") "*Options for migemo command for iigrep. The default value is for cmigemo. Use '(\"-S\" \"migemo\" \"-t\" \"egrep\") for the original migemo.") (defmacro iigrep-with-our-migemo (&rest body) (declare (indent 0)) `(let ((iigrep-original-migemo-process migemo-process) (migemo-process iigrep-migemo-process) (migemo-options iigrep-migemo-options)) (unwind-protect (progn ,@body) (setq iigrep-migemo-process migemo-process migemo-process iigrep-original-migemo-process)))) (defun iigrep-migemo-converter (roma continuation) (iigrep-with-our-migemo (iigrep-migemo-search roma continuation))) ;; copied and modified from migemo-get-pattern in migemo.el (migemo-0.32) (when (not (fboundp 'migemo-init)) (defun migemo-init () (howm-inhibit-warning-in-compilation))) (defun iigrep-migemo-search (word continuation) (migemo-init) (set-process-filter migemo-process (iigrep-migemo-filter continuation)) (let ((orig-buffer (current-buffer))) (save-excursion (set-buffer (process-buffer migemo-process)) (delete-region (point-min) (point-max)) (process-send-string migemo-process (concat word "\n"))))) (defvar iigrep-migemo-last-pattern nil "For internal use.") (defvar iigrep-migemo-last-buffer nil "For debug.") (defun iigrep-migemo-filter (continuation) `(lambda (process message) (let ((orig-buffer (current-buffer))) (save-excursion (set-buffer (process-buffer process)) (insert message) (when (and (> (point-max) 1) (eq (char-after (1- (point-max))) ?\n)) ;; AD HOC! ;; I don't understand this. ;; Observe iigrep-migemo-last-pattern and iigrep-migemo-last-buffer ;; after typing keys fast. (goto-char (point-min)) (skip-chars-forward "\n") (let ((pattern (buffer-substring (point) (line-end-position)))) (setq iigrep-migemo-last-pattern pattern) (setq iigrep-migemo-last-buffer (buffer-substring (point-min) (point-max))) (erase-buffer) (funcall (function ,continuation) pattern))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; key binding ;; backward compatibility for my old .emacs (defun iigrep-define-key-for (command &optional force map)) ;;; iigrep.el ends here kaorahi-howm-fc61c31/illusion.el000066400000000000000000000075311454422607600167100ustar00rootroot00000000000000;;; illusion.el --- load, edit, and submit something which is not pure file ;;; Copyright (C) 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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)) (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 " :init-value nil ;; default = off :lighter illusion-lighter ;; mode-line :keymap `( (,illusion-submit-key . illusion-submit) ) (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 kaorahi-howm-fc61c31/install-sh000077500000000000000000000357761454422607600165500ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2020-11-14.01; # UTC # 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. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly 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: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -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. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Email bug reports to bug-automake@gnu.org. Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; 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 "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac 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 if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 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 problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi 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 "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # 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 # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/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-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # 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 oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && 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=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_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 && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $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"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # 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. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: kaorahi-howm-fc61c31/ja/000077500000000000000000000000001454422607600151145ustar00rootroot00000000000000kaorahi-howm-fc61c31/ja/0000-00-00-000000.txt000066400000000000000000000155411454422607600174110ustar00rootroot00000000000000= <<< %menu% %"e"[荐] %"c"[域] %"D"[茲茖] 罎膣(%"s"[阪] %"g"[罩h] %"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 篋絎 (篋絎茵茵腓冴鐚33ラ篋絎ゃ障23ャ障с) [2002-10-21]鐚7 todo 絎ャc7ラ緇羌括 [2002-10-21]鐚7 絎ャ7ュ緇羌潟絎ヤ札羌c宴 [2002-10-21]1 荀 絎ャ羌割篁ラ1ャ篏緇羃 [2002-10-21]30 篆 絎ャ羌割篁ラ30ュф貴羃帥 [2002-10-21]鐚 羝 絽吾綺 (荐垩緇医) 荀 私絎ャ腟割@(at) 肢吾羃с- todo羌割c+ 祉ャ羈違! 私羈∽ゃ~ 紙帥腟. ------------------------------------- []篏? >>> %帥潟茯% <ャ取篏膩с障 >>> %<ャ若膩ゃ% <≪紜 >>> %蕭ゃ% = <<< %帥潟茯% 篏 [域] 域<≫ (憗若吾с潟帥ゃ) [茲茖] 憗<≪茲茖 (篏蚊潟若喝) 筝荀 [筝荀] <≪筝荀 [菴] 菴<≪g茵腓 [緇] 緇< (荀<≪筝綽<≪ヤ筝荀) * 絲乗院<ゃ(膩≪若)倶<ャ若若吟 [絮ユ] 罎膣√吋罩 [篋絎] 篋絎茵 [todo] todo 筝荀 罎膣 [罩h] 罩h頫憗罎膣 * 堺紊ф絖絨絖阪ャ * Wiki腓榊紊ф絖絎阪 [阪] 若若茖絎ュ阪絖罎膣 [roma] 若絖罎膣 (migemo) [篁] 篁ャ< [] ャ< 膩: 絲乗院<ゃ(膩≪若)倶<ャ若若吟 [贋] 筝膩綣 [汲] 若若茖絎ュ莢若ゃ * Tips: M-v у茖筝荀с腱祉c migemo 罎膣≪罐 [モ] 篁ャヤ [yyyy-mm-dd] 莢若ゃ [] 篁ャユ [yyyy-mm-dd HH:MM] 莢若ゃ [蕁] 憗<≪帥ゃ kill ring (C-y ц下ゃ) * 帥ゃ帥ゃc<ゃ [] <ゃ kill ring 劫 [menu 贋] <ャ若篋絎茵贋 [menu 膩] <ャ若膩 [羔] howm-mode <鴻羔 (篆絖ゃ) [罩] 潟潟c画Η. C-g у罩. = <<< %蕭ゃ% <≪紜罎膣≪c, 蕭激с活┃絎 罎荐. 号紊с, 罎膣≪ grep 潟潟篏帥с. Unix 膤祉罔羣医, 馹鋎帥с. 篁ュ医с, 篏羣綽荀障. 医у隙違宴緇<障. https://howm.osdn.jp/cgi-bin/hiki/hiki.cgi?Windows https://howm.osdn.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 т荀с莎桁 (罩g∈, (1) "悟Щ (2) 罨<筝膩障ч蚊 (3) action-lock 阪) %"fuga%" 泣緇 % ゃ, f с若純腱糸 lisper 肢;腓 %here%howm-congrats-count 紊 howm-congrats-count ゃ莨若 %here%(howm-menu-search "罎膣") () 腟(罎膣≪罎膣∝)莨若 , 篏帥∽違脂蚊綽荀 (c) (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") kaorahi-howm-fc61c31/ja/ChangeLog000066400000000000000000000016471454422607600166760ustar00rootroot000000000000002023-02-16 HIRAOKA Kazuyuki * 0000-00-00-000000.txt: converted to UTF-8 2011-01-01 HIRAOKA Kazuyuki * 0000-00-00-000000.txt: support new commands. 2010-12-31 HIRAOKA Kazuyuki * 0000-00-00-000000.txt: use %reminder instead of %schedule and %todo. 2005-12-09 HIRAOKA Kazuyuki * Makefile.am (EXTRA_DIST): no need to install 0000-00-00-000000.howm. 2005-11-19 HIRAOKA Kazuyuki * 0000-00-00-000000.howm: add "about acceleration". thx > window16 san http://d.hatena.ne.jp/window16/20051118 2005-05-11 HIRAOKA Kazuyuki * 0000-00-00-000000.howm: added [Preference], %recent, %random 2005-05-06 HIRAOKA Kazuyuki * 0000-00-00-000000.howm: bind R = [Update Menu] thx > http://pc8.2ch.net/test/read.cgi/unix/1077881095/672-673n kaorahi-howm-fc61c31/ja/Makefile.am000066400000000000000000000003211454422607600171440ustar00rootroot00000000000000EXTRA_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 kaorahi-howm-fc61c31/ja/Makefile.in000066400000000000000000000255221454422607600171670ustar00rootroot00000000000000# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 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 = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 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) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 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) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ ChangeLog 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@ runstatedir = @runstatedir@ 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 $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 .PRECIOUS: Makefile 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: kaorahi-howm-fc61c31/missing000077500000000000000000000153361454422607600161310ustar00rootroot00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1996-2020 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 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, see . # 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 case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." 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 # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: kaorahi-howm-fc61c31/mkinstalldirs000077500000000000000000000066721454422607600173430ustar00rootroot00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy scriptversion=2020-07-26.22; # UTC # Original author: Noah Friedman # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . 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 ." # 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 "umask 22" umask 22 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 echo "umask 22" umask 22 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 fi fi pathcomp=$pathcomp/ done if test ! -z "$dirmode"; then echo "chmod $dirmode $file" chmod "$dirmode" "$file" || errstatus=$? fi done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: kaorahi-howm-fc61c31/riffle.el000066400000000000000000000501471454422607600163220ustar00rootroot00000000000000;;; riffle.el --- template of list browser with immediate preview ;;; Copyright (C) 2004, 2005-2023 ;;; HIRAOKA Kazuyuki ;;; ;;; 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 t)) (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 t))) (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 t) (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 ;; 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 kaorahi-howm-fc61c31/sample/000077500000000000000000000000001454422607600160035ustar00rootroot00000000000000kaorahi-howm-fc61c31/sample/ChangeLog000066400000000000000000000016711454422607600175620ustar00rootroot000000000000002008-05-14 HIRAOKA Kazuyuki * dot.emacs: set inhibit-startup-message 2006-11-21 HIRAOKA Kazuyuki * dot.emacs: set howm-history-file thx > http://pc8.2ch.net/test/read.cgi/unix/1141892764/193-194n 2005-12-09 HIRAOKA Kazuyuki * 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 * dot.emacs: howm-history-limit is set to be nil. Otherwise, my private ~/.howm-history is shrunk. 2005-05-11 HIRAOKA Kazuyuki * 0000-00-00-000000.howm: added [Preference], %recent, %random 2005-05-06 HIRAOKA Kazuyuki * 0000-00-00-000000.howm: bind R = [Update Menu] 2005-02-25 HIRAOKA Kazuyuki * bug-report.txt: slightly modified expressions kaorahi-howm-fc61c31/sample/Makefile.am000066400000000000000000000003521454422607600200370ustar00rootroot00000000000000EXTRA_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 kaorahi-howm-fc61c31/sample/Makefile.in000066400000000000000000000255701454422607600200610ustar00rootroot00000000000000# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 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 = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 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) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 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) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ ChangeLog 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@ runstatedir = @runstatedir@ 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 $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 .PRECIOUS: Makefile 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: kaorahi-howm-fc61c31/sample/bug-report.txt000066400000000000000000000014011454422607600206260ustar00rootroot00000000000000※ 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 → 症状確認」 により, 発症させる設定を探ってください → ■ バージョン kaorahi-howm-fc61c31/sample/dot.emacs000066400000000000000000000007571454422607600176140ustar00rootroot00000000000000(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) kaorahi-howm-fc61c31/sample/search.txt000066400000000000000000000003421454422607600200100ustar00rootroot00000000000000= search <<< 全文検索 一覧表示 or 連結表示 (ヒットしたファイルの中身を全部つないで) これのおかげで, 断片的なメモをばんばんとれる :-) ※ grep -r ってけっこう速い. メモファイル 1300 個でも 1 秒かからん. → top メモに戻る kaorahi-howm-fc61c31/sample/top.txt000066400000000000000000000030411454422607600173440ustar00rootroot00000000000000= 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/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 kaorahi-howm-fc61c31/test.bat000066400000000000000000000002621454422607600161710ustar00rootroot00000000000000 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