[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/25 03:24 / Filesize : 216 KB / Number-of Response : 877
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Emacs Part 39



1 名前:名無しさん@お腹いっぱい。 [2011/11/29(火) 17:50:44.24 ]
前スレ

Emacs Part 38
hibari.2ch.net/test/read.cgi/unix/1308635178/

554 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 17:45:38.45 ]
>>553
ほれ

;; popwin 管理下におく
(add-to-list 'popwin:special-display-config `(,sdic-buffer-name))

;; sdic-display-buffer 書き換え
(defadvice sdic-display-buffer (around sdic-display-buffer-normalize activate)
"sdic のバッファ表示を普通にする。"
(let ((p (or (ad-get-arg 0)
(point))))
(and sdic-warning-hidden-entry
(> p (point-min))
(message "この前にもエントリがあります。"))
(goto-char p))
(display-buffer (get-buffer sdic-buffer-name)))

555 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 17:53:07.75 ]
>>554
ありがとでも sdic-describe-word-at-point がちょっと変な気がする

556 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 17:59:14.72 ]
>>555
ほれ。あとちょっと挙動違ってた部分もついでになおした。

;; sdic-display-buffer 書き換え
(defadvice sdic-display-buffer (around sdic-display-buffer-normalize activate)
"sdic のバッファ表示を普通にする。"
(setq ad-return-value (buffer-size))
(let ((p (or (ad-get-arg 0)
(point))))
(and sdic-warning-hidden-entry
(> p (point-min))
(message "この前にもエントリがあります。"))
(goto-char p)
(display-buffer (get-buffer sdic-buffer-name))
(set-window-start (get-buffer-window sdic-buffer-name) p)))


557 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 18:14:46.00 ]
追加。閉じる時の変なチラチラも消える。


(defadvice sdic-other-window (around sdic-other-normalize activate)
"sdic のバッファ移動を普通にする。"
(other-window 1))

(defadvice sdic-close-window (around sdic-close-normalize activate)
"sdic のバッファクローズを普通にする。"
(bury-buffer sdic-buffer-name))


