Emacs Part 40
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2012/02/11(土) 20:07:29.69Emacs Part 39
http://toro.2ch.net/test/read.cgi/unix/1322556644/
0654名無しさん@お腹いっぱい。
2012/07/18(水) 12:35:34.55るびきちスレ
http://toro.2ch.net/test/read.cgi/unix/1342582441/
0655名無しさん@お腹いっぱい。
2012/07/18(水) 12:35:50.350656名無しさん@お腹いっぱい。
2012/07/18(水) 12:49:24.85添削してけれ
(global-set-key (kbd "C-z C-l") 'switch-last-window-configure)
(defun switch-last-window-configure (&optional silent)
"ウィンドウ分割状態を切り替える.
SILENT が non-nil の場合は切り替えメッセージを表示しない.
2状態固定."
(interactive)
(let* ((cur (current-window-configuration))
(state (frame-parameter nil 'last-window-state))
(conf (car state))
(side (case (cdr state) (?A ?B) (?B ?A) (t ?B))))
(if conf
(set-window-configuration conf)
(delete-other-windows))
(unless silent
(message "Switching to side \"%c\"." side))
(set-frame-parameter nil 'last-window-state (cons cur side))
(force-mode-line-update)))
;; フレームタイトルに状態を表示する
(setq frame-title-format
(append (if (atom frame-title-format)
(list frame-title-format)
frame-title-format)
'((:eval (let ((state (frame-parameter nil 'last-window-state)))
(when state (format " [%c]" (cdr state))))))))
0657名無しさん@お腹いっぱい。
2012/07/18(水) 12:55:06.40以上
0658名無しさん@お腹いっぱい。
2012/07/18(水) 12:59:52.370659名無しさん@お腹いっぱい。
2012/07/18(水) 13:04:27.29誰だよ
0660名無しさん@お腹いっぱい。
2012/07/18(水) 13:07:48.250661名無しさん@お腹いっぱい。
2012/07/18(水) 13:23:51.012状態だけの小粒機能なんでオレならメッセージやタイトルいじりまで削りたおして.emacsに置いとく。
force-modline-update 要らなくね?要るん?
あと名前は flip-window-configuration とかにしとく。
ということでいただきました。
0662名無しさん@お腹いっぱい。
2012/07/18(水) 13:38:15.63NTEmacs だけど force-modeline-update いれないとフレームタイトルがその場で更新されなかったので入れてみた。
環境によっては不要かもしれない。
0663名無しさん@お腹いっぱい。
2012/07/18(水) 19:52:10.070664名無しさん@お腹いっぱい。
2012/07/18(水) 20:05:00.98今度からは >>1 にも明記してるびきちスレへ誘導する方向で。
0665名無しさん@お腹いっぱい。
2012/07/18(水) 20:46:07.360666名無しさん@お腹いっぱい。
2012/07/18(水) 20:49:32.030667名無しさん@お腹いっぱい。
2012/07/18(水) 20:50:00.310668名無しさん@お腹いっぱい。
2012/07/18(水) 20:50:25.97わからない人は黙りなさい
0669名無しさん@お腹いっぱい。
2012/07/18(水) 21:17:16.92浮動小数点型だとどうしてもrgb->ycrcb->rgbしたときに元の色に戻らない場合が出ちゃう。
elispで分数の状態で値を保持/演算出来るような関数ってあるの?
;; 明るさ変更
(labels ((rgb-to-ycrcb (r g b)
(mapcar (lambda (v)
(round v 1000))
(list (+ (* 299 r) (* 587 g) (* 114 b))
(+ (* 500 r) (* -418.69 g) (* -81.31 b))
(+ (* -168.74 r) (* -331.26 g) (* 500 b)))))
(ycrcb-to-rgb (y cr cb)
(let ((y (* y 1000)))
(mapcar (lambda (v)
(max 0 (min 65535 (round v 1000))))
(list (+ y (* 1402 cr))
(+ y (* -714.14 cr) (* -344.14 cb))
(+ y (* 1772 cb)))))))
(defun color-lighten (color-name rate)
"指定した色の明さの割合を変更する。"
(apply #'format "#%04x%04x%04x"
(apply 'ycrcb-to-rgb
(let ((ycrcb (apply 'rgb-to-ycrcb (color-values color-name))))
(cons (* (car ycrcb) rate) (cdr ycrcb)))))))
(color-lighten "SystemWindow" 0.3) ;; => "#4ccd4ccd4ccd"
(color-lighten "green" 0.9) ;; => "#0000f0f80000"
(color-lighten "#feaacd" 0.3) ;; => "#73131ebe41e2"
0670名無しさん@お腹いっぱい。
2012/07/18(水) 21:27:18.28100倍の整数で扱えばいいんじゃね?
0671名無しさん@お腹いっぱい。
2012/07/18(水) 21:30:12.47うん、なので1000倍して計算して最後に 1000 で丸めてる。
でもどうしてもやっぱり微妙な誤差が出ちゃう。
やりたいことは明度変換だけだからかまわないっちゃかまわないんだけどすっきりしない・・・
0672名無しさん@お腹いっぱい。
2012/07/18(水) 21:31:02.980673名無しさん@お腹いっぱい。
2012/07/18(水) 21:33:24.80確かにあの中では帯分数を表現できるけどライブラリ的に使えるのかねあれ
0674名無しさん@お腹いっぱい。
2012/07/18(水) 21:33:58.68分数をコンスセルで a/b <-> (a . b) のように保持して
(a . b) + (c . d) = (ad+bc . bd)
(a . b)*(c . d) = (ac . bd)
(a . b)^(-1) = (b . a)
みたいに演算を入れればやれる。面倒だけどね
0675名無しさん@お腹いっぱい。
2012/07/18(水) 21:39:46.03なるほど。そんでもって実数が必要なときは (/ a b) で評価してあげればいいわけか。
なけりゃ自分で作っちゃえってことですね。やってみます。ありがとう!
>>673
calc-eval ってのがあったけど分数形式から実数形式にどうやって戻すのかがよくわからなかった。
0677名無しさん@お腹いっぱい。
2012/07/18(水) 21:46:45.40整数演算だけでやるアルゴリズムがありそうな気がする
0678名無しさん@お腹いっぱい。
2012/07/18(水) 21:50:35.8864bitなら行けるぞ。
0679名無しさん@お腹いっぱい。
2012/07/18(水) 22:33:25.32既約分数もとめるのにユークリッドの互除法とかでてきてなんか学生の頃に戻った気分になってきたわ
0680601
2012/07/19(木) 00:55:31.18>>602
そのページの内容は、Emacs-Lisp講座と同じ内容が乗っているように見えます。
本自体が悪いわけではないと思うのですが、私がメジャーモードを作るための知識は得ることができませんでした。
例えば、タブ幅を4にしてタブはスペースで入力。TABを押したときは前の行とインデントを合わせる。
というような設定をしたくても、わかりませんでした。これは、本が参考にならないのではなく、私自身の知識が足りないのもあるかと思います。
>>603
ちょっとしたモードの設定を変更するときに良さそうですね。設定をして確かめてみます。
>>604
本屋さんに行った時にでも確認してみます。
0681名無しさん@お腹いっぱい。
2012/07/19(木) 01:46:24.60package-list-packageしてもbuild-inしかでてこないです。
外部パッケージは表示されず・・。
メッセージバッファには、Failed to download `gnu' archive.とあります。
package-archives is a variable defined in `package.el'.
Its value is (("gnu" . "http://elpa.gnu.org/packages/"))
デフォ値はこれで、ブラウザからはelpaサイトにアクセスできます。
なんか外部読みに行くための設定しないとだめなんですかね?
0682名無しさん@お腹いっぱい。
2012/07/19(木) 02:43:14.79タブが半分しか見えなくなるのってどうにかなんないのかな?
0683名無しさん@お腹いっぱい。
2012/07/19(木) 10:12:51.530684名無しさん@お腹いっぱい。
2012/07/19(木) 10:26:17.33>例えば、タブ幅を4にしてタブはスペースで入力。TABを押したときは前の行とインデントを合わせる。
>というような設定をしたくても、わかりませんでした。
ここらへんになってくると、メジャーモードの作り方というより一般的なemacsの挙動の制御の仕方になるから
確かにあの章読んでもあんまり意味なさそう。
その設定の仕方がわからないのか、それとも自作モード時にだけその設定にする方法がわからないかで違ってくるだろうけど。
設定の仕方わからないだけなら http://www.bookshelf.jp/soft/meadow_toc.html あたり眺めてやってみてもいいかもしれんね。
細かい疑問はここ書きゃ誰か教えてくれると思うよ。emacs 自体の話題が無くて共食いしてるぐらいなんだし。
0685名無しさん@お腹いっぱい。
2012/07/19(木) 14:19:49.12melpaとmarmaladeを追加する
0686682
2012/07/19(木) 17:05:57.57- 左のバッファには常に出る。
- 右のバッファには、左と同じ内容を表示しているときにのみ出る。
こうではなく、メニューやミニバッファみたいに常に横長の一本であってほしい。
0687名無しさん@お腹いっぱい。
2012/07/19(木) 18:39:35.19proxyの中にいるならurl-proxy-servicesの設定がいるけど、そうじゃなかったら、
何の設定をしなくともelpaのパッケージはリストに出てくるよ。
$HOME/.emacs.d 以下のファイルやディレクトリの作成に失敗してもそのエラーは
出るんで、そのへんを気にしてみてもよいかもね。
0688681
2012/07/19(木) 19:22:27.44>何の設定をしなくともelpaのパッケージはリストに出てくるよ。
これなんですが、上の書き込みを試したときは自宅だったのでproxyなしでした。
ところがproxyありの会社環境ではgnuパッケージリストもavailableで表示されました。
※ちなみに何の設定も追加していません。
環境変数 http_proxy は以前から設定していたのでproxy経由のアクセスは可能になっていますが・・。
自宅だとhttp_proxyは空文字になっています。
使用しない場合は環境変数は未定義じゃないとだめ??
>$HOME/.emacs.d 以下のファイルやディレクトリの作成に失敗してもそのエラーは
>出るんで、そのへんを気にしてみてもよいかもね。
elpaディレクトリはできていました。
0689名無しさん@お腹いっぱい。
2012/07/19(木) 19:23:20.35それは普通には無理だねえ。
バッファ毎のヘッダラインの領域をタブとして無理やり使ってるようなもんだから。
フレーム毎のヘッダ領域みたいなのがあればいいんだけどね。
メニューバーとかツールバーを殺してタブにするとか面白いかもしれんね。
0690名無しさん@お腹いっぱい。
2012/07/19(木) 21:27:54.30url-method.elあたりを見ると空文字列はnil扱いなんで問題なさそうな気が。
何か試すとしたら、あとはdebug-on-errorをtにして実行して何かエラーが
出て止まるか見てみるくらいかなぁ。
0692682
2012/07/20(金) 00:23:35.02そんなに難しそうではなさげだね。elisp reference manualに書いてあることを使えば、
elscreen.el 読んだら行けるか。とりあえず保留だけど。
0693名無しさん@お腹いっぱい。
2012/07/21(土) 10:06:30.43C-cC-sのように別コマンドでmakeを行う保存、ただの保存、のように分けることも出来ればうれしいです。
0694名無しさん@お腹いっぱい。
2012/07/21(土) 10:11:12.06わけるなら make してから save するコマンドでも作ればいい。
ちょっと希望してるのとは違うけど flymake とかもお勧めではある。
0695名無しさん@お腹いっぱい。
2012/07/21(土) 12:27:34.030696名無しさん@お腹いっぱい。
2012/07/21(土) 12:29:25.170697名無しさん@お腹いっぱい。
2012/07/21(土) 12:36:46.99髪はふさふさしてる。
禿丸しか使えない馬鹿を尻目にテキパキ仕事してますよ。
0698名無しさん@お腹いっぱい。
2012/07/21(土) 12:47:37.700699名無しさん@お腹いっぱい。
2012/07/21(土) 13:17:25.570700名無しさん@お腹いっぱい。
2012/07/21(土) 17:43:35.340701名無しさん@お腹いっぱい。
2012/07/21(土) 17:54:40.89*.elを保存する時に自動的にバイトコンパイルするやつ
作りかけのとかコンパイルされてもしかたないので元々 *.elc がある場合だけコンパイルする。
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(add-hook 'after-save-hook
(lambda ()
"必要ならバイトコンパイルする. elc が無い場合はコンパイルしない."
(require 'bytecomp nil t)
(let* ((file (buffer-file-name))
(dest (byte-compile-dest-file file)))
(when (and (file-exists-p dest)
(file-writable-p dest)
(file-newer-than-file-p file dest))
(byte-compile-file file))))
nil t))) ; buffer local hook
0702名無しさん@お腹いっぱい。
2012/07/21(土) 18:03:00.23iswitchbでバッファ名入力時に表示されてるバッファも一緒に切り替わるやつ
ついでに選択中に C-f C-b で切り替えできるようにする
(defadvice iswitchb-exhibit
(after in:ad-iswitchb-exhibit-with-display-buffer activate compile)
"選択しているバッファをウィンドウに表示する."
(when (and (eq iswitchb-method iswitchb-default-method)
iswitchb-matches)
(select-window (get-buffer-window
(find-if-not 'minibufferp (buffer-list))))
(let ((iswitchb-method 'samewindow))
(iswitchb-visit-buffer
(get-buffer (car iswitchb-matches))))
(select-window (minibuffer-window))))
(add-hook 'iswitchb-define-mode-map-hook
(lambda ()
"`iswitchb' の追加キーバインド."
(define-key iswitchb-mode-map (kbd "C-f") 'iswitchb-next-match)
(define-key iswitchb-mode-map (kbd "C-b") 'iswitchb-prev-match)))
0703名無しさん@お腹いっぱい。
2012/07/21(土) 19:12:07.99emacsの正規表現は使いにくすぎる。書くときはいいけど後から読めない。rxを使うほどではないけど、Gaucheの正規表現リテラルが羨しい。
気になるのは二つ。
どうしてこんなことになったのか、歴史的なこと。
今、正規表現リテラルに関してまじめに考えている人はいるのか。
0704名無しさん@お腹いっぱい。
2012/07/21(土) 19:52:54.44Gaucheでは型の扱い方がエレガントだからよさげに思うんじゃないだろうか。
0705名無しさん@お腹いっぱい。
2012/07/21(土) 20:25:10.730706名無しさん@お腹いっぱい。
2012/07/21(土) 21:05:46.69今時の言語にはあって当たり前だが。。
0707名無しさん@お腹いっぱい。
2012/07/21(土) 21:37:29.580708名無しさん@お腹いっぱい。
2012/07/21(土) 21:48:17.98そのエスケープ用文字が文字列のエスケープと被ってることが間違いじゃね
まあ環境が間違ってると言ってもそれを踏まえてうまくやるしかないんだけども
0709名無しさん@お腹いっぱい。
2012/07/21(土) 22:27:27.49コードに落としこむ時とミニバッファとかに入力する時でまた変わるってのも輪をかけておかしい。
何がメタ文字なのかってちゃんと把握すれば一応直交してはいるんだけどさ。
0710名無しさん@お腹いっぱい。
2012/07/22(日) 02:18:47.650711名無しさん@お腹いっぱい。
2012/07/22(日) 05:35:50.46書くときもよくないw
実は自分も知りたいと思ってたけど、初心者すぎるかなと思って聞けなかった・・・
まだ解決してなかったのかー。
Perlの正規表現で置換できるelispとか無いのかな?
0712名無しさん@お腹いっぱい。
2012/07/22(日) 07:59:59.390713名無しさん@お腹いっぱい。
2012/07/22(日) 08:27:08.54>>711
M-x re-builder
改行含めて全ての文字にマッチする表現がぱっと書けないのもどうかと思うよ。
いまだになぜかうまく動かないやつあるし。
0714名無しさん@お腹いっぱい。
2012/07/22(日) 08:48:27.26今だったらミニバッファに正規表現入力中に勝手に re-builder が働くような感じだといいんだろうね。
0715名無しさん@お腹いっぱい。
2012/07/22(日) 09:48:02.18頭を抱えたのはいい思い出
0716名無しさん@お腹いっぱい。
2012/07/22(日) 10:21:33.06query-replace-regex がうまく動かなくて困ってるんだけどくわしく。
0717名無しさん@お腹いっぱい。
2012/07/22(日) 15:28:47.250718名無しさん@お腹いっぱい。
2012/07/22(日) 16:21:10.790719名無しさん@お腹いっぱい。
2012/07/22(日) 16:31:00.790720名無しさん@お腹いっぱい。
2012/07/22(日) 16:45:02.23むしろこれからの技術でしょ。>正規表現
0721名無しさん@お腹いっぱい。
2012/07/22(日) 16:56:37.04計算機科学黎明期のそれこそ字句解析構文解析とほぼ同時に生まれた概念だぞ
0722名無しさん@お腹いっぱい。
2012/07/22(日) 18:38:52.11くそ長い正規表現撲滅されるかも。
0723名無しさん@お腹いっぱい。
2012/07/22(日) 18:49:57.81それが後々まで使われ、新しい環境でも望まれている。
まだまだこれから、と言いたいわけだが。
つーかUNIX板で正規表現嫌いと聞くとは思わんかったよ。
0724名無しさん@お腹いっぱい。
2012/07/22(日) 18:56:09.53> それが後々まで使われ、新しい環境でも望まれている。
> まだまだこれから、と言いたいわけだが。
正規表現使い過ぎる人ってCOBOLerと同じ臭いがするんだよね。
0725名無しさん@お腹いっぱい。
2012/07/22(日) 19:05:15.740726名無しさん@お腹いっぱい。
2012/07/22(日) 19:38:39.33あんなメンテナンス性の悪いもの嫌って当然。
0727名無しさん@お腹いっぱい。
2012/07/22(日) 19:42:15.08Emacsの正規表現でのエスケープだらけへの愚痴大会を
正規表現そのものの悪口大会と勘違いした夏厨くんが
勇んで参加してしまっただけ。
よくある話だ。
0728名無しさん@お腹いっぱい。
2012/07/22(日) 19:43:18.19emacsで正規表現書く時はすごくストレスが溜まることはあるな。
バックスラッシュ4つ書くのが普通となるとやっぱり嫌だ。
0729名無しさん@お腹いっぱい。
2012/07/22(日) 20:51:08.28暫く書かないでいるとどれに何個エスケープしなきゃいけないか忘れるよね
0730名無しさん@お腹いっぱい。
2012/07/22(日) 20:55:04.60そういう処理に正規表現使わないのはそろそろ常識になってほしい。
0731名無しさん@お腹いっぱい。
2012/07/22(日) 20:57:52.240732名無しさん@お腹いっぱい。
2012/07/22(日) 21:00:29.680733名無しさん@お腹いっぱい。
2012/07/22(日) 21:07:34.50rx とか使ってるの見たことないわ。
0734名無しさん@お腹いっぱい。
2012/07/22(日) 21:07:39.36それだけでそこまで読みづらいのかな?いつごろからかハイライトされるよう
になってあんまり不満がなくなっちゃった
正規表現のバックスラッシュが一番数えづらいの正規表現の文字列リテラルにダ
ブクオートとか入ってきたときのような気がする。次に >>732。
そういうのにマッチさせる正規表現は書かなければいいんじゃないかな。
0735名無しさん@お腹いっぱい。
2012/07/22(日) 21:08:10.020736名無しさん@お腹いっぱい。
2012/07/22(日) 21:12:00.49君がそう思うならそれはそれで幸せなことだ。
別にみんながみんな使い辛いって思って欲しいわけじゃないし。
少なくとも俺と俺の周りの何人かは使ってて不便に思ってるってだけの話。
0737名無しさん@お腹いっぱい。
2012/07/22(日) 21:23:11.46くれぐれも巨大な正規表現は書かないように。馬鹿に見えるからね。
0738名無しさん@お腹いっぱい。
2012/07/22(日) 21:26:23.78長いの書く時まじでしんどいわ。
だいたい列挙するだけで \\(\\(\\(public\\|protected\\|private\\|const\\|...とか
あほやろwwww
0739名無しさん@お腹いっぱい。
2012/07/22(日) 21:28:33.82四の五の言わず、 regexp-opt 使いたまえ。
0740名無しさん@お腹いっぱい。
2012/07/22(日) 21:29:11.76抜けたことでダイナミックリンクも解禁されたし正規表現リテラルもそのうち実装されるんじゃねえの。
0741名無しさん@お腹いっぱい。
2012/07/22(日) 21:37:04.01replace-regexp: \(\w+\) => \,(capitalize \1)
0742名無しさん@お腹いっぱい。
2012/07/22(日) 21:47:00.18python-modeが使ってたわ
標準配布なんだしもっと使えばいいのに
0743743
2012/07/23(月) 02:38:20.830744名無しさん@お腹いっぱい。
2012/07/23(月) 08:35:29.27こっから連レスする予定?
0745名無しさん@お腹いっぱい。
2012/07/23(月) 09:05:09.000746名無しさん@お腹いっぱい。
2012/07/25(水) 02:30:08.61個人的にはグルーピングに関する悩みは大体は解決した。
0747名無しさん@お腹いっぱい。
2012/07/25(水) 08:29:30.29regexp-optの間違いじゃないよね?
0748名無しさん@お腹いっぱい。
2012/07/25(水) 20:34:26.96これかな?
0749名無しさん@お腹いっぱい。
2012/07/25(水) 20:43:28.61これ面白いね。正規表現っぽい文字列コンテキストのとこに入ると
\\(\ab\(\\(cd\\)\\)\\) がハイライト付きで \1(ab\2(\3(cd\3)\2)\1) みたいに表示される
正規表現のグルーピングになってない()はハイライトされないから確かに一目瞭然だわ。
0750名無しさん@お腹いっぱい。
2012/07/27(金) 12:49:38.46Emacsを使うとマウスまで手を伸ばさなくてもほとんどの作業ができるようですが、
本当にそうなのでしょうか?
例えばカーソルを合わせたりクリックするような作業も全てキーボードで行う事は可能なのですか?
0751名無しさん@お腹いっぱい。
2012/07/27(金) 13:08:24.02どこにカーソルを合わせること想定していますか?
バッファの中ならカーソル移動のキーバインドを調べてください。
クリックするとは、どのような機能を意味していますか?
カーソルの位置指定という意味に過ぎないのなら、
カーソルがそこに移動すれば、クリックは不要でしょう。
0752名無しさん@お腹いっぱい。
2012/07/27(金) 13:35:07.170753名無しさん@お腹いっぱい。
2012/07/27(金) 13:59:54.91別に躊躇せずマウス使えばいいと思う
0754名無しさん@お腹いっぱい。
2012/07/27(金) 21:19:20.49色設定とかフォント設定を環境毎に分けて書きたくないから
フォントとか色があればそれを使うって書き方にした。
;; フォント
(flet ((font-candidate (&rest font-list) (find-if (lambda (f) (find-font (font-spec :name f))) font-list)))
(set-fontset-font "fontset-custom" 'japanese-jisx0208 (font-candidate "MeiryoKe_Console" "VLゴシック" "MSゴシック"))
...
)
;; 色
(flet ((color-candidate (&rest colors) (find-if #'color-defined-p colors)))
(set-face-attribute 'region nil :foregreound (color-candidate "SystemHilightText" "White")
:background (color-candidate "SystemHilight" "Royal Blue"))
...
)
■ このスレッドは過去ログ倉庫に格納されています