Emacs Part 41
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2012/09/07(金) 18:10:22.94Emacs Part 40
http://toro.2ch.net/test/read.cgi/unix/1328958449/
0383名無しさん@お腹いっぱい。
2012/10/15(月) 00:53:53.360384名無しさん@お腹いっぱい。
2012/10/15(月) 04:29:48.15けれども以下のようにしても上手くいかないんですが、何故でしょうか?
(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では無効とかなったりすると嬉しいけどやり方がわからない。。。
0385名無しさん@お腹いっぱい。
2012/10/15(月) 08:43:04.54(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 を使うか。
0386名無しさん@お腹いっぱい。
2012/10/16(火) 01:34:49.36> ; (c-mode nil) とかするとc-modeでは無効とかなったりすると嬉しいけどやり方がわからない。。。
(kill-local-variable 'whitespace-line-column)
0387名無しさん@お腹いっぱい。
2012/10/16(火) 05:02:23.98lambdaが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使っても無理?)
0388名無しさん@お腹いっぱい。
2012/10/16(火) 05:04:40.39kill-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))
0389名無しさん@お腹いっぱい。
2012/10/16(火) 05:31:17.16ありがとうございました。
ところで、変数に関しては 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に依存したくない。
0390名無しさん@お腹いっぱい。
2012/10/16(火) 05:36:35.12(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))))))))
0391名無しさん@お腹いっぱい。
2012/10/16(火) 09:03:47.02cl だけど。
0392名無しさん@お腹いっぱい。
2012/10/16(火) 15:11:13.070393名無しさん@お腹いっぱい。
2012/10/16(火) 17:13:55.36できるだけデフォルトで使いたい気持ちもあるんだけど便利にしたい気もする
0394名無しさん@お腹いっぱい。
2012/10/16(火) 19:28:57.45そもそも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だとどっちでもちゃんと動くのに。
0395名無しさん@お腹いっぱい。
2012/10/16(火) 19:35:57.53http://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" "!" "!" "!" "!" "!" "!"
0396名無しさん@お腹いっぱい。
2012/10/16(火) 19:37:16.27http://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
0397名無しさん@お腹いっぱい。
2012/10/17(水) 00:48:16.38ELisp は dynamic binding だからね。
(defun mul2 (lis)
(lexical-let ((aux (lambda (x) (* 2 x))))
(my-map (lambda (x) (funcall aux x))
lis)))
みたいな、かっこわるい解なら思いつくけど。
0398名無しさん@お腹いっぱい。
2012/10/17(水) 04:15:21.52次のバージョンでどんな機能をいれるとか、
その手のEmacs最新動向ってどこみればわかるんでしょうか?
http://www.gnu.org/software/emacs/
とかだと8月の更新以降アナウスないですし。
0399名無しさん@お腹いっぱい。
2012/10/17(水) 05:00:32.13emacs-devel mailing listのアーカイブを見る + subscribeする
Savannah Emacs page
ttp://savannah.gnu.org/projects/emacs/
を見て最新リポジトリをゲットする
0400名無しさん@お腹いっぱい。
2012/10/17(水) 09:31:39.00俺は毎日これを見るのが楽しみ。
0401名無しさん@お腹いっぱい。
2012/10/17(水) 10:44:37.570402名無しさん@お腹いっぱい。
2012/10/17(水) 21:35:08.820403名無しさん@お腹いっぱい。
2012/10/17(水) 22:25:51.120404名無しさん@お腹いっぱい。
2012/10/17(水) 22:51:15.52reddit は昔ほど投稿ないよね
0405名無しさん@お腹いっぱい。
2012/10/18(木) 22:46:14.62helm-c-moccur-enable-auto-look-flag t ; 現在選択中の候補の位置を他のwindowに表示する
0406名無しさん@お腹いっぱい。
2012/10/18(木) 23:07:39.21occur だの grep は多分それで望みどおりになるんじゃないかな
0407名無しさん@お腹いっぱい。
2012/10/18(木) 23:17:54.75それならわからない。すまん。
0408名無しさん@お腹いっぱい。
2012/10/20(土) 09:20:14.62いまどき Emacs って;いわば、化石食べてる原始人みたいなものか。
0409名無しさん@お腹いっぱい。
2012/10/20(土) 09:33:42.370410名無しさん@お腹いっぱい。
2012/10/20(土) 09:40:09.540411名無しさん@お腹いっぱい。
2012/10/20(土) 09:43:30.50食べるものがアンモナイトきによく食べてました
0412名無しさん@お腹いっぱい。
2012/10/20(土) 13:30:41.48vimmerにああいうこと言われるのが納得いかん。
歴史は確かにemacsの方がずいぶん長いが、
作りはvimの方が古くさいだろうJK
0413名無しさん@お腹いっぱい。
2012/10/20(土) 18:07:14.28日本語もおぼつかない池沼は相手にするだけ時間のムダ
0414名無しさん@お腹いっぱい。
2012/10/20(土) 18:52:04.81おれはそこでemacsを動かして使うよ
0415名無しさん@お腹いっぱい。
2012/10/20(土) 18:57:49.200416名無しさん@お腹いっぱい。
2012/10/20(土) 19:32:42.310417名無しさん@お腹いっぱい。
2012/10/21(日) 08:47:30.17つまり、化石を食べていたようなものということ。
そこに危機感をもたないかぎり IT では今後勝てない。
単純に論理的なはなし。
0418名無しさん@お腹いっぱい。
2012/10/21(日) 09:30:52.660419名無しさん@お腹いっぱい。
2012/10/21(日) 09:44:01.17基地外の分際でITとかw
0420名無しさん@お腹いっぱい。
2012/10/21(日) 10:17:23.630421名無しさん@お腹いっぱい。
2012/10/21(日) 11:09:33.610422名無しさん@お腹いっぱい。
2012/10/21(日) 17:27:27.08なれるとあれいいな。
0423名無しさん@お腹いっぱい。
2012/10/21(日) 17:50:39.09光ケーブルの口の方が小さいし量子暗号が使えていいかな^^
0424名無しさん@お腹いっぱい。
2012/10/22(月) 06:24:35.02未来の人間は完全滅菌されたバイオプールの中で
強制的にドーパミン注射を打たれてユートピアな世界の幻想を見させ続けられるんだよ
プログラミングなんて泥臭いことしないよ
そんで寿命を迎えたらダストボックスにポイって強制排出される
ちなみにgoogleで働いてるemacs hackerとして有名なsteve yeggeはemacsで60万行の
javaを一人で書いたけどeclipsを使う人たちはもっと生産性が高いんでしょ?
ム板のeclipsスレの最近のレスはこんな感じ↓
445 名前:デフォルトの名無しさん[sage] 投稿日:2012/10/21(日) 15:43:57.17
Junoにしたら、エディタのタブの右クリックメニーでの「新しく開く」ってのが無くなった。
同一ファイルを複数開くのは対応しなくなったの?
446 名前:デフォルトの名無しさん[sage] 投稿日:2012/10/21(日) 18:19:16.57
>>445
「ウィンドウ」メニューの
「新規エディター」でどう?
0425名無しさん@お腹いっぱい。
2012/10/22(月) 06:30:50.140426名無しさん@お腹いっぱい。
2012/10/22(月) 08:47:26.44ぶっちゃけ steve yegge だったら eclipse 使っても同じぐらい生産性高いこと出来るだろ。
そもそもエディタで言語設計してるわけじゃないんだぞ?
だいたいそういう比較始めると底辺 emacs ユーザが引き合いにだされてm9(^Д^)プギャーされるだけだろうに。
0427名無しさん@お腹いっぱい。
2012/10/22(月) 13:23:59.380428名無しさん@お腹いっぱい。
2012/10/22(月) 15:05:24.590429名無しさん@お腹いっぱい。
2012/10/22(月) 15:06:10.660430名無しさん@お腹いっぱい。
2012/10/22(月) 17:17:48.88特にUTF-8関連(ttp://nijino.homelinux.net/emacs/emacs23-ja.html)のパッチを貼ってるから。
調べるにも面倒なんで、ダイレクトな質問スマソ。
0431名無しさん@お腹いっぱい。
2012/10/22(月) 19:53:45.060432名無しさん@お腹いっぱい。
2012/10/22(月) 19:58:06.410433名無しさん@お腹いっぱい。
2012/10/22(月) 19:59:00.02ありがとうございます。このまま23.4使います。
0434名無しさん@お腹いっぱい。
2012/10/22(月) 20:02:48.98lexical binding だけ
0435名無しさん@お腹いっぱい。
2012/10/22(月) 20:55:03.54JITコンパイルとかIncremental GCとか。
今更そんなのモダンじゃねーと言われそうだけど、実装するのは大変なんだろうね。
0436名無しさん@お腹いっぱい。
2012/10/22(月) 21:20:36.510437名無しさん@お腹いっぱい。
2012/10/22(月) 22:25:41.26これまではemacs22で特に設定せずにちょうどいい大きさのフォントで表示されていたのですが,
サーバが変わりemacs23になってから,やたらと小さいフォントで表示されてしまって困っています。
-nwで…とも思ったのですが,C-x52で複数のウィンドウを開いて作業することに慣れてしまっていて,
できれば,フォントの設定をしたいと思っています。
cygwinのxlsfontでフォントの一覧などは表示できることを確認したのですが,
webで検索しても,どのフォントをどのように設定すればいいのかわかりません。
適当なフォントを選んで.emacsでemacs23のフォントを設定する方法を教えていただけないでしょうか。
0438名無しさん@お腹いっぱい。
2012/10/22(月) 22:45:26.62(set-fontset-font "fontset-standard" nil (font-spec :name "xlsfont で出た名前"))
(add-to-list 'default-frame-alist '(font . "fontset-standard"))
fontset-standard は別に好きな名前で構わない。
set-fontset-font の第二引数では文字セット等を指定できて任意の文字セットや
任意の文字のみ別のフォントを指定も可能。
0439437
2012/10/22(月) 23:07:36.51全くわかっていませんが,ご指示通りに設定したところ大きなフォントで表示されました。。
-nwで起動すると
error: Fontset `fontset-standard' does not exist
と表示されてしまいますが,こちらは自力で何とかしてみたいと思います。
ありがとうございました。
0440名無しさん@お腹いっぱい。
2012/10/23(火) 13:10:46.891) あああ
2) いいい
3) ううう
となったんですが、これはどのコマンドでしょうか?
0441名無しさん@お腹いっぱい。
2012/10/23(火) 13:18:24.150442名無しさん@お腹いっぱい。
2012/10/23(火) 13:42:25.07> orgモードで箇条書きをしてたのですが、何かの拍子に、
> 1) あああ
> 2) いいい
> 3) ううう
>
> となったんですが、これはどのコマンドでしょうか?
いや、箇条書きの1) 2) 3) が付与されました。
0443名無しさん@お腹いっぱい。
2012/10/24(水) 18:07:21.84手がホームポジションから動かず高速に入力できそうだと思ったので、
C-;を押した時にC-cを押したとemacsに思わせたいのですが、どうすればよいでしょうか?
C-aをC-cにするなら(keyboard-translate ?\C-a ?\C-c)で良いみたいなのですが、
?\C-;ではうまくいきませんでした。
0444名無しさん@お腹いっぱい。
2012/10/24(水) 18:21:46.320445名無しさん@お腹いっぱい。
2012/10/24(水) 18:30:40.97うちの環境では
(global-set-key (kbd "C-; C-s") 'isearch-forward)
なら動くけど
(global-set-key "\C-;\C-s") 'isearch-forward)
だと (error "Invalid modifier in string") でダメ。
あと define-prefix-command とか見てみれば?
0446443
2012/10/24(水) 18:42:29.02(keyboard-translate ?\C-; ?\C-c)がダメなのは;以降がコメントアウトされてしまうからのようなので
(keyboard-translate (kbd "C-;") ?\C-c)としたのですが
(wrong-type-argument integerp [67108923])と言われてしまいます。
普通のコマンドにC-;を割り当てた場合正常に動作するので、認識はしていると思います。
0447名無しさん@お腹いっぱい。
2012/10/24(水) 19:18:34.60keyboard-translate は文字(文字コード)のみを引数にとることができる。
つまり、文字コードで表現できるキーしか変換できないということ。
\C-a はすなわちASCII制御文字の ^A のことだから扱えるけど、
対応する制御文字がない \C-; とか、それ以外にも \M-a とかも無理。
そういうときには key-translation-map を使う。
(define-key key-translation-map (kbd "C-;") (kbd "C-c"))
0448443
2012/10/24(水) 22:50:35.14なるほど!分かりやすいです。(\で;をエスケープする発想が出てきませんでした。)
きれいに動くようになりました。
ありがとうございました。
0449名無しさん@お腹いっぱい。
2012/10/26(金) 09:15:36.51それはええマックスだったね。
0450名無しさん@お腹いっぱい。
2012/10/26(金) 10:24:28.820451名無しさん@お腹いっぱい。
2012/10/27(土) 03:21:43.590452名無しさん@お腹いっぱい。
2012/10/27(土) 15:15:13.97ttp://d.hatena.ne.jp/m2ym/20110120/1295524932
最新版(v0.5.1)とEmacs23.2.1で使っているのですが、
今までこの様にしていて使っていました。
(add-to-list 'popwin:special-display-config '("*anything" :regexp t :height 20 :position bottom))
これが:position bottomとrightの時はうまく動くのですが、leftやtopにするとどうもうまく動きません。
C-x 2などで分割している状態でポップアップさせると、
表示自体は、うまく左や上にポップアップされるのですが、
それを閉じた時ウィンドウが消えて1つになってしまいます。
0453名無しさん@お腹いっぱい。
2012/10/27(土) 17:40:38.11どこかに関数一覧とその機能を日本語で書いた説明ないかな
0454名無しさん@お腹いっぱい。
2012/10/27(土) 17:48:19.270455名無しさん@お腹いっぱい。
2012/10/27(土) 18:01:27.150456名無しさん@お腹いっぱい。
2012/10/27(土) 18:23:23.870457名無しさん@お腹いっぱい。
2012/10/27(土) 19:01:38.45使ってる
0458452
2012/10/27(土) 19:19:45.30popwin.elで登録情報を:position leftとした場合、
ウィンドウ分割時、ポップアップはうまくいくのですが、
ポップアップが消えると、ウィンドウ分割まで消えてしまって困っています。
何か対処法はないでしょうか?
>>457
:position leftでウィンドウ分割した状態で
ポップアップウィンドウを閉じた場合、元のウィンドウ情報は消失しないでしょうか?
0459名無しさん@お腹いっぱい。
2012/10/27(土) 19:30:59.11そんだけの情報で何を教えろというのか。
正常に動作するし、他の何かとの相性が悪いんじゃないかくらいしか言えん。
0460名無しさん@お腹いっぱい。
2012/10/28(日) 00:46:15.30相手にしてると逆に生産性を下げることになる。
0461名無しさん@お腹いっぱい。
2012/10/28(日) 01:41:54.620462452
2012/10/28(日) 08:31:55.07C-x 2してからanything、M-x (M-x runs the command anything-execute-extended-command)を押し、
C-gを押すとウィンドウが1つになってしまいます。
popwin.el v0.5.1、 anything.el v1.3.9、debianのEmacs(23.2.1)とwindowsのEmacs(23.3.1)どちらでも再現しました。
(require 'anything-startup)
(setq anything-samewindow nil)
(require 'popwin)
(setq display-buffer-function 'popwin:display-buffer)
(setq popwin:special-display-config '(("*anything" :regexp t :width 20 :position left) ("*scratch*" :width 20 :position left)))
しかしこの様に設定してから
(display-buffer "*scratch*")
とするとこれはC-g後も正常な動きをしました。popwin.elとanything.elの相性問題のようです。もうしばらく調べてみます。
0463名無しさん@お腹いっぱい。
2012/10/28(日) 09:25:17.96ちゃんと調べてないけど、C-g二度打ちしないとダメなときがあったり、稀に何度押しても閉じなかったりする
でもそういうの差し引いても便利だと思うよ
0464名無しさん@お腹いっぱい。
2012/10/28(日) 09:39:38.37こういう、あったりなかったりってのが一番いらつくんだが。
0465名無しさん@お腹いっぱい。
2012/10/28(日) 10:48:38.650466名無しさん@お腹いっぱい。
2012/10/28(日) 15:50:28.51なら使わなければいい。
誰もお前に使うことを強要してない
0467名無しさん@お腹いっぱい。
2012/10/28(日) 16:36:22.84使いづらいのを使いづらいっていって何が悪いのよ。
0468名無しさん@お腹いっぱい。
2012/10/28(日) 17:05:22.360469名無しさん@お腹いっぱい。
2012/10/28(日) 17:52:21.490470名無しさん@お腹いっぱい。
2012/10/28(日) 17:53:35.28うんうん。わかるわー。
使いづらいって言わないと開発者に分からないし、
直接言うと炎上するからここに書くしかないよねー。
0471名無しさん@お腹いっぱい。
2012/10/28(日) 18:01:22.860472名無しさん@お腹いっぱい。
2012/10/28(日) 18:22:32.11464は作者のモチベーション下げるだけで、464の憂さ晴らし以外にメリットがない
0473名無しさん@お腹いっぱい。
2012/10/28(日) 19:20:02.34どうせ直せないから気を使ってあげても意味ないよ。
>>464 みたいな優しい言い方じゃ伝わらん。
0474名無しさん@お腹いっぱい。
2012/10/28(日) 20:05:38.850475名無しさん@お腹いっぱい。
2012/10/28(日) 20:26:16.47>>472 によると
>使いづらいことを伝えたいのなら463で充分
とのことで伝わるらしいが…
0476名無しさん@お腹いっぱい。
2012/10/28(日) 21:41:13.59とにかく続きは病人スレでやれよ
http://toro.2ch.net/test/read.cgi/unix/1342582441/
0477名無しさん@お腹いっぱい。
2012/10/28(日) 22:44:00.22http://www.ranvis.com/articles/smart-questions.ja.html
0478名無しさん@お腹いっぱい。
2012/10/29(月) 20:49:19.09糖質はうまく使う必要がある。
0479452
2012/10/29(月) 22:36:36.84(C-x 2した状態でanythingをpopupで呼び出し、C-gでpopupを消した時ウィンドウ構成が破壊されませんか?)
0480名無しさん@お腹いっぱい。
2012/10/29(月) 22:54:25.180481名無しさん@お腹いっぱい。
2012/10/29(月) 23:40:39.69direxでやって無事だったからスルーしてたけど、anythingでためしたら破壊されたよ
0482名無しさん@お腹いっぱい。
2012/10/30(火) 00:03:54.410483名無しさん@お腹いっぱい。
2012/10/30(火) 00:39:06.69試してみたけど破壊されなかったよ。ただしpopwinのバージョンが違うけど。
emacs: 23.2.92.1
popwin: 0.3
init.el:
(require 'popwin)
(add-to-list 'popwin:special-display-config '("*anything" :regexp t :height 20 :position bottom))
(require 'anything-startup)
(setq anything-samewindow nil)
手順:
- C-x 2した状態でanythingをpopupで呼び出し
- C-gでpopupを消す
- 画面は元の2分割状態に戻る
■ このスレッドは過去ログ倉庫に格納されています