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

    私的良スレ書庫

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

    元スレEmacs part 27

    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
    451 : 名無しさん@お腹 - 2008/12/16(火) 13:10:01 (+1,-26,-2)
    emacsは"できる"人が使うと、異常にできる子になる。
    452 : 名無しさん@お腹 - 2008/12/16(火) 16:28:23 (+57,+29,-5)
    おっと、おれを誉め称えるのはそこまでだ。
    453 : 名無しさん@お腹 - 2008/12/16(火) 17:48:04 (+57,+29,-28)
    おいおい、まるで俺のEmacsがダメな子みたいなこと言わないでくれ
    俺はまるでダメだけどEmacsに罪はねーよ
    454 : sage - 2008/12/16(火) 20:59:36 (+69,-30,-84)
    現在emacs(22.3.6)でCのソースを書いています。
    emacsは自動でインデントを揃えてくれ、とても重宝しているのですが、更に欲を言うと
    a=b+c;

    a = b + c;
    のようにフォーマットをしてくれる機能(またはelisp?)はないでしょうか?
    個人的にはVisual Studioの整形みたいなものを想像しています。
    Uncrustifyのような細かい設定まで出来れば完璧です。
    わかりにくい文章で申し訳ありませんが、よろしくお願い致します。
    455 : 名無しさん@お腹 - 2008/12/17(水) 13:13:39 (+57,+29,-26)
    どちらかというとコーディング規約だからねえ。それ。
    456 : 名無しさん@お腹 - 2008/12/17(水) 14:12:51 (+40,-30,-115)
    >>454
    行内で式が完結していれば、
    (lambda ()
    (interactive)
    (shell-command-on-region (beginning-of-line) (end-of-line) "indent" t t)
    (command-execute "\t"))
    ;; region指定あれば優先した方がいいかな
    457 : 名無しさん@お腹 - 2008/12/17(水) 15:56:02 (+88,+28,-13)
    ダイナミックスコープは糞
    たまに変数名が衝突してわかりにくいバグが発生する
    458 : 名無しさん@お腹 - 2008/12/17(水) 16:09:16 (-2,-30,-17)
    Common Lispのようにスペシャル変数だけdefparameter宣言するとかすりゃいいんだけどな。
    459 : 名無しさん@お腹 - 2008/12/17(水) 17:01:05 (+55,+27,-25)
    しかし、elispがまともになるのよりも後発の関数型言語による
    emacs replacementの完成の方が速そうな勢いだものな…
    460 : 名無しさん@お腹 - 2008/12/17(水) 17:15:54 (+69,+29,-16)
    >>457
    またお前か。うんざりだ。もうemacs使うなよ。
    461 : 454 - 2008/12/17(水) 17:59:20 (+74,+29,-42)
    みなさんレスありがとうございます。
    >>456
    .emacs内にそのまま記述してみたのですが、いまいちよく分かりませんでした。
    何か実行する手順みたいなのがあるのでしょうか??
    何も分かって無くてすみません^^;
    462 : ms406tar - 2008/12/17(水) 22:04:23 (+49,-30,-246)
    >>461
    .emacsには
    (defun my-c-indent (rstart rend)
    "Format region using the shell command \"indent\" (C program formatter). If the mark is not active, operate on the current line."
    (interactive "*r")
    (unless mark-active
    (beginning-of-line) (setq rstart (point))
    (end-of-line) (setq rend (point))
    )
    (shell-command-on-region rstart rend "indent" t t)
    (command-execute "\t")
    )

    のように書いて、成形したい行にカーソルを置くかリージョン選択して
    M-x my-c-indent
    とやればいいのではなかろうか。
    463 : 454 - 2008/12/17(水) 23:12:38 (+12,-30,-81)
    >>462
    レスありがとうございます。
    教えて頂いた通り、以下をリージョンを選択後、M-x my-c-indentを実行した結果、

    #include<stdio.h>
    main(){
    int a,b,c;
    a=b+c;
    }



    /bin/bash: indent: command not found

    という文字列に置き換わってしまいました。
    えっと、これは"indent"の部分を何かフォーマットを行ってくれるような外部プログラムに置き換えるのでしょうか・・・?
    464 : 名無しさん@お腹 - 2008/12/17(水) 23:48:23 (-6,-29,+0)
    ( ゚д゚)ポカーン
    465 : 462 - 2008/12/17(水) 23:56:01 (+4,-29,-67)
    >>463
    そしたらGNU indentをインスコしないといかんね。ftp.gnu.orgから拾ってくればいいはずだけど、どうやら2.2.9はソースをちこっといじる(indent.hの100行目をコメントアウト)必要があるみたいだ。
    466 : 454 - 2008/12/18(木) 16:00:28 (+9,-29,-76)
    おおおおおお!SUGEEEEEE
    きっと後はindentの設定をいじれば、自分の好きなコーディング規約に出来るんですね!
    聞いてばっかりで申し訳ないんですが、
    ;や}を入力してステートメントやブロックの入力を終了したとき、また貼り付けを行ったときなどにオートフォーマットをさせることは可能でしょうか?
    それとインデントを揃えるコマンドであるC-M-\をこのmy-c-indentに置き換えたりすることもできれば嬉しいのですが。。。
    467 : 462 - 2008/12/18(木) 21:12:16 (+4,-30,+0)
    >>466
    上のmy-c-indentの後でこう書けばいいかな。C-M-\とセミコロンだけだが閉じ括弧は自分でやってみてくだされ。
    (add-hook 'c-mode-common-hook
    '(lambda ()
    (define-key c-mode-base-map "\C-\M-\\" 'my-c-indent)
    (define-key c-mode-base-map ";"
    (lambda (arg) (interactive "*P")
    ;; use "indent" to format the line
    (let ((start) (end))
    (beginning-of-line) (setq start (point))
    (end-of-line) (setq end (point))
    (shell-command-on-region start end "indent" t t)
    )
    ;; default behavior for semicolon
    (end-of-line) (c-electric-semi&comma arg)
    ;; eliminate an extra line comming from "indent" above
    (c-electric-delete-forward arg)
    )
    )
    )
    )
    ところで上のmy-c-..の (command-execute "\t")は(c-indent-command)のほうが良い
    鴨。
    468 : 名無しさん@お腹 - 2008/12/18(木) 21:27:07 (-1,-29,-12)
    command-execute なんかあったのか、どこかで役に立ちそうだ
    469 : 454 - 2008/12/18(木) 22:17:18 (+5,-30,-281)
    レスありがとうございます。行末でセミコロンを打ったとき感動しました!
    '}'の時は対応パラグラフ内のフォーマッティングを考えているのですが、教えて頂いたdefine-key c-mode-base-map ";"の部分を単純に'}'へ変えただけでは当然一行しかフォーマッティングされずorz
    (let ((start) (end))
    (beginning-of-line) (setq start (point))
    (end-of-line) (setq end (point))
    (shell-command-on-region start end "indent" t t)
    )
    の部分を書き換えるのかなぁ等と思っているのですが。。。
    ちなみにうまくやれば、
    a+b+c+
    d+e+f;
    と数行に渡って式を書いた後のセミコロンで
    a + b + c +
    d + e + f;
    のように複数行へ渡った場合のフォーマッティングもできるのでしょうか?
    長文すみませんm(_ _)m

    P.S.
    C-M-\でのフォーマッティングは仰るとおり(command-execute "\t")を(c-indent-command)へ変えることでうまくできました^^
    470 : 名無しさん@お腹 - 2008/12/18(木) 22:44:19 (+57,+29,-10)
    よみづら。
    まずはその投稿を整形すべきだな。
    471 : 名無しさん@お腹 - 2008/12/19(金) 00:25:03 (+28,-30,-76)
    M-! がうまく入力できません。
    ESC ! や M-x shell-command でよいことは知っています。
    Shift-Alt-1 では ! そのものが、Alt-Shift-1 では M-1 が入力されているようです。
    これは私の環境のみのバグでしょうか?
    472 : 名無しさん@お腹 - 2008/12/19(金) 00:26:23 (+57,+29,-4)
    バグじゃなくて、あんたがそのように設定しているだけ。
    473 : 名無しさん@お腹 - 2008/12/19(金) 00:50:32 (+44,+26,+1)
    なんだと。
    474 : 名無しさん@お腹 - 2008/12/19(金) 00:54:22 (+57,+29,-4)
    バグじゃなくて、あんたがそのように設定しているだけ。
    475 : 名無しさん@お腹 - 2008/12/19(金) 01:23:46 (+52,+29,-13)
    大事な事なので 2 回言いました
    476 : 名無しさん@お腹 - 2008/12/19(金) 02:04:51 (-2,-30,-36)
    Emacsのせいでキーボードの "C" の刻印が "(" みたいになってる。
    あと "Ctrl" も "Ctr^1" みたいになっている。
    Emacsはキーボードクラッシャーだなあ。
    477 : 名無しさん@お腹 - 2008/12/19(金) 06:47:47 (+54,+26,-2)
    ぼくのキボドのCtrlキーは、埃が積もってる
    478 : 462 - 2008/12/19(金) 07:15:03 (-3,-30,-160)
    >>469
    ブロックのはじまりを捕まえるには(forward-sexp)、複数行にわたる式だったら(c-beginning-of-statement)というのがあるのでそれぞれ(beginning-of-line)の代わりに使えば基本的にはおまえさんのやりたいことができるはず。
    ちょうど良い練習になると思うのであとはC-h f, C-h v, C-h kとかをお供に頑張ってくれたまへ。
    ただしgnu.orgにおいてあるindent 2.2.9には複数行の入力が改行で終わってないときには最後の行が無くなっちゃうという致命的なバグがあるようなので、debian.orgの2.2.10をインスコしなおす必要がある。
    うちのにもともと入っていたのも2.2.9だったようだ。新しいの入れといてよジョブズたんorz...
    479 : 名無しさん@お腹 - 2008/12/19(金) 10:52:26 (+26,-7,-14)
    >>471
    gnomeの設定と被ってる場合うまくいかない
    480 : 454 - 2008/12/19(金) 15:59:03 (+57,+29,-4)
    ありがとうございます。ちょっと調べながら頑張ってみます!!
    しばらく挑戦してみて報告しますね~
    481 : 名無しさん@お腹 - 2008/12/19(金) 16:02:04 (+4,-29,-9)
    上下左右のデフォのCtrl+P,N,B,Fを変えてる人っている?
    Ctrl+Bが遠いので変えようかと思ってるんだけど、どこにしようか決められない・・・
    482 : 名無しさん@お腹 - 2008/12/19(金) 16:31:50 (+29,-29,-3)
    …… Ctrl-Nは遠くないのか?
    483 : 名無しさん@お腹 - 2008/12/19(金) 16:32:42 (+41,-30,-68)
    >>481
    C-n, C-pは合理的だと思うが
    C-f, C-bは最悪だよな。
    俺は C-f -> C-j, C-b -> C-k にしてる。
    SKK使いだからSKKのC-jはC-lにしてる。
    いまのところこれが一番かな。
    484 : 名無しさん@お腹 - 2008/12/19(金) 16:40:18 (+138,+29,-62)
    >>482
    普通、Bは左人差し指、Nは右人差し指だよね
    Bはアルファベットの中で一番遠く感じるキーだと思うんだけど

    >>483
    やっぱり我流で決めるべきかな
    あんまり普通(=一般Emacsユーザの平均的な設定)からかけ離れてしまうと
    まずいかなと妙な懸念を持ってるんだけど、そんなのは捨たほうがいいかなw
    上下左右はよく使うんだから、viのhjkl並に易しい位置にしたいものだ・・
    485 : 名無しさん@お腹 - 2008/12/19(金) 16:54:54 (+112,+29,-45)
    Ctrl-Jは、Ctrl-Mと区別付かない端末が結構あったことから、
    あまり割り当てられていないキーの一つ。

    >>484
    Bはほとんどのキーボードで左右どちらからも同じ距離だし、
    手首の回転で届かないYの方が遠いし。説得力まるでない。

    486 : 454 - 2008/12/19(金) 16:58:34 (+21,-29,-23)
    移動の話が出てるからついでに聞くんだけど、C-x q とかでリードオンリーにした後とか、最初からリードオンリーのファイルとかはどうせ書き込めないモードなんだから
    viライクなh,j,k,lだけでの移動にしたいんだけど、そんな事って可能?
    487 : 名無しさん@お腹 - 2008/12/19(金) 17:01:20 (+117,+29,-29)
    >>484
    ええと、左手を普通にキーボードに乗せると、人差指がBに、中指がFに乗らんか?

    手が小さいのか?
    488 : 名無しさん@お腹 - 2008/12/19(金) 17:06:09 (+57,+29,-3)
    PNBFは慣れてしまった方がいい。
    ここをいじると他への影響が大きすぎる。
    489 : 名無しさん@お腹 - 2008/12/19(金) 17:08:14 (+5,-29,-1)
    >>486
    C-x q って何だっけ?
    490 : 名無しさん@お腹 - 2008/12/19(金) 17:12:13 (+115,+29,-27)
    >>485
    Yは真ん中からやや右よりだから右人差し指でしょ
    Bはほんと真ん中にあるじゃん

    >>487
    自分はおそらく日本人の平均より手はでかいが
    つーか左人差し指がF、右人差し指がJのホームポジションじゃないのか?
    491 : 名無しさん@お腹 - 2008/12/19(金) 17:13:04 (+6,-30,-38)
    492 : 名無しさん@お腹 - 2008/12/19(金) 17:18:33 (+73,+29,-30)
    >>490
    「ホームポジション」に固執して不便を我慢するのですね。すばらしい心掛けです。
    493 : 名無しさん@お腹 - 2008/12/19(金) 17:22:03 (-1,-29,-46)
    Emacs使いが'B'を左人差指はないわw
    'B'を左人差指に固執して不便を我慢するのですね。すばらしい心掛けです。
    494 : 名無しさん@お腹 - 2008/12/19(金) 17:36:33 (+89,+30,-41)
    シーンとしてると思ったら分かりやすい話題になった途端レスが急に増えるな。
    ROM多いんだなこのスレ。その割に普段ろくな話題提供もしないんだから
    コミュニティ精神の欠けらもない…
    495 : 名無しさん@お腹 - 2008/12/19(金) 17:36:36 (-1,-29,-3)
    KINESIS使ってると右で押すのはまずムリ。
    496 : 名無しさん@お腹 - 2008/12/19(金) 17:42:17 (+64,+29,-14)
    >>494
    人のこと言えるの?
    497 : 471 - 2008/12/19(金) 18:11:38 (+1,-29,-30)
    >>479
    ありがとうございました。GNOMEのキーボードの設定が問題でした。
    498 : 名無しさん@お腹 - 2008/12/19(金) 18:13:50 (+57,+29,-12)
    ホームポジション変えてるのかみんな?
    俺には無理だ・・・FとJの小突起に手が触れてないと迷子になる
    499 : 名無しさん@お腹 - 2008/12/19(金) 18:17:28 (+57,+29,-4)
    おれは変えてないよ。
    なんでみんな変えてると思ったんだ?
    500 : 名無しさん@お腹 - 2008/12/19(金) 18:34:51 (+62,+29,-54)
    さも変えて普通みたいに言う人が自己主張するからでしょ
    俺もホームポジションは変えてないし、Bは左人差し指だな


    >Emacs使いが'B'を左人差指はないわw

    誰がどうキーボードを使おうと気にしないけどこれはどうかと思った
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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