@kyanny's blog

My thoughts, my life. Views/opinions are my own.

install-info コマンドで MacPorts で入れた Gauche に付属する info を Emacs から読めるようにする

↓こんなやり取りがあったのですよ。




書いてるとおりなのだけど、改めて経緯を書くと、 MacPorts で Gauche をインストールしたら /opt/local/share/info 以下に gauche-refe.info.gz などがインストールされてるので、 Emacs から M-x info で読めるようにしたかったのですよ。

で、 Info-directory-list とか Info-default-directory-list とか Info-additional-directory-list とかのドキュメントを読んだりして、環境変数 INFOPATH に追加したい info があるディレクトリを追加すると良さそうだとわかった。

ので追加したんだけど M-x info してもインデックスに出てこない。ちょっとぐぐって、 info ファイルと同じディレクトリにある dir って名前のファイルが info コマンドからみたインデックスになってて、このファイルに追記するか新しく作ってやらないと見えるようにならないと。

追記するのも作るのもやればできるけど、どうも手でやるのは手間だしアレだよね・・・と思ってたら、 install-info なんていうコマンドがあることを教えてもらった。 make install-info とかやるのはみたことがあるけどコマンドとして存在するのは初耳。というわけで実際使ってみたら、

$ find /opt/local/share/info/ -name '*info*' | perl -nle '`sudo install-info $_ /opt/local/share/info/dir`'

うまくいった!!こういうことを新しく知ってできるようになるのって、すごく楽しい。 info とか、割と古くからある技術って感じがしてるけど、そういうものの使い方をまた一つ覚えることができて、マスターするのに近づいていけてる感じが嬉しい。

http://www.linux.or.jp/JM/html/GNU_texinfo/man1/install-info.1.html

ちなみに INFOPATH のセットはこんな風にやっている。 mapconcat の正しいインデント(というか行折り返し)の仕方のお手本とかどこかに載ってないですか。。

(setenv "INFOPATH" (mapconcat 'identity
                    (list
                     "/opt/local/share/info" ; MacPorts
                     (getenv "INFOPATH")) ; original
                    ":"))

ちなみに Twitter の発言のペーストにはTwitterのつぶやきをブログでまとめる機能を実装しました|Blogger Alliance お知らせブログを利用しました(コレで HTML 断片を投稿画面にペーストしてコピーしてきたものをはてなダイアリー側へ改めてペースト。もちろん CSS もコピーしてきてデザインのカスタマイズでスタイルシートの欄にペースト)

$ cat /opt/local/share/info/dir
This is the file .../info/dir, which contains the
topmost node of the Info hierarchy, called (dir)Top.
The first time you invoke Info you start off looking at this node.

File: dir,	Node: Top	This is the top of the INFO tree

  This (the Directory node) gives a menu of major topics.
  Typing "q" exits, "?" lists all Info commands, "d" returns here,
  "h" gives a primer for first-timers,
  "mEmacs<Return>" visits the Emacs manual, etc.

  In Emacs, you can click mouse button 2 on a menu item or cross reference
  to select it.

* Menu:

Individual utilities
* aclocal: (automake)Invoking aclocal.          Generating aclocal.m4.
* autoconf-invocation: (autoconf)autoconf Invocation.
                                How to create configuration scripts
* autoheader: (autoconf)autoheader Invocation.
                                How to create configuration templates
* autom4te: (autoconf)autom4te Invocation.
                                The Autoconf executables backbone
* automake: (automake)Invoking Automake.        Generating Makefile.in.
* autoreconf: (autoconf)autoreconf Invocation.
                                Remaking multiple `configure' scripts
* autoscan: (autoconf)autoscan Invocation.
                                Semi-automatic `configure.ac' writing
* autoupdate: (autoconf)autoupdate Invocation.
                                Automatic update of `configure.ac'
* config.status: (autoconf)config.status Invocation. Recreating configurations.
* configure: (autoconf)configure Invocation.    Configuring a package.
* ifnames: (autoconf)ifnames Invocation.        Listing conditionals in source.
* libtoolize: (libtool)Invoking libtoolize.     Adding libtool support.
* testsuite: (autoconf)testsuite Invocation.    Running an Autotest test suite.

Software development
* Autoconf: (autoconf).         Create source code configuration scripts.
* Automake: (automake).         Making GNU standards-compliant Makefiles.

C++ libraries
* autosprintf: (autosprintf).   Support for printf format strings in C++.

The Algorithmic Language Scheme
* Gauche: (gauche-refe.info).	        An R5RS Scheme implementation.
* Gauche (ja): (gauche-refj.info).  An R5RS Scheme implementation.
* SLIB: (slib).         Scheme Library

Programming & development tools
* GDBM: (gdbm).			The GNU database manager.

GNU Gettext Utilities
* ISO3166: (gettext)Country Codes.             ISO 3166 country codes.
* ISO639: (gettext)Language Codes.             ISO 639 language codes.
* autopoint: (gettext)autopoint Invocation.    Copy gettext infrastructure.
* envsubst: (gettext)envsubst Invocation.      Expand environment variables.
* gettext: (gettext).                          GNU gettext utilities.
* gettextize: (gettext)gettextize Invocation.  Prepare a package for gettext.
* msgattrib: (gettext)msgattrib Invocation.    Select part of a PO file.
* msgcat: (gettext)msgcat Invocation.          Combine several PO files.
* msgcmp: (gettext)msgcmp Invocation.          Compare a PO file and template.
* msgcomm: (gettext)msgcomm Invocation.        Match two PO files.
* msgconv: (gettext)msgconv Invocation.        Convert PO file to encoding.
* msgen: (gettext)msgen Invocation.            Create an English PO file.
* msgexec: (gettext)msgexec Invocation.        Process a PO file.
* msgfilter: (gettext)msgfilter Invocation.    Pipe a PO file through a filter.
* msgfmt: (gettext)msgfmt Invocation.          Make MO files out of PO files.
* msggrep: (gettext)msggrep Invocation.        Select part of a PO file.
* msginit: (gettext)msginit Invocation.        Create a fresh PO file.
* msgmerge: (gettext)msgmerge Invocation.      Update a PO file from template.
* msgunfmt: (gettext)msgunfmt Invocation.      Uncompile MO file into PO file.
* msguniq: (gettext)msguniq Invocation.        Unify duplicates for PO file.
* ngettext: (gettext)ngettext Invocation.      Translate a message with plural.
* xgettext: (gettext)xgettext Invocation.      Extract strings into a PO file.
This is gettext.info, produced by makeinfo version 4.11 from gettext.texi.


Text creation and manipulation
* M4: (m4).                     A powerful macro processor.

Programming Tools
* Gperf: (gperf).                Perfect Hash Function Generator.

Typesetting
* Groff: (groff).               The GNU troff document formatting system.

GNU programming support
* help2man: (help2man).      Automatic manual page generation.

Libraries
* History: (history).       The GNU history library API.
* RLuserman: (rluserman).       The GNU readline library User's Manual.
* Readline: (readline).       The GNU readline library API.

Emacs
* IDN Library: (libidn)Emacs API.	Emacs API for IDN functions.

Localization
* idn: (libidn)Invoking idn.	Internationalized Domain Name (IDN) string conversion.

Software libraries
* libidn: (libidn).	Internationalized string processing library.

GNU programming tools
* Libtool: (libtool).           Generic shared library support script.
This is libtool.info, produced by makeinfo version 4.11 from /Users/gary/Devo/libtool/doc/libtool.texi.


GNU organization
* Standards: (standards).       GNU coding standards.

Network Applications
* Wget: (wget).         The non-interactive network downloader.