Emacs Part 39
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2011/11/29(火) 17:50:44.24Emacs Part 38
http://hibari.2ch.net/test/read.cgi/unix/1308635178/
0441名無しさん@お腹いっぱい。
2012/01/02(月) 21:43:52.50ダを調べながら試してくしかないかなぁ。
どうやら User-Agent で弾いてはいないみたいだが。
0442名無しさん@お腹いっぱい。
2012/01/02(月) 22:02:11.86url-debug を t にしてみてみたところ、emacs 側でリクエスト文字列が途中で書き変わってたりということはありませんでした。
他でどうなんだろうとおもって wget で試してみたところ User-Agent に何か適当なのが入っていないと
403 エラーになりました。
指定して取得した結果は英語は大丈夫、日本語は Emacs の時とまったく同じ変な結果が返されてきました。
おっしゃるとおり Chrome のリクエストヘッダと比較して差分を調べて見ることにします。何か足りていないんでしょうね。
ありがとうございました。
0443名無しさん@お腹いっぱい。
2012/01/02(月) 22:45:45.02結論から言って User-Agent でした。"Safari/" が含まれていないとなんでか半分ぐらいに切れた結果が返ってきてしまうようです。
(なのでIEでもEmacsと同じ壊れ方になりました。)
あと長過ぎてもダメだったりもするみたいですね。これは通常の Webインターフェースからでも制限かかってるみたいでした。
最終的に以下のようになりました。これで sdic で発音チェックしたり読み方わからない漢字読ませたり出来そうです。
;; (speech-message "鮃より鰆を食べたい。" "ja")
;; (speech-message "Learn basic keystroke commands." "en")
(defvar speech-default-language "en"
"デフォルトの言語。")
(defvar speech-sound-player "cmd /c start %s"
"音声再生プログラム。%s にファイル名が入る。")
(defun speech-message (text &optional lang)
"指定された文章を音声再生する。"
(interactive "sMessage: ")
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
(url-privacy-level 'paranoid)
(url-request-extra-headers '(("User-Agent" . "Emacs/URI Safari/0"))))
(with-current-buffer
(url-retrieve-synchronously
(format "http://translate.google.com/translate_tts?sl=en&tl=%s&q=%s"
(or lang speech-default-language) (url-hexify-string text)))
(let* ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
(temp-file (make-temp-file "speech-" nil ".mp3"))
(cmdlist (split-string (format speech-sound-player temp-file))))
(set-buffer-multibyte nil)
(goto-char (point-min))
(write-region (search-forward-regexp "\n\n") (point-max) temp-file nil 'silent)
(apply 'call-process (car cmdlist) nil nil nil (cdr cmdlist))))))
0444名無しさん@お腹いっぱい。
2012/01/02(月) 22:50:38.11環境や目的によるけれど、
open-jtalk なら日本語発声できるよ。
日本語のパースや発音方法を自前でするなら
mbrola などでもできる。
0445名無しさん@お腹いっぱい。
2012/01/02(月) 23:03:14.58url.elは糞だ、外部プログラム呼ぶのはキチだって話してる最中にいい度胸だな。
0446名無しさん@お腹いっぱい。
2012/01/02(月) 23:09:56.87(setq speech-sound-player "mpg123 %s")
0447名無しさん@お腹いっぱい。
2012/01/02(月) 23:19:58.45カーソル位置の単語を喋らせるのつくってみたよ
(defun speech-at-point ()
(interactive)
(speech-message (thing-at-point 'word)))
(global-set-key (kbd "C-c C-s") 'speech-at-point)
これで日本語対象にしてみたらダメだった
文字列から言語判別出来るようにすればよさそうだな
0448名無しさん@お腹いっぱい。
2012/01/03(火) 00:37:02.55取り敢えず非同期に & >>447 の機能をいれた。
> 文字列から言語判別出来るようにすればよさそうだな
これはできてない。
あと、エラーになったときにバッファやファイルが削除されないかも。
(defun speech-callback (status &rest cbargs)
(unwind-protect
(progn
(set-buffer-multibyte nil)
(goto-char (point-min))
(lexical-let ((temp-file (make-temp-file "speech-" nil ".mp3")))
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
(cmdlist (split-string (format speech-sound-player temp-file))))
(write-region (search-forward-regexp "\n\n") (point-max) temp-file nil 'silent)
(set-process-sentinel (apply 'start-process (car cmdlist) nil cmdlist)
(lambda (process event)
(delete-file temp-file))))))
(kill-buffer)))
(defun speech-message (text &optional lang)
"指定された文章を音声再生する。"
(interactive (list (read-string "Message: " (thing-at-point 'word))))
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
(url-privacy-level 'paranoid)
(url-request-extra-headers '(("User-Agent" . "Emacs/URI Safari/0"))))
(url-retrieve (format "http://translate.google.com/translate_tts?sl=en&tl=%s&q=%s"
(or lang speech-default-language) (url-hexify-string text))
'speech-callback)))
0449名無しさん@お腹いっぱい。
2012/01/03(火) 02:44:31.02(or lang (and (string-match "\\cj" text) "ja") speech-default-language)
0450名無しさん@お腹いっぱい。
2012/01/03(火) 12:03:34.70'("もう" "だめよ" "しかたないこね" "ちょっとだけよ")とかもいいな
(defvar speech-bell-messages '("おい" "こら" "いい加減にせいや" "いてまうぞわれ")
"御叱りの言葉")
(defvar speech-bell-language "ja"
"御叱りの言語")
(defvar speech-bell-cur nil)
(defun speech-bell-function ()
"声で叱る"
(let ((ring-bell-function nil))
(unless speech-bell-cur
(setq speech-bell-cur speech-bell-messages))
(speech-message (pop speech-bell-cur) speech-bell-language)))
(setq ring-bell-function #'speech-bell-function)
0451名無しさん@お腹いっぱい。
2012/01/03(火) 13:41:41.560452名無しさん@お腹いっぱい。
2012/01/03(火) 13:44:26.85(speech-message "C'est parfait!" "fr")
0453名無しさん@お腹いっぱい。
2012/01/03(火) 13:58:29.87おおー
set-process-sentiel で終了を検知すれば後始末が出来るんですね。
勉強になります。
0454名無しさん@お腹いっぱい。
2012/01/03(火) 14:50:57.48mplayerのWindows用gui無し版を入れたらはかどった。mpg123のwindowsビルドだとなんでか再生うまくいかなかったので。
http://www.mplayerhq.hu/design7/news.html
(setq speech-sound-player "mplayer -really-quiet %s")
0455名無しさん@お腹いっぱい。
2012/01/03(火) 15:00:57.910456名無しさん@お腹いっぱい。
2012/01/03(火) 15:05:52.66>>448 だと lexical-let を使ったけれど、
(let ((process (apply 'start-process (car cmdlist) nil cmdlist)))
(set-process-plist process `(temp-file ,temp-file))
(set-process-sentinel process
(lambda (process event)
(delete-file (get 'temp-file
(process-plist process))))))
という風にするほうが真っ当かもしれない。
0457名無しさん@お腹いっぱい。
2012/01/03(火) 15:08:39.08( )
| |
ヽ('A`)ノ マックス!!!
( )
ノε|
__[警]
( ) ('A`)
( )Vノ )
| | | |
0458名無しさん@お腹いっぱい。
2012/01/03(火) 15:18:16.09alias emacs=vim
0459名無しさん@お腹いっぱい。
2012/01/03(火) 15:52:40.25できました。ありがとうございます。
0460名無しさん@お腹いっぱい。
2012/01/03(火) 16:00:41.47NTEmacs スレッド 3
http://anago.2ch.net/test/read.cgi/software/1325573999/
0461名無しさん@お腹いっぱい。
2012/01/03(火) 19:09:55.27完璧です。どうもです。
0462名無しさん@お腹いっぱい。
2012/01/03(火) 19:38:37.96emacs起動後に*scratch*などで評価(作成)した関数が
anythingの候補一覧に載ってほしいのですが
どうすればよいのでしょうか
0463名無しさん@お腹いっぱい。
2012/01/03(火) 19:43:29.240464名無しさん@お腹いっぱい。
2012/01/03(火) 19:49:26.670465名無しさん@お腹いっぱい。
2012/01/03(火) 21:12:08.20第一引数に変数を持ってくる正しい書き方はどのようにしたらよいのでしょう?
;; func-a と func-b に同じadviceをつける
(dolist (func '(func-a func-b))
(defadvice func (before ad-func activate) (message "before")))
これだと func 変数についてしまったようで func-a と func-b には何もなしでした。
0466名無しさん@お腹いっぱい。
2012/01/03(火) 21:17:05.440467名無しさん@お腹いっぱい。
2012/01/03(火) 21:18:12.970468名無しさん@お腹いっぱい。
2012/01/03(火) 21:25:45.54マクロと関数と引数の評価は初心者が嵌りそうなところだと思うけれどなあ。
0469名無しさん@お腹いっぱい。
2012/01/03(火) 21:29:06.070470名無しさん@お腹いっぱい。
2012/01/03(火) 23:25:19.840471名無しさん@お腹いっぱい。
2012/01/03(火) 23:26:58.360472465
2012/01/03(火) 23:50:32.16これで正しいのか、なんでうまくいっているのかいまいち理解できていないですが動いているのでよしとしました。
(dolist (func '(func-a func-b))
(eval `(defadvice ,func (before ,(intern (format "ad-%s" (symbol-name func))) activate)
(message "before"))))
>>466
すみませんでした。本買って勉強しなおしてきます。
0473名無しさん@お腹いっぱい。
2012/01/04(水) 00:05:35.25C-:にanything-filelist+を割り当ててるけど、これ以上素早く
ファイル(バッファ)を開く術は無いと思うけど。
あと、Semanticを有効にした状態でのimenuも便利過ぎる。
0474名無しさん@お腹いっぱい。
2012/01/04(水) 13:03:01.19(message "init time: %d msec"
(+ (* (- (nth 1 after-init-time) (nth 1 before-init-time)) 1000)
(/ (- (nth 2 after-init-time) (nth 2 before-init-time)) 1000)))
=> init time: 5172 msec
0475名無しさん@お腹いっぱい。
2012/01/04(水) 13:09:54.220476名無しさん@お腹いっぱい。
2012/01/04(水) 13:24:41.721.2 seconds
普通こんくらい。
0477名無しさん@お腹いっぱい。
2012/01/04(水) 13:38:19.830478名無しさん@お腹いっぱい。
2012/01/04(水) 13:46:51.940479名無しさん@お腹いっぱい。
2012/01/04(水) 13:53:28.13Emacs 起動と同時に Gnus も起動してるともっとかかる、多分 1 分ぐらい。
0480名無しさん@お腹いっぱい。
2012/01/04(水) 14:12:44.280481名無しさん@お腹いっぱい。
2012/01/04(水) 14:55:50.16結構かかっているな
0482名無しさん@お腹いっぱい。
2012/01/04(水) 14:59:19.82ハッピーハッキングキーボードだとCGソフトのBlenderがうまく使えないので
乗り換えるべきか迷うのですが
ハッピーハッキングキーボードのメリットってなんでしょう?
0483名無しさん@お腹いっぱい。
2012/01/04(水) 15:04:58.86あれは呪いにかかった人が仕方なく使うアイテム。
0484名無しさん@お腹いっぱい。
2012/01/04(水) 15:27:43.87ワナビ御用達って感じ
0485名無しさん@お腹いっぱい。
2012/01/04(水) 15:58:04.740486479
2012/01/04(水) 16:12:44.06もしかして、自分はここの人たちと比べても変態なのか……!?
PC のスペックが Intel(R) Atom(TM) CPU N455 @ 1.66GHz
と低いことに原因があるのかな。
0487名無しさん@お腹いっぱい。
2012/01/04(水) 16:25:04.74あとうちでは一回目と二回目で起動時間の差が生じたな。
初回は7秒ぐらいだったのが2回目は1秒ぐらいになってた。
ディスクキャッシュとかフォントとかそこら辺のせいっぽいなあ。
0488名無しさん@お腹いっぱい。
2012/01/04(水) 19:16:11.14menubar関係かと思ってスルーしてた
るびきちの本はニワカだったら買って損ないわ
知ったかして敬遠してて損した
0489名無しさん@お腹いっぱい。
2012/01/04(水) 19:32:28.190490名無しさん@お腹いっぱい。
2012/01/04(水) 19:42:10.480491名無しさん@お腹いっぱい。
2012/01/04(水) 19:55:25.370492名無しさん@お腹いっぱい。
2012/01/04(水) 20:25:01.45あいつよっぽど生活苦しいんだろうな。
0493名無しさん@お腹いっぱい。
2012/01/04(水) 20:35:53.09どうせならLisp極めてそれ系の本出したほうがかっこいいのにね。
0494名無しさん@お腹いっぱい。
2012/01/04(水) 20:50:22.94elispをバネに他の言語にも拡げればいいのに。
rubyに挫折して大した能力がないと自覚しちゃったのかな?
だとしたら、気の毒で憐れなやつだよな。
0495名無しさん@お腹いっぱい。
2012/01/04(水) 20:51:17.33http://d.hatena.ne.jp/rubikitch/20120104/elispbookerrata
0496名無しさん@お腹いっぱい。
2012/01/04(水) 21:16:02.43>完全メールサポートつきで初月無料
>でなので安心して誤登録ください。
errata で誤字とか lisp 的でいいな。
0497名無しさん@お腹いっぱい。
2012/01/04(水) 21:18:40.480498名無しさん@お腹いっぱい。
2012/01/04(水) 21:28:39.220499名無しさん@お腹いっぱい。
2012/01/04(水) 21:54:57.85るびきちより有能な奴10000人が書き込むこのスレって天才たちの社交場だな
0500名無しさん@お腹いっぱい。
2012/01/05(木) 05:00:09.62ああ、こういうのを負け犬の遠吠えっていうんだな。
0501名無しさん@お腹いっぱい。
2012/01/05(木) 10:55:29.780502名無しさん@お腹いっぱい。
2012/01/05(木) 11:57:07.33リハビリにしばらくWindowsのメモ帳だけで生活してやる
0503名無しさん@お腹いっぱい。
2012/01/05(木) 12:11:07.06・Ace jump mode - emacs 用 hit-a-hint 風カーソル移動
https://github.com/winterTTr/ace-jump-mode/
(require 'ace-jump-mode)
(global-set-key (kbd "C-;") 'ace-jump-mode)
ってやって C-; a とか押すと画面上の a のところにアルファベットの連番が振られて
押せばジャンプできる。
0504名無しさん@お腹いっぱい。
2012/01/05(木) 12:17:38.590505名無しさん@お腹いっぱい。
2012/01/05(木) 12:21:35.58(defun buffer-mode-histogram ()
"Display a histogram of emacs buffer modes."
(interactive)
(let* ((totals '())
(buffers (buffer-list()))
(total-buffers (length buffers))
(ht (make-hash-table :test 'equal)))
(save-excursion
(dolist (buffer buffers)
(set-buffer buffer)
(let
((mode-name (symbol-name major-mode)))
(puthash mode-name (1+ (gethash mode-name ht 0)) ht))))
(maphash (lambda (key value)
(setq totals (cons (list key value) totals)))
ht)
(setq totals (sort totals (lambda (x y) (> (cadr x) (cadr y)))))
(with-output-to-temp-buffer "Buffer mode histogram"
(princ (format "%d buffers open, in %d distinct modes\n\n"
total-buffers (length totals)))
(dolist (item totals)
(let
((key (car item))
(count (cadr item)))
(if (equal (substring key -5) "-mode")
(setq key (substring key 0 -5)))
(princ (format "%2d %20s %s\n" count key
(make-string count ?+))))))))
0506名無しさん@お腹いっぱい。
2012/01/05(木) 12:44:35.74http://maps.google.com/maps/ms?msid=206578397069667369090.0004b0f0502b612864fbe&msa=0&ll=19.642588,23.554688&spn=103.499573,345.585938
日本人いねーぞこら
0507名無しさん@お腹いっぱい。
2012/01/05(木) 12:55:44.01そもそもいつ正式リリースなの?
0508名無しさん@お腹いっぱい。
2012/01/05(木) 13:03:05.07https://github.com/technomancy/heroku-buildpack-emacs
0509名無しさん@お腹いっぱい。
2012/01/05(木) 13:10:03.26頑張れ
ちゃんとそれを周りの人間にも広めるんだぞ
0510名無しさん@お腹いっぱい。
2012/01/05(木) 20:27:35.45copy con ファイル名
でおk
0511名無しさん@お腹いっぱい。
2012/01/05(木) 20:31:29.980512名無しさん@お腹いっぱい。
2012/01/05(木) 20:48:11.81どうすればよいのでしょうか
0513名無しさん@お腹いっぱい。
2012/01/05(木) 21:02:06.09whitespace-mode
標準だと全角には対応していないと思うので、
適当に whitespace-space-regexp などを変更する。
0514名無しさん@お腹いっぱい。
2012/01/05(木) 21:10:29.220515名無しさん@お腹いっぱい。
2012/01/05(木) 21:22:02.03痛いところ突いちゃってごめん。反省してます。
人を傷付けると自分も傷つきますね。
0516名無しさん@お腹いっぱい。
2012/01/05(木) 21:34:42.640517名無しさん@お腹いっぱい。
2012/01/05(木) 21:41:08.82IT業界すなわち世界経済を支える
るびきちに逆らえるのは各国首脳クラスから。
2ちゃんねらーは常に「るびきち様」と呼ばなければいけない。
0518514
2012/01/05(木) 21:50:47.17find-ls-option の ls 部分に '--time-style=+%Y/%M/%D' とかつけたところ
出力の日付は望みどおりになったのですが、その代わり dired が正しくファイルを認識して
くれなくなってしまいました。
0519名無しさん@お腹いっぱい。
2012/01/05(木) 21:54:29.66diredなんて窓から投げ捨てるのが正しいと思う。
あんな表示すら満足に変えられない前世紀の遺物を使うやつの気がしれん。
0520名無しさん@お腹いっぱい。
2012/01/05(木) 22:19:14.76ただ、ゴミはあってもゴミじゃない。
0521名無しさん@お腹いっぱい。
2012/01/05(木) 23:38:44.280522名無しさん@お腹いっぱい。
2012/01/05(木) 23:50:17.070523名無しさん@お腹いっぱい。
2012/01/05(木) 23:51:11.63少しカスタマイズしたdiredですこぶる快適に使えているが。
とりあえず何が不満なのか言ってみ。
0524名無しさん@お腹いっぱい。
2012/01/06(金) 00:24:49.330525名無しさん@お腹いっぱい。
2012/01/06(金) 00:34:22.550526名無しさん@お腹いっぱい。
2012/01/06(金) 10:30:11.51ありがとうございます。
できました。
0527名無しさん@お腹いっぱい。
2012/01/06(金) 12:36:51.01うまく動かせている方はいらっしゃりますでしょうか?
find-grep-dired のソースを見てみると、lgrep が対応していないオプション -e がハードコーディングされていたので
defadvice で書き換えたのですが、こんどは lgrep に出力無しにするオプションがないため
dired 側がまともに動かなくなりました。
0528名無しさん@お腹いっぱい。
2012/01/06(金) 13:15:53.030529名無しさん@お腹いっぱい。
2012/01/06(金) 13:20:10.22* 部外者/非Emacsユーザーの書き込みも可。但し、女性の書き込みは場の雰囲気を乱すので不可
0530名無しさん@お腹いっぱい。
2012/01/06(金) 13:26:07.82find-grep-dired で lgrep を使うメリットは何?
0531名無しさん@お腹いっぱい。
2012/01/06(金) 13:26:47.90どうすればよいですか
候補選択時だけカーソルキーまで手を伸ばすのに違和感がありますので
0532名無しさん@お腹いっぱい。
2012/01/06(金) 13:32:39.48日本語で検索したかったので。
色んなエンコードのファイルが散らばっているのです。
0533名無しさん@お腹いっぱい。
2012/01/06(金) 13:32:56.080536名無しさん@お腹いっぱい。
2012/01/06(金) 13:53:42.910537名無しさん@お腹いっぱい。
2012/01/06(金) 13:55:35.120538名無しさん@お腹いっぱい。
2012/01/06(金) 13:59:10.090539名無しさん@お腹いっぱい。
2012/01/06(金) 14:06:22.37ヒットしないならコマンドを呼び出した位置に入力した文字列を装飾して挿入したいです
(interactive)
(let ((str (read-string "input: ")))
(save-excursion
(while (search-forward str nil t) ; バッファ内の文字列とヒットしてしまった
;; ここで(read-string)を再度呼び出したい
))
;; save-excursionを抜けてからstrを使って挿入する
(insert (format "%s" (make-my-decoration str))))
このような処理を考えたのですが
(read-string)を二度書かない方法はあるでしょうか
0540名無しさん@お腹いっぱい。
2012/01/06(金) 14:07:36.00(save-excursion
は
(save-excursion
(goto-char (point-min))
です
■ このスレッドは過去ログ倉庫に格納されています