Emacs

Emacs内でのプロセス制御について

  • POST
Emacs-Lisp では、外部プログラムを二つの方法で呼び出すことが可能: 同期呼び出しで、起動した外部プロセスの終了を待つ方式 非同期呼び出しで、プロセスをバックグラウンドで起動してその終了を待たずに次の Emacs-Lisp ステップに進む方式 同期呼び出し 「call-process」を使うよ。使い方は: (call-process プログラム &optional 入力ファイル 出力バッファ 表示 &rest 引数...) (call-process "ls" nil t t "-lF" "~/") プログラム 起動するプログラムを指定する 入力ファイル 起動プログラムの標準入力として与えるファイルを指定します 出力バッファ 起動プログラムが画面出力した内容を受け取るバッファを指定します。 t を与えるとカレントバッファを指定したことになります。 nil を与えると、すべての出力を捨てます。また、 0 を与えると、出力を捨て、かつ起動プログラムを Emacs の管轄から切り離して、プログラムの出力を待ちません 表示 non-nil を指定すると、起動プログラムからの出力がバッファに挿入されるごとに画面を更新します 引数 起動プログラムに与える引数を文字列で指定します 非同期呼び出し 「start-process」を使うよ。使い方は: (start-process "プロセス名" バッファ プログラム &rest 引数) (start-process "Search file" "*scratch*" "find" "/" "-name" "*.

検索した店舗情報をデーターベースに登録するアクションを作る

  • POST
上記のelispを改良し、取得した店舗情報をデーターベースに登録するアクションを追加します。 説明には次のようにあります: action (type 要素が指定されなかった場合、必須) action 要素は「(表示文字列 . 関数)ペアー」のリストである。指定された関数は選択された候補を引数として呼び出される。 現在選択されている候補のためのデフォルト以外のアクションがこのリストから選ばれる(デフォルトでは TAB キーで)。 DISPLAY 文字列は、補完バッファーで表示され、アクションが選択されたときに関数が呼び出される。リスト中の先頭ののアクションがデフォルト・アクションになる。 http://d.hatena.ne.jp/sirocco634/searchdiary?word=anything&.submit=%B8%A1%BA%F7&type=detail:title 二つ目のアクションとしてデーターベースに登録する関数を割り当てます。データーベースは mysql を使うことにします。コマンドののたたき方は「2009-11-11 – 武蔵の日記」を参考にします。 mysql の設定 このようなテーブルを定義しました: mysql> desc lunch; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | shopname | varchar(100) | NO | | NULL | | | address | varchar(150) | NO | | NULL | | | tel | varchar(20) | NO | | NULL | | | url | varchar(100) | YES | | NULL | | | comment | varchar(500) | YES | | NULL | | | lat | float(10,7) | YES | | NULL | | | lng | float(10,7) | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ 8 rows in set (.