私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレEmacs part 27
emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
おいおい、まるで俺のEmacsがダメな子みたいなこと言わないでくれ
俺はまるでダメだけどEmacsに罪はねーよ
俺はまるでダメだけどEmacsに罪はねーよ
現在emacs(22.3.6)でCのソースを書いています。
emacsは自動でインデントを揃えてくれ、とても重宝しているのですが、更に欲を言うと
a=b+c;
を
a = b + c;
のようにフォーマットをしてくれる機能(またはelisp?)はないでしょうか?
個人的にはVisual Studioの整形みたいなものを想像しています。
Uncrustifyのような細かい設定まで出来れば完璧です。
わかりにくい文章で申し訳ありませんが、よろしくお願い致します。
emacsは自動でインデントを揃えてくれ、とても重宝しているのですが、更に欲を言うと
a=b+c;
を
a = b + c;
のようにフォーマットをしてくれる機能(またはelisp?)はないでしょうか?
個人的にはVisual Studioの整形みたいなものを想像しています。
Uncrustifyのような細かい設定まで出来れば完璧です。
わかりにくい文章で申し訳ありませんが、よろしくお願い致します。
>>454
行内で式が完結していれば、
(lambda ()
(interactive)
(shell-command-on-region (beginning-of-line) (end-of-line) "indent" t t)
(command-execute "\t"))
;; region指定あれば優先した方がいいかな
行内で式が完結していれば、
(lambda ()
(interactive)
(shell-command-on-region (beginning-of-line) (end-of-line) "indent" t t)
(command-execute "\t"))
;; region指定あれば優先した方がいいかな
Common Lispのようにスペシャル変数だけdefparameter宣言するとかすりゃいいんだけどな。
しかし、elispがまともになるのよりも後発の関数型言語による
emacs replacementの完成の方が速そうな勢いだものな…
emacs replacementの完成の方が速そうな勢いだものな…
>>457
またお前か。うんざりだ。もうemacs使うなよ。
またお前か。うんざりだ。もうemacs使うなよ。
みなさんレスありがとうございます。
>>456
.emacs内にそのまま記述してみたのですが、いまいちよく分かりませんでした。
何か実行する手順みたいなのがあるのでしょうか??
何も分かって無くてすみません^^;
>>456
.emacs内にそのまま記述してみたのですが、いまいちよく分かりませんでした。
何か実行する手順みたいなのがあるのでしょうか??
何も分かって無くてすみません^^;
>>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
とやればいいのではなかろうか。
.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
とやればいいのではなかろうか。
>>462
レスありがとうございます。
教えて頂いた通り、以下をリージョンを選択後、M-x my-c-indentを実行した結果、
#include<stdio.h>
main(){
int a,b,c;
a=b+c;
}
が
/bin/bash: indent: command not found
という文字列に置き換わってしまいました。
えっと、これは"indent"の部分を何かフォーマットを行ってくれるような外部プログラムに置き換えるのでしょうか・・・?
レスありがとうございます。
教えて頂いた通り、以下をリージョンを選択後、M-x my-c-indentを実行した結果、
#include<stdio.h>
main(){
int a,b,c;
a=b+c;
}
が
/bin/bash: indent: command not found
という文字列に置き換わってしまいました。
えっと、これは"indent"の部分を何かフォーマットを行ってくれるような外部プログラムに置き換えるのでしょうか・・・?
>>463
そしたらGNU indentをインスコしないといかんね。ftp.gnu.orgから拾ってくればいいはずだけど、どうやら2.2.9はソースをちこっといじる(indent.hの100行目をコメントアウト)必要があるみたいだ。
そしたらGNU indentをインスコしないといかんね。ftp.gnu.orgから拾ってくればいいはずだけど、どうやら2.2.9はソースをちこっといじる(indent.hの100行目をコメントアウト)必要があるみたいだ。
おおおおおお!SUGEEEEEE
きっと後はindentの設定をいじれば、自分の好きなコーディング規約に出来るんですね!
聞いてばっかりで申し訳ないんですが、
;や}を入力してステートメントやブロックの入力を終了したとき、また貼り付けを行ったときなどにオートフォーマットをさせることは可能でしょうか?
それとインデントを揃えるコマンドであるC-M-\をこのmy-c-indentに置き換えたりすることもできれば嬉しいのですが。。。
きっと後はindentの設定をいじれば、自分の好きなコーディング規約に出来るんですね!
聞いてばっかりで申し訳ないんですが、
;や}を入力してステートメントやブロックの入力を終了したとき、また貼り付けを行ったときなどにオートフォーマットをさせることは可能でしょうか?
それとインデントを揃えるコマンドであるC-M-\をこのmy-c-indentに置き換えたりすることもできれば嬉しいのですが。。。
>>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)のほうが良い
鴨。
上の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)のほうが良い
鴨。
レスありがとうございます。行末でセミコロンを打ったとき感動しました!
'}'の時は対応パラグラフ内のフォーマッティングを考えているのですが、教えて頂いた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)へ変えることでうまくできました^^
'}'の時は対応パラグラフ内のフォーマッティングを考えているのですが、教えて頂いた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)へ変えることでうまくできました^^
M-! がうまく入力できません。
ESC ! や M-x shell-command でよいことは知っています。
Shift-Alt-1 では ! そのものが、Alt-Shift-1 では M-1 が入力されているようです。
これは私の環境のみのバグでしょうか?
ESC ! や M-x shell-command でよいことは知っています。
Shift-Alt-1 では ! そのものが、Alt-Shift-1 では M-1 が入力されているようです。
これは私の環境のみのバグでしょうか?
Emacsのせいでキーボードの "C" の刻印が "(" みたいになってる。
あと "Ctrl" も "Ctr^1" みたいになっている。
Emacsはキーボードクラッシャーだなあ。
あと "Ctrl" も "Ctr^1" みたいになっている。
Emacsはキーボードクラッシャーだなあ。
>>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...
ブロックのはじまりを捕まえるには(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...
>>471
gnomeの設定と被ってる場合うまくいかない
gnomeの設定と被ってる場合うまくいかない
ありがとうございます。ちょっと調べながら頑張ってみます!!
しばらく挑戦してみて報告しますね~
しばらく挑戦してみて報告しますね~
上下左右のデフォのCtrl+P,N,B,Fを変えてる人っている?
Ctrl+Bが遠いので変えようかと思ってるんだけど、どこにしようか決められない・・・
Ctrl+Bが遠いので変えようかと思ってるんだけど、どこにしようか決められない・・・
>>481
C-n, C-pは合理的だと思うが
C-f, C-bは最悪だよな。
俺は C-f -> C-j, C-b -> C-k にしてる。
SKK使いだからSKKのC-jはC-lにしてる。
いまのところこれが一番かな。
C-n, C-pは合理的だと思うが
C-f, C-bは最悪だよな。
俺は C-f -> C-j, C-b -> C-k にしてる。
SKK使いだからSKKのC-jはC-lにしてる。
いまのところこれが一番かな。
Ctrl-Jは、Ctrl-Mと区別付かない端末が結構あったことから、
あまり割り当てられていないキーの一つ。
>>484
Bはほとんどのキーボードで左右どちらからも同じ距離だし、
手首の回転で届かないYの方が遠いし。説得力まるでない。
あまり割り当てられていないキーの一つ。
>>484
Bはほとんどのキーボードで左右どちらからも同じ距離だし、
手首の回転で届かないYの方が遠いし。説得力まるでない。
移動の話が出てるからついでに聞くんだけど、C-x q とかでリードオンリーにした後とか、最初からリードオンリーのファイルとかはどうせ書き込めないモードなんだから
viライクなh,j,k,lだけでの移動にしたいんだけど、そんな事って可能?
viライクなh,j,k,lだけでの移動にしたいんだけど、そんな事って可能?
>>486
C-x q って何だっけ?
C-x q って何だっけ?
>>486
http://www2.ocn.ne.jp/~cheerful/script/xyzzy/mode/minorviewmode.l
とか、XEmacs の view-less.el とか。
http://www2.ocn.ne.jp/~cheerful/script/xyzzy/mode/minorviewmode.l
とか、XEmacs の view-less.el とか。
>>490
「ホームポジション」に固執して不便を我慢するのですね。すばらしい心掛けです。
「ホームポジション」に固執して不便を我慢するのですね。すばらしい心掛けです。
Emacs使いが'B'を左人差指はないわw
'B'を左人差指に固執して不便を我慢するのですね。すばらしい心掛けです。
'B'を左人差指に固執して不便を我慢するのですね。すばらしい心掛けです。
シーンとしてると思ったら分かりやすい話題になった途端レスが急に増えるな。
ROM多いんだなこのスレ。その割に普段ろくな話題提供もしないんだから
コミュニティ精神の欠けらもない…
ROM多いんだなこのスレ。その割に普段ろくな話題提供もしないんだから
コミュニティ精神の欠けらもない…
>>494
人のこと言えるの?
人のこと言えるの?
ホームポジション変えてるのかみんな?
俺には無理だ・・・FとJの小突起に手が触れてないと迷子になる
俺には無理だ・・・FとJの小突起に手が触れてないと迷子になる
さも変えて普通みたいに言う人が自己主張するからでしょ
俺もホームポジションは変えてないし、Bは左人差し指だな
>Emacs使いが'B'を左人差指はないわw
誰がどうキーボードを使おうと気にしないけどこれはどうかと思った
俺もホームポジションは変えてないし、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 スレッド一覧へ
みんなの評価 : ○類似してるかもしれないスレッド
- Emacs part 25 (1001) - [92%] - 2008/8/10 0:18 ○
- Emacs part 26 (1001) - [92%] - 2008/11/8 20:47 ○
- Emacs part 22 (1001) - [92%] - 2008/1/18 7:47 ○
- Emacs part 28 (605) - [92%] - 2009/3/25 0:37 ○
- Emacs part 23 (1001) - [92%] - 2008/2/8 0:04 ☆
- Emacs Part 47 (995) - [84%] - 2015/4/19 13:01
- Emacs Part 37 (1001) - [84%] - 2011/6/20 19:47
- Emacs part24 (991) - [84%] - 2008/5/10 5:08 ○
- Emacs Part 40 (1001) - [76%] - 2012/9/7 0:30
- Emacs Part 53 (989) - [76%] - 2022/12/5 12:45
- Emacs Part 39 (990) - [76%] - 2012/2/9 19:45
- Emacs Part 34 (1001) - [76%] - 2010/6/21 19:45 ○
- Emacs Part 33 (1001) - [76%] - 2010/3/9 20:01 ○
トップメニューへ / →のくす牧場書庫について