Top / アイデア集 / pukiwiki-mode

アイデア集

ダウンロードは以下からどうぞ。過去のパッチは パッチ置き場 にあります。

filepukiwiki-mode.el

pukiwiki-mode.el のテスト版は elc に置いてあります.

実行には tdiary-mode に付属の http.el が必要です.http.el は elc にも置いてあります.

最新の10件を表示しています。 コメントページを参照

目次

  • 目次
  • 更新履歴
  • リンク
  • pukiwiki-modeが欲しいなぁ
  • 動作する環境
  • 必要なものと基本的な設定
  • 使い方
    • 基本的な使い方
      • 編集モード
      • インデックスモード
      • 表示モード
      • 差分モード
      • こんな時はどうする?
  • バグとトラブル報告
  • カスタマイズ
  • アイデア
    • PukiWiki で簡単に日記を書く
    • 思い付き
    • pukiwiki-mode カスタム
  • 作業中のものたち
  • これが欲しい & Todo
  • パッチと対応済みのもの
    • PukiWikiごとに異なる文字コードに対応するパッチ
    • no-proxy ドメインを指定可能にするパッチ
    • 差分表示に `Ediff' を使う様にするパッチ
    • 目次を便利に
    • ページ、リンクを辿れる様に & コメント投稿できる様に。
      • コメント機能のエラー関連
      • WIKIWIKIへの対応
  • 他サイトの情報メモ
    • pukiwikihelper-mode
    • 記述子の入力を簡易に

更新履歴

  • 2005-11-21:2.30
  • PukiWiki 1.4.6 のインデックス表示に対応
  • 2004-11-14:2.26
  • pukiwiki-save-post-data を t にすると投稿データを保存
    • 保存データの表示はまだありません
    • pukiwiki-history-index で一覧表示だけできます
    • 記事の表示はできないので無意味ですが。。。
  • 2004-11-06:2.25
  • pukiwiki-server を追加
  • バグ修正 (1.4.4 への対応)
  • 2004-10-19:2.23
  • 一部サイトでタイトルが2重に表示されるバグを修正
  • 2004-10-13:2.22
  • とってもいい加減にパスワードを保存するようにしてみた
    • まだまだ練り込みが必要だけど,とりあえずは使えるはず
  • 2004-10-12:2.21
  • 正規表現の修正.ご指摘ありがとうございます
  • 1.3.5でも投稿できるようにした
    • まだあやしいかも...
  • 2004-10-09:2.20
  • pcomment 関連のバグ修正パッチを適用
  • ありがとうございます
  • 2004-10-07:2.17-3
  • フォントロックの記述を修正
  • 2004-10-07:2.17-2
  • pcomment を Meadow でも投稿できるようにした
  • パッチの適用。ありがとうございます
  • 2004-10-06:2.17
  • 2.16-1〜2.16-3をCVSへ登録しただけ
  • 2004-10-06:2.16-3
  • boundp を fboundp へ
  • 2004-10-06:2.16-2
  • コメント投稿機能などのパッチ最終版を適用
    • ありがとうございます

リンク

pukiwiki-modeが欲しいなぁ

hiki-modeの便利さに感心して思いました。

出来れば、font-lockの色変更があると見やすいかも。

さらに将来的に、下記の「各Wikiの文法比較」を参考に、各Wikiへの変換をサポートして、 wiki-mode への進化すると面白いかも。 http://lab.lolipop.jp/fswiki/wiki.cgi/wikistandard?page=%B3%C6Wiki%A4%CE%CA%B8%CB%A1%C8%E6%B3%D3

これは、hiki-mode.el を M-% hiki pukiwiki して、適当に編集したものです。

Meadow だけで PukiWiki に書き込みができます.すぐに結果が見たければ, IE などの ブラウザで表示させることもできます.

それなりに整形して表示しますので,私自身は添付ファイルを扱う時以外は Meadow だけ で済んでます.

pukiwiki-mode.png

動作する環境

  • Meadow 2.00
  • Emacs 21
  • PukiWiki 1.4.2

で動作を確認しました.それ以外の環境では一部の機能が動作しません.

PukiWiki 1.3では,一覧表示などが動作しません(正規表現を変更すれば動きます).

必要なものと基本的な設定

ベースとなった hiki-mode 同様, tdiary-mode付属のhttp.el が必要です.また,衝突時に diff を使用していますので,Cygwin が必要です.

http.elは bookshelf下のelcディレクトリ にも置いてあります.

設定は

(load-library "pukiwiki-mode")

で使うことができます.

サイトを追加する場合には

(setq pukiwiki-site-list
       '(("Meadow" "https://bookshelf.jp/pukiwiki/pukiwiki.php" nil euc-jp-dos)
         ("Kawacho" "http://kawacho.don.am/wiki/pukiwiki.php" nil euc-jp-dos)
         ("macemacs" "http://macemacsjp.sourceforge.jp/index.php" nil euc-jp-dos)
         ("Xyzzy" "http://xyzzy.s53.xrea.com/wiki/wiki.php" nil euc-jp-dos)
         ("Pukiwiki" "http://pukiwiki.org/index.php" nil utf-8-dos)
         ))

のように設定します.

使い方

基本的な使い方

基本的には hiki-mode と同じです

M-x pukiwiki-edit
設定しておいたサイトを編集する
M-x pukiwiki-edit-url
指定した URL を編集する
M-x pukiwiki-index
設定しておいたサイトのページ一覧を表示する

編集モード

M-x pukiwiki-editやM-x pukiwiki-edit-urlでページの編集になります.普通に編集して いきます.

キーバインドは以下の通りです.

C-cC-q
キャンセル
C-cC-c
ページの更新

更新が衝突するとエラーになります.どこが衝突しているのかが別バッファに表示されま すので,それを確認して再編集を行います.問題なければ編集中のバッファで再度 C-cC-c とすると,そのままアップできます.

C-cC-p
プレビュー
C-cC-e
M-x pukiwiki-edit の実行
C-cC-r
ページの変更を破棄して再編集を行う
C-xv=
最近の変更箇所を表示

また,編集モードで下線が引かれた文字の上でRETとすると,そのページを編集できます.

インデックスモード

M-x pukiwiki-editで更新やキャンセルを行ったり,M-x pukiwiki-index を行うとページ の一覧が表示されます.

例えば

 107   Meadow memo Wiki/2004-02-26                        04/02/26
 118   Sand2                                              04/02/26
 179 V アイデア集/pukiwiki-mode                           04/02/26
 196 V コメント/flashの作り方                             04/02/26
 247   起動速度を大幅にアップ! -- idledo.el               04/02/26

のように表示されます.

インデックスでは以下のようなキーバインドを利用できます.

i
現在ページをisearchする
/
全ページを検索する
.
ページを表示する
SPC
ページを表示する.すでに表示されていたらスクロールする
b
ページを表示する.すでに表示されていたら逆方向にスクロールする
<
表示しているページの先頭を表示する
>
表示しているページの最後を表示する
n
次のページを表示する
j
次のページを表示する
p
前のページを表示する
k
前のページを表示する
v
ページをブラウザで表示する
Q
インデックスを終了する
q
インデックスを後ろへ隠す
s
時間や名前でソートする
S
時間や名前でソートする
R
インデックスを更新する
e
M-x pukiwiki-edit と同じだが,初期値は現在カーソルがある行のページになる
RET
ページを編集する
=
最近変更された箇所を表示する
pukiwiki-diff.png

ただし,バックアップとの差分なので,ブラウザで差分を表示させた時のものとは異なり ます(連続して変更された時などの場合,差分を見るよりもバックアップとの差分の方を 見た方がいいため).

Cygwin をインストールしてあれば(diff.exeとシェルが必要),以下の設定を .emacs に 追加しておくと,

(setq pukiwiki-diff-using-ediff t)

以下のようにEdiff を利用して変更箇所を確認できます.通常通り,変更箇所は色分けさ れますし,nやpで変更箇所を移動できますので,とても分かりやすく変更箇所を確認でき ます.

ediff.png
t a
変更箇所を全ページまとめて表示する

カーソルのある行と同じ日に変更されたページの変更箇所をまとめて表示します.変更箇 所のみを表示しているので,現状ではかなり読みにくいです.

today-diff.png
t =
今日変更された箇所を表示(現在カーソルがある場所のページのみが対象.リージョンが有効ならリージョン間のページが対象.)

= による差分を表示では、直前のバージョンとの比較になり何度も更新された場合には対 応しきれません。そんな場合には、t=とすると、今日変更された部分だけを表示できます。

表示モード

インデックスからスペースキーなどで表示すると表示モードになる.

  • 添付ファイル機能
#ref(today-diff.png)

とある行でリターンキーを入力すると,添付ファイルを表示できる.ただし,添付ファイ ルをダウンロードして,find-file で開いているだけなので,バイナリファイルは開いて も意味がない.

  • 簡易整形機能
(setq pukiwiki-auto-insert t)

となっていると,よみやすいように各種の整形を行います.

デフォルトでは

  • 添付ファイルの一覧を表示
  • 目次を入力

のみを行います.

  • アンカータグ (リンク)

ページ名、リンク、エイリアスが記述されている部分を機能する様にしました。 Tab キーでポイントを移動でき、これらの位置で C-m すると、指定されてい るページにジャンプします。

それぞれ、InterWikiName の指定にも対応しています。
InterWikiName では、PukiWiki でない site も指定されますので、その様な 場合は、browse-url で開きます。

変数 `pukiwiki-view-chip-away-bracket' を新設しています。
この変数が非 nil であると、ページ名、リンク、エイリアスを指定する際に 記述している二重ブラケットは削除されます。

