私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレEmacs Part 39
emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
TAB関連で
tab-to-tab-stop の文字位置へ移動するにはどんなコード書けばいいんだろう?
tab-to-tab-stop の文字位置へ移動するにはどんなコード書けばいいんだろう?
一口にLispっつーても色々あって、それぞれノウハウ違うから
elispをスラスラ書ける人は普段からelispに慣れてる人だと思う
elispをスラスラ書ける人は普段からelispに慣れてる人だと思う
リストの処理とかがスラスラ書けても
バッファの弄り方とかテキストプロパティとかオーバレイとか辺りになってくると
あんまりLisp関係ないもんね。
バッファの弄り方とかテキストプロパティとかオーバレイとか辺りになってくると
あんまりLisp関係ないもんね。
暇なので elisp 紹介
■emacs で google map 表示
http://julien.danjou.info/software/google-maps.el
M-x google-maps して地名を入れるとpopupしたバッファに地図が表示される
そのままだと地名がアルファベットになっちゃうので以下を追加
(eval-after-load "google-maps"
'(defadvice google-maps-static-show (before google-maps-set-lang activate)
(ad-set-args 0 (append '(:language "ja")) (ad-get-args 0))))
popwin の管理下に入れておくとうっとおしくなくて良い。
■emacs で google map 表示
http://julien.danjou.info/software/google-maps.el
M-x google-maps して地名を入れるとpopupしたバッファに地図が表示される
そのままだと地名がアルファベットになっちゃうので以下を追加
(eval-after-load "google-maps"
'(defadvice google-maps-static-show (before google-maps-set-lang activate)
(ad-set-args 0 (append '(:language "ja")) (ad-get-args 0))))
popwin の管理下に入れておくとうっとおしくなくて良い。
oh... ちょっと間違った
↓ね。
(defadvice google-maps-static-show (before google-maps-set-lang activate)
(ad-set-args 0 (append '(:language "ja") (ad-get-args 0))))
↓ね。
(defadvice google-maps-static-show (before google-maps-set-lang activate)
(ad-set-args 0 (append '(:language "ja") (ad-get-args 0))))
>>407
㌧㌧、これはいいねぇ
㌧㌧、これはいいねぇ
おれもー
どっかから拾ってきた奴
yankしたとき貼りつけた内容がハイライトされる
popup-kill-ring つこうてる人は popup-kill-ring-interactive-insert が t じゃないと
ちゃんと反応してくれない
(defadvice yank (after yank-highlight-string activate)
(let ((ol (make-overlay (mark t) (point))))
(overlay-put ol 'face 'highlight)
(sit-for 0.5)
(delete-overlay ol)))
(defadvice yank-pop (after yank-pop-highlight-string activate)
(when (eq last-command 'yank)
(let ((ol (make-overlay (mark t) (point))))
(overlay-put ol 'face 'highlight)
(sit-for 0.5)
(delete-overlay ol))))
どっかから拾ってきた奴
yankしたとき貼りつけた内容がハイライトされる
popup-kill-ring つこうてる人は popup-kill-ring-interactive-insert が t じゃないと
ちゃんと反応してくれない
(defadvice yank (after yank-highlight-string activate)
(let ((ol (make-overlay (mark t) (point))))
(overlay-put ol 'face 'highlight)
(sit-for 0.5)
(delete-overlay ol)))
(defadvice yank-pop (after yank-pop-highlight-string activate)
(when (eq last-command 'yank)
(let ((ol (make-overlay (mark t) (point))))
(overlay-put ol 'face 'highlight)
(sit-for 0.5)
(delete-overlay ol))))
>>411にならって直してみた
(defadvice yank (after yank-highlight-string activate)
(let ((ol (make-overlay (mark t) (point))))
(unwind-protect
(progn (overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol))))
(defadvice yank-pop (after yank-pop-highlight-string activate)
(when (eq last-command 'yank)
(let ((ol (make-overlay (mark t) (point))))
(unwind-protect
(progn (overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol)))))
(defadvice yank (after yank-highlight-string activate)
(let ((ol (make-overlay (mark t) (point))))
(unwind-protect
(progn (overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol))))
(defadvice yank-pop (after yank-pop-highlight-string activate)
(when (eq last-command 'yank)
(let ((ol (make-overlay (mark t) (point))))
(unwind-protect
(progn (overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol)))))
>>412の真似して undo で文章が復帰した時にもハイライトするようにしてみた。
もうちょっとマシな書き方出来ないか誰か添削してくれると嬉しい。
やってることは、
buffer-undo-list を頭からたどっていって
・(integerp . integerp) の cons セルにあたったらその範囲をハイライトしてループ終了
・(stringp . なんか) の cons セルにあたったらループ終了
(defadvice undo (after flash activate)
(catch 'loop
(dolist (c buffer-undo-list)
(let ((beg (car c))
(end (cdr c)))
(cond ((and (integerp beg)
(integerp end))
(let ((ol (make-overlay beg end)))
(unwind-protect
(progn (overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol)
(throw 'loop nil))))
((stringp beg)
(throw 'loop nil)))))))
もうちょっとマシな書き方出来ないか誰か添削してくれると嬉しい。
やってることは、
buffer-undo-list を頭からたどっていって
・(integerp . integerp) の cons セルにあたったらその範囲をハイライトしてループ終了
・(stringp . なんか) の cons セルにあたったらループ終了
(defadvice undo (after flash activate)
(catch 'loop
(dolist (c buffer-undo-list)
(let ((beg (car c))
(end (cdr c)))
(cond ((and (integerp beg)
(integerp end))
(let ((ol (make-overlay beg end)))
(unwind-protect
(progn (overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol)
(throw 'loop nil))))
((stringp beg)
(throw 'loop nil)))))))
>>414
dolist の中から return で脱出できたような。
けれど自分ならこうするかな。
(defadvice undo (after flash activate)
(loop for (beg . end) in buffer-undo-list
if (and (integerp beg)
(integerp end))
return (let ((ol (make-overlay beg end)))
(unwind-protect
(progn
(overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol)))
else when (stringp beg)
return nil))
dolist の中から return で脱出できたような。
けれど自分ならこうするかな。
(defadvice undo (after flash activate)
(loop for (beg . end) in buffer-undo-list
if (and (integerp beg)
(integerp end))
return (let ((ol (make-overlay beg end)))
(unwind-protect
(progn
(overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol)))
else when (stringp beg)
return nil))
>>416
わかりやすいコードでいいね
わかりやすいコードでいいね
NTEmacs スレが沈んだ
>>1が2008年9月とかのんびりした進行だっただけに誰も次スレ建てなかったわけだ
>>1が2008年9月とかのんびりした進行だっただけに誰も次スレ建てなかったわけだ
flet で関数を置き換えた際に、その関数内で置き換え前の関数を呼ぶ方法はありませんでしょうか?
(flet ((load (file &optional noerror nomessage nosuffix must-suffix)
(load file noerror t nosuffix must-suffix)))
(load "something"))
こんな風にすると再帰してしまいます。
(flet ((load (file &optional noerror nomessage nosuffix must-suffix)
(load file noerror t nosuffix must-suffix)))
(load "something"))
こんな風にすると再帰してしまいます。
symbol-function で関数の実体を取り出してどっかの変数に退避しておいてっ
て方法はある。
こんな感じかな?
(let ((original (symbol-function 'load)))
(flet ((load (file &optional noerror nomessage nosuffix must-suffix)
(funcall original file noerror t nosuffix must-suffix)))
(load "something")))
て方法はある。
こんな感じかな?
(let ((original (symbol-function 'load)))
(flet ((load (file &optional noerror nomessage nosuffix must-suffix)
(funcall original file noerror t nosuffix must-suffix)))
(load "something")))
>>421
なるほど!ありがとうございます。これでやりたいことが出来ました。
session.el でセッション復帰時のローディングメッセージを消したかったのでした。
ソースの load してるところを直接書き換えちゃえばそれで済むといえばそれまでなんですが。
(defadvice session-initialize (around session-load-silently activate)
"セッションロード時のメッセージ抑制"
(let ((org-load (symbol-function 'load)))
(flet ((load (file &optional noerror nomessage nosuffix must-suffix)
(funcall org-load file noerror t nosuffix must-suffix)))
ad-do-it)))
なるほど!ありがとうございます。これでやりたいことが出来ました。
session.el でセッション復帰時のローディングメッセージを消したかったのでした。
ソースの load してるところを直接書き換えちゃえばそれで済むといえばそれまでなんですが。
(defadvice session-initialize (around session-load-silently activate)
"セッションロード時のメッセージ抑制"
(let ((org-load (symbol-function 'load)))
(flet ((load (file &optional noerror nomessage nosuffix must-suffix)
(funcall org-load file noerror t nosuffix must-suffix)))
ad-do-it)))
Gnu pack emacsを使っています
(open-file "./index.html")のようにして
windowsの関連付けどおりにファイルを開くことは可能でしょうか
それらしき関数が見当たらなかったので質問しました
(open-file "./index.html")のようにして
windowsの関連付けどおりにファイルを開くことは可能でしょうか
それらしき関数が見当たらなかったので質問しました
gnusで仕様的に正しいmime multipartなメッセージ作れるんじゃないの?と思ってみてみたけど
multipart/mixedとかは良い感じに実装されてるのにmultipart/form-dataはないのな。惜しいな。
multipart/mixedとかは良い感じに実装されてるのにmultipart/form-dataはないのな。惜しいな。
>>426
gnupack で cygwin もセットで導入しているなら
(defun open-file (file)
(interactive)
(start-process "cygstart" nil "cygstart" file))
cygwin いれてないなら cygstart を start に置き換えればいいんじゃないかな。
gnupack で cygwin もセットで導入しているなら
(defun open-file (file)
(interactive)
(start-process "cygstart" nil "cygstart" file))
cygwin いれてないなら cygstart を start に置き換えればいいんじゃないかな。
>>428
interactiveなのに引数必須とはいかがなものか。
(defun open-file (&optional file)
(interactive "fFile: ")
(start-process "cygstart" nil "cygstart" file))
interactiveなのに引数必須とはいかがなものか。
(defun open-file (&optional file)
(interactive "fFile: ")
(start-process "cygstart" nil "cygstart" file))
>>429 水準の間違いは昔からだろ。ただの勘違いかもしれないけど。
るびきちはemacs内で完結しないでどんどん外部のプログラムをelisp内から使えよって言ってるけど
外部のプログラムが入ってくると色んな環境で動かす時めんどくさくてやだ。
elispで完結してる方がいいよ。
外部のプログラムが入ってくると色んな環境で動かす時めんどくさくてやだ。
elispで完結してる方がいいよ。
elisp遅いし正規表現うんこだし非同期がアレじゃないの?
まあ確かに面倒だしキチは嫌いだけどな
まあ確かに面倒だしキチは嫌いだけどな
emacs に喋らせたくて google 翻訳使ったのを作ったんだけど、日本語含むのがちゃんと動かない。
url-hexify-string の中で encode-coding-string utf-8 してるから問題ないと思ったんだけど何が不味いんだろう。
助言をください・・・
(require 'url-http)
(defvar speech-default-language "en"
"デフォルトの言語。")
(defvar speech-sound-player "cmd /c start %s"
"mp3音声再生プログラム。%s にファイル名が入る。") ;; windows 向け設定
(defun speech-message (text &optional lang)
"指定された文章を音声再生する。"
(interactive "sMessage: ")
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
temp-file)
(with-current-buffer
(url-retrieve-synchronously
(format "http://translate.google.com/translate_tts?tl=%s&q=%s?"
(or lang speech-default-language)
(url-hexify-string text)))
(set-buffer-multibyte nil)
(setq temp-file (make-temp-file "speech-" nil ".mp3"))
(write-region (point-min) (point-max) temp-file nil 'silent)
(apply 'start-process "player" nil
(split-string (format speech-sound-player temp-file))))))
;; 以下を評価でしゃべる
(speech-message "a happy new year!")
(speech-message "a happy new year!" "ja") ;; 言語指定
(speech-message "あけましておめでとうございます" "ja") ;; 動作がおかしい...
url-hexify-string の中で encode-coding-string utf-8 してるから問題ないと思ったんだけど何が不味いんだろう。
助言をください・・・
(require 'url-http)
(defvar speech-default-language "en"
"デフォルトの言語。")
(defvar speech-sound-player "cmd /c start %s"
"mp3音声再生プログラム。%s にファイル名が入る。") ;; windows 向け設定
(defun speech-message (text &optional lang)
"指定された文章を音声再生する。"
(interactive "sMessage: ")
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
temp-file)
(with-current-buffer
(url-retrieve-synchronously
(format "http://translate.google.com/translate_tts?tl=%s&q=%s?"
(or lang speech-default-language)
(url-hexify-string text)))
(set-buffer-multibyte nil)
(setq temp-file (make-temp-file "speech-" nil ".mp3"))
(write-region (point-min) (point-max) temp-file nil 'silent)
(apply 'start-process "player" nil
(split-string (format speech-sound-player temp-file))))))
;; 以下を評価でしゃべる
(speech-message "a happy new year!")
(speech-message "a happy new year!" "ja") ;; 言語指定
(speech-message "あけましておめでとうございます" "ja") ;; 動作がおかしい...
temp-file の中身のぞいてみたら?日本語の結果には明らかに mp3 っぽくな
いものが入ってくるけど。google に投げるパラメータが正しいのか確認を。
で、気になったのが英語の方は再生できるとなると、http ヘッダがファイル
に残ってても再生できるってことなのか?
いものが入ってくるけど。google に投げるパラメータが正しいのか確認を。
で、気になったのが英語の方は再生できるとなると、http ヘッダがファイル
に残ってても再生できるってことなのか?
>>438
ヘッダ切り出ししなきゃいけなかったんですね。
MediaPlayerでためしてたからか、先頭にゴミがつまってても再生できてたみたいでした。
>>437 の一部を直してヘッダを切り取ってみましたが、状況変わらずでした。
(point-min) (point-max) temp-file nil 'silent)
↓
(goto-char (point-min))
(write-region (search-forward-regexp "\n\n") (point-max) temp-file nil 'silent)
↓を評価して出来上がる文字列を chrome で表示するとちゃんと「あけましておめでとう・・」って音声が出てくるので
emacs側の文字コード変換とかが間違っているんでしょうか・・・
(format "http://translate.google.com/translate_tts?tl=%s&q=%s"
"ja" (url-hexify-string "あけましておめでとうございます"))
↓
"http://translate.google.com/translate_tts?tl=ja&q=%e3%81%82%e3%81%91%e3%81%be%e3%81%97%e3%81%a6%e3%81%8a%e3%82%81%e3%81%a7%e3%81%94%e3%81%86%e3%81%94%e3%81%96%e3%81%84%e3%81%be%e3%81%99"
ヘッダ切り出ししなきゃいけなかったんですね。
MediaPlayerでためしてたからか、先頭にゴミがつまってても再生できてたみたいでした。
>>437 の一部を直してヘッダを切り取ってみましたが、状況変わらずでした。
(point-min) (point-max) temp-file nil 'silent)
↓
(goto-char (point-min))
(write-region (search-forward-regexp "\n\n") (point-max) temp-file nil 'silent)
↓を評価して出来上がる文字列を chrome で表示するとちゃんと「あけましておめでとう・・」って音声が出てくるので
emacs側の文字コード変換とかが間違っているんでしょうか・・・
(format "http://translate.google.com/translate_tts?tl=%s&q=%s"
"ja" (url-hexify-string "あけましておめでとうございます"))
↓
"http://translate.google.com/translate_tts?tl=ja&q=%e3%81%82%e3%81%91%e3%81%be%e3%81%97%e3%81%a6%e3%81%8a%e3%82%81%e3%81%a7%e3%81%94%e3%81%86%e3%81%94%e3%81%96%e3%81%84%e3%81%be%e3%81%99"
あとは chrome で送ってる http ヘッダと url-http.el で送ってる http ヘッ
ダを調べながら試してくしかないかなぁ。
どうやら User-Agent で弾いてはいないみたいだが。
ダを調べながら試してくしかないかなぁ。
どうやら User-Agent で弾いてはいないみたいだが。
>>441
url-debug を t にしてみてみたところ、emacs 側でリクエスト文字列が途中で書き変わってたりということはありませんでした。
他でどうなんだろうとおもって wget で試してみたところ User-Agent に何か適当なのが入っていないと
403 エラーになりました。
指定して取得した結果は英語は大丈夫、日本語は Emacs の時とまったく同じ変な結果が返されてきました。
おっしゃるとおり Chrome のリクエストヘッダと比較して差分を調べて見ることにします。何か足りていないんでしょうね。
ありがとうございました。
url-debug を t にしてみてみたところ、emacs 側でリクエスト文字列が途中で書き変わってたりということはありませんでした。
他でどうなんだろうとおもって wget で試してみたところ User-Agent に何か適当なのが入っていないと
403 エラーになりました。
指定して取得した結果は英語は大丈夫、日本語は Emacs の時とまったく同じ変な結果が返されてきました。
おっしゃるとおり Chrome のリクエストヘッダと比較して差分を調べて見ることにします。何か足りていないんでしょうね。
ありがとうございました。
うまくいきましたので報告します。
結論から言って 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))))))
結論から言って 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))))))
>>443
url.elは糞だ、外部プログラム呼ぶのはキチだって話してる最中にいい度胸だな。
url.elは糞だ、外部プログラム呼ぶのはキチだって話してる最中にいい度胸だな。
おもしろいね
(setq speech-sound-player "mpg123 %s")
(setq speech-sound-player "mpg123 %s")
おもしろいじゃん
カーソル位置の単語を喋らせるのつくってみたよ
(defun speech-at-point ()
(interactive)
(speech-message (thing-at-point 'word)))
(global-set-key (kbd "C-c C-s") 'speech-at-point)
これで日本語対象にしてみたらダメだった
文字列から言語判別出来るようにすればよさそうだな
カーソル位置の単語を喋らせるのつくってみたよ
(defun speech-at-point ()
(interactive)
(speech-message (thing-at-point 'word)))
(global-set-key (kbd "C-c C-s") 'speech-at-point)
これで日本語対象にしてみたらダメだった
文字列から言語判別出来るようにすればよさそうだな
自分なりに改造してみた。
取り敢えず非同期に & >>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)))
取り敢えず非同期に & >>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)))
手抜きで
(or lang (and (string-match "\\cj" text) "ja") speech-default-language)
(or lang (and (string-match "\\cj" text) "ja") speech-default-language)
ちょいとうざいがベルの代わりに声で叱ってもらう
'("もう" "だめよ" "しかたないこね" "ちょっとだけよ")とかもいいな
(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)
'("もう" "だめよ" "しかたないこね" "ちょっとだけよ")とかもいいな
(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)
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- Emacs Part 34 (1001) - [92%] - 2010/6/21 19:45 ○
- Emacs Part 35 (1001) - [92%] - 2010/9/19 17:01
- Emacs Part 36 (1001) - [92%] - 2011/3/1 5:02
- Emacs Part 37 (1001) - [92%] - 2011/6/20 19:47
- Emacs Part 38 (1001) - [92%] - 2011/11/29 0:01
- Emacs Part 49 (974) - [92%] - 2016/12/7 9:45
- Emacs Part 33 (1001) - [92%] - 2010/3/9 20:01 ○
- Emacs Part 32 (1001) - [92%] - 2009/12/20 2:04 ○
- Emacs Part 31 (1001) - [92%] - 2009/10/23 10:31 ○
- Emacs Part 40 (1001) - [84%] - 2012/9/7 0:30
- Emacs Part 53 (989) - [84%] - 2022/12/5 12:45
- Emacs Part 41 (1001) - [84%] - 2012/12/24 4:15
- Emacs Part 54 (97) - [84%] - 2023/1/25 17:15
- Emacs Part 42 (1001) - [84%] - 2013/6/9 5:15 △
トップメニューへ / →のくす牧場書庫について