558 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 18:20:47.72 ]
>>554
>(add-to-list 'popwin:special-display-config `(,sdic-buffer-name))

(add-to-list 'popwin:special-display-config `(,sdic-buffer-name ,sdic-window-height))
に直したら大分良くなった

559 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 18:21:28.63 ]
ミスった
(add-to-list 'popwin:special-display-config
`(,sdic-buffer-name :height ,sdic-window-height))


560 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 18:33:53.57 ]
ありがてえ・・・

561 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 19:08:58.15 ]
速攻でコード書いてくれて凄腕って思うだろ?
こいつらみんな無職なんだぜ……

562 名前:545 mailto:sage [2012/01/06(金) 19:46:26.97 ]
>>548
ありがとうございます。確認してみました。

(define-generic-mode 'my-mode
'(";")

こういう書き出しではじまるgeneric-modeで
;の出力される位置は行頭行末とも適切だとわかったのですがただ行頭が;;になりません
普通generic-modeでこう設定すると行頭は;;となるのでしょうか



563 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:19:12.42 ]
>>562
emacs-lisp-mode みてみたら、どうやら
comment-add って変数で ; の数を制御しているみたい。
モードのセットアップしてるところで
(setq (make-local-variable 'comment-add) 1) ってやってみて。

564 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:19:20.55 ]
ここがサポート掲示板か

565 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:20:28.45 ]
まちがった
setq じゃなくて set ね

566 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:23:51.57 ]
にわかはるびきちが引き取れって言ってるだろうが!!

567 名前:545 mailto:sage [2012/01/06(金) 20:28:48.11 ]
>>563
ありがとうございます。意図した通りの結果が出てきました!

568 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:31:57.02 ]
きちぼんは誰かに献本されなかったのだろうか。
思うにあいつかなりドケチだよな。

569 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:41:56.80 ]
書店が献本したがレビューが後回しにされてる
d.hatena.ne.jp/rokujyouhitoma/20110816/1313468638

lispじゃなくて普通の方だな

570 名前:539 mailto:sage [2012/01/06(金) 21:11:16.68 ]
>>542-543 >>551
ありがとうございます。save-match-data の使い方を勉強します。

>>541
説明が不足でした。重複している処理なので
whileのたぐいで一度だけ書けばどうにかならないかと悩んでいました。
書き方は再帰でもloopでもかまいませんでした。

571 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 21:23:48.68 ]
>>570
save-match-data は >>542 が string-match 使った時に混入しただけで
search-forward 使う分には入れる必要ないかと。

572 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 00:03:43.68 ]
あとは bf-mode が popwin 対応すればもう勝利は目前だな。



573 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 00:07:29.32 ]
必死でアピールしてるな。

574 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 00:30:53.33 ]
bf-modeみたいなメンテナのはっきりしないelispは埋もれていく定め

575 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 01:04:50.46 ]
もしかして eval-after-load の中のフォームってバイトコンパイルされなかったりする?

576 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 01:23:09.55 ]
てst

577 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 10:32:37.89 ]
Android 版ありますか?

578 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 10:42:25.69 ]
iOS版は確かあったけどAndroid版はまだじゃないかなあ
と思ったら一応出来ないことはないみたい

www.emacswiki.org/emacs/EmacsOnAndroid

579 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 11:44:15.55 ]
emacs から emacs を立ち上げれば
elisp だけでの並列プログラミングが実現出来るんじゃないか?
マルチスレッドじゃなくマルチプロセスだけど。

580 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 11:46:26.85 ]
Androidのバージョンとか不明ですが
Emacs for Android
ttp://d.hatena.ne.jp/MATSUZAKI/20101104/1288882148

581 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 12:25:49.29 ]
>>579
emacs24からはポート指定でサーバ立ち上げられるし
server-eval-at なんてのも追加されてるからあながち間違ったアプローチじゃないとおもう。

582 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 14:14:17.26 ]
replace-regexpについて質問します
このようなテキストがあるところで

akasatana
hamayarawa
ikisitini

「元のテキスト 元のテキスト」のようにテキストを複製するかのような処理を
正規表現の置換で行いたいのですがうまくいきません
置換対象の文字列検索はre-builderでは大丈夫でした

replace-regexp [ret]
\\(.+\\) [ret]
\\1 \\1 [ret]

何を修正すればよいのでしょうか



583 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 14:21:09.16 ]
\ を \\ と書く時ってのはどういう理由でそれが必要だったのか考え直せ

584 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 14:39:22.04 ]
emacs の正規表現はもうちょっとなんとかならんのかと常々思うわ。

585 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 15:03:07.77 ]
似たような問題はどんな言語いじっててもあるからね。

586 名前:582 mailto:sage [2012/01/07(土) 16:00:50.27 ]
>>583
なるほど、re-builderは""内に書くから\\(\\)と書かなければならなくて、
replace-regexpは""内に書かないから\(\)と書くということですね
すっきりしました

587 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 16:21:58.76 ]
ELPAの作者がemacsをcommon lispで書き直そうとしているみたい
The Cliffs of Inanity ? Emacs and Common Lisp tromey.com/blog/?p=709
そうなると長い目で見ればcommon lispを知っておいた方がよさそう

588 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 16:26:03.17 ]
EmacsをCommon Lispでって・・・・
10年前に Erik Naggum が言ってたのと同じことやん。
歴史は繰り返す。


589 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 16:53:47.36 ]
climacs があるけれど、elisp の便利な資産が使えないからなあ。

590 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:10:02.39 ]
>>588
このあたりの話が関係するか。emacsをcommon lispで、っていうのは真っ正面から議論されていたのかな?
Island Life - 「Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。」
blog.practical-scheme.net/shiro/20100620a-lisp-speed

591 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:15:34.53 ]
guile emacs の方がいいよ

それはそうと emacs 24で`image-library-alist' is renamed to `dynamic-library-alist' ってなってるの見て
ああもう本当にストールマンいなくなったんだなと実感した

592 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:22:54.27 ]
elisp to cl emasc なコンバータを作るとか。



593 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:32:50.08 ]
>>584
正規表現リテラルでもありゃあいいのにな。

