トップページunix
993コメント345KB

Emacs Part 48 [転載禁止]©5ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2015/04/16(木) 17:20:51.10
語り合いましょう。

GNU Emacs - GNU Project - Free Software Foundation (FSF)
https://www.gnu.org/software/emacs/

EmacsWiki: サイトマップ
http://www.emacswiki.org/emacs/

前スレ
Emacs Part 47
http://peace.2ch.net/test/read.cgi/unix/1419059839/
0002名無しさん@お腹いっぱい。2015/04/17(金) 01:30:04.45
>>1
乙!
0003名無しさん@お腹いっぱい。2015/04/17(金) 15:20:30.43
helm つかってない人っていまどきいるんだろうか
わざわざ ido を選ぶメリットってあるのかな?
0004名無しさん@お腹いっぱい。2015/04/17(金) 18:37:05.32
逆に聞きたいがhelm使うメリットってなんなの?
0005名無しさん@お腹いっぱい。2015/04/17(金) 21:14:48.24
helmとido、共存で利用している人が多いんじゃないかな?
補完インターフェースって、この2つ以外にもいくつか乱立しているみたいだけど、
helmとidoの2つに関してはそれぞれ別々な高機能性があって、きちんと役割分担できていると思う。

idoの利点
- find-file / find-dired は明らかにidoの方が使いやすい。
- あいまいマッチを有効にして、コツを得ればキー入力数がかなり少なくなるのを期待できる。
- キープレス後アクションを入力する類のコマンド(例えばmewのmew-summary-ls -> sync/update/all)は
わざわざウィンドウがポップアップするhelmよりも、ido-ubiquitousの補完の方がスマート。

helmの利点
- 複数の候補ソースを一括で利用できる。例えばhelm-miniなど。
- チラ見機能 C-z が便利。
- 選択した候補に対して複数のアクションを定義できる。helm-locate -> find-file as root とかお気に入り。
- 候補が「ファイルの行」などと言った比較的長いものと相性が良い。helm-ag, helm-swoopなど。
- migemo検索可能。
0006名無しさん@お腹いっぱい。2015/04/17(金) 21:30:49.83
標準機能の補完で頑張ってる人もどれぐらいいるんだろうか
completion-styles とか completion-cycle-threshold とかのカスタマイズが emacs23 ぐらいのころにどばっと増えたけど
いじってる人あんまりみたことない
0007名無しさん@お腹いっぱい。2015/04/17(金) 21:43:05.76
githubで検索したけどcompletion-styles設定してる人いないわけじゃないみたいだが。
https://github.com/search?l=Emacs+Lisp&;p=1&q=completion-styles&type=Code&utf8=%E2%9C%93
ほとんどどっかからコピペしたのか同じ内容のだけど。
0008名無しさん@お腹いっぱい。2015/04/17(金) 21:57:06.85
anythingの時もそうだったけど、helm-for-filesが便利すぎて手放せん
逆に言うとhelm-for-files以外はそれほど必要じゃない
0009名無しさん@お腹いっぱい。2015/04/17(金) 22:25:16.64
display-buffer-in-side-window 便利だね。
C-x 1 とかしても消えないウィンドウ作れるから info とか eww 参照中に
気兼ねなくバッファ開いたりウィンドウ構成ガチャガチャいじったり出来る。

(display-buffer-in-side-window (get-buffer "*info*") '((side . right)))
0010名無しさん@お腹いっぱい。2015/04/18(土) 00:31:26.46
>>6
標準のをちょっと弄って使ってる
TAB一回で補完ウィンドウ出してそっちにフォーカスして、ハイライトされてる文字打つと絞り込むとか程度だけど
idoは何かうるさくて馴染めなかった
0011名無しさん@お腹いっぱい。2015/04/18(土) 01:01:39.88
>>9
俺のEmacsには無いなと思ったらinteractiveじゃないのか…
どうやって使うんだ?
0012名無しさん@お腹いっぱい。2015/04/18(土) 06:44:43.85
>>11
`display-buffer-alist' かな

(add-to-list 'display-buffer-alist
'("\\`\\*info\\*\\'" .
(display-buffer-in-side-window
(side . right)
(window-width . 80))))

