Emacs Lisp 2

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2007/09/18(火) 15:07:10
socket使って通信すると言うのも一つの方法です。(anthyとかcannaとか)
953デフォルトの名無しさん:2007/09/25(火) 11:01:14
;; django-html-mode.el --- django html mode
(require 'sgml-mode)
     .
(defconst django-html-font-lock-keywords-1
(append
;; html-mode keyword
sgml-font-lock-keywords-1)

"First level keyword highlighting")

(defconst django-html-font-lock-keywords-2
(append
django-html-font-lock-keywords-1
sgml-font-lock-keywords-2))

(provide 'django-html-mode)


.emacsに (load django-heml-mode.el)を追加して
起動すると
Symbol's value as variable is void: sgml-font-lock-keywords-1
というエラーになります
sgml-modeはデフォルトで入っているので理由がわかりません
どういったことが考えられるのでしょうか?
環境はWindows xp emacs-22.1です
954デフォルトの名無しさん:2007/09/25(火) 15:25:32
typo
955デフォルトの名無しさん:2007/09/26(水) 16:11:47
>>954
hemlはまちがいです
956デフォルトの名無しさん:2007/09/26(水) 22:51:48
それ以前に、(load "hogehoge") って感じでダブルクォートで囲んでいないからでは
957デフォルトの名無しさん:2007/09/27(木) 10:49:31
>>956
すいません、それも問題ないです
958デフォルトの名無しさん:2007/09/27(木) 16:37:29
meadowでflymakeを動かす方法をどこかにまとまってないでしょうか?
959デフォルトの名無しさん:2007/09/27(木) 23:58:08
>>958
フツーに動くのでは?
cperl-modeでうまく動かない件については
オレがバグレポート出したよ。返事こないけど。
960デフォルトの名無しさん:2007/09/28(金) 16:11:44
emacs で javascriptの編集がしたくて

http://d.hatena.ne.jp/ZIGOROu/20061114/1163503085

を試してみたのですが
{} を好きなところに書けないとかで使いにくいです
本当にこれが一番のおすすめなのでしょうか?
961デフォルトの名無しさん:2007/09/28(金) 17:12:27
>>960
{}を好きなところってのはインデントの付け方のスタイルの違いなんで気に入らないならしょうがないかもね
深さの方なら js-indent-levelの数値変えればいいんじゃないの?
962960:2007/09/28(金) 21:45:56
>>961
ありがとうございます。
設定済みmeadowだと色をつけて強調とかいっさいされてなかったのですが
Redhat linuxでうごかしたら望みどうりのエディタになってくれました
javascript.el は、確かに便利でした

C:\meadow\site-lisp
にjavascript.elを置いたのがいけなかったのかな
963960:2007/09/28(金) 22:26:10
勘違いしてました
設定済みmeadowを使うとjavascript.el がインストールされていても
*.jsというファイルを読み込むと強制的にcc-modeになってしまうようです
964953:2007/09/29(土) 08:09:43
psgmlを入れていたので'sgml-modeの中身がpsgmlになってたみたいです
お騒がせしました
965デフォルトの名無しさん:2007/09/30(日) 02:11:20
質問です。

 M-x h
 M-x align-regexp [RET] //

と同じことをやりたくて、
describe-functionでalign-regexpを調べたところ、

 (align-regexp beg end regexp &optional group spacing repeat)

と出たので、とりあえず

 (defun Test ()
 (interactive)
 (align-regexp (point-min) (point-max) "//"))

と書いたTest.elというファイルを用意し
load-file後にTestと実行してみたんですが

 align-regexp: Wrong type argument: numberp, nil

と出て使えません。。。
何がマズいんでしょうか?
どなたかお願いしますorz
966デフォルトの名無しさん:2007/09/30(日) 05:43:28
もともとの関数、 align-regexp の定義がマズいっぽい。
これ、他の関数から呼ばれることを想定してない感じ。

・regexp は \\(\\s-*\\) を前置する
・group は数字を渡さなきゃいけなくて、 1 がデフォルト
・spacing も数字を渡さなきゃいけなくて、 align-default-spacing がデフォルトで、これの初期値も 1

って感じの仕様になってる。

とりあえず (align-regexp (point-min) (point-max) "\\(\\s-*\\)//" 1 1) なら動くと思う。
967デフォルトの名無しさん:2007/09/30(日) 08:50:19
>>966
なるほど。
そうだったんですか。

ありがとうございました!
968デフォルトの名無しさん:2007/10/01(月) 09:42:04
質問です:
範囲選択したあと,

C-c C-tで範囲内のすべての行の先頭にタブを追加したい

のですが,どうしたらいいのか教えてください.
969デフォルトの名無しさん:2007/10/01(月) 10:49:45
板違いに気付け
970デフォルトの名無しさん:2007/10/01(月) 15:47:01
>>968
(defun oresama-function-insert-tab-in-head-of-line-on-region ()
"選択した領域のすべての行頭にTABを入れる"
(interactive)
(shell-command-on-region (region-beginning) (region-end) "sed s/^/'C-qTABとかでタブ文字をいれておく'/" nil t)
)
971デフォルトの名無しさん:2007/10/01(月) 20:44:17
(defun my-insert-tab-in-head-of-lines-on-region (begin end)
"選択した領域のすべての行頭にTABを入れる"
(interactive "r")
(goto-char (max begin end))
(let ((begin (min begin end))
(end (point-marker)))
(goto-char begin)
(while (<= (point) end)
(when (bolp) (insert "\t"))
(forward-line 1))
(set-marker end nil)))
とか。
972デフォルトの名無しさん:2007/10/01(月) 22:36:27
string-rectangle でいいんじゃない?
973デフォルトの名無しさん:2007/10/02(火) 00:45:18
>>971 常に (<= begin end)
974デフォルトの名無しさん:2007/10/02(火) 00:51:16
replace-regexpで^を\tに置換するだけで良いと思うんだがなあ。
なんでいろいろややこしい方法考えてるの?
975デフォルトの名無しさん:2007/10/02(火) 01:24:51
(lambda (start end)
  (interactive "r")
  (save-excursion
    (save-restriction
      (narrow-to-region start end)
      (goto-char start)
      (while (re-search-forward "^" nil t)
        (replace-match "\t")))))
976デフォルトの名無しさん:2007/10/02(火) 02:16:46
>>973
interactive に呼んだ場合にはそうだね。
でも他の関数から呼ぶ場合、呼び出し側がその条件を考えなくていいように、こうやる慣習がある。

>>975
narrow-to-region の使い方は参考になった。

ただ、このままだと start が行頭じゃなかった場合でも、必ずそこにタブが入っちゃうね。
narrow-to-region した結果、そこが行頭扱いになっちゃうから。
977デフォルトの名無しさん:2007/10/02(火) 02:55:02
ああそうか。じゃあこんな感じ?
(lambda (start end)
  (interactive "r")
  (save-excursion
    (goto-char start)
    (and (re-search-forward "^" end t)
(save-restriction
  (narrow-to-region (point) end)
  (while (re-search-forward "^" nil t)
    (replace-match "\t"))))))
978デフォルトの名無しさん:2007/10/02(火) 10:21:42
無能ばかりかwww
979デフォルトの名無しさん:2007/10/02(火) 10:29:23
まったくだwww

で、ためしに自分も書き込んでみると、やっぱ似たレベルなんだよなwww
980デフォルトの名無しさん:2007/10/02(火) 12:28:33
>>972 を受けてこんなとか
(lambda (start end)
(string-insert-rectangle start end "\t"))

C-x r t とか。

それでも色々やってみるのは楽しい
981デフォルトの名無しさん:2007/10/02(火) 13:16:49
この場合の問題は、
・start や end が行頭にあることを仮定していいのか
・行頭にない場合がありうるなら、どういう処理が期待されるのか
あたり。

単純に選択した範囲内って条件だと、 start と end それぞれが行頭にない場合を想定しなきゃいけなそう。
で、 start またはそれ以降の最初の行頭から、 end またはそれ以前の最後の行頭まで、各行頭にタブを挿入するってのが妥当かな。
もしかしたら、 start がある行の行頭にもタブ挿入するほうが喜ばれるかもしれないけど。

ってことで、 >>980 を元に、その手の処理を加えてみた。

(lambda (start end)
(interactive "r")
(save-excursion
(goto-char start)
(unless (bolp) (forward-line 1))
(string-insert-rectangle (point) end "\t")))
982デフォルトの名無しさん:2007/10/02(火) 16:57:29
start が行頭でなく、end も同じ行だった場合に (forward-line 1)
で end を通り越しちゃうよ。
983デフォルトの名無しさん:2007/10/02(火) 18:25:42
>>982
なるほど、その状況には気がつかなかった。
その場合、何もしないのが正しいだろうから、対策はこんな感じでいいかな。

(lambda (start end)
(interactive "r")
(save-excursion
(goto-char start)
(unless (bolp) (forward-line 1))
(unless (> (point) end)
(string-insert-rectangle (point) end "\t"))))
984デフォルトの名無しさん:2007/10/02(火) 18:35:39
…書いてから気づいた。
これだと >>982 の状況で更に end が (eobp) を満たす場合、行頭じゃなくても end の位置にタブ挿入しちゃう。

(lambda (start end)
(interactive "r")
(save-excursion
(goto-char start)
(unless (bolp) (forward-line 1))
(unless (> (point) end)
(when (bolp) (string-insert-rectangle (point) end "\t")))))

くらいしなきゃダメだね。
985デフォルトの名無しさん:2007/10/03(水) 10:48:19
みなさん本当にありがとうございます!!

これでReStructuredTextの整形済みブロックが楽々書けます!

986デフォルトの名無しさん:2007/10/05(金) 01:39:19
ふとスレを確認したら、ここはム板のelispスレじゃねーか。
なんか違和感が。
987デフォルトの名無しさん:2007/10/06(土) 15:33:57
(!)
988デフォルトの名無しさん:2007/10/07(日) 11:42:33
scroll-up で、EOBまで移動して、さらにバッファをスクロールして
ウィンドウの下端にカーソルが来るようにしたくて、以下のように
書きました。 eobp でないか、ウィンドウの下端でなければ期待通
りに動作しますが、そうでないときにカーソルが上端へ移動してし
まいます。何が悪いのでしょうか?
Meadow21.4.1使っています。

(defadvice scroll-up
(around eob-scroll-up activate)
(condition-case err
ad-do-it
(error
(if (and (interactive-p)
(not (eobp)))
(goto-char (point-max))
(message "End of Buffer."))
(when (eobp)
(recenter (1- (window-text-height)))
)
nil)))
989988:2007/10/07(日) 11:56:54
すみません。事故解決しました。
990デフォルトの名無しさん:2007/10/07(日) 12:01:03
原因は?
991988:2007/10/07(日) 12:10:58
>>990
recenter する位置が悪いだけでした。
condition-case の外側にしたらできました。

(defadvice scroll-up
(around eob-scroll-up activate)
"バッファ末への移動を可能にし、バッファ末の時 `next-screen-context-lines' を考慮してスクロール"
(condition-case err
ad-do-it
(error
(if (and (interactive-p)
(not (eobp)))
(goto-char (point-max))
(message "End of Buffer."))
))
(and (eobp)
(interactive-p)
(recenter (- next-screen-context-lines)))
nil)
992デフォルトの名無しさん:2007/10/08(月) 17:10:19
/home/myname/
の下に

ダウンロードしたelisp
(本来なら/usr/share/emacs/site-lispとかにおくべきもの)

自作のelispのプログラム

をおくとしたら,どんなフォルダーするべきかの推奨はあるのでしょうか?
993デフォルトの名無しさん:2007/10/08(月) 22:52:57
推奨というのは無いだろうけど、
オレは自作の elisp は ~/mylisp/ に入れていて、
他所から貰ってきたものは ~/elisp/ に入れている。

で、単体で使えるものは ~/elisp/elisp1/ に
パッケージでインストールするものは ~/elisp/elisp2/ に入れている。

~/elisp/subdirs.el を置いておいて、.emacs には
(let ((default-directory "~/elisp"))
(setq load-path (cons default-directory load-path))
(load "~/elisp/subdirs"))
994デフォルトの名無しさん:2007/10/08(月) 23:03:35
>>992
すでに ~/share/man とか ~/lib/ruby とかを作っているので

ダウンロードした方は ~/share/emacs/ で

自作は ~/lib/emacs を作るかな。
995デフォルトの名無しさん:2007/10/08(月) 23:28:05
ダウンロードしたelisp
/home/myname/share/emacs/site-lisp

自作のelisp
/home/myname/local/share/emacs/site-lisp
996デフォルトの名無しさん:2007/10/09(火) 05:24:07
h
997デフォルトの名無しさん:2007/10/09(火) 05:25:11
t
998デフォルトの名無しさん:2007/10/09(火) 05:25:52
p
999デフォルトの名無しさん:2007/10/09(火) 05:26:31
h
1000小倉優子 ◆YUKO3./00M :2007/10/09(火) 05:27:01
1000ならジュースでも飲むか
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。