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

    私的良スレ書庫

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

    元スレEmacs Part 44

    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
    201 : 名無しさん@お腹 - 2014/01/05(日) 21:47:20.35 (+52,+29,+0)
    ありがとう
    やっぱりできないか
    202 : 名無しさん@お腹 - 2014/01/05(日) 22:57:08.90 (+0,+0,+0)
    以下の行にカーソルが乗っている場合、

    * foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.

    \M-q で

    * foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo.

    みたいに整形されるけど、

    * foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo.

    のように "* " の長さも次行のインデントに含めて欲しい場合、どう設定すれば良いですか?
    adaptive-fill-regexp, adaptive-fill-first-line-regexp 等試しましたが、上手くいきません。
    203 : 名無しさん@お腹 - 2014/01/05(日) 23:10:00.15 (+0,-29,-3)
    >>202
    text-modeだと後者のように整形されるよ。
    24.3
    204 : 名無しさん@お腹 - 2014/01/05(日) 23:41:55.79 (+13,-4,-1)
    後者?
    205 : 名無しさん@お腹 - 2014/01/06(月) 00:23:07.28 (+0,+0,+0)
    >>203
    確かに text-mode デフォルトだと

    * foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
    (\M-q) →
    * foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo.

    が達成できますが、それだと全角スペースやコメント等に対応しておらず、例えば

     * foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.

    は \M-q で下記のように整形されるわけです。

     * foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo.

    これを訂正しようと、" " のケースを adaptive-fill-regexp に追加すると、

     * foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo.

    までにしかならず、 "* " のインデント分は考慮されなくなるというイタチごっこで。。。
    206 : 205 - 2014/01/06(月) 00:31:27.89 (-1,-29,-24)
    あっ、すみません、自己解決しました。

    adaptive-fill-regexp のデフォルト値を参照して変更加えてたら、
    やりたい事全部できちゃいました。
    207 : 名無しさん@お腹 - 2014/01/06(月) 02:45:29.06 (+79,+29,-22)
    >>198
    フォントまわりは悩ましいよね。
    俺も>>199さんと同じで日本語と英字で同じフォントにしてる。
    それでもフォントの大きさによってずれることがあるので、
    うまく合う大きさを指定してる感じ。
    208 : 名無しさん@お腹 - 2014/01/06(月) 09:15:03.00 (+56,+28,-15)
    ttf 編集出来るソフトで俺俺フォント作っちゃったほうが色々楽になりそうだ
    209 : 名無しさん@お腹 - 2014/01/06(月) 09:42:57.10 (+4,-29,-6)
    Cocoa Emacs のフォント設定について - my-misc.blog
    http://d.hatena.ne.jp/setoryohei/20110117/1295336454
    210 : 名無しさん@お腹 - 2014/01/06(月) 12:32:36.57 (+3,-30,-38)
    >>209
    結局 face-font-rescale-alist って高さも幅もリスケールしちゃうから
    どう頑張ってもずれるフォントはずれるんだよね。
    強制的に高さと幅指定してそれに満たない部分は空白で埋めるとかできればなあ。
    211 : 名無しさん@お腹 - 2014/01/06(月) 13:36:39.61 (+3,-30,+0)
    話の流れぶった切るけどと取り敢えず貼っとく
    Emacsの標準機能だとminibufferにカーソル位置の単語を初期入力に
    してないものがあったりしてイラついたんで汎用的なのを作った

    (defun minibuffer-insert-word-at-point ()
    "Get a word at point in original buffer and insert it to minibuffer."
    (interactive)
    (when (window-minibuffer-p)
    (let ((word-at-point (with-current-buffer (window-buffer (minibuffer-selected-window))
    (thing-at-point 'word))))
    (when word-at-point
    (insert word-at-point)))))
    (define-key minibuffer-local-map [(control ?.)] 'minibuffer-insert-word-at-point)

    これでminibufferでC-.でカーソル位置の単語をコピってくる
    ちなみにminibuffer.elのケツに似た様なのがあったんでそれをパクった
    213 : 名無しさん@お腹 - 2014/01/06(月) 22:02:19.67 (+9,-30,-53)
    format での # 指定時の仕様が気持ち悪い

    (format "%#6x" 15) とかやると " 0xf" になるのはいいんだけど
    (format "%#06x" 15) にしたときに "0000xf" はおかしいよ・・0x の後に0足してくれよ
    C の printf だと"%#06x" で "0x000f" になってくれる
    214 : 名無しさん@お腹 - 2014/01/06(月) 23:35:51.41 (+42,+24,+0)
    うーんこの
    215 : 名無しさん@お腹 - 2014/01/06(月) 23:48:16.50 (+38,-30,-61)
    >>212
    backtrace-frame を使えばできるかもしれない。
    常に関数の先頭で使うという前提なら、関数名のところで、

    (if (car (backtrace-frame 1))
    (cadr (backtrace-frame 1))
    (cadr (backtrace-frame 4)))

    かも。

    >>213
    バグでしょう。

    (format "%#.04x" 15)

    で回避。
    216 : 名無しさん@お腹 - 2014/01/07(火) 00:31:04.64 (+63,+29,-17)
    >>215
    ありがとうございます。backtrace は自分で呼び出せるんですねー。
    呼び出し元でどれだけ遡るかを決めなくてはいけないのは致し方ないですね。
    217 : 名無しさん@お腹 - 2014/01/07(火) 00:31:17.67 (+3,-30,-65)
    元々sjis(?)でエンコードされたファイルがUTF-8で表示されるようになって
    しまって、それをセーブしたら、ファイルの文字が以下のように壊れてしまいました。

    \343\202\253\343\203\274\343\202\275 ...

    これを元の文字に直す方法はありませんか? 再現できればsjisでもutf-8でも問題ありません。
    218 : 名無しさん@お腹 - 2014/01/07(火) 01:16:08.98 (-1,-29,-6)
    C-x C-m c utf-8 C-x C-v

    カーソ (?)
    219 : 名無しさん@お腹 - 2014/01/08(水) 10:26:20.98 (+32,-30,-234)
    eval-when-compile と eval-and-compile の使い分けは以下の認識であってますでしょうか?

    前提) コンパイル時に素の require は実行されない。

    ・eval-when-compile
    通常ロード時は他とかわらず普通に eval される。
    バイトコンパイル時は eval した結果に置き換わり元の式の形では残らない。
    →事前に複雑な定数式の計算をさせたり、
    コンパイル時に置き換えてしまって残したくない内部的なマクロ定義をしたり、
    コンパイル時に必要な定数値や関数定義をロードするのに使う。

    ・eval-and-compile
    通常ロード時は他とかわらず普通に eval される。
    バイトコンパイル時に eval されるが、コンパイル結果は元の式のまま残る。
    →コンパイル時/実行時共に必要な定数値や関数定義をロードするのに使う。
    220 : 名無しさん@お腹 - 2014/01/08(水) 11:15:55.78 (+53,+26,+2)
    >>219
    あってると思う。
    221 : 名無しさん@お腹 - 2014/01/08(水) 11:35:01.04 (-1,-29,-83)
    eval-and-compile は使いどころが難しいな
    マクロの式組み立てに使う関数を require するのぐらいしか使ったこと無い
    222 : 名無しさん@お腹 - 2014/01/08(水) 20:24:25.57 (+67,+15,+0)
    SKK は今どこにあるんですか?
    223 : 名無しさん@お腹 - 2014/01/08(水) 21:20:35.34 (-6,-29,+0)
    openlabですよ。
    224 : 名無しさん@お腹 - 2014/01/09(木) 11:55:11.89 (+36,+18,-11)
    あけおめー
    225 : 名無しさん@お腹 - 2014/01/09(木) 11:59:40.93 (+57,+30,+0)
    226 : 名無しさん@お腹 - 2014/01/09(木) 13:14:28.50 (-1,-29,-45)
    ASCII.jp:ストールマン氏が語る「巨大な監視エンジンと民主主義の危機」 (1/2)
    http://ascii.jp/elem/000/000/856/856012/
    フリーソフトウェア以外は拒否すべき
    227 : 名無しさん@お腹 - 2014/01/09(木) 14:02:28.33 (+47,+29,-1)
    腹が…
    228 : 名無しさん@お腹 - 2014/01/09(木) 15:16:30.30 (+3,-24,-17)
    RMSは腹の中にGNUを貯めてるから
    229 : 名無しさん@お腹 - 2014/01/10(金) 03:55:06.00 (+8,-30,-61)
    >>175
    俺も calc-mode 改造したぜ!
    ↓この4行をそのままコピーしてペーストしても

    0x1869F円
    298,000円
    100円
    ¥10,000

    ↓スタックにはこう入って超便利!

    99999
    298000
    100
    10000
    230 : 名無しさん@お腹 - 2014/01/10(金) 09:28:22.41 (-1,-29,-11)
    なんか mhc を思い出したわ
    いまだと twittering-mode とか eww → org へインポートみたいな作りになるんだろうかね
    231 : 名無しさん@お腹 - 2014/01/10(金) 11:00:15.51 (+0,-29,+1)
    >>229
    packageにしてupしてくれ!
    232 : 名無しさん@お腹 - 2014/01/10(金) 11:17:36.57 (-1,-29,-19)
    calc-language-input-filter を定義すりゃいいのかね
    233 : 名無しさん@お腹 - 2014/01/10(金) 11:19:27.95 (+6,-16,+1)
    calc 実際便利だよな
    234 : 名無しさん@お腹 - 2014/01/10(金) 12:55:30.97 (+9,-30,-106)
    定数について質問です。
    C の #define のように、コンパイル時に完全に置き換わってシンボル名を残さない定数定義は可能でしょうか?

    defconst の場合、コンパイルしても置き換えは起こりませんでした。
    defmacro は eval-when-compile と組み合わせればシンボル名を残さずに定義できますが、
    関数呼び出しの形で書かなくていけないのがいまいちな感じです。
    235 : 名無しさん@お腹 - 2014/01/10(金) 13:56:19.41 (+4,-30,-46)
    (eval-and-compile (defconst hogehoge "HOGE!"))

    こうじゃなかったっけ?
    236 : 名無しさん@お腹 - 2014/01/10(金) 14:13:54.03 (+10,-30,-145)
    >>235
    elc を見てみましたがやっぱり置き換えは発生しておりませんでした。
    (eval-and-compile (defconst test-hogehoge "HOGE"))
    (defun test-func () test-hogehoge)
    =>
    (defconst test-hogehoge "HOGE")
    (defalias 'test-func #[nil "^H\207" [test-hogehoge] 1])
    237 : 名無しさん@お腹 - 2014/01/10(金) 14:52:48.48 (+38,-30,-109)
    >>236 あ、ほんとだ。消えない。すまぬ。

    (eval-when-compile (defconst test-hogehoge "HOGE"))
    (defun test-func ()
    (eval-when-compile test-hogehoge))

    eval-when-compile で全部包むと消えるみたいけど、めんどくさいかな。
    238 : 名無しさん@お腹 - 2014/01/10(金) 16:01:53.67 (+39,-30,-160)
    >>234
    cl-symbol-macrolet はどうだろう。clパッケージに依存するけれど。

    (require 'cl-macs)

    (cl-symbol-macrolet ((hoge "HOGE")
    (fuga "FUGA"))
    (defun f ()
    (list hoge fuga)))

    (symbol-function 'f)
    ;=> (lambda nil (list "HOGE" "FUGA"))
    239 : 名無しさん@お腹 - 2014/01/10(金) 19:19:36.12 (+64,+29,-50)
    >>237
    やっぱりその場で eval させないとだめっぽいですね。

    >>238
    おおおー
    スコープ絞ればかなり期待通りの動作です。
    ありがとうございます。
    cl 奥が深いなあ
    240 : 名無しさん@お腹 - 2014/01/11(土) 11:37:09.14 (+9,-30,-55)
    二つのリストを与えてそれをemacs lispで処理したいです
    このようなものです
    (mapc (lambda (a b) (print (+ a b)))
    '(2 3 4) '(3 4 5))
    想定しているのはcommon lispのmapcのようなことなのですが、できないものでしょうか
    241 : 名無しさん@お腹 - 2014/01/11(土) 11:45:17.84 (+37,-30,-78)
    >>240
    cl の mapc がそのまんま common lisp の挙動だね。
    (require 'cl-lib)
    (cl-mapc (lambda (a b) (print (+ a b))) '(2 3 4) '(3 4 5))
    242 : 名無しさん@お腹 - 2014/01/11(土) 13:30:42.74 (+61,+28,+0)
    >>241
    !ばっちりです!ありがとうございました
    243 : 名無しさん@お腹 - 2014/01/12(日) 06:01:18.50 (+3,-30,-107)
    auto-save-hook で *scratch* の内容を保存してるのですが
    保存時に出るこのエコーを無効にしたいです。

    Saving file /usr/home/jk2/.emacs.d/.scratch…
    Wrote /usr/home/jk2/.emacs.d/.scratch

    「Saving file~」は message の defadvice で消せました。
    「Wrote~」はどこで無効にすればよいのでしょうか?
    244 : 名無しさん@お腹 - 2014/01/12(日) 10:22:18.85 (+30,-29,-18)
    write-region の第5引数になんか指定すれば黙るよ。
    245 : 名無しさん@お腹 - 2014/01/12(日) 13:41:13.85 (+59,+27,+1)
    >>244
    ありがとうございます!静かになりました。
    246 : 名無しさん@お腹 - 2014/01/14(火) 00:34:38.41 (+7,-30,-116)
    signal を投げるとデバッガが起動しますが、
    デバッガを終了した後に signal を投げた箇所から再開させるよう
    デバッガの操作ではなくコード側から指示することは可能でしょうか?

    (let ((count 100))
    (while (> count 0)
    ;; do something
    (when something-happened
    (signal 'some-error nil))
    ;; do something ;; <= エラーが起きてもここから再開したい & ignore-errors でシグナルを無視はしたくない & ループも抜けたくない
    (setq count (1- count))))
    247 : 名無しさん@お腹 - 2014/01/14(火) 02:59:39.10 (+5,-30,-17)
    >>246
    (debug 'some-error)
    にする
    248 : 名無しさん@お腹 - 2014/01/14(火) 10:10:16.95 (+3,-30,-79)
    >>247
    ありがとうございます。
    (debug 'hoge) でシグナルと同じようにデバッガに入れるんですね。

    いま気がついたんですけど ignore-errors でもどちらにせよエラー起きた場所で止まっちゃうんですね。
    (ignore-errors
    (signal 'error nil)
    (message "ppp") ;; <= ここまで到達はしない
    )

    basic とかにある、on error resume next みたいなのは無理かー
    249 : 名無しさん@お腹 - 2014/01/14(火) 20:04:25.19 (+3,-30,-33)
    set-process-filter で設定したフィルタ関数内で
    accept-process-output したりすると、(プロセスの出力があれば)フィルタ関数内で
    フィルタ関数が呼ばれることになるんでしょうか?
    250 : 名無しさん@お腹 - 2014/01/14(火) 21:52:26.73 (+46,-30,-255)
    >>212
    Gaucheのリーダマクロ #?= みたいにprintfデバッグを書くのに debug-print.el というのを作ったのですが,
    可能であれば函数名を読み取って表示するので要望に合うかもです.
    現状では debug-print を上書きすれば表示は変えられるけど, もうちょい変えやすくしますかね.
    (debug-printという関数名は twittering-mode.el も使ってるんで現状では少し注意.)
    何か要望出してもらえれば反映するかもです.


    丁度いい機会なのでいくつか質問を.

    1. 既存の函数の戻り値に一時的に少し手を加えたい場合はどうするのが良いのでしょうか.

    adviseされた函数をfletで上書きするとエラーが出るのでadviceを使うのが正しいのでしょうが,
    常にそのadviceを有効にしたいわけではないのです. 大域変数を使ってadvice内部で
    その変数を見て動作を切り替えるというのが標準的なんですかね?

    2. そのやり方で何か不都合が出るかどうかが気になります.

    因みに上のやり方がパッと思いつかなかったので現状では ad-enable-advice と ad-disable-advice
    でadviceの有効/無効を切り替えています. こちらは既にバグがあることがわかっています.
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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