こうしておくと M-x info したとき `display-buffer-in-side-window' で開く
この例ではついでにウィンドウ幅を 80 に指定してみた
0013名無しさん@お腹いっぱい。2015/04/18(土) 08:05:51.06
ウィンドウ管理まわりほんと強化されたよね。
C-g でさくさく閉じれるのがなければ popwin 使うのやめてたわ。
0014名無しさん@お腹いっぱい。2015/04/18(土) 13:18:32.24
>>12
おお!ありがとう!
こんな事出来たんだな
しいて難を言えばC-x +をした時に>>12の例だとinfoが画面の半分を占有しちゃうな…
ずっと80のままでいてくれればいいんだけど
0015名無しさん@お腹いっぱい。2015/04/18(土) 13:56:11.91
window-size-fixed ってバッファローカル変数があるから info のフックあたりで t にしてやればいい
*info* バッファ表示してるときだけサイズ固定が有効になる
0016名無しさん@お腹いっぱい。2015/04/18(土) 14:46:53.83
>>14
Emacs 25なら

(add-to-list 'display-buffer-alist
             '("\\`\\*info\\*\\'" .
               (display-buffer-in-side-window
                (side . right)
                (window-width . 80)
                (preserve-size . (t . nil)))))

これで幅を維持してくれる

preserve-size の値の意味は
(t . nil) 幅を維持
(nil . t) 高さを維持
(t . t) 幅と高さ両方を維持
0017名無しさん@お腹いっぱい。2015/04/18(土) 14:51:53.13
なおバッファローカル変数の `window-size-fixed' と
display-buffer系の preserve-size とでは少し挙動が異なっている

`window-size-fixed' が t の時、そのバッファを表示しているウィンドウは一切サイズ変更できない

一方 preserve-size によるサイズ固定はこれよりちょっと緩く、
そのウィンドウが選択されているときに C-x { 等でサイズを変更する事ができて
それによって preserve-size 設定は解除される
(勿論、C-x + や、他のウィンドウで C-x } とかでは変化しない)
0018名無しさん@お腹いっぱい。2015/04/18(土) 15:17:43.36
ここらへん popwin は追従できてない感じだなぁ。
色々設定しないと side-window なウィンドウで completion-list-buffer も開けない。
0019名無しさん@お腹いっぱい。2015/04/18(土) 15:26:49.46
side-window 以外にも下に表示するとか再利用するとかポップアップするとか色々設定できるんね。
C-g でお手軽クローズに変わる何かがあれば標準の display-buffer-alist だけでも行けそうだなー。
0020名無しさん@お腹いっぱい。2015/04/18(土) 21:31:51.35
俺はLispは全部手動で入れてるわ
別に面倒なビルドプロセスがあるわけでもなし
wget一発で終了

そもそも環境再現したいときはgit clone一発だし、インストールの手間なんか全くないよな
何でも一発だな
0021名無しさん@お腹いっぱい。2015/04/18(土) 23:47:44.75
いきなりどうした

まあ git というか github のお陰で楽になったよね。
dropbox とかでもいいけど。
git 本体なくても直接 raw なところを wget でとってこれるのもいい
0022名無しさん@お腹いっぱい。2015/04/19(日) 03:45:30.01
>>15
どうもどうも
window-size-fixedでサイズ固定出来たけど、そうするとC-x +が無反応になるな…
多分サイズ固定したwindowが1つでもあるとダメなんだろうな、バグかな

>>16
なるほど25だとさらに便利になってんだね
0023名無しさん@お腹いっぱい。2015/04/19(日) 06:53:55.71
>>22
バグかどうかは分からないけれど、たしかに期待には反するね

