のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,841人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレEmacs Part 41

    emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    351 : 名無しさん@お腹 - 2012/10/11(木) 19:43:42.67 (+16,-29,-49)
    >>347
    最近は結構複窓も使ってる。
    windows.el や elscreen もどきの簡単なウィンドウ構成保存スクリプトとか
    popwin とかも使ってるけどたまに盛大にウィンドウ構成ぶっこわれることあるし
    352 : 名無しさん@お腹 - 2012/10/11(木) 20:18:00.53 (-1,-29,-52)
    tmuxでrootと一般ユーザで2枚開きっぱなし。OSかEmacsのバージョンアップするまで。
    353 : 名無しさん@お腹 - 2012/10/11(木) 20:21:04.43 (+48,+25,-14)
    やっぱターミナルの人が多いのか
    354 : 名無しさん@お腹 - 2012/10/11(木) 20:30:30.28 (-1,-29,-11)
    emacs 立ちあげっぱなしの人って何かのパッケージ削除するような場合は
    一々 makunbound とか fmakunbound とかしてまわるの?
    355 : 名無しさん@お腹 - 2012/10/11(木) 20:35:01.69 (+55,+27,-12)
    削除しなきゃいけないパッケージを使う場合だけ別に起動する。(めったにない)
    356 : 名無しさん@お腹 - 2012/10/11(木) 20:42:27.63 (+32,-29,-1)
    起動しっぱなしの場合 session.el とかも不要になるのか
    357 : 名無しさん@お腹 - 2012/10/11(木) 20:53:09.88 (+39,-30,-39)
    >>351
    なるほど。うちはウィンドウを生成させずに全部フレームで管理してる
    もし窓が不意に出てきてもWMの操作で消せる

    (setq pop-up-frames t)
    (setq pop-up-windows nil)
    358 : 名無しさん@お腹 - 2012/10/11(木) 21:09:17.58 (+63,+29,-18)
    >>357
    タイル型WMだと結構ありかなって気もする
    NTEmacs でやったら結構うっとおしいことになった
    359 : 名無しさん@お腹 - 2012/10/11(木) 22:51:05.92 (+62,+29,-34)
    >>356
    逆なのだ
    やむをえず落とさなきゃならなくなったとき
    起動しっぱなしで開いてる大量のファイルや位置情報を
    退避復旧するためにその手のコードが必要不可欠になる
    少なくとも俺は
    360 : 名無しさん@お腹 - 2012/10/12(金) 19:15:13.44 (+35,+7,-4)
    MicroEmacsの僕も仲間に入れてください
    361 : 名無しさん@お腹 - 2012/10/13(土) 03:04:51.07 (+6,-29,-45)

    WinでNTEmacsを使おうと思ってるんだけど、IMEパッチって当てた方がいいの?
    Google日本語入力使ってるんだけど
    362 : 名無しさん@お腹 - 2012/10/13(土) 08:34:52.59 (-1,-29,-18)
    おいちょっと教えて
    color-moccur使いたいんだけど*Moccur*バッファで
    候補移動しても元バッファの表示が切り替わらないんだわ
    本来は該当行にジャンプするよね?
    363 : 名無しさん@お腹 - 2012/10/13(土) 10:27:32.27 (-1,-29,-39)
    >>361
    NTEmacsスレで聞いたほうがいいと思うけど、
    GoogleIMEなら素のNTEmacsでも別にそんなに問題なく使えるよ。
    364 : 名無しさん@お腹 - 2012/10/13(土) 11:09:35.61 (-1,-29,-26)
    >>361
    grupackのNTEmacsを使えばいいよ
    パッチ適用済みだし
    365 : 名無しさん@お腹 - 2012/10/13(土) 11:16:41.45 (-6,-29,-12)
    gnupackな。
    366 : 名無しさん@お腹 - 2012/10/13(土) 11:33:37.46 (+0,-28,-12)
    grupackってなんかすごそうだなw
    367 : 名無しさん@お腹 - 2012/10/13(土) 17:55:03.85 (+3,-29,-47)
    IMEのON/OFFでemacsのカーソル色変えてるんだが、
    gnupackとGoogle IMEだと取り合いになってうまくいかないんだよなぁ。
    前gnupackスレでも尋ねたんだがうまくいかなかった。
    368 : 名無しさん@お腹 - 2012/10/13(土) 18:58:47.60 (-6,-29,-15)
    grupackだとうまくいくかも
    369 : 名無しさん@お腹 - 2012/10/13(土) 19:10:55.82 (+51,+28,-14)
    ウィザード級パッケージとは…
    370 : 名無しさん@お腹 - 2012/10/13(土) 19:50:10.89 (+34,+16,+0)
    牛乳パック
    371 : 名無しさん@お腹 - 2012/10/13(土) 22:44:44.82 (+63,+30,+8)
                         ■■■■■■■■
                      ■■■■■■■■■■■■
                     ■■■■■■■■■■■■■■
                    ■■■■■■ ~~ ■■■■■■
                  ■■■■■■~~~~~~■■■■■■
                 ■■■■■ ~~~~~~~~ ■■■■■
                 ■■■■■   ■■~~■■   ■■■■■
               ■■■■■  ■■■■~~■■■■  ■■■■■
               ■■■■          ||          ■■■■ 呼んだ?
              ■■■■■   〓〓〓〓||〓〓〓〓   ■■■■■
              ■■■■   〓〓     ||    〓〓   ■■■■
              ■■■■        //  \\       ■■■■
              ■■■■      //( ●● )\\     ■■■■
              ■■■■    // ■■■■■■ \\   ■■■■
              ■■■■■  / ■■■■■■■■ \  ■■■■■
              ■■■■■   ■/〓〓〓〓〓〓\■   ■■■■■
              ■■■■■■ ■ /▼▼▼▼▼▼\ ■ ■■■■■■
              ■■■■■■■■■ ▼▼▼▼▼▼ ■■■■■■■■■
               ■■■■■■■■■   ■■   ■■■■■■■■■
               ■■■■■■■■■■■■■■■■■■■■■■■
               ■■■■■■■■■■■■■■■■■■■■■■■■
                ■■■■■■■■■■■■■■■■■■■■■■
                  ■■■■■■■■■■■■■■■■■■■■
                  ■■■■■■■■■■■■■■■■■■■■
    372 : 名無しさん@お腹 - 2012/10/14(日) 03:32:24.41 (+3,-29,-52)
    バッファ内に唯一でてくる
    *test foo
    のような*一つとそれに続く行末までの文字列を(elispで処理できるよう)取得し、
    そのあとでその行を削除したいのですが、どうすればよいでしょうか

    ただし、
    **hoge
    **bar
    のようにバッファ内には*が二つ以上続くものは何度も出てくるのですが
    それらには何も影響を与えたくないです
    373 : 名無しさん@お腹 - 2012/10/14(日) 08:27:35.91 (+3,-30,-165)
    * 一つが必ず行頭に出て、必ず他の文字が続くなら、簡単な正規表現一発でいけるね。

    (save-excursion
    (goto-char (point-min))
    (save-match-data
    (search-forward-regexp "^[*][^*]")
    (let ((text (buffer-substring (line-beginning-position) (line-end-position))))
    (forward-line 1)
    (delete-region (match-beginning 0) (point))
    text を使う処理
    )))

    行頭以外とかも考えるなら、 * の列を探して、長さ 1 だった場合にだけ処理する、ってのが簡単かな。
    374 : 名無しさん@お腹 - 2012/10/14(日) 11:35:54.06 (+9,-30,-50)
    ありがとうございます。理解できました。
    気になったのですが、save-match-dataとsearch-forward-regexpを組み合わせて処理するのと
    replace-regexpだけで処理することにはどういう違いがあるのでしょうか

    375 : 名無しさん@お腹 - 2012/10/14(日) 11:57:14.63 (-2,-30,-36)
    すみません前段はre-search-forward と replace-match の間違いでした
    376 : 名無しさん@お腹 - 2012/10/14(日) 12:44:54.21 (+4,-30,-38)
    単に(re-search-forward "[^*]\\(\\*[^*\n][^*\n]*\\)" nil t)じゃダメなのか?
    377 : 名無しさん@お腹 - 2012/10/14(日) 15:57:12.55 (+38,-30,-63)
    >>374-375
    replace-regexp の docstring に書いてあるように、これは対話的に使うためのコマンド。
    push-mark や undo-boundary を呼んでるから、以降の編集作業に影響するかも。

    >>376
    対象がバッファ先頭とかにあると一致しなそう。
    378 : 名無しさん@お腹 - 2012/10/14(日) 20:59:17.26 (+63,+29,-35)
    >>377
    なるほど、replace-regexpでは単なる置換以上のことをしてしまうのですね
    なぜ対話的にしか使わないかと疑問に思っていましたがそうだったのですか
    379 : 名無しさん@お腹 - 2012/10/14(日) 21:48:30.58 (+3,-30,-94)
    NTEmacsスレ過疎ってるのでこっちで聞かせてください
    大学の勉強用にNTEmacs入れて、その後でCygwin入れたんですが、Error (initialization): User nas no home directoryが表示されるようになりました
    Cygwin入れる時に環境変数HOMEを追加したのが関係してるんでしょうか?
    問題なく動きますが気に掛かります
    380 : 名無しさん@お腹 - 2012/10/14(日) 22:21:57.16 (-1,-29,-44)
    gnupackのNTEmacsならhome directoryが自動的に設定される(相対パスで)
    windows環境ならそちらを使えばよいのでは?
    381 : 名無しさん@お腹 - 2012/10/14(日) 22:34:21.37 (+57,+29,-24)
    レスサンクスです。
    インストール手順に関して情報が溢れていたので、まずgnupackでないやつでやっていました。
    今度また時間が出来たら試してみます。
    382 : 名無しさん@お腹 - 2012/10/15(月) 00:45:15.24 (-2,-30,-13)
    (ceiling (/ 11 2))
    この結果が5になります。
    common lispでは6になりました
    これはemacsにバグがあるということですか
    383 : 名無しさん@お腹 - 2012/10/15(月) 00:53:53.36 (-1,-29,-12)
    まず (/ 11 2) の結果を見てみ
    384 : 名無しさん@お腹 - 2012/10/15(月) 04:29:48.15 (+16,-30,-237)
    whitespace.elのlines-tailを使いたいのだけれど、モード毎に文字数は変えたい。
    けれども以下のようにしても上手くいかないんですが、何故でしょうか?

    (defun set-whitespace-line-column (mode column)
    (let ((hook (intern (concat (symbol-name mode) "-hook"))))
    (add-hook hook
    (lambda ()
    (setq whitespace-line-column column)))))

    (let ((lis '((emacs-lisp-mode 100) (lisp-mode 150)))) ; デフォルトではfill-columnのままがいい
    (mapcar (lambda (x) (apply set-whitespace-line-column x))
    lis))

    ; (c-mode nil) とかするとc-modeでは無効とかなったりすると嬉しいけどやり方がわからない。。。
    385 : 名無しさん@お腹 - 2012/10/15(月) 08:43:04.54 (+17,-30,-118)
    >>384 ちょっとだけ

    (defun set-whitespace-line-column (mode column)
    (let ((hook (intern (concat (symbol-name mode) "-hook"))))
    (add-hook hook
    `(lambda ()
    (setq whitespace-line-column ,column)))))

    あるいは Emacs 24 系で lexical-binding を使うか。
    386 : 名無しさん@お腹 - 2012/10/16(火) 01:34:49.36 (+18,-30,-51)
    >>384
    > ; (c-mode nil) とかするとc-modeでは無効とかなったりすると嬉しいけどやり方がわからない。。。
    (kill-local-variable 'whitespace-line-column)
    387 : 名無しさん@お腹 - 2012/10/16(火) 05:02:23.98 (+4,-30,-176)
    >>385
    lambdaがclosureを生成しないなんて・・・

    (lambda ()
    (lexical-let ((column column))
    (if column
    (setq whitespace-line-column column)
    (kill-local-variable 'whitespace-line-column)))))))

    だと駄目なんですね。(当たり前だけど。)http://emacswiki.org/emacs/DynamicBindingVsLexicalBinding を見てみましたが、
    lambdaにclosureを生成させるには lexical-binding を使うしかないんですかね。(cl使っても無理?)
    388 : 名無しさん@お腹 - 2012/10/16(火) 05:04:40.39 (+4,-30,+0)
    >>386
    kill-local-variable だとdefalut値(fillcolumn使うとか書いてるくせにwhitespace.elには80でhard codeしてる・・・)
    を使うのでうまくいきません。結局次の様にしました。

    (make-variable-buffer-local 'whitespace-style)
    (setq-default whitespace-style
    '(face
    tabs spaces newline trailing space-before-tab space-after-tab
    space-mark tab-mark newline-mark
    lines-tail))
    (defun set-whitespace-line-column (mode column)
    (let ((hook (intern (concat (symbol-name mode) "-hook"))))
    (add-hook hook
    `(lambda ()
    (if ,column
    (setq whitespace-line-column ,column)
    (setq whitespace-style
    (srfi-1:remove (lambda (x) (eq 'lines-tail x))
    whitespace-style)))))))
    (let ((lis '((emacs-lisp-mode nil))))
    (mapc (lambda (x) (apply #'set-whitespace-line-column x))
    lis))

    ;; srfi-1:remove
    (defun srfi-1:remove (pred xs)
    (loop for x in xs
    unless (funcall pred x)
    collect x))
    389 : 名無しさん@お腹 - 2012/10/16(火) 05:31:17.16 (+5,-30,-132)
    >>385 >>386
    ありがとうございました。

    ところで、変数に関しては lexical-let を使えばいいとして、関数内関数はどうすればいいんでしょう。

    (defun f (&rest args)
    (defun aux (lis)
    ...)
    (aux args))

    (defun g (x y)
    (defun aux (x y)
    (... (mapcar #'f '(...))))
    (aux x y))

    とかやって意味不明なエラーを前に数時間を無駄にしたよ…
    f-aux, g-auxとかするというのはナシで。

    http://lists.gnu.org/archive/html/help-gnu-emacs/2010-12/msg00269.html

    (let ((fac (lambda (x) (if (zerop x) 1 (* x (funcall fac (1- x)))))))
    (funcall fac 10))

    これはちょっときもちわるい。あんまりdynamic bindingに依存したくない。
    390 : 名無しさん@お腹 - 2012/10/16(火) 05:36:35.12 (+3,-30,-198)
    あー、こうやればいいのか。

    (defun set-whitespace-line-column (mode column)
    (let ((hook (intern (concat (symbol-name mode) "-hook"))))
    (add-hook hook
    (lexical-let ((column column))
    (lambda ()
    (if column
    (setq whitespace-line-column column)
    (setq whitespace-style
    (srfi-1:remove (lambda (x) (eq 'lines-tail x))
    whitespace-style))))))))
    391 : 名無しさん@お腹 - 2012/10/16(火) 09:03:47.02 (+4,-29,-17)
    関数内関数なら flet とか labels とかつこうたらいいんじゃないかな。
    cl だけど。
    392 : 名無しさん@お腹 - 2012/10/16(火) 15:11:13.07 (-3,-29,-14)
    flet や labels なんて使うやつは馬鹿です。
    393 : 名無しさん@お腹 - 2012/10/16(火) 17:13:55.36 (-1,-29,-18)
    みんなはauto-completeとかyasnippetとか使ってる?
    できるだけデフォルトで使いたい気持ちもあるんだけど便利にしたい気もする
    394 : 名無しさん@お腹 - 2012/10/16(火) 19:28:57.45 (+10,-30,-230)
    >>391
    そもそもCL系では関数内関数をschemeみたく自然に書けないんですね。

    (defun my-map (proc &rest lis)
    (flet ((aux (proc lis)
    (mapcar proc (car lis))))
    (aux proc lis)))

    (defun mul2 (lis)
    (flet ((aux (x)
    (* 2 x)))
    (my-map (lambda (x) (aux x))
    lis)))

    (mul2 '(1 2 3))
    ; => error! wrong-number-of-arguments (lambda (proc lis) (block aux (mapcar proc (car lis)))) 1)

    emacs lispだとfletやlabels使ってもだめ。CLだとどっちでもちゃんと動くのに。
    395 : 名無しさん@お腹 - 2012/10/16(火) 19:35:57.53 (+3,-30,-178)
    メモ。
    http://d.hatena.ne.jp/Nobuhisa/20090123/1232720807

    (require 'cl)

    (defun foo (x)
    (print "YesWeCan")
    (if (> x 0)
    (labels ((foo (x)
    (print "!")
    (if (> x 0) (foo (1- x))) ))
    (foo x) )))

    (defun bar (x)
    (print "YesWeCan")
    (if (> x 0)
    (flet ((bar (x)
    (print "!")
    (if (> x 0) (bar (1- x))) ))
    (bar x) )))

    (foo 5) ; => "YesWeCan" "!" "!" "!" "!" "!" "!"
    (bar 5) ; => "YesWeCan" "!" "!" "!" "!" "!" "!"
    396 : 名無しさん@お腹 - 2012/10/16(火) 19:37:16.27 (+3,-30,-82)
    メモ。
    http://d.hatena.ne.jp/kitokitoki/20090816/p9

    (require 'cl)

    (defun a ()
    (labels
    ((a ()
    'b))
    'a))
    (a)
    ; => (lambda nil (quote b))
    (funcall (a))
    ; => b

    (defun c ()
    (flet
    ((c ()
    'd))
    'c))
    (c)
    ; => c
    (funcall (c))
    ; => c
    397 : 名無しさん@お腹 - 2012/10/17(水) 00:48:16.38 (+4,-30,-91)
    >>394
    ELisp は dynamic binding だからね。

    (defun mul2 (lis)
    (lexical-let ((aux (lambda (x) (* 2 x))))
    (my-map (lambda (x) (funcall aux x))
    lis)))

    みたいな、かっこわるい解なら思いつくけど。
    398 : 名無しさん@お腹 - 2012/10/17(水) 04:15:21.52 (+61,+29,-24)
    質問です。
    次のバージョンでどんな機能をいれるとか、
    その手のEmacs最新動向ってどこみればわかるんでしょうか?
    http://www.gnu.org/software/emacs/
    とかだと8月の更新以降アナウスないですし。
    399 : 名無しさん@お腹 - 2012/10/17(水) 05:00:32.13 (+6,-30,-20)
    >>398
    emacs-devel mailing listのアーカイブを見る + subscribeする

    Savannah Emacs page
    http://savannah.gnu.org/projects/emacs/
    を見て最新リポジトリをゲットする
    400 : 名無しさん@お腹 - 2012/10/17(水) 09:31:39.00 (+38,+10,-16)
    いや、emacs-diffsを見るのが一番いいよ。
    俺は毎日これを見るのが楽しみ。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について