■掲示板に戻る■ 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50



レス数が1000を超えています。残念ながら全部は表示しません。

SKK専用スレッド

1 :名無しさん@お腹いっぱい。 :2000/11/27(月) 00:40
なんだかんだ言っても、一番使いやすいのはSKK

527 :名無しさん@お腹いっぱい. :01/12/10 21:50
どなたか,SKKIME (98 or 2000) で "、" を "," で,
"。" を "." に変えて使っている方はいらっしゃいませんか.

README に書いてあるのを真似して,
(setq skk-rom-kana-rule-list
'(("." nil ("." . "."))
(",'" nil ("," . ","))))
としても,
(setq skk-rom-kana-rule-list
'(("." nil ".")
(",'" nil ",")))
とやっても,また,SKK の真似して,
(setq skk-rom-kana-rule-list
(append '(("." nil ".") ("," nil ","))
skk-rom-kana-rule-list))
としても,うまくいきません.

528 :名無しさん@お腹いっぱい。 :01/12/10 23:13
>>527
> (setq skk-rom-kana-rule-list
そうそう、なんか SKKIME で skk-rom-kana-rule-list でキー定義ができないよね。
zh zj zk zl z. z- あたりを設定したいのに・・・。

529 :名無しさん@Emacs :01/12/10 23:18
>>527
試してないけど、
default.el (Win98だったら c:\WINDOWS\IME\SKKIME98\CONFIG\にある) を参考に
(setq skk-input-vector [……]) の "、" と "。" を変更してみてはどうか。

530 :529 :01/12/10 23:27
追加。
>>527,528
私は ローマ字カスタマイズ(ていうか漢直)するのに、
default.el の (setq skk-rom-kana-rule-list … ) を直に書き換えてるよ。
オリジナルのバックアップ(& SKKIME の再起動?)を忘れずに。

531 :名無しさん@お腹いっぱい. :01/12/11 00:07
>>529, 530
感謝!
手元の Win98 ではうまくいきました.
これで明日, 会社の W2k でうまくいけば...

532 :名無しさん@お腹いっぱい。 :01/12/14 15:41
CVS で取った xemacs-21.4 だと
Cannot open load file: skk-autoloads
となる :<

533 :名無しさん@お腹いっぱい。 :01/12/16 05:01
複数の Emacs 間で SKK 辞書を共有する方法ってありませんか?
setenv EDITOR emacs としているので、複数の Emacs が立ち上
がることが多いのですが、ある Emacs で登録した単語が他の
Emacs で使えなくてイライラすることが多いんです。(Emacs を
落とす順番によっては .skk-jisyo の内容が消えるし。)

534 :名無しさん@お腹いっぱい。 :01/12/16 06:22
>>533
希望にそえるか分かんないけど
emacsclient
ってのもあるよ?

535 :名無しさん@お腹いっぱい。 :01/12/16 08:06
>>533
俺は export EDITOR='nemacs -nw' してて、
skkinput 使ってます。

536 :名無しさん@お腹いっぱい。 :01/12/16 11:27
>>532
make elc EMACS=path-to-xemacs
してからだと make package も make install-package も
通るよ。

537 :532 :01/12/16 18:34
直ったの確認しました。感謝。

538 :名無しさん@お腹いっぱい。 :01/12/16 21:40
SKKのスレがあったなんて、感動。。
skkimeをwindows 2000 で使ってるんですが、
時間が経つにつれてskkiservのメモリサイズがでかくなっていきませんか?
みなさんどうしてます?

539 :名無しさん@お腹いっぱい。 :01/12/17 00:05
>>533
1 変換する前に辞書をファイルから読み直す (skk-reread-private-jisyo)
2 変換してから辞書をファイルに書き出す (skk-save-jisyo)

この二つを skk-henkan あたりの advice かなんかで
やればできるんじゃないですか.
効率悪いけど.

540 :533 :01/12/17 03:15
>>534

情報ありがとうございます。emacsclient に乗り換えて、さらに EDITOR
が呼ばれる毎に frame を作成するようにしました。(この文章も emacs-
client で書いてます。) なかなか快適ですが、C-x # に慣れるまでちょっ
と時間がかかりそうです。

>>535

うちの netscape-4.76 は skkinput を使うと BUS Error で落ちるので、
skkinput が使えないのですよ。うーん。

>>539

さすがにそれは…遅すぎるような…。

541 :名無しさん@お腹いっぱい。 :01/12/17 03:31
emacsclientってなーに?
どうやってつかうの

542 :名無しさん@お腹いっぱい。 :01/12/17 05:46
>>540
あー。私は C-x # に慣れられなくて、emacsclient の常用を諦めました。
client の時だけ C-x C-c で窓閉じるとかも考えたけど、結局バッファは残るし。

543 :名無しさん@お腹いっぱい。 :01/12/17 19:45
豊中 age

544 :名無しさん@お腹いっぱい。 :01/12/17 22:18
一瞬 BSS ってなんじゃらほいと思った。
ところで某所って此処なんでしょうか(w

545 :名無しさん@お腹いっぱい。 :01/12/18 01:56
>>544
おおむらさんって何者なの?
Emacsen にまつわる人々を誰か解説してくれ。
X-Face 付きで。

546 :名無しさん@お腹いっぱい。 :01/12/18 02:53
>>545
「おおむら ゆう」さん? Meadow掲示板の人
http://www.t3.rim.or.jp/~yutopia/

547 :名無しさん@お腹いっぱい。 :01/12/18 02:54
>>545
「おおむら ゆう」さん? Meadow掲示板の人
ttp://www.t3.rim.or.jp/~yutopia/

548 :547 :01/12/18 02:56
シクジッタ
ttp:の方を使ってくれい

549 :名無しさん@お腹いっぱい。 :01/12/18 03:01
>>547
Meadow の偉い人って認識で当ってる?

550 :名無しさん@お腹いっぱい。 :01/12/18 03:36
>>544
某所はココでしょう。XEmacs のインストールの件とか。

>>545
何者? って言い方はないんじゃ?
SKK(や APEL) でも Meadow へのインストール関係で
makeit.bat 用意してくれたりしてる。

551 :545 :01/12/18 03:57
>>550
すまん。いいかた悪かった。
無償でいろいろ頑張ってくれてる方々に
"何者"はないわな...

自分に対する罰として、これから TUT コードを覚えます...

552 :535 :01/12/18 07:38
>>540
emacsclient で frame 作成しない
( server-start する emacs は X 環境だけど、client は-nw)
方法もあるんですか? もしそうだったら nemacs から
emacs21 に換えたいです。

553 :>>552 :01/12/18 12:20
そこまでいったらスレ違いじゃないか?
emacsスレがかわいそうじゃないか(藁

554 :名無しさん@お腹いっぱい。 :01/12/18 14:16
>>538
skkime(2000用の最新)って
一度ログアウトする
辞書登録に失敗する
と全く変換できなくならない?俺だけか?

555 :名無しさん@お腹いっぱい。 :01/12/18 18:50
親指シフトエミュレータみたいに、スペース+文字の同時打鍵でシフト+文字を
入力できたらなあ。

556 :名無しさん@お腹いっぱい :01/12/18 19:26
>>555
> 親指シフトエミュレータみたいに、スペース+文字の同時打鍵でシフト+文字を
> 入力できたらなあ。

ddskk11.6.0.tar.bz2 の中にある
ddskk-1.6.0/nicoa/README.ja を読むと幸せになれるかも。

557 :名無しさん@お腹いっぱい。 :01/12/18 19:48
開発者の T さん、文章面白いです。
うーむ、NICOLA かぁ。HHK(us版)だしなぁ。

558 :名無しさん@お腹いっぱい。 :01/12/18 21:42
skkinput の fontset Resource(-fontset オプションも)がどうしても
効かないんだけど考えられる原因は?xrdb はしています。

実際には rxvt 上でだけフォントが汚くなるという症状です。
kterm, Mozilla, etc. では大丈夫です。

559 :名無しさん@お腹いっぱい。 :01/12/19 09:22
かなモードでも数字の後の-はーじゃなくて-になると便利だと思いませんか?
例えば
東京都杉並区1ー234ー5


一度 l を押さないとこんな感じになってしまいますよね?
dor fileでどうにかならないのかな〜

560 :名無しさん@お腹いっぱい。 :01/12/19 10:35
便利かもと思って、作ってみた。
どうよ?

(setq skk-rom-kana-rule-list
(cons '("-" nil skk-insert-hyphen)
skk-rom-kana-rule-list))

(defun skk-insert-hyphen (arg)
(interactive "P")
(insert
(let ((c (char-to-string (char-before (point)))))
(cond ((string-match "[0-9]" c) "-")
((string-match "[0-9]" c) "−")
(t "ー")))))

561 :559 :01/12/19 10:38
>>560

お兄さん便利っすよ。
本家のMLに投稿していいっすか?

562 :559 :01/12/19 10:39
そうそう、最後の一行が顔文字に見えるのは
2chのやりすぎですか?

563 :名無しさん@お腹いっぱい。 :01/12/19 10:54
>>561
> 本家のMLに投稿していいっすか?
全然かまわないっす。

564 :名無しさん@お腹いっぱい。 :01/12/19 15:13
ちなみに本家の ML とは一般に京大のほうを指してた筈。
もう終っちゃったけどね。

565 :559 :01/12/19 15:19
あーそうでしたね。
OpenLabの方に投稿しておきました。

566 :名無しさん@お腹いっぱい。 :01/12/19 16:36
>>560
その arg と (interactive "P") の
意味は何なのでしょうか.
自分で作っている時も
これらがないと文句いわれるので
いつも入れますが, 理由がよくわからない.
henkan-point か何かだっけ?

567 :名無しさん@お腹いっぱい。 :01/12/19 17:04
>>560
Emacs の info 見りゃ一発でしょうに。

568 :567 :01/12/19 17:04
間違い、>>566 に向けてでした。

569 :名無しさん@お腹いっぱい。 :01/12/19 17:13
SKK に限らず、Ring 管理下の ML は何故に
あそこまで spam が多いのだろうか。

570 :566 :01/12/19 17:25
interactive の意味がわからない
ということではないですよ. >>567
skk-rom-kana-rule-list から呼び出される関数は
必ず一つの引数付きで呼び出されるので,
関数本体で使わなくても
>>560 さんの skk-insert-hyphen のように
arg が必要になるってことです.

で, この arg が何なのかよくわからないんです.

571 :名無しさん@お腹いっぱい。 :01/12/19 17:31
>>560
↓この方がいいかな。
((string-match "[0-9-]" c) "-")
((string-match "[0-9−]" c) "−")

>>570
使ってないんじゃネーノ?

572 :559 :01/12/19 17:41
>>571
> ↓この方がいいかな。

-が続いた時も-の方がいいですね。
ますます便利に

573 :名無しさん@お腹いっぱい。 :01/12/19 18:17
すげー。2ch と ML が同期してうるなんて...ちょと感動。

574 :名無しさん@お腹いっぱい。 :01/12/19 18:24
>>573
どこでやってんの?
news://news.ring.gr.jp/ring.openlab.skk には見当たらないけど、
これって配送に時間かかってるの?

575 :名無しさん@お腹いっぱい。 :01/12/19 18:32
skk-insert-hyphen、すごく便利。
SKKユーザに全角の英数字使う需要ってあるのかな?
単純にこうしてみたんだけど。

(defun skk-insert-hyphen (arg)
(interactive "P")
(insert
(cond ((skk-ascii-char-p (char-before)) "-")
(t "ー"))))

576 :名無しさん@お腹いっぱい。 :01/12/19 18:58
>>574
ML 入ればいいじゃん。

577 :名無しさん@お腹いっぱい。 :01/12/20 07:23
>>559

数字の後の、と。も ,と.のほ方がよくないですか?
あとは数字の後の/も aあモード じゃなくてそのまま/の方が分数に便利かも

ー → -
、 → ,
。 → .
aあ → /

こんな感じでどうですか?

578 :名無しさん@お腹いっぱい。 :01/12/20 09:21
>>566 さんって、いくつか skk-rom-kana-rule-list 用の
関数を自作してるようですが、具体的に何を作ってるん
ですか? 自分はデフォルトの挙動で満足してしまってるん
ですが、>>560 みたいなのを見ると、もっと利便性を追求
しなくては、という気にもなってきました。

579 :559 :01/12/20 09:23
>>577

、と。はこんなんでいいかは知りませんがとりあえず動いているようです。
なんか、まとめられそうだけどよく分かりません。

(setq skk-rom-kana-rule-list
(cons '("." nil skk-insert-period)
skk-rom-kana-rule-list))

(defun skk-insert-period (arg)
(interactive "P")
(insert
(let ((c (char-to-string (char-before (point)))))
(cond ((string-match "[0-9,.]" c) ".")
(t "。")))))

(setq skk-rom-kana-rule-list
(cons '("," nil skk-insert-comma)
skk-rom-kana-rule-list))

(defun skk-insert-comma (arg)
(interactive "P")
(insert
(let ((c (char-to-string (char-before (point)))))
(cond ((string-match "[0-9,.]" c) ",")
(t "、")))))

580 :名無しさん@お腹いっぱい。 :01/12/20 09:37
えーとですね、char-before はバッファの先頭だと
nil を返すので、適当に (bobp) を入れるなりする必要が
ありますね。あと、char-before に (point) を引数で
渡す必要は別にないかと。(デフォルトです)

581 :580 :01/12/20 09:46
例えば
(defun skk-insert-comma (arg)
(interactive "P")
(insert
(let (c)
(if (bobp)
"、"
(setq c (char-to-string (char-before)))
(if (string-match "[0-9,.]" c)
","
"、")))))
こんな感じかな?
;; buffer の先頭での',' が',' か'、'かは微妙だが

582 :名無しさん@お腹いっぱい。 :01/12/20 11:43
>>581
rewrite してみた。
(defun skk-insert-comma (arg)
(interactive "P")
(insert (cond ((bobp) "、")
((string-match "[0-9,.]" (char-to-string (char-before))) ",")
(t "、"))))

583 :580 :01/12/20 12:10
>>582
あぁ、そう書けばすっきりするかぁ。(let (c ... に
捕われてしまってて汚ないコードを披露してしまった。
匿名な 2ch で良かった。(^^;;
ところで bobp な場合はやっぱ ',' のほうがいいかな。

584 :560 :01/12/20 12:57
まとめてみた。
数字の後に空白があった場合も半角になってくれた方がうれしいかな?
1 - 2 とか。
(setq skk-ascii-or-kanji-alist '(("-" . "ー")
("," . "、")
("." . "。")))
(setq skk-ascii-or-kanji-regexp "[0-9-,.]")

(setq skk-rom-kana-rule-list
(append
(mapcar (lambda (pair)
(list (car pair) nil
`(lambda (x)
(interactive "P")
(skk-insert-ascii-or-kanji ,(car pair) ,(cdr pair)))))
skk-ascii-or-kanji-alist)
skk-rom-kana-rule-list))

(defun skk-insert-ascii-or-kanji (ascii kanji)
(insert (cond ((bobp) kanji)
((string-match skk-ascii-or-kanji-regexp
(char-to-string (char-before))) ascii)
(t kanji))))

585 :582 :01/12/20 13:05
>>584
ぐは、先を越された。

>>583
>>560 のパクりっす。

半角と判断されるところで
強制的に全角文字を入れる方法が欲しいところ。

586 :580 :01/12/20 13:29
;; 汚名^H^H名誉挽回のチャンス (^^;;
>>585
(setq skk-rom-kana-rule-list
(append
(mapcar #'(lambda (pair)
(list (car pair)
nil
`(lambda (arg)
(interactive "P")
(skk-insert-ascii-or-kanji ,(car pair) ,(cdr pair) arg))))
skk-ascii-or-kanji-alist)
skk-rom-kana-rule-list))

(defun skk-insert-ascii-or-kanji (ascii kanji arg)
(insert (cond (arg kanji)
((bobp) kanji)
((string-match skk-ascii-or-kanji-regexp
(char-to-string (char-before))) ascii)
(t kanji))))

としたら (arg を利用しただけ) C-u でいけた。

>>584
mapcar と backquote 使うとは。確かにこれがスマートかな?
初心者には読めないけど。
;; mapcar を2重に使ってるコードとか見ると憧れてしまう。

587 :560 :01/12/20 13:33
>>586
俺もそんな感じに変えてたとこでした。
でも、C-u だと "-" で "ー" が出せないですよね。
そこをどうしたものか。

588 :560 :01/12/20 13:37
ちょっと書き忘れ。
>>586
> mapcar と backquote 使うとは。確かにこれがスマートかな?
last-command-char を使った方法も考えたんだけど、そっちの方がよかったかな。

589 :580 :01/12/20 13:50
>>587,588
ほんとだ、'ー'が出ない。あと細かいとこだけど、
C-u で4倍にならないし(オリジナルも)。

あと、僕も last-command-char (というか、this-command-keys)
使った方法をボーっと考えてました。
mapcar とどっちがいいでしょうね?

590 :580 :01/12/20 15:37
;; やっと割とマトモなのができた

(setq skk-rom-kana-rule-list
(append skk-rom-kana-rule-list
'(("-" nil skk-insert-ascii-or-kanji)
("," nil skk-insert-ascii-or-kanji)
("." nil skk-insert-ascii-or-kanji))))

(defun skk-insert-ascii-or-kanji (&optional arg)
(interactive "*p")
(setq arg (if arg
(car arg)
1))
(let ((c (char-to-string last-command-char)))
(while (> arg 0)
(insert (cond ((bobp) c)
((string-match skk-ascii-or-kanji-regexp
(char-to-string (char-before))) c)
(t (cdr (assoc c skk-ascii-or-kanji-alist)))))
(setq arg (1- arg)))))

としてはどうでしょう?
;; skk-rom-kana-rule-list は平易にするため敢えてこうしてます。
;; dot.skk 的にもこのほうがいいのでは?
skk-ascii-or-kanji-alist, skk-ascii-or-kanji-regex は
以前のを使います。
強制的に jis なのを使うには 'Q' で▽に入るってので妥協
でダメですか? 例えば '-' を20回入れたいって事もあるだろうし。
;; skk-ascii-or-kanji-(alist|regexp) の 'kanji' がちょっと
;; ひっかかる...

591 :558 :01/12/20 17:04
>>558
> skkinput の fontset Resource(-fontset オプションも)がどうしても
> 効かないんだけど考えられる原因は?xrdb はしています。
>
> 実際には rxvt 上でだけフォントが汚くなるという症状です。
> kterm, Mozilla, etc. では大丈夫です。

これですが、rxvt*mfontn に jisx0201.1976-0 なフォント指定を追加したら
なおりました。何故 skkinput の全角フォントのマッチングが rxvt の半角
フォントリソースの影響を受けるのか理解できませんが、まあいいや。

# でも肝心の rxvt の方はそのままじゃ半角カナ扱えないんですね。
# 知らなかった。

592 :560 :01/12/20 17:13
>>590
> としてはどうでしょう?
> ;; skk-rom-kana-rule-list は平易にするため敢えてこうしてます。
できれば、skk-ascii-or-kanji-alist を使って
(setq skk-rom-kana-rule-list
(append (mapcar (lambda (x)
(list (car x) nil 'skk-insert-ascii-or-kanji))
skk-ascii-or-kanji-alist)
skk-rom-kana-rule-list))
こうしたいなぁとか。
そうすれば、skk-ascii-or-kanji-alist と同期がとれるので。

> 強制的に jis なのを使うには 'Q' で▽に入るってので妥協
これは全然 OK でしょう。

> ;; skk-ascii-or-kanji-(alist|regexp) の 'kanji' がちょっと
> ;; ひっかかる...
名前がって事ですか?適当につけたんで勝手に変えちゃっていいっすよ。

593 :580 :01/12/20 17:30
>できれば、skk-ascii-or-kanji-alist を使って
[...]
>そうすれば、skk-ascii-or-kanji-alist と同期がとれるので。

それは確かにあります。まぁ、symbol名 の件も
skk-rom-kana-rule-list も、実際に dot.skk に追加される方に
任せてしまいたいかなぁと僕は思ってます。だって命名センス
無いし、どーいうのが適切かイマイチ分らないから。
;; という事でスイマセン。> committer の方

594 :580 :01/12/20 17:33
;; 何度もすいません。
あと、bobp な時に ',.-' にしちゃいましたけど、
他との整合性からこれも '、。ー' にすべきだったな。

595 :582 :01/12/20 17:39
>>590
すばらしい。

> 強制的に jis なのを使うには 'Q' で▽に入るってので妥協
おっけーです。
つーか、Q 知らなかった。

596 :名無しさん@お腹いっぱい。 :01/12/20 17:45
>>595
> つーか、Q 知らなかった。

M-x skk-tutorial

597 :582 :01/12/20 17:52
(´-`).。oO(tutorial やったのは何年前だろう……)

598 :名無しさん@お腹いっぱい。 :01/12/20 18:46
なんだか盛んだね
やっぱSKKは人気あるね。

599 :名無しさん@お腹いっぱい。 :01/12/20 23:11
>>591
> # でも肝心の rxvt の方はそのままじゃ半角カナ扱えないんですね。
> # 知らなかった。

自分は、半角カナ対応にさせたパッチを見付けてきて使っています。
最新のバージョンに対してでなくて、2.6.3 へのパッチですけど、
別にさしたる不便はありません。

元のパッチは、jisx0201 だけでなくて jisx0212 にも対応していますが、
自分は jisx0212 の部分は要らなかったので、jisx0201 の部分だけを抜き
出してパッチを当てています。

# エラー出力が間違っていたのもあるけど…

パッチは google で検索すれば見つかると思います。

しかし、半角カナは 2ch のおかげで当分滅びそうもありませんね(w

600 :名無しさん@Emacs :01/12/20 23:43
>>596 を見て
久しぶりに C-x t してみた。補完機能があるんだね。
忘れてた。便利そう。

# navi2ch 中に SKK モードにして「あれ?」とか思ったりして欝です(w

601 :名無しさん@Emacs :01/12/20 23:47
全角文字の後のビックリマークが半角なのはチョット

602 :538 :01/12/21 00:21
>>554
> 一度ログアウトする 辞書登録に失敗する と全く変換できなくならない?
うーん、俺の場合は、全く変換できなくなるのは、skkiservがアクセス違反で死んだ時だけだなあ。
あ、俺はskkimeはデフォルトIMEにはしてないけど、それが関係あるのかな。
本当はデフォルトIMEにしたいんだけど、それやると、ログアウトの時に、プロファイルを書き戻せませんでしたエラーがイベントログに。。。

最近アップデートされてないのは、やっぱり作者の人、忙しいんだろうね。
あのままでXPで動くのかなあ。。。あれが無いと仕事にならん。

603 :580 :01/12/21 12:22
なんか、シンボル名と実際の動作があまり違うのは
いかんよなぁ、とか、"," は skk-current-touten を
呼ぶべきだよなぁとか考えてたら膨らんでしまいました。(^^;;;

(defvar my-skk-dynamic-insert-rule-list
'(("." ("." . skk-current-kuten))
("," ("," . skk-current-touten))
("-" ("-" . "ー")))
"*状況に応じて動的に切り替えるルール。
car が入力された時、現在のカーソルの直前の文字が `my-skk-dynamic-insert-regexp-alist'
にマッチすれば左側が、マッチしなければ右側がバッファに挿入される。")

;; caadr とか書くのはアレなので、適当な docstring です。
;(setq my-skk-dynamic-insert-rule-list
; '(("." ("." . skk-current-kuten))
; ("," ("," . skk-current-touten))
; ("-" ("-" . "ー"))))
;; なんて事も(あんま意味無いけど)出来ます。


(defvar my-skk-dynamic-insert-regexp-alist
'(("." . "[0-9-,.]")
("," . "[0-9-,.]")
("-" . "[0-9-,.]"))
"*`my-skk-dynamic-insert-rule-list' を用いて動的に切り替える条件の正規表現。
car が入力された時、現在のカーソルの直前の文字が cdr にマッチすれば
`my-skk-dynamic-insert-rule-list' での左側が、マッチしなければ
右側がバッファに挿入される。")

(defun my-skk-dynamic-insert (&optional arg)
(interactive "*p")
(let* ((num (if arg (car arg) 1))
(c (char-to-string last-command-char))
(regexp (cdr (assoc "," my-skk-dynamic-insert-regexp-alist)))
(alist (car (cdr (assoc c my-skk-dynamic-insert-rule-list)))))
(while (> num 0)
(skk-insert-str (cond ((bobp)
(my-skk-func-to-str (cdr alist)))
((string-match regexp
(char-to-string (char-before)))
(my-skk-func-to-str (car alist)))
(t
(my-skk-func-to-str (cdr alist)))))
(setq num (1- num)))))

;; こんなの書かずとも SKK 側に適当な関数がありそうだが分からんかった
(defun my-skk-func-to-str (arg)
(if (char-or-string-p arg)
arg
(funcall arg nil)))

(setq skk-rom-kana-rule-list
(append skk-rom-kana-rule-list
(mapcar (lambda (l)
(list (car l) nil 'my-skk-dynamic-insert))
my-skk-dynamic-insert-rule-list)))

604 :580 :01/12/21 12:46
XEmacs だと "[0-9-,.]" じゃダメで "[0-9,.-]" にする必要が
ありました。

(defvar my-skk-dynamic-insert-regexp-alist
'(("." . "[0-9,.-]")
("," . "[0-9,.-]")
("-" . "[0-9,.-]"))
"*`my-skk-dynamic-insert-rule-list' を用いて動的に切り替える条件の正規表現。
car が入力された時、現在のカーソルの直前の文字が cdr にマッチすれば
`my-skk-dynamic-insert-rule-list' での左側が、マッチしなければ
右側がバッファに挿入される。")

に置き換えてください。
;; いちおー Nemacs から XEmacs の上まで動いてるみたい。
;;; Nemacs では ddskk-e18 branch

605 :580 :01/12/21 12:55
;; 阿呆なミスしてました。これで最後??

(defun my-skk-dynamic-insert (&optional arg)
(interactive "*p")
(let* ((num (if arg (car arg) 1))
(c (char-to-string last-command-char))
(regexp (cdr (assoc c my-skk-dynamic-insert-regexp-alist)))
(alist (car (cdr (assoc c my-skk-dynamic-insert-rule-list)))))
(while (> num 0)
(skk-insert-str (cond ((bobp)
(my-skk-func-to-str (cdr alist)))
((string-match regexp
(char-to-string (char-before)))
(my-skk-func-to-str (car alist)))
(t
(my-skk-func-to-str (cdr alist)))))
(setq num (1- num)))))

606 :580 :01/12/21 17:11
my-skk-dynamic-insert-regexp-alist を廃止し、
my-skk-dynamic-insert-rule-list と my-skk-dynamic-insert を
変えてみました。
改行している時の扱いは好みが分れるかもしれません。
;; regexp に \n が入ってるのもどうかな?。最初とまどうかも。

(defvar my-skk-dynamic-insert-rule-list
'(("." (("[-0-9,.\n]" . ".")
(t . skk-current-kuten)))
("," (("[-0-9,.\n]" . ",")
(t . skk-current-touten)))
("-" (("[-0-9,.\n]" . "-")
("[0-9,.−]" . "−")
(t . "ー"))))
"*`my-skk-dynamic-insert' を用いて動的に入力する条件。
バッファに挿入される文字は入力に対応した連想リストで決まる。
具体的には、現在のカーソルの直前の文字(改行していれば
さらにその前の文字)が連想リストの car にマッチした時、
その cdr がバッファに挿入される。
`t' は全ての文字にマッチする。")

(defun my-skk-dynamic-insert (&optional arg)
(interactive "*p")
(let* ((num (if arg (car arg) 1))
(c (char-to-string last-command-char))
(alist (nth 1 (assoc c my-skk-dynamic-insert-rule-list)))
(regexp-list (mapcar (lambda (l)
(if (eq (car l) t)
".\\|\n"
(car l)))
alist))
(default-str (cdr (assq t alist)))
str)
(setq str (if (bobp)
(my-skk-func-to-str default-str)
(let ((c-b (char-to-string (char-before (if (bolp)
(1- (point))
(point)))))
(idx 0))
(while (not (string-match (nth idx regexp-list)
c-b))
(setq idx (1+ idx)))
(my-skk-func-to-str (cdr (nth idx alist))))))
(while (> num 0)
(skk-insert-str str)
(setq num (1- num)))))

607 :名無しさん@お腹いっぱい。 :01/12/21 17:28
Windowsで、ずーっと SKKIME を使ったり止めたりしてます(笑)

SKKIMEって突然数秒凍ったりしませんか?Windows全体が。この凍る現象、普通
はなんとか耐えられるレベルなんですけど、たまに凍ったら困るようなこともあ
ってMS-IMEに戻し、また耐えられなくなってSKKに戻し…。

skkiserv がどんどん大きくなっていくのが原因なのかな。それにしても全体が止らなくても…。
Windowsだから仕方ないのかな。98の時も今の2000でも変わりません。

608 :560 :01/12/22 00:39
>>508

決定稿は>>606でいいのですか?
dot.skkに載せるのはどれにします?

609 :560 :01/12/22 00:40
上の>>508は>>580の間違いね

610 :559 :01/12/22 00:53
しかも自分は>>560じゃなくて>>559だった

611 :580 :01/12/22 01:22
改行の扱いが決め打ちなのはあんまりなので、
オプション設けるようにしました。

(defun my-skk-dynamic-insert (&optional arg)
(interactive "*p")
(let* ((num (if arg (car arg) 1))
(c (char-to-string last-command-char))
(alist (nth 1 (assoc c my-skk-dynamic-insert-rule-list)))
(regexp-list (mapcar (lambda (l)
(if (eq (car l) t)
".\\|\n"
(car l)))
alist))
(default-str (cdr (assq t alist)))
str)
(setq str (if (bobp)
(my-skk-func-to-str default-str)
(let ((c-b (char-to-string (char-before
(if (and (bolp)
(not my-skk-dynamic-insert-ignore-CRLF))
(1- (point))
(point)))))
(idx 0))
(while (not (string-match (nth idx regexp-list)
c-b))
(setq idx (1+ idx)))
(my-skk-func-to-str (cdr (nth idx alist))))))
(while (> num 0)
(skk-insert-str str)
(setq num (1- num)))))

(defvar my-skk-dynamic-insert-ignore-CRLF nil
;; Emacs の内部では CRLF でも '\n' だけど。
"*`my-skk-dynamic-insert' でカーソルが行頭にある時、改行を無視して前の文字を参照するか。")

あとは
(setq skk-rom-kana-rule-list ... >>603 参照
(defun my-skk-func-to-str ... >>603 参照
(defvar my-skk-dynamic-insert-rule-list ... >>606 参照

ただ、気になるのは my-skk-dynamic-insert-rule-list が
書式として分りにくくないかどうかです。関数は中身が複雑でも
構わないけど、変数の指定が難解だと結局使ってもらえないので。
あと、>>603 で挙げた初期値はかなり適当なので、全角数字の条件は
省く or 他のにもつける(その場合句読点も対応させる)必要があります。
それと(正規表現の中に) '\n' も有り・無しのどっちがいいか?
;; これは ML での話でいいかもしれません。

my-skk-dynamic-insert-rule-list があんまり難解であれば
>>590 をベースに一部手直し & シンボル名書換えしたほうが
いいと思います。

612 :559 :01/12/22 01:26
>>611

>>611と>>603と>>606全部必要ってことですか?

613 :580 :01/12/22 01:32
>全部必要ってことですか?

いえ、それぞれから必要なのだけ抜き出してください。
>>611 で、どれから何をってのは分りますよね?

ところで >>559 さん自身(他の方の意見も大募集ですが)
は変数の指定、難しく感じます??

614 :名無しさん@お腹いっぱい。 :01/12/22 02:02
>>607
Windowsが数秒間操作不能になるのって、SKKIMEのせいだったのか。。
Officeつかうときに限ってそうなるので、MSのせいかと思ってたYo!
って、良く考えたら、Office使う時しかSKKIMEバリバリ使ってないじゃん。

615 :580 :01/12/22 02:08
ちなみにインデントを弄るとちょっとは読み易いと思う。
docstring もさっきの修正に追随してみた。

(defvar my-skk-dynamic-insert-rule-list
'(("."
(("[-0-9,.\n]" . ".")
(t . skk-current-kuten)))
(","
(("[-0-9,.\n]" . ",")
(t . skk-current-touten)))
("-"
(("[-0-9,.\n]" . "-")
(t . "ー"))))
"*`my-skk-dynamic-insert' を用いて動的に入力する条件。
バッファに挿入される文字は入力に対応した連想リストで決まる。
具体的には、現在のカーソルの直前の文字が連想リストの car にマッチした時、
その cdr がバッファに挿入される。
但し、改行していて、かつ `my-skk-dynamic-insert-ignore-CRLF' が nil で無ければ、
さらにその前の文字をマッチングに用いる。
`t' は全ての文字にマッチする。")

あと、さっきのコードに論理値逆転してた(頭回ってないなぁ...)
とこがあったので、その修正ついでに全て載せます。よって
これと次の記事以外は参照する必要はないです。>>559
;; 改行多すぎっていわれた...

616 :580 :01/12/22 02:09
(defvar my-skk-dynamic-insert-ignore-CRLF t
;; Emacs の内部では CRLF でも '\n' だけど。
;; あと、無視する改行の数は1つだけです。(これが挙動として自然だと思う。
"*`my-skk-dynamic-insert' でカーソルが行頭にある時、改行を無視して前の文字を参照するか。")

(defun my-skk-dynamic-insert (&optional arg)
(interactive "*p")
(let* ((num (if arg (car arg) 1))
(c (char-to-string last-command-char))
(alist (nth 1 (assoc c my-skk-dynamic-insert-rule-list)))
(regexp-list (mapcar (lambda (l)
(if (eq (car l) t)
".\\|\n"
(car l)))
alist))
(default-str (cdr (assq t alist)))
str)
(setq str (if (bobp)
(my-skk-func-to-str default-str)
(let ((c-b (char-to-string (char-before
(if (and (bolp)
my-skk-dynamic-insert-ignore-CRLF)
(1- (point))
(point)))))
(idx 0))
(while (not (string-match (nth idx regexp-list)
c-b))
(setq idx (1+ idx)))
(my-skk-func-to-str (cdr (nth idx alist))))))
(while (> num 0)
(skk-insert-str str)
(setq num (1- num)))))


(defun my-skk-func-to-str (arg)
(if (char-or-string-p arg)
arg
(funcall arg nil)))

(setq skk-rom-kana-rule-list
(append skk-rom-kana-rule-list
(mapcar (lambda (l)
(list (car l) nil 'my-skk-dynamic-insert))
my-skk-dynamic-insert-rule-list)))

長々と(汚いコードを)何度も申し分けない >all

617 :559 :01/12/22 09:19
>>615
>>615と616を.skkに書いてバイトコンパイルしてみたのですが

Symbol's value as variable is void: skk-rom-kana-rule-list

と出るのは気にしなくていいですか?

618 :580 :01/12/23 13:22
>>617 気にしないでいいと思うけど。
少し修正 & my-skk-func-to-str を廃止
;; SKK 本体へ統合の方向でって、どうしよう、困ったな...。

(defun my-skk-dynamic-insert (arg)
(let* ((str (char-to-string last-command-char))
(alist (nth 1 (assoc str my-skk-dynamic-insert-rule-list)))
(regexp-list (mapcar (lambda (l)
(if (eq (car l) t)
".\\|\n"
(car l)))
alist))
(default-data (cdr (assq t alist)))
(str-before (unless (bobp)
(char-to-string (char-before
(if (and (bolp)
my-skk-dynamic-insert-ignore-CRLF)
(1- (point))
(point))))))
(idx 0)
(data (cond
;; my-skk-dynamic-insert-rule-list を後から修正して
;; 対応するエントリが無くなった場合の fail safe
((null alist)
str)
((null str-before)
default-data)
(t
(while (not (string-match (nth idx regexp-list)
str-before))
(setq idx (1+ idx)))
(cdr (nth idx alist))))))
(if (functionp data)
(funcall data arg)
data)))

直前の文字列が「今日は」だったら'@' を skk-today とか
出来るようにしようかとも妄想したけど、使う人いるだろうか??

619 :580 :01/12/23 18:44
さっきまでのは一行目が空行の時に2行目の行頭で
エラーになるバグがあった。
diff しても小さくならんので全部のっけます。

(defun my-skk-dynamic-insert (arg)
(let* ((str (char-to-string last-command-char))
(alist (nth 1 (assoc str my-skk-dynamic-insert-rule-list)))
(regexp-list (mapcar (lambda (l)
(car l))
alist))
(default-data (cdr (assq t alist)))
(pos (if (and (bolp)
my-skk-dynamic-insert-ignore-CRLF)
(1- (point))
(point)))
(str-before (unless (< pos 2)
(char-to-string (char-before pos))))
(idx 0)
(data (cond
;; my-skk-dynamic-insert-rule-list を後から修正して
;; 対応するエントリが無くなった場合の fail safe
((null alist)
str)
((null str-before)
default-data)
(t
(while (not (let ((regexp (nth idx regexp-list)))
(or (eq regexp t)
(string-match regexp str-before))))
(setq idx (1+ idx)))
(cdr (nth idx alist))))))
(if (functionp data)
(funcall data arg)
data)))

620 :580 :01/12/23 23:19
妄想を実装してみた。

(defun my-skk-dynamic-insert (arg)
(let* ((str (char-to-string last-command-char))
(alist (nth 1 (assoc str my-skk-dynamic-insert-rule-list)))
(regexp-list (mapcar (lambda (l)
(car l))
alist))
(default-data (cdr (assq t alist)))
(idx 0)
(data (cond
;; my-skk-dynamic-insert-rule-list を後から修正して
;; 対応するエントリが無くなった場合の fail safe
((null alist)
str)
((bobp)
default-data)
(t
(while (not (save-match-data
(save-excursion
(let ((regexp (nth idx regexp-list))
pos)
(when (and (bolp)
my-skk-dynamic-insert-ignore-CRLF)
(backward-char))
(setq pos (point))
(or (eq regexp t)
(and (re-search-backward regexp nil t)
(string= (buffer-substring-no-properties (point) pos)
(buffer-substring-no-properties (match-beginning 0)
(match-end 0)))))))))
(setq idx (1+ idx)))
(cdr (nth idx alist))))))
(if (functionp data)
(funcall data arg)
data)))

使用例:

(setq my-skk-dynamic-insert-rule-list
'(("."
(("[-0-9,.\n]" . ".")
("[−0-9,.]" . ".")
(t . skk-current-kuten)))
(","
(("[-0-9,.\n]" . ",")
("[−0-9,.]" . ",")
(t . skk-current-touten)))
("-"
(("[-0-9,.\n]" . "-")
("[−0-9,.]" . "−")
(t . "ー")))
("@"
(("今日は" . skk-today)
(t . "@")))))

621 :名無しさん@お腹いっぱい。 :01/12/24 05:16
おもろい事やってるね。>>620 を拡張して
12.3 * 45.6 の後の時だけ = で計算するように
してみようとおもったけど、re-search-backward って
結構クセがあるね。
"[^0-9]\\([0-9]+\\.\\([0-9]+\\)?\\) ?\\([*/+-]\\) ?\\([0-9]+\\.?[0-9]*\\)"
とすると上のにはマッチするけど、12*45.6 には
マッチしなくなってしまう。
my-skk-dynamic-insert を利用せずに skip-chars-backward
を利用した独自関数作ったほうが早いか。

622 :名無しさん@お腹いっぱい。 :01/12/24 05:27
>>621
なんで右項と左項の正規表現が違うの?

\\<\\([0-9]+\\.?[0-9]*?\\)\s ?\\([*/+-]\\)\s ?\\([0-9]+\\.?[0-9]*\\)
とかじゃ駄目なの?
よくわかってないのでsage

623 :名無しさん@お腹いっぱい。 :01/12/24 05:30
>>620
ルールのとこに関数とか一般的な変数も置けたらおもしろいんじゃない?
モード毎に入力の意味変えたり出来そうで。

624 :580 :01/12/24 07:02
>>623
確かに面白そうですね。でも rule-list の仕様を
どうしたらいいかな?
後、関数だったら add-hook みたいな形式だと
funcall で既存の関数でも lambda 式でも呼べる
みたいで楽だけど、でも lambda 式だと rule-list が
異様にゴチャゴチャしそう。
変数は (eval (quote VAL)) すればいけるみたい。
ただ、僕は lisp (もそれ以外も)全然詳しくないので
今のままだと例えば

(setq my-skk-dynamic-insert-rule-list
'(("."
(("[-0-9,.\n]" . ".")
((func-foo . function) . "。")
((val-bar . variable) . ".")
(t . skk-current-kuten)))))

みたいに明示的にしないとダメです。あまり
嬉しくないですね。あと変数や関数の返り値が t だったら
ある文字にする場合と、返り値をそのまま使う場合と用意しないと。
;; これは (func-foo . function)というコンスセルを止めて
;; (func-foo function t)みたく3番目の引数で指定すればいいか。

誰かやってみませんか?
それと仕様募集中です。

625 :名無しさん@お腹いっぱい。 :01/12/24 08:55
>>624

似たようなことしてる、Wanderlust の wl-draft-config-exec だと、
stringp だったら、正規表現と見なして、それ以外は eval しちゃってる。

それを参考にして..
戻り値をそのまんま使う場合、cdr が nil なら、ってのでいいような。
空文字入力は "" って線で。

(setq my-skk-dynamic-insert-rule-list
'(("." (("[-0-9,.\n]" . ".") # stringp がマッチだよん。
(((func-foo) . "。") # eval で ok
(((func-bar 1 2) . "○") # eval で ok
((val-bar . ".") # eval で ok
((hoge-mode . "") # eval で ok
((get-kuten) . nil) # eval で ok 戻り値使う。
(t . skk-current-kuten))))))) # eval で ok


どうでしょう。

626 :名無しさん@お腹いっぱい。 :01/12/24 08:58
>>625
括弧の対応変でした...

(setq my-skk-dynamic-insert-rule-list
'(("." ("[-0-9,.\n]" . ".") # stringp がマッチだよん。
((func-foo) . "。") # eval で ok
((func-bar 1 2) . "○") # eval で ok
(val-bar . ".") # eval で ok
(hoge-mode . "") # eval で ok
((get-kuten) . nil) # eval で ok cdr ->nil なので戻り値使う。
(t . skk-current-kuten)))) # eval で ok

です。


次100 最新50 (10:00PM - 03:00AM の間一気に全部は読めません)

read.cgi ver5.26+ (01/10/21-)