http://i.imgur.com/5pZTBFC.png この状態で C-x + したら
http://i.imgur.com/pKaAco0.png こうなってほしい
http://i.imgur.com/awPr0Ix.png けど実際にはこうなる
0024名無しさん@お腹いっぱい。2015/04/19(日) 09:28:33.55
fixされているウィンドウ方向は移動できないのがある時点で諦めちゃうのか。
0025名無しさん@お腹いっぱい。2015/04/19(日) 10:55:41.19
emacsスレが今も活況でなんか嬉しいw
0026名無しさん@お腹いっぱい。2015/04/19(日) 12:07:56.40
基本画面は二分割まで、ポップアップはshackleにお任せしているだけの、自分には新鮮な話題だ。
ウィンドウ周り、結構高機能になっていたんですね。

あとはタブバーが公式にビルトイン実装されるのはいつになるのでしょうか?
今よく使われているelscreenは、fringe領域を使ってソフト実装されていますが、
本来fringeは見出し項目などの情報を通知するための領域ですし
それがために他elispの上書きやウィンドウ分割などによって、表示が壊れてしまいますよね。
モダンな高機能テキストエディタとして、
ちゃんとしたタブバーは是非欲しいと思うのですが。
0027名無しさん@お腹いっぱい。2015/04/19(日) 13:14:28.72
>>26
fringe っていうか header かな。
なんとなく公式ではタブ自体に興味もってる人少ないイメージ。
バッファめちゃめちゃ沢山開く人も多いから単純にバッファをタブに表示するって使い方じゃ破綻しそうだしねえ。

個人的にはタブに header-line 使うことにはあんまり抵抗ないんだけど、
elscreen みたいな 1 フレーム 1 情報になるべき情報をバッファごとに表示するってのは気に入らなかった。

上記で出てた side-window つかって 1 フレーム 1 バーを実現してる navbar-mode ってのがあるんだけど、
window-size-fixed を t にしてるってのがあるから縦方向のサイズバランシングが使えなくてなかなか実用しづらい。
http://i.imgur.com/7ccTthO.png
0028名無しさん@お腹いっぱい。2015/04/19(日) 13:40:38.84
最近はemacsをエディタ専用で使っててwanderlustとかのアプリケーションはまったく使ってないから
タブの使い道がそれこそほんとにelscreen用しか思いつかない
0029262015/04/19(日) 13:43:32.32
>>27
おお、side-windowの方でタブバー実現できるんですね!
ウィンドウ分割しても、infoモード使っても、
きちんと1フレームに1つで表示されれいる。
理想通りの動作です。…と思いきや、
縦方向の調整不可能なんですか。うーん、うーん。

硬派な公式陣たちにしてみれば、
タブバーなんてチャラい機能でしかないのでしょうか。
公式って結構保守的なところありますよね。
モダンで高機能なemacs lisp郡がそのことをよく覆い隠してくれていますが。
例えばxftやパッケージマネージャ機能が付いたのが、
比較的最近のことだと知ったときは驚かされました。
0030名無しさん@お腹いっぱい。2015/04/19(日) 14:09:45.57
emacsのml、indent-tabs-modeのデフォルト値をnilにするかどうかで揉めてて面白い
0031名無しさん@お腹いっぱい。2015/04/19(日) 16:16:36.93
>>27
これフォント何?
0032名無しさん@お腹いっぱい。2015/04/19(日) 16:48:26.61
evil使ってる人いる?
helm始めEmacsらしさを損なわないで文字入力を最適化できるなら手出してみようかと思うんだが
0033名無しさん@お腹いっぱい。2015/04/19(日) 18:11:07.09
>>29
マウス使う前提じゃないと、タブバーっていう発想浮かばないんじゃないかな
で、emacs使いでマウス必要と思っている人がほぼいないと思う
0034名無しさん@お腹いっぱい。2015/04/19(日) 19:34:16.29
>>32
emacs と vim との (とくにビジュアルモードにおける) カーソルの扱いの違いに馴染めなくて、結局劣化 evil のようなものを自作したよ。
0035名無しさん@お腹いっぱい。2015/04/19(日) 20:31:10.99
>>31
英文は Consolas で和文は MeiryoKe_Console です。