また、`#aname' で指定した部分にもアンカーを埋め込みますので、`#aname' で設定したアンカーを指定したリンクも機能します。

  • 簡易ページ履歴

ページ間のジャンプ機能を実装してみたということで、その簡易な履歴を保持 する様にしてみました。
但し、以前に表示していたページを順に遡ることしかできません。
デフォルトでは `B' に bind してあります。

変数 `pukiwiki-view-form-textarea-buffer-history-keep-count' に保持可 能な履歴ページの最大数を指定できます。
デフォルトでは 100 ページになっています。

  • コメント投稿機能

コメント (`#comment' `#pcomment')、簡易掲示板 (`#article') の plugin に対応しています。ただし、他のページでは動作しない可能性もあります。

`#comment' は、コメント入力フォーム (変数の指定により入力形式を切り替 えられます) を表示します。フォームへ入力して投稿ボタンで C-m すること でコメントを投稿できます。
変数 `pukiwiki-view-form-text-input-style' を新設しています。 この変数の設定内容により、コメント関連の表示方式が切り替えられます。

`#pcomment' は `reply' 引数が指定されていれば、コメントを展開して表示 する際に選択用のラジオボタンもどきを付加して展開します。ラジオボタンも どきにポイントを置いて C-m で選択できます。
;; 見た目は Emacs-w3m の様な感じです。
コメントの入力、投稿は `#comment' の場合と同じです。

`#article' も `#comment' と同様です。見て頂ければ判ると思います。

コメント関連の表示方式を切り替えられる様に、 `pukiwiki-view-form-text-input-style' という変数が新設されています。
この変数は四つの選択肢を持ち、それぞれ以下の様な動作を行ないます。

  • Not specified: nil

    コメント機能は無効です。
    フォームは表示されず、コメント投稿はできません。

  • Ask name and comment: ask

    投稿ボタンのみ表示します。
    名前、コメント、リプライ番号はミニバッファに問い合わせが来るので、それ に応答することで入力して下さい。
    応答すべき番号は、リプライしたいコメントの行頭に `[Num]' の形式で表示 されています。

  • Display input text form: form

    名前、コメント、題名、及び掲示板投稿内容を入力するフィールドを表示しま す。
    その部分がアンカーとなっており、ポイントを置いて C-m すると、ミニバッ ファに入力要求があるので、それに応答することで入力します。

リプライ番号は、表示されているコメント群の行頭にラジオボタンもどきが表 示されているので、そこで C-m しておくことで選択できます。
選択しているコメントが無いと新規投稿となります。

  • Display input text form by large area: large

    名前、コメントを入力するフィールドを表示します。
    基本的に 'form と同様ですが、コメントと簡易掲示板への投稿内容については、 ポイントして C-m するとバッファがポップアップされるので、そのバッファ で入力します。
    入力できたら C-c C-c でバッファを破棄して内容を反映します。
    入力をキャンセルする場合は、C-c C-k か C-c C-q でバッファを破棄できま す。(内容は反映されません)
    このとき、コメントの投稿内容からは改行を削除して反映します。
    但し、簡易掲示板への投稿記事からは改行を削除しません。

ポップアップされたバッファでの入力内容は、履歴保持用の変数である、

 `pukiwiki-view-form-textarea-buffer-history'

に保持され、コマンド `pukiwiki-view-form-textarea-buffer-history-yank' (デフォルトでは C-c C-y に bind されている) でバッファに貼り付けること ができます。
また、このコマンドは、連続して実行することで履歴を遡ってバッファに貼り 付けることができます。 履歴として保持可能な入力内容の最大件数は、デフォルトで 50 件となってお り、

 `pukiwiki-view-form-textarea-buffer-history-keep-count'

で指定可能です。

差分モード

インデックスから=などで差分を表示すると差分モードになります.対した機 能は無いですが,以下のキーが利用できます.

SPC
スクロール
b
逆方向にスクロール
q
終了
M-n
次の変更箇所へジャンプ
M-p
前の変更箇所へジャンプ

view-mode なので,view-mode の機能も利用できます.

こんな時はどうする?

ページの削除
内容を空にします
ページの新規作成
M-x pukiwiki-editで存在しないページを指定する.

バグとトラブル報告

  • 文字コード

euc-jp でしか確認していません.PukiWiki のサイトのように UTF などに変更している とうまく動作しません.

「*result from サーバ名*」というバッファが文字化けしているようであれば,このバグ です.

これを逃げるためには,サイト毎に文字コードを設定する必要があります。

  • 結果表示のタイミング
(setq pukiwiki-browser-function 'browse-url)

と設定した上で,編集後 C-cC-c とすると、即座にブラウザが起動してしまい、編集後の 結果にはなっていない

  • 私の環境*1で、起動に失敗してしまいます。

    (load-library "pukiwiki-mode")で、

    Symbol's value as variable is void: となります。このエラーを、ほかのelispでも多少引っかかるようですが、まだ原因までは追えていません。どなたか、既に解決された方はいませんか?
                
  • 私も同じエラーが出たので調べてみたところ、http.el のダウンロードをミスして他のHTMLファイルをhttp.elとしてライブラリに放り込んでました。一度正しいEmacsLisp?ファイルであるか、確認してみてはいかがでしょうか? -- 通りがかり
  • http.el も pukiwiki-mode.el も、ブラウザで「ファイルに保存」すると、
     .. 
    で囲まれてHTML として保存されてしまいます。
    • 冒頭の最後のほうを削っても、アンパサンドとか<とか>とかの記号が、HTML表記になるため、元通りに置換するかHTMLに変換されない保存方法をとる必要があります。

カスタマイズ

  • 投稿データの保存

この機能はまだ変化すると思いますが、

(setq pukiwiki-save-post-data t)

としておくと、投稿データがローカルに保存されます。保存先は ~/pukiwiki です(pukiwiki-directory で設定できます)。

今のところ、テキストファイルで保存しているだけで、表示などの機能はあり ません。

サーバ側が不調でデータが消えた、などを防止できます。

  • プロクシ

以下のように設定します.

(setq http-proxy-server "proxy.server")
(setq http-proxy-port 8080)
  • pukiwiki-index-wiki-name

一覧は

   9 V CDでMeadowを持ち運ぶ               04/02/12
  30   Meadow memo Wiki                   04/02/12

と表示される.このWiki名に表示する文字数を pukiwiki-index-wiki-name で設定する. 短いと途中できれるので,画面サイズに応じて設定しておくといいでしょう.デフォルト は50です.

  • pukiwiki-auto-insert

表示モードで pcomment などを自動的に挿入する.また,よみやすいように整形も行う.

view.png

整形箇所は以下の通り.

  • 目次の挿入
  • ls2の挿入
  • 添付ファイルリストの挿入
  • pcomment の挿入
  • コメントの整形
  • 定義リストを整形
  • 長い行の折り返し

行頭にスペースがある行やリストなど,一部の書式では折り返さない.

整形できないもの

  • テーブル
  • 各種のタグ

アイデア

PukiWiki で簡単に日記を書く

こんなことをすると,M-x pukiwiki-diary で日記を書けます.

(defun pukiwiki-diary ()
   (interactive)
   (let ((time (format-time-string
                "20%y-%02m-%02d" (current-time))))
     (pukiwiki-edit-page
      (concat
       "Meadow memo Wiki/" time)
      '("Meadow" "https://bookshelf.jp/pukiwiki/pukiwiki.php" nil euc-jp-dos))))

思い付き

サーバーごとではなくて,お気に入りのページを一覧とかできると面白い.

自分が書いた記事は保存されていて,=で現在との差分が見れるとか.

pukiwiki-mode カスタム

正規表現やURL などの設定を変更すれば hiki にも対応ってなるといいな.

pukiwiki,Hiki,,,と個別に作るのは面倒.と今になって思ったり.

作業中のものたち

  • HTTP認証が必要なページのサポート

一応できるようにしてみましたが、いかがでしょうか? キャッシュしてないので毎回入 力しないとだめですが…下の添付ファイルのpukiwiki-mode.el.patchにアップロードして しまいましたが、問題があれば適当に移動させてもらえるとうれしいです。(taka)

  • パッチを適用しました。ありがとうございます。

hiki-mode を参考にキャッシュできるようにするといいかも...

と思ったら,そうではないのか.PukiWiki はユーザ名とパスワードが必要.なんで, pukiwiki-password-read と pukiwiki-password-store 関連の修正が必要(Hikiはパスワー ドだけしか想定していないので).

しかも,Hiki の状態をそのまま残してあるので,不要なものばかりになってしまってい る.実際には、pukiwiki-password-read とかは機能していないはず。

ちなみに PassSandbox は認証を付けてあります.ユーザ名が「meadow」で,パスワード が「memo」です.

これが欲しい & Todo

- 要望

という書式で追加ください.

  • howm の画像取り込み imcap のように、画像貼り付けを簡単に。

ここまで行かずともファイル指定して、添付し、kill-ringに「#ref(hoge.png,70%)」と 一連作業をして欲しい。


に対して Elisp でファイルを添付するのはどうしたらいいんだろう...良く分からな いので頓挫してます.

  • 編集時に、ミニバッファで設定する WiKi?名を migemo を使って補完する
  • howmで、pukiwikiの書式でメモを取りたい

pukiwiki-modeで、整形して表示しているものを、howmで使えれば、メモを取り溜めして も、コピペでpukiwikiに反映できるため。

  • 「タイムスタンプを変更しない」ページの更新機能
  • 整形関連のバグつぶし
  • コメントが連続しても1行になってしまう
  • pukiwiki 1.3.5で検索機能が動作しない
  • C-cC-cでバッファが閉じられてしまうのを防ぐ方法がほしい
  • 1.4.6 でインデックスが表示できない
  • 1.4.6のインデックス表示は対応
  • PukiWiki 1.4.4でコメント書き込みができない
    • データのpost先がpukiwiki.phpに変更になったみたい
  • セーブしていないバッファは終了時に破棄するか確認するようにおねがいします。

パッチと対応済みのもの

他力本願...あれば適当に追加してください.

PukiWikiごとに異なる文字コードに対応するパッチ

PukiWikiごとに異なる文字コードに対応するパッチです。

  • pukiwiki-site-listに文字コードのエントリを追加。
  • pukiwiki-site-coding-system: New function.
  • pukiwiki-http-request, pukiwiki-fetch-sourceの引数にcoding-systemを追加。
  • pukiwiki-coding-systemをpukiwiki-site-coding-systemの呼び出しか前後を見て適当なものに置き換え。

pukiwiki-mode-set-variableでset-buffer-file-coding-systemを削った後対応する処理 をどこにも入れていないので、一応読み込みと書き込みだけは動いているようですが、ど こかに不具合が残っているかも知れません。

添付ファイルにしました(pukiwiki-mode.el.patch) -- 橘花? &new{2004-04-11 (日) 04:37:05};

すばらしい.

(setq pukiwiki-site-list
      '(("Meadow" "https://bookshelf.jp/pukiwiki/pukiwiki.php" nil euc-jp-dos)
         ("Pukiwiki" "http://pukiwiki.org/index.php" nil utf-8-dos)
         ))

とすれば本家も読めました.ありがとうございます

プレビューで一時ファイルの文字コードの指定がちゃんとできなくなってしまっていたの で修正しました(pukiwiki-edit-preview.patch)。お手数をお掛けしてすいません。 -- 橘花? 2004-04-12 (月) 17:05:54

no-proxy ドメインを指定可能にするパッチ

と、そのつもりだったのですが、私が利用している Emacsen が XEmacs only なために色々 と支障があった部分にも対処しており、雑多なパッチになってしまいました。 `pukiwiki-mode.no-proxy.patch' と言う名前で、添付ファイルとして upload しました。

以下の環境で確認してあります。

 $ xemacs --version
 XEmacs 21.4 (patch 14) "Reasonable Discussion" [Lucid]
   (i686-pc-cygwin, Mule) of Wed Nov 26 2003 on *****
 $ xemacs --version
 XEmacs 21.4 (patch 14) "Reasonable Discussion" [Lucid]
   (i686-pc-linux, Mule) of Wed Feb 11 2004 on *****

;; しかし、Meadow, Emacs で動かなくなってしまった部分があるかもしれません (すみません。確認できる環境がありませんで) ので、ご留意下さい。

pukiwiki-mode では、`http-proxy-server' の値が nil 以外だと proxy 経由でのアクセ スを行ないますが、proxy の内外のサーバにアクセスしたい場合には、 `http-proxy-server' の内容を消すしか方法がありません。(よね??)

なので、domain を指定して proxy 経由しない設定を有効にできる様にしてみたものです。 添付ファイルの `pukiwiki-mode.no-proxy.patch' を適用した後、

 (setq pukiwiki-no-proxy-domains-list
       '("localhost" "no-proxy-domain.com" ...))

等として下さい。`defcustom' していますので、

 M-x customize-group [RET] pukiwiki [RET]

でも設定可能です。 ;; Meadow, Emacs でもこれで設定可能なのかどうかは判りません。すみません。

他の雑多な修正として、

  • Pukiwiki 1.3 系へのアクセスに対処。

    version 1.3.3 の Pukiwiki が生きているので無理矢理対応してみました。但し、 Pukiwiki 自体に明るく無いので、正規表現は無理矢理です。上の `動作する環境' に、 正規表現を変えれば読めると書いてあったので、その様に対処してみただけのものです。 動かなかったら直してみて下さい。

    因みに version 判定は、page 下部のシグネチャにある copyright 部分、

     "PukiWiki" 1.4.2 Copyright  2001,2002,2003 PukiWiki Developers Team.
     License is GNU/GPL.

    で判断しています。template とかで、ここの表示が色々変わる様だと誤認して動かない かもしれません。認識できなかったときは 1.4 系と看倣します。

  • XEmacs で動作不能な部分を修正。

    あくまで ad hoc ですが。

     buffer-file-coding-system
     replace-{regexp,string}
     overlay-put
     transient-mark-mode
     x-color-defined-p
     diff-command

    あたりが挙動が違う、XEmacs には存在しない、などで問題が出たものです。

    まだ昨日使っただけなので、全然機能を使いこなしていないため、まだまだ 問題のある関数や変数があるとは思います。

    特に、replace-{regexp,string} については、

     re-search-forward, replace-match の組み合わせ
     perform-replace

    の二種類の置き換えが考えられたのですが、取り敢えず、今回は、

     replace-regexp -> re-search-forward, replace-match の組み合わせ
     replace-string -> perform-replace

    としています。

    どちらが効率が良いかとか、Meadow, Emacs 系でどうかとかにもよるので、 取り敢えずはこれで試して貰おうと思っています。良きに図らって頂ければ幸 いです。

    diff-command は、XEmacs では定義が無いだけでした。というか、package によ るんでしょうかね。Meadow, Emacs だと、素のままで `diff-command' は定義されている んでしょうか。

色々問題もあろうかと思いますが、使って頂ければ幸いです。 -- ogawa 2004-09-02 (木) 16:21:05

  • XEmacs での overlay の扱いがおかしかったのを直して、添付ファイルを up し直しました。
  • `COLOR' での文字色指定や、強調表示などの範囲を誤ってた様なので、一部修正してみました。

    しかし font-lock 関係は手を付けるのが怖いかも。 -- ogawa 2004-09-02 (木) 21:02:36

  • no-proxy でバグありましたね、誠に申し訳ないです。

    お詫びと言っては何ですが、整形処理を少し拡張してみました。

    • 段落指定 `~' を段落として扱う様にした。

      行末の `~' しか認識していなかった様なので。

    • リスト項目の整形と着色。(keyword による着色から自前での着色に変更)
    • no-proxy patch で強調表示の指定がおかしくなっていたのを修正。 といったところです。 しかし、整形処理は突き詰めて行くと途方も無いことになってしまいますね。

整形は適当に手を抜いておいた方が楽でいいです.私が書いたものも,ちょっと凝ったタ グを書いてあるとまともに表示できませんし...

  • あと、process 終了監視の時間間隔を指定できる様にしてみました。私の環境 では、とても重いことが多かったもので。

    余り時間が無くて、検証が大雑把なのはご容赦下さい。(本当すみません)

差分表示に `Ediff' を使う様にするパッチ

折角の Emacsen で wiki を見ていて、差分が diff でしかないのが悲し過 ぎたので作ってみました。

Ediff が利用できる環境なら、インデックスモードで `=' (pukiwiki-index-show-diff) としたときに Ediff パッケージを利用して差分 を表示します。
編集モードや、表示モードで C-x v = としたときも同様です。

但し、`pukiwiki-index-show-today-diff', `pukiwiki-index-show-today-changed' は複数のコンテンツを扱うため、インタフェースが噛み合わないので対象外と しています。

XEmacs 以外の Emacsen での動作は確認できていません。すみませんが、確 認をお願いします。

振舞いを制御するために `pukiwiki-diff-using-ediff' という変数を新設 させて貰いました。従来の動作をお望みの方は nil を設定して下さい。
デフォルトは nil ですので、何も意識しなければ従来の動作のままです。 Ediff を使いたい方は、明示的に非 nil を設定して下さい。

 M-x customize-group [RET] pukiwiki [RET]

として `Diff Using Ediff' を on にするか、

 (setq pukiwiki-diff-using-ediff t)

を評価して下さい。
Ediff を抜けた後、表示用に作成したバッファはそのまま残ります。不要になっ たら kill-buffer などして下さい。

あと、これまでに私が up した patch にあった幾つかのバグ修正と水平線 の整形処理を加えています。 水平線については、これまでのリスト項目の整形処理で、行頭の `-' (ハイフ ン) を 4個以上連続して書いていてもリスト項目としていた処理を変更してい ます。
Pukiwiki の help では、

  • リスト項目は 3レベルまで。
  • 行頭に `-' を 4つ書くと水平線。

と書いてあったのでこうしてみたのですが、問題ある様であれば却下して下さ い。-- ogawa? 2004-09-08 (水) 16:18:10

;; いつも小出しですみません。

目次を便利に

長いページだと目次があるだけではあまりうれしくない。簡単な操作で各章へジャンプで きるといいな

簡単ですが、一応できる様にしてみた patch を upload しました。
表示モードで、目次を挿入している場合に、対応する目次と見出しの間をジャ ンプできます。
ついでに、目次と見出しに設定したアンカーを順にジャンプできる様にもして あります。w3m の様な感じでしょうか。

表示モード限定で、以下の様な感じに動作します。

  • 目次、見出しにポイントがあるとき、それぞれ対応する箇所にポイントを 移動できます。

    デフォルトでは C-m に bind しています。

    従来は添付ファイルのダウンロードが C-m に bind されていましたが、 bind は変更させて貰いました。しかし、ポイント位置が、目次か見出しでな い場合は、従来通り、添付ファイルのダウンロードを行ないます。

  • 目次、見出し間のポイント移動で、ポイントを移動した際の window 表示 位置を制御できます。

    表示位置は、以下の何れかを選択できます。

    • 移動したポイントが window の先頭 (margin も指定可) に来る様に。
    • デフォルトの表示位置
  • 目次と見出しの位置に、順繰りにポイントを移動できます。

    デフォルトでは順方向のジャンプを C-i に、逆順方向のジャンプを M-C-i に bind しています。

関連して新規の変数を追加しています。

  • pukiwiki-jump-display-window-top

    非 nil なら、目次、見出し間でジャンプしたとき、ジャンプ先のポイント を、window の上部に表示します。デフォルトは nil です。

  • pukiwiki-jump-display-window-top-without-content

    非 nil なら、見出しから目次にジャンプしたときには window 上部に表示 せずにデフォルトの表示位置にします。デフォルトは nil です。

  • pukiwiki-jump-display-window-upper-margin

    ジャンプ先のポイントを window 上部に表示する際に、最上部からの margin を行数で指定できます。デフォルトは 0 です。

変数の設定は面倒な感じになってしまいましたが、色々好みもあると思いまし て。 如何でしょうか。 -- ogawa 2004-09-07 (火) 19:08:52

ページ、リンクを辿れる様に & コメント投稿できる様に。

一部、機能の紹介へ移動させました。

以下の様な機能を追加するパッチです。

  • アンカータグ (リンク) が有効になる様にした。
  • コメント (`#comment' `#pcomment')、簡易掲示板 (`#article') の plugin に対応した。
  • 簡易ページ履歴
  • font face の拡張。
  • その他、整形処理の色々バグ潰しなど。

今回、手元で少しずつ拡張を繰り返しておりまして、色々と安定化を図ってか ら upload しようと思っていたのですが、重複する部分に変更が入り出してし まったので、ここで取り敢えず、upload させて貰うことにしました。

但し、merge して patch を作成したのは、昨日 up された、

 filpukiwiki-mode.el (backup No.57)
   ページ:アイデア集/pukiwiki-mode
   格納ファイル名:./attach/
   A5A2A5A4A5C7A5A2BDB82F70756B6977696B692D6D6F6465_70756B6977696B692D6D6F64652E656C.57
   MD5ハッシュ値:7d3ab6dca3f3bffac09b4094b347a5cc
   サイズ:127.6KB (127561 bytes)
   Content-type:application/octet-stream
   登録日時:2004/10/05 15:30:17
   アクセス数:

というファイルについてです。

これに対してパッチを作成してしまった後、更に update されているのに気付 いたのですが、face 部分が被ってしまっているので、そのまま merge できま せんでした。
できれば吸収して頂きたいとは思っていますが、ちょっとゴチャゴチャしてい る上に、この様なパッチとなってしまったので、どの様に扱うかは松下さんに お任せ致します。

追加機能
  • font face の拡張。

色々と face を定義したんですが、バッティングしてしまった様です。
引用やアンカーの face は、font-lock の探索に基づくフォント選択ではなく、 overlay で設定しています。

但し、色付けはかなりうるさくなると思います。
気になる場合は、face を変更してみて下さい。

  • その他、整形処理の色々な拡張やバグ潰しなど。
非互換

見出し行にリンクが存在すると、その部分が有効になりますが、その副作用 で、以前は見出し行全体が目次との間のジャンプができるリンクもどきとし て機能していましたが、リンクが出現するまでの部分だけしか、その様には 機能しなくなりました。

懸案、問題点
  • コメント行 (行頭が `//' のもの) は、まだ完全に正しくは扱えません。 一応、それっぽくはありますが、段落としての認識が不完全です。
  • `#pcomment' の展開時、表示件数の指定は有効になりません。 また、below などの引数も有効ではありません。
  • 二重ブラケットで囲まれた文字列のリンクへの変換ですが、簡易整形により 二重ブラケットの間に改行が挟まれてしまった場合は変換されなくなってしま います。
  • 整形処理は、ツギハギだらけにしてしまったので、整理し直さないとならな いと思います。殆ど私のせいですね。申し訳ありません。 -- ogawa?

コメント機能のエラー関連

よく分かってませんが、やってみました

初期状態

anchorhead           t
select               no
radio                4
anchortype           radio
anchor               t
fontified            t

ここで、RETとすると、[ ]が[*]となる。その状態で確認すると、

Text property at 185:  fontified  t

となる。プロパティが消えてるみたい。一度RETでマークをつけると、他の部 分も同じ反応になる。

ここに書いている内に松下さんが直して下さいましたね。ありがとうございま す。
XEmacs でも問題無いことを確認致しました。

私も確認しているうちに、replace-match で mark を書き換えたときにプロパ ティが剥がされたとしか思えないと考えていたところでした。
テキスト属性の振舞いとしては、どちら (Meadow と XEmacs. FSF Emacs だと どうなのかな?) の振舞いも納得できる気がします。
文字の置き換えをどう捉えるかなのでしょうね。

しかし、そうだとすると、他にも色々とありそうな気がします。
アンカーや見出しでおかしな部分があるかもしれませんので、何かあればご報 告下さい。
ただ、今回の場合は、属性を設定した箇所全てを置き換える結果になっている ので、途中だけを置き換える場合には問題無いのかもしれませんね。

  • すみません、修正パッチです。

申し訳ありませんが、バグがありました。

  • 引数に `reply' が指定されていないと、コメントの展開を行なわなくなっ ていたのを修正。
  • `Pukiwiki/1.4/マニュアル/プラグイン/p' を表示しようとすると、 `#pcomment' の説明部分で、`#pcomment' プラグインが指定されているもの と誤認してしまい読み込めなくなるのを修正。
  • `pukiwiki-view-chip-away-bracket' に非 nil を設定している場合で、コ メントの末尾に url が直接記述されている場合などに、ブラケット削除の確 認時に error となってしまうのを修正。

したパッチを upload しました。
プラグインの引数に関しては、サポートしていない引数もありかなり適当です。 特に pcomment のコメントページのページ名は、判断が難しいため、誤認して ページがありませんと言われてしまうことも多いかと思います。 問題ある様であればなるべく改善して行きますので、ご報告願います。

  • 更にパッチです。何度もすみません。

パッチに含まれていた不具合を修正頂いた様でありがとうございます。

引用部分の整形処理なんですが、引用中に整形済みテキストが現われることは 全く考慮していませんでした。すみません。
引用部分の整形では、とある wiki で、簡易掲示板への投稿記事に行末改行が 付加されないケースがあり、それに対処するために段落の区切りを探していた んですが、引用中の整形済みテキストが正しく表示できた方が良いと思います のでこの方が良いですね。

また、pcomment で引数無しのときの動作は、ちゃんと作り込まれていません でしたね。すみません。

ただ、`reply' を引数の省略値としてしまって、引数無しのときにも `reply' が指定されているものと看倣してしまうと、リプライできないコメントにラジ オボタンもどきが付加されてしまい、まるでリプライできる様に見えてしまう ので、リプライできない形式 (ラジオボタンもどきを付加しない) で展開する 様にしました。
そのため、pcomment のデフォルトとして `reply' を扱っていた部分を外させ て貰いました。

と言う訳で、

pukiwiki-mode.el.pcomment-announce.patch

を upload しました。 他に、

  • pcomment の展開位置に、表示件数とコメントページへのリンクを表示する 様に修正。
  • 表示モードのバッファを `q' で抜けるときに、インデックスに表示されて いる、バッファが存在することを示す "V" マークを消す様に修正。
  • インデックスバッファの末尾にポイントを移動すると、現在行がハイライ トされなくなってしまっていたのを修正。

しました。
「表示件数とコメントページへのリンク」表示は、コメントページにコメント が存在するか否かで表示内容が異なります。これは、ブラウザで表示させたと きと同じ挙動にしています。

WIKIWIKIへの対応

PukiWikiベースのwikiを利用している大手サイトで、WIKIWIKI.jpがあります。厳密にはPukiWiki Plusを利用していますが、たぶんpukiwiki-modeを使えるだろうということで対応させてみました。
編集・閲覧について動作確認しています。

最大の問題はindexモードが取得できないことで、原因はWIKIWIKIには日付の表示がないことです。これに関連してindexモード画面で日付部分がすべてnilになる問題が発生しますが、実害は(おそらく)ありません。

pukiwiki-fetch-index-regexp- で始まる変数がたくさん定義されているところに次を追加。

(defvar pukiwiki-fetch-index-regexp-wkwk
 "
  • ]*>\\([^<]*\\)
  • " "index として抽出する anchor の正規表現の WIKIWIKI.jp用。 PukiWiki Plus 1.4.7準拠")

    pukiwiki-pukiwiki-version-checkのcondの最後の要素を次のように書き換え。なお、wikiwiki-pは他の部分で日付表示を消すために使っている変数ですので、他にいじらないならば必要ありません。

          (t
           (setq pukiwiki-1-3-p nil)
           (goto-char (point-min))
           (if (re-search-forward "WIKIWIKI" nil t nil)
               (progn (setq pukiwiki-fetch-index-regexp pukiwiki-fetch-index-regexp-wkwk)
                      (setq wikiwiki-p t))
             (setq wikiwiki-p nil)
             (setq pukiwiki-fetch-index-regexp
                   pukiwiki-fetch-index-regexp-1.4-later)))

    他サイトの情報メモ

    pukiwikihelper-mode

    キーバインドの追加や機能の追加などを行うモード

    http://amt.ty.land.to/pukiwiki/pukiwiki.php?pukiwikihelper-mode

    記述子の入力を簡易に

    http://d.hatena.ne.jp/amt/20050330 より

    ■ [emacs][wiki]pukiwiki-modeのカスタマイズ 
    wiki の編集は、Meadow memoで有名な松下さんの快作 pukiwiki-mode)を使っている。
    
    今までは不慣れなこともあって素のままで使っていたのだが、いじっているウチに色々不満も溜ってきた。
    
    矢張りデフォールトで 物理行編集モードでいて欲しい 
    よく使う記述子の入力を簡単に行ないたい。 
    という訳で↓のようにカスタマイズしてみた。ま、誰でも考えるようなことだけれど。
    
    ;;; 20050330  physical-line-mode on
    (add-hook 'pukiwiki-edit-mode-hook
              '(lambda ()
                 (physical-line-mode-on)
    ))
    
    ;(fset 'pukiwiki-insert-newline
    ;   [?\C-e ?& ?b ?r ?\; return])
    (fset 'pukiwiki-insert-newline
          "&br;")
    (fset 'pukiwiki-insert-tab
          "&t;")
    (fset 'pukiwiki-justification-right
          "RIGHT:")
    (fset 'pukiwiki-justification-left
          "LEFT:")
    (fset 'pukiwiki-justification-center
          "CENTER:")
    (fset 'pukiwiki-bgcolor
          "BGCOLOR():")
    (fset 'pukiwiki-color
          "COLOR():")
    (fset 'pukiwiki-size
          "SIZE():")
    
    ;;; キーバインドは enriched-mode を参考にした
    (define-key pukiwiki-edit-mode-map "\M-jo" 'pukiwiki-insert-newline)
    (define-key pukiwiki-edit-mode-map "\M-jj" 'pukiwiki-insert-newline)
    (define-key pukiwiki-edit-mode-map "\M-jm" 'pukiwiki-insert-newline)
    (define-key pukiwiki-edit-mode-map "\M-jt" 'pukiwiki-insert-tab)
    (define-key pukiwiki-edit-mode-map "\M-j\t" 'pukiwiki-insert-tab)
    (define-key pukiwiki-edit-mode-map "\M-jr" 'pukiwiki-justification-right)
    (define-key pukiwiki-edit-mode-map "\M-s" nil) ;;overwrite center-line
    (define-key pukiwiki-edit-mode-map "\M-s" 'pukiwiki-justification-center)
    (define-key pukiwiki-edit-mode-map "\M-jc" 'pukiwiki-justification-center)
    (define-key pukiwiki-edit-mode-map "\M-jl" 'pukiwiki-justification-left)
    (define-key pukiwiki-edit-mode-map "\M-jb" 'pukiwiki-bgcolor)
    (define-key pukiwiki-edit-mode-map "\M-jf" 'pukiwiki-color)
    (define-key pukiwiki-edit-mode-map "\M-js" 'pukiwiki-size)

    *1 emacs-versionは、「GNU Emacs 21.3.1 (powerpc-unknown-linux-gnu) of 2004-08-06 on voltaire, modified by Debian」だそうです。

    添付ファイル: fileview.png 1943件 [詳細]
    filetoday-diff.png 14033件 [詳細]
    filepukiwiki-mode.png 1836件 [詳細]
    filepukiwiki-mode.el 5094件 [詳細]
    filepukiwiki-diff.png 1775件 [詳細]
    fileediff.png 1725件 [詳細]

    リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
    Last-modified: Fri, 08 Oct 2010 22:23:49 JST (1835d)