594 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:51:12.15 ]
>>591のストールマンなら聞いたことがあるが他の人は寡聞にして知らない
emacsの開発歴史というよりも
どういう人がemacsにどういう影響を与えたか、を聞きたい

595 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 18:00:10.33 ]
まず名前があがるのがるびきちさんだな

596 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 18:03:58.85 ]
>>594
ja.wikipedia.org/wiki/Emacs
結構ちゃんと人物も記載されてるよ。

597 名前:545 mailto:sage [2012/01/07(土) 19:07:20.82 ]
define-generic-modeの質問をした者ですが関連する質問をします
test_func {
  test
}
のように{が行末に来たときは次の行をスペース2つ分(かタブ1つ分)右にシフトさせて
}が行頭に来たときには左にシフトさせる設定はdefine-generic-mode向けに何かありますか
(上の例では全角スペースを使っています)
単体のemacsでは設定できずyasnippetのようなものを併用しなければならないでしょうか

598 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 19:52:42.00 ]
>>597
凝ったことしたくなったら generic-mode 使わないで素でmajor-mode作ってもいいような気もするけど

{ を入力したときに勝手に整形されるようにするのか、
改行したときに勝手にそうなるようにしたいのか、
C-i だの TAB だの入力して indent したときにそうしたいのかによって微妙に入り口は異なると思うけど
基本的には自力で整形処理を書かなきゃいけないと思うよ。

c-mode の c-indent-line の辺り読んで頑張れ

599 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 19:59:36.41 ]
indent-line-function に前の行の { の位置をみてインデント位置を調節する関数を設定する。

600 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 22:41:57.81 ]
gnusわかりにくすぎる

601 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 22:46:09.78 ]
ttp://blog.livedoor.jp/dankogai/archives/51763038.html

(require 'cl)
; cl

(defun mapbetween (f l)
(let (y)
(mapl #'(lambda (x)
(when (cadr x)
(push (funcall f (cadr x) (car x)) y)))
l)
(nreverse y)))
; mapbetween

(mapbetween #'+ '(1 2 3 4 5))
; (3 5 7 9)

(mapbetween #'- '(0 1 4 9))
; (1 3 5)


602 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 22:47:16.57 ]
いや、ダンコーガイに直接コメントしてやれよ



603 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 22:47:31.32 ]
>>527

もう解決してるかもしれないけど、別のスクリプト (qlgrep) に
lgrep を包むって方法は採れそう。

#!/bin/sh

lgrep "$@" > /dev/null 2>&1

さらに別の関数 (find-lgrep-dired) も用意する。

(defun find-lgrep-dired (dir regexp)
(interactive "DFind-grep (directory): \nsFind-grep (grep regexp): ")
(find-dired dir
(concat "-type f -exec qlgrep - "
(shell-quote-argument regexp)
" "
(shell-quote-argument "{}")
" "
;; Doesn't work with "+".
(shell-quote-argument ";"))))


604 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 12:25:43.23 ]
which-func-mode ってなんであんなにお馬鹿なんだろう

605 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 12:29:35.16 ]
汎用だからね。

606 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 13:46:03.01 ]
minibuffer だけスクロールバー無しって出来るんでしょうか?

607 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 14:16:32.10 ]
>>597
解説とか殆ど見たことないけど、emacs23からは
インデントカスタマイズ用の smie ってライブラリが入ってるみたい。
つかったことないけどドキュメント読んだ感じ結構凝ったこと出来そうね。

www.gnu.org/software/emacs/manual/html_node/elisp/SMIE.html#SMIE

emacs24 の octave-mode とかは実際に使ってるみたいだから見てみたけど
文法定義から始まる重量級のライブラリだなこれ

608 名前:名無しさん@お腹いっぱい。 [2012/01/08(日) 17:34:12.70 ]
diredでファイル一覧を表示させた後,そこに表示されたあるファイルについ
て,フルパス付きのファイル名をkill-ring-saveする方法はあるでしょうか。
ちょっとわかりにくかもしれませんが,例えば,diredで一覧表示した.emacs
に適用したなら,/home/hogehoge/.emacs という情報をコピペできる関数を探
しています。