>>33
クリック対象として以外に、常時出しとく一覧表示用としてもまあ悪くないとは思うんだよね。タブバー。
elscreen と、あとはプロジェクト内ファイルとかの限られたセットのバッファ一覧なんかは表示できてもいいなーとは思う。
0036262015/04/19(日) 21:33:19.98
>>33
うーん、キーボードだけでの操作を前提としている、
GNU screenとかtmuxでも、ちゃんとしたタブ機能が大いに役立っているでしょう?
ならばタブエディタだなんて自然で全然新しくもない発想だと思うんです。
0037名無しさん@お腹いっぱい。2015/04/19(日) 21:54:42.43
そういやそういう議論って emacs-devel で出てたっけと思って検索したら 2008 年頃にあったみたい。
http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg00420.html

ストールマン御大がダメ出ししたりしてるな。まあバッファ表示用としてのタブは確かに全然役に立たなそうではある。
emacs内アプリケーション用のウィジェットとしてなら大いに使いではありそうだねえ。
0038名無しさん@お腹いっぱい。2015/04/19(日) 22:11:23.89
>>34
そういうのならメーリスに流せば反映される可能性高そうだが
0039名無しさん@お腹いっぱい。2015/04/19(日) 22:42:33.41
>>36
普段からtmux使いだけど、タブの表示なんてなくても何の問題もないと思ってるよ
あんなの切り替えるときに見られればいいだけで、常時表示させる必要ないでしょ
0040名無しさん@お腹いっぱい。2015/04/20(月) 13:19:37.70
タブって>>27の画像を見ても分かるけどEmacsのウィンドウの概念と噛み合ってないように思えるんだが…
バッファー≒ウィンドウだから、タブに出すのはしいて言えばフレームになるんじゃないかね
0041名無しさん@お腹いっぱい。2015/04/20(月) 13:48:30.95
フレームの1タブ=1バッファって考えりゃ噛み合ってないだろうけど、
何もフレーム毎にしか表示できないではなくウィンドウ単位にも表示出来るようになってれば済む話ではある。
現状の tabbar.el なんかはそうだし。ただ header と干渉するからせめて header の段数増やせたらいいのにねとかは思う。

>>27 のは elscreen みたいなウィンドウ単位ではなくフレーム単位で管理されるべき情報を表示する場所が欲しい、
ってのが元々の開発動機みたいだからタブを作りたい、ってのが目的ではないよ。
0042名無しさん@お腹いっぱい。2015/04/20(月) 13:56:47.69
実現するとしたら xwidget ブランチの方で実現しそうだな、ネイティブな感じのタブは。
0043名無しさん@お腹いっぱい。2015/04/20(月) 13:59:14.48
>>40
これはバッファを表示してるんでなく、navbarのプラグインでelscreenのタブを表示してる画面なのだ。
0044名無しさん@お腹いっぱい。2015/04/20(月) 18:05:20.05
migemo に単一の文字渡した時に regular expression too big になること多いの辛い
0045名無しさん@お腹いっぱい。2015/04/20(月) 20:04:28.70
タブには90年代にクールだった「立体的なボタン」と同じ臭いがする
0046名無しさん@お腹いっぱい。2015/04/20(月) 22:21:33.81
emacs のウィジェットパッケージは未だにクールな3Dボタンのままだね・・・
0047名無しさん@お腹いっぱい。2015/04/20(月) 22:38:55.54
だからと言ってWindows10のぺったんこのボタンはどうかと思う
0048名無しさん@お腹いっぱい。2015/04/21(火) 08:56:12.55
>>44
正規表現の分割とかでなんとかなるんじゃねえの?
0049名無しさん@お腹いっぱい。2015/04/21(火) 10:00:41.15
auto-fill-mode をかけているファイルをoccur等使って日本語で正規表現検索するとき、

"日
?本
?語
?の
?検
?索"

こんなことしてるんですけど、クールなやり方を教えてもらえませんか?
0050名無しさん@お腹いっぱい。2015/04/21(火) 10:18:42.82
isearch は M-s SPC で改行無視出来るモードに切り替わるけど occur はそういのなさ気だね。
helm 絡みのならそういうのさっくり出来そうな気もするけど使ってないから具体的にどうすりゃいいのかわからん。
0051名無しさん@お腹いっぱい。2015/04/21(火) 11:06:15.65
>>50
isearch の M-s SPC というのがあるのですね。
その関数をoccur等に援用できないか検討します。
ありがとうございます。
0052名無しさん@お腹いっぱい。2015/04/21(火) 21:15:49.96
☆ 日本の核武装は絶対に必須ですわ。☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html

☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。
私たちの日本国憲法を絶対に改正しましょう。☆
0053名無しさん@お腹いっぱい。2015/04/22(水) 00:36:49.16
内部で message 呼び出してる関数は引数なりカスタマイズ変数なりで黙らせられるようにしてほしいぜ・・・
0054名無しさん@お腹いっぱい。2015/04/22(水) 21:32:09.80
自分でやれ
0055名無しさん@お腹いっぱい。2015/04/22(水) 22:54:52.79
これやったら標準の補完がちょっとリッチになった
(add-hook 'minibuffer-setup-hook
(lambda ()
(when (cl-loop with c = (current-local-map)
for m = c then (keymap-parent m)
while m
when (eq m minibuffer-local-completion-map)
return t
finally return nil)
(add-hook 'post-command-hook
(lambda ()
(cl-letf (((symbol-function 'message)
'ignore))
(minibuffer-completion-help)))
nil t))))
0056名無しさん@お腹いっぱい。2015/04/23(木) 01:10:14.70
そうそう、標準でそんな感じでいいのにって思うんです。
何度もTAB打つの面倒になって、何かしら入れるか作る事になるし。
0057名無しさん@お腹いっぱい。2015/04/23(木) 19:54:52.19
>>55
これなにがうれしいの?
0058名無しさん@お腹いっぱい。2015/04/24(金) 22:10:17.39
*.ac.jpなサイトで、Emacsの紹介がいくつか見つかるけど、どれも大概何か残念というか…。
比較的新しい記事なのに、バージョンが22以前だったり、
canna使わせたり、等幅かどうかすら怪しい汚いフォント使わせたり…
まぁこういうのって学生の方が自発的に色々良いやり方を調べて行くもんなんですが。
0059名無しさん@お腹いっぱい。2015/04/24(金) 22:18:06.85
それを言ったら、Emacsの紹介で残念じゃないのを見たことがない。

大学のは変な環境で動かすのを前提としてることが多い。
0060名無しさん@お腹いっぱい。2015/04/24(金) 22:21:46.01
>>58
大学公式に使い方説明してるところが残念ってこと?
0061名無しさん@お腹いっぱい。2015/04/24(金) 22:24:26.18
授業用のwebページで解説してるようなやつじゃないかな
0062名無しさん@お腹いっぱい。2015/04/24(金) 22:29:59.81
>>61
はい。そういうページのことです。
ページに書いてあることだけの情報で篭もる学生がいるとするなら、
メモ帳以下の変なテキストエディタという印象しか持てませんよね。
0063名無しさん@お腹いっぱい。2015/04/24(金) 22:38:59.96
vim よりは普通のエディタに近いからとりあえず emacs を選んだ感があるよね。
0064名無しさん@お腹いっぱい。2015/04/24(金) 23:55:02.05
基本あくまで講義の準備にすぎない添え物だし
emacsにかぎったこっちゃない
viならとりあえずesc押せレベルだし
ネットワークの設定とかもっとやばいし
古いsendmailの設定さらしっばなしで有害だったり
0065名無しさん@お腹いっぱい。2015/04/25(土) 00:19:14.77
別にエディタの勉強がメインなわけじゃないんだしいいんじゃねえの。
というか大学時代に Emacs 触ったことを後悔してるわ。
このろくでもないキーバインドに慣れてしまったせいでいたるところで不便な思いさせられる。
0066名無しさん@お腹いっぱい。2015/04/25(土) 06:51:25.95
$ emacs file.txt &
でfile.txtを編集できる
C-x C-cで編集を終える

という情報だけ与えられた学習者が編集したいファイル毎にEmacsを起動してるケースを知っているが?
0067名無しさん@お腹いっぱい。2015/04/25(土) 07:25:32.37
知ってるからなんだっていうの?
0068名無しさん@お腹いっぱい。2015/04/25(土) 07:28:26.05
初心者には
C-h または
M-x help を教えるべきだと思う。

できるやつはこれだけで一気に伸びる。
0069名無しさん@お腹いっぱい。2015/04/25(土) 07:53:15.75
そんなのも含めて最初に一発チュートリアルやらせりゃいいんじゃないの。
言語まわりの環境変数がちゃんと設定されてりゃ emacs 側の設定がなくてもちゃんと日本語のチュートリアルができるし。
ヘルプのことだってもっと丁寧に説明してくれてる。
0070名無しさん@お腹いっぱい。2015/04/25(土) 07:58:40.76
vim に比べるとスタート時のとっかかりになるポータルサイトみたいなのないよね
http://emacs-jp.github.io/http://vim-jp.org/ の情報量の差が激しい
0071名無しさん@お腹いっぱい。2015/04/25(土) 10:04:26.24
ggrksと言われすぎて目の前の情報スルーしてぐぐって情報少ないよね(キリッとか
いつも必ず一歩遅れる・ダメな方を選ぶ
それがバカ
0072名無しさん@お腹いっぱい。2015/04/25(土) 10:17:23.93
チュートリアルの内容、やったことある人ならわかるけど薄いよ。
0073名無しさん@お腹いっぱい。2015/04/25(土) 21:10:09.58
こんにちは。あたしはカウガール。
すき家に牛肉を届けるために、旅をしています。
    __
  ヽ|__|ノ    モォ
  ||‘‐‘||レ   _)_, ―‐ 、
  /(Y (ヽ_ /・ ヽ     ̄ヽ
  ∠_ゝ  ` ^ヽ ノ.::::::__( ノヽ
   _/ヽ      /ヽ ̄ ̄/ヽ
0074名無しさん@お腹いっぱい。2015/04/26(日) 15:21:47.44
http://i.imgur.com/DQwZ29C.png
これ見てて思ったけど現状でもUI部品をSVGで描画することは可能なんだよな
0075名無しさん@お腹いっぱい。2015/04/26(日) 15:45:48.86
emacsに画像表示機能とかいらねーよ
0076名無しさん@お腹いっぱい。2015/04/29(水) 17:09:50.00
indent-regionっていうのがあるけど、
これは、offsetの変更のみで
ifの中括弧の改行の有無とかは変更できないよね
if(){
}
if()
{
}
こういうのをいっぺんに整形したいんだけど
0077名無しさん@お腹いっぱい。2015/04/29(水) 17:57:02.96
出来ないんじゃなかったっけ
色んな外部整形ツールがあるからそれを shell-command-on-region で呼び出して置き換えるのがいいんじゃないかな
0078名無しさん@お腹いっぱい。2015/04/29(水) 20:47:50.55
>>77
確かに、それでもできるけどルールを統一するのが無駄手間ですよね
せっかく、c-hanging-braces-alistで{}の改行を定義しているのに・・・
できることならEmacs内でやりたい
0079名無しさん@お腹いっぱい。2015/04/29(水) 21:59:48.05
>>78
現状存在しないから自力で実装するしか無いんでない。
フォーマットするプログラムの引数を現状のスタイルから生成するぐらいが現実的な気もするけど。
0080名無しさん@お腹いっぱい。2015/05/01(金) 01:02:26.28
Debian GNU/Linux スレッドから誘導されてきました
Debianの新版jessie uppgradeにともないemacsを23から24にしました
サーバ側でemacs --daemonでemacsを起動しておいて
remoteからsshで接続後emacsclient -cして作業し
emacsclientを終了後sshをexitすると
jessieにしてから抜け出せなくなりました
(exitしてもremote側のプロンプトが返ってこない)
ctrl-cして抜け出すとサーバ側のemacsが死んでしまい
emacsをdaemonで起動している有り難味がなくなってしまいます

恐らくはremote側からemacsclientを起動するときにオプションなり
環境変数を指定すれば解決するような気がしているのですが
どちら様か解決法をご存知無いですか?
■ このスレッドは過去ログ倉庫に格納されています