609 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 17:49:12.34 ]
lookupってもう終わってるの? これの次は?

610 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 17:51:00.10 ]
>>608
C-0w

611 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 19:00:19.17 ]
>>608
C-u 0 w

w runs the command dired-copy-filename-as-kill, which is an
interactive compiled Lisp function in `dired.el'.

It is bound to w.

(dired-copy-filename-as-kill &optional ARG)

Copy names of marked (or next ARG) files into the kill ring.
The names are separated by a space.
With a zero prefix arg, use the absolute file name of each marked file.


612 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 19:51:29.65 ]
>>609
まだ開発続いてると思うけど。




613 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 20:38:47.17 ]
>>609
lookup て辞書検索できる lookup のことかな。
次といっても dict と epwing が理解できればそれで十分に思える、自分には。

614 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 20:54:03.71 ]
epwing自体がおわコンというか…
変換スクリプトもメンテされてないし、入手不可能だったり。

615 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 20:57:40.10 ]
ネット辞書から引けたほうがまだいいわな。
ただ emacs-w3m がいまいちだからねえ。

emacs-xwidget + webkit が安定して使えるようになったらうっはうはなんだが・・・

616 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 21:14:40.45 ]
>>615
それなら普通にブラウザ使う方がいい。

617 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 21:56:44.63 ]
>>612
RHEL6のx64でまともに動かんかった
emacsが悪いのか外部が悪いのかよく分からん
4文字の単語を退いたときだけ駄目とか変な挙動いろいろで調べる気が起きん

618 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:02:12.17 ]
>>616
むしろブラウザだけでいい

619 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:21:01.13 ]
firefox+keysnailにファイルエディット機能つければemacsの代わりに使えるんじゃね?

620 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:25:56.90 ]
むしろfirefoxにemacsを組み込んだ方が

621 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:34:39.67 ]
ブラウザにEmacs組み込むのと
Emacsにブラウザ組み込むのどっちが楽だろう

622 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:42:25.03 ]
>>621
後者は既出感が…



623 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:44:19.10 ]
ちゃんとJavaScript 解釈してかつ elisp からブラウザの状態弄れるのがいいなあ

624 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:48:48.36 ]
なんか面白い elisp ないかしらん

625 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 01:29:57.86 ]
>>624
seimei.el
tako.el
trr.el


626 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 01:43:55.29 ]
なんであれだけ発行部数出てないんだろうねぇ。

627 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 02:55:49.39 ]
>>621
Javascript PC Emulator
ttp://bellard.org/jslinux/

で、ブラウザ上でQEmacsが使えます。

~ # which emacs
/usr/bin/emacs

~ # ls -l /usr/bin/emacs
lrwxrwxrwx 1 root root 2 May 14 2011 /usr/bin/emacs -> qe

~ # ls -l /usr/bin/qe
-rwxr-xr-x 1 root root 108240 May 16 2011 /usr/bin/qe

~ # strings /usr/bin/emacs | fgrep -i version
QEmacs version 0.3.1, Copyright (c) 2000-2003 Fabrice Bellard


628 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 03:17:21.81 ]


【スタッフ募集】路線名を擬人化させたエロゲ【鉄オタも】
hayabusa.2ch.net/test/read.cgi/news4vip/1326032146/

【wiki】
www38.atwiki.jp/train_erog/

【避難所】
jbbs.livedoor.jp/game/54004/

629 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 08:39:46.95 ]
>>625
tako.el みて普通に日本語のシンボル名作れることに驚愕した

630 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 12:53:58.93 ]
関数の中で直接呼び出されている関数*だけ*置き換える方法ってありませんでしょうか?

(defun greeting (msg who) (message "%s, %s" msg who))
(defun hello (who) (message "===hello===") (greeting "hello" who))

みたいになっている時、 hello の中で直接呼ばれてる message だけ置き換えたいのです。
flet を使うと greeting の中の message まで置き換えられてしまいます。

関数定義をそのまま引っ張ってきて書き換えたものを再定義したり fset したりする以外に方法はありませんでしょうか?


631 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 12:58:14.67 ]
関数を around アドバイスして flet ってやったらできないんだっけ?


632 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 12:58:40.71 ]
あ、馬鹿なこと言ったごめ。



633 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 13:57:27.13 ]
全然うまい方法が思いつかなかったので、じゃあせめて置き換え後の関数で
呼び出し元の関数を判断して挙動を変えようと思ったのですが、
今度は呼び出し元の関数の調べ方がわかりません。

b.hatena.ne.jp/IMAKADO/elisp/callee/ とかは見つかったんですが
肝心のリンク先が壊れて見れないという・・・トレースとか書いてあるから
バックトレースの内容を参照するってことなんでしょうかね・・難しい。

634 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 14:42:51.45 ]
なんかものすごく力技な感じになりましたが一応実装できたので貼っておきます。
なんかもっとスマートな方法はないのか・・・・

(defun greeting (msg who) (message "%s, %s" msg who))
(defun hello (who) (message "===hello===") (greeting "hello" who))

(defun callee ()
"呼び出し元の関数名を文字列で返す"
(let ((bt (split-string (with-output-to-string
(backtrace)) "^ *\\|\n" t)))
(while (and bt
(not (string-match "^callee\\>" (pop bt)))))
(cadr bt)))

(defadvice hello (around ad-hello-no-heading activate compile)
"hello が直で呼び出している message だけ ignore に置き換える"
(let ((org-message (symbol-function 'message)))
(flet ((message (format-string &rest args)
(if (string-match "^ad-Orig-hello\\>" (callee)) ;; advice の場合は ad-Orig-* になる
(ignore)
(apply org-message format-string args))))
ad-do-it)))


635 名前:597 mailto:sage [2012/01/09(月) 16:29:31.21 ]
>>598-599 >>607
ありがとうございます。
indent-line-function等で制御するよりも>>607を改変すればよさそうだと思いました
ですが改変がうまくいきません

  if (x>0) {
    proc1()
    proc2()
  } else if (x<0) {
    proc3()
    proc4()
  } else {
    proc5()
    proc6()
  }

こういう風に自動的にインデントさせようとして
www.gnu.org/software/emacs/manual//html_node/elisp/SMIE-Grammar.html#SMIE-Grammar
の("then" insts "end")を("{" insts "}")、
("if" exp "then" inst "else" inst)を("if" exp inst "else" inst)、
(insts (insts ";" insts) (inst))を(insts (insts insts) (inst))、
に書き換えましたが、{を入力してC-jを押すと(newline-and-indent)
(wrong-type-argument integer-or-marker-p nil)
とエラーが出ました
このif (test) {procs} else if (test) {procs} else {procs} を
(procsは改行区切りです)
インデントさえできればいいのですが
どうすればよいでしょうか


636 名前:597 mailto:sage [2012/01/09(月) 16:39:18.77 ]
あと、調べていて気づいたのですが
www.emacswiki.org/emacs/IndentingC#toc1
このcc modeをdefine-generic-modeで作成したモードで
使えればよさそうだと思いました
というのも整えようとしているのがc++ likeのコードに似ているからです
上のsmie改変がうまくいかないときにはこれで十分です

define-generic-modeで作成したモードの初期化部分で
このcc modeの機能を利用することはできるでしょうか

637 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 16:39:19.97 ]
ちなみにサンプルの設定ではうまく動いたの?

smieって何やってるのかわからなかったけど
smie-setup で indent-line-function 設定してるのな。
ちょっと真面目に使い方勉強してみるか。

638 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 16:40:28.70 ]
>>636
特定のモードを元にモードを作る場合は
define-derived-mode を使うといいよ。

639 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 17:09:57.88 ]
>>635
"}"とかが token として認識されてないんじゃないの?


640 名前:597 mailto:sage [2012/01/09(月) 17:50:59.31 ]
>>637
はい。サンプルは動きました。↓の各セクションから以下の設定をコピペして
www.gnu.org/software/emacs/manual//html_node/elisp/SMIE.html#SMIE
(eval-when-compile (require 'cl))
(require 'smie)
(defvar sample-smie-grammar
(defvar sample-keywords-regexp
(defun sample-smie-forward-token ()
(defun sample-smie-backward-token ()
インデント分をこう設定し
(defvar sample-indent-basic 4)
メジャーモードを作成する (define-generic-mode の初期化部分で
(list (function (lambda () (add-hook 'hoge-mode-hook (lambda ()
(smie-setup sample-smie-grammar #'sample-smie-rules)
と書きました。
あと、>>635の(insts (insts ";" insts) (inst))は書き換えないままでした
書き換えるとエラーになります すみません

>>639
確かにtokenの設定が抜け落ちていました。ですが
(defvar sample-keywords-regexp
(regexp-opt '("+" "*" "," ";" ">" ">=" "<" "<=" ":=" "="))) を
(defvar sample-keywords-regexp
(regexp-opt '("+" "*" "," ";" ">" ">=" "<" "<=" ":=" "=" "{" "}" "(" ")")))
に書き換えましたがだめでした

>>638
なるほど、ただキーワードの色づけ設定は引き継ぎたくないのでdefine-gereric-modeで設定しました
インデントとキーフックのみ特定のモードを引き継ぐという機能があればいいのですが

641 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 18:02:41.16 ]
>>640
自分とこでちょっと動かしてみたいけど長そうだから
↓ここにコピペしてURL教えてくれ
paste.lisp.org/new/emacs

642 名前:597 mailto:sage [2012/01/09(月) 19:05:20.29 ]
書きました
paste.lisp.org/display/126938
よろしくお願いします




643 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 19:42:06.40 ]
うおお、難しい
とりあえずコメントの ';' と 区切り文字の ';' が干渉してるのと
sample-smie-forward-token で a+b みたいなのが一気に通過しちゃうのが気になったけど
じっくり取り組まないとわからんなあ・・・

644 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 21:32:24.24 ]
サンプルのまんまで実行しても emacs 23 では wrong-type-argument が出るねえ。
emacs 24 で実行するとエラーは出ないけどちゃんと動いてるような感じがしない。
サンプルそのままで実行してもぶら下がりelseがちゃんと処理できてないように見えるなぁ。

645 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 00:11:10.77 ]
>>629
skk に含まれてる skk-ja-names.el とか見てみろよ。
こんなだぞ。

(defalias 'SKKモード 'skk-mode)
(defalias 'SKKのバージョン 'skk-version)
(defalias 'SKKのバグを報告する 'skk-submit-bug-report)
(defalias 'SKKのチュートリアル 'skk-tutorial)


646 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 11:26:09.75 ]
load-path の追加に normal-top-level-add-subdirs-to-load-path を使うのを
止めたら起動時間が 500〜700ms 近く早くなって感動した

647 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 15:26:23.62 ]
emacs使いの大半はcapslockをctrlにしている?
それともそのまま?

648 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 15:30:40.42 ]
そんなの調査のしようがないからなぁ。

649 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 15:34:21.26 ]
大半かどうかは知らんけどEmacs関係なく一定数いることは確か。
MSなんか公式でCTRL<=>CAPS逆にするドライバ配布してるし。

これも呪いの一つだとは思う。

650 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 17:29:15.59 ]
なんでこれでエラーがでるんでしょう?
(string-match (migemo-get-pattern "popw") "popwin")

ここまでは大丈夫なのに。
(string-match (migemo-get-pattern "pop") "popwin")



651 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 17:37:09.14 ]
失礼しやした。
キャッシュがぶっ壊れていただけだった。

652 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 18:44:24.40 ]
>>649
MSのドライバ配布なんて聞いたことがなかったから調べてみた
www.atmarkit.co.jp/fwin2k/win2ktips/1182ctrl2cap/ctrl2cap.html
ふむふむこれか。楽ちんなツールもあるもんだな



653 名前: 忍法帖【Lv=34,xxxPT】 mailto:sage [2012/01/10(火) 18:48:32.71 ]
入れ替えじゃなくてcapslockをctrlにしたい

654 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 19:51:36.16 ]
職場なんかだと交換よりCAPS潰すの方が
ちょっと同僚が叩いた時とかに面倒がなくていいわ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<216KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef