Emacs Part 43
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
2013/06/09(日) 14:05:32.09GNU Emacs - GNU Project - Free Software Foundation (FSF)
https://www.gnu.org/software/emacs/
EmacsWiki: サイトマップ
http://www.emacswiki.org/emacs/
Emacsのトラノマキ | 検索結果: | ありえるえりあ
http://dev.ariel-networks.com/wp/?s=Emacs%E3%81%AE%E3%83%88%E3%83%A9%E3%83%8E%E3%83%9E%E3%82%AD
前スレ
EmacsPart42
http://toro.2ch.net/test/read.cgi/unix/1356319580/
0866名無しさん@お腹いっぱい。
2013/11/21(木) 15:50:00.990867名無しさん@お腹いっぱい。
2013/11/21(木) 16:02:45.34ありがとうございます。
mapatoms で探索させたところ見つかりました。
(require 'cl-lib)
(let ((found nil))
(mapatoms (lambda (sym) (when (string-match "^cl-find" (symbol-name sym))
(setq found t))))
found) ;; => t
vector ⊂ sequence だと思っていたのですが必ずしもそういうわけでもないってことなんでしょうかね
(pp obarray) させた結果にも cl-find が出てきませんでしたし。
もうすこし vector について勉強してみます。
0868名無しさん@お腹いっぱい。
2013/11/21(木) 16:13:23.22(let ((count 0))
(mapatoms (lambda (sym) (setq count (1+ count))))
count) ;; length の結果とかなり異なる (ex 1511 vs 22728 など)
length のドキュメントを見る限り普通に vector にも使えそうな感じではあるのですが。
0869名無しさん@お腹いっぱい。
2013/11/21(木) 16:20:27.07obarray は vector ではあるが、中身は hash 構造になっているので mapatoms 以外での探索は出来ないとのこと。
ちゃんと obarray の説明の所に書いてありますね。length での値が異なるのも納得できました。
http://www.gnu.org/software/emacs/manual/html_node/elisp/Creating-Symbols.html
0870名無しさん@お腹いっぱい。
2013/11/21(木) 16:21:05.35http://www.mew.org/~kazu/doc/elisp/hash.html
0871名無しさん@お腹いっぱい。
2013/11/21(木) 16:22:27.85http://www.geocities.co.jp/SiliconValley-Bay/9285/ELISP-JA/elisp_103.html
obarrayがフラット(?)なvectorじゃないだけじゃない?
emacs lispを余り知らないからはっきりと言えないけど
vector ⊂ sequence は正しいんじゃない?
0872名無しさん@お腹いっぱい。
2013/11/21(木) 19:05:20.920873名無しさん@お腹いっぱい。
2013/11/21(木) 19:22:24.33gnuplot がない環境でも動くようにって話ならそりゃ無理じゃねえの?としか。
0874名無しさん@お腹いっぱい。
2013/11/21(木) 19:42:55.65これは簡単には動きませんか?
0875名無しさん@お腹いっぱい。
2013/11/21(木) 19:53:42.68gnuplot自体は有ってgnuplot-modeでプロセス作ってコマンド入れればインラインで描いてくれます。
imaximaで使うgnuplotをemacs外部のプロセスじゃなくemacs内のプロセスでインラインにならないかと。
0876名無しさん@お腹いっぱい。
2013/11/21(木) 20:00:30.54Imaximaのサイトやブログに書いてあったよ。
Tutorial of Imaxima inline graph
sites.google.com/site/imaximaimath/tutorial-of-imaxima/tutorial-of-imaxima-inline-graph
draw関数によるグラフのプロット 入門編 - Maximaでつづる数学の旅
d.hatena.ne.jp/jurupapa/20110613/1307977715
> imaximaではグラフをEmacsのバッファの中にインラインで表示することができ
> るのですが、そのために、draw2d()の代わりにwxdraw2d()関数を使用します。
> 引数などの書式は両者とも全く同じです。
0877名無しさん@お腹いっぱい。
2013/11/21(木) 20:33:40.54おおおお、(≧∇≦)
ありがとうございます(^o^)/
0878名無しさん@お腹いっぱい。
2013/11/24(日) 06:56:36.40Warning: function `map' from cl package called at runtime
これはどうすれば黙らせられます?
0879名無しさん@お腹いっぱい。
2013/11/24(日) 10:19:50.70cl-functions だけ外してずらずら列挙するか、'(not cl-functions) とか設定するとか。
0880名無しさん@お腹いっぱい。
2013/11/24(日) 10:22:34.51直接書き換えないんでも バージョンみて defalias して上げりゃいいと思う
ただ cl-flet なんかは flet と挙動自体が変わってて cl-letf にしないとダメな場合もあるから
単純に defalias すればいいってわけでもなかったりするのもある
0881名無しさん@お腹いっぱい。
2013/11/25(月) 11:31:24.63c++-modeで開いてみたときの印象からは、 ^ を *, & と同じように扱えれば何とかなりそうなんだけど、
どこをどうすればいいのかがわからなくて。
Doxgenタイプのコメントをつけたいのだけれど、いちいち手で作るのは勘弁してほしいというだけなんで、
semantic使わないで、関数のコメントのテンプレートを生成する方法があれば、そちらもよろしく。
0882名無しさん@お腹いっぱい。
2013/11/25(月) 12:05:42.270883名無しさん@お腹いっぱい。
2013/11/25(月) 16:33:52.790884名無しさん@お腹いっぱい。
2013/11/25(月) 17:54:53.59C++ だと吐いてくれないから Semantic で何とかならないかと
もしかして、最近のVCではできたりするのかな?
2013 Express インストールしてみる
0885名無しさん@お腹いっぱい。
2013/11/25(月) 21:35:52.50テンプレートだけなら /usr/share/emacs/etc/srecode/cpp.srt に加筆。
0886名無しさん@お腹いっぱい。
2013/11/25(月) 23:57:40.260887名無しさん@お腹いっぱい。
2013/11/26(火) 00:27:18.08a*b みたいなのだと aaaaaaaaab とか aab に同時にカーソルが現れて欲しいってことでしょ?
0888名無しさん@お腹いっぱい。
2013/11/27(水) 13:41:39.57twittering-mode.elでmaster passwordを使ってタイムラインを開こうとすると
パスワードを入力してenterを押したとたん
"the authorized token is loaded"
というメッセージがエコー欄に表示されてEmacs自体が完全に固まることがあります
そのときは強制終了させなければいけません
正常にタイムラインが表示されることがほとんどなのですが、エラーの結果が重大なので気がかりです
どのような原因が考えられるのでしょうか
0889名無しさん@お腹いっぱい。
2013/11/27(水) 16:29:10.23テキスト,ファイル名,行番号からなるリストが複数あります
'(("test text1" "~/foo/test1" 3)
("test text2" "~/foo/test2" 5))
これをもとにテキストの文字列全体にファイル名のその行番号を紐付けてリンクして
文字列として返すようにしたいのですがどうすればいいのでしょうか
http://www.gnu.org/software/emacs/manual/html_node/elisp/Changing-Properties.html
これのset-text-propertyを使うとは思うのですが、propをどういじればリンクできるかが分かりませんでした
どうぞよろしくお願いします
0890名無しさん@お腹いっぱい。
2013/11/27(水) 16:34:45.14NTEmacs 固有っぽい気がする
http://anago.2ch.net/test/read.cgi/software/1325573999/
0891名無しさん@お腹いっぱい。
2013/11/27(水) 16:35:57.32返すってのはツールチップみたいに表示したいってこと?
0892名無しさん@お腹いっぱい。
2013/11/27(水) 20:57:59.73889です
すみません言葉足らずでした
ツールチップの表示ではなくてリンクを埋め込んだテキストを普通に表示する、という意味です
org-modeでurlを書くと自動的にクリッカブルな文字列になりますが
あのようなものをorg-mode以外でも使いたいのです
0893名無しさん@お腹いっぱい。
2013/11/27(水) 21:04:29.97リンクしてる行までジャンプして表示する、ってことでいいのかな。
http://www.gnu.org/software/emacs/manual/html_node/elisp/Clickable-Text.html#Clickable-Text
クリッカブルな文字列のプロパティの作り方はここでよさそう。
find-file して forward-line する関数をくっつけてやればいいんじゃないのかな。
0894名無しさん@お腹いっぱい。
2013/11/27(水) 21:44:57.260895878
2013/11/28(木) 02:04:03.37すみません遅くなりましたが、ありがとうございましたm(_ _)m
とりあえず byte-compile-warnings にしてみます
0896名無しさん@お腹いっぱい。
2013/11/28(木) 14:31:41.55ありがとうございます。NTEmacsスレで聞いてみます
0897名無しさん@お腹いっぱい。
2013/11/28(木) 14:32:48.49windowsのgnupackでemacsを使っています
twittering-mode.elでmaster passwordを使ってタイムラインを開こうとすると
パスワードを入力してenterを押したとたん
"the authorized token is loaded"
というメッセージがエコー欄に表示されてEmacs自体が完全に固まることがあります
そのときは強制終了させなければいけません
正常にタイムラインが表示されることがほとんどなのですが、エラーの結果が重大なので気がかりです
どのような原因が考えられるのでしょうか
0898名無しさん@お腹いっぱい。
2013/11/28(木) 14:59:23.620899名無しさん@お腹いっぱい。
2013/11/28(木) 15:46:22.94素で間違えてしまいました
0900名無しさん@お腹いっぱい。
2013/11/28(木) 16:16:24.53やべー少しウケたw
0901名無しさん@お腹いっぱい。
2013/11/28(木) 21:43:45.340902名無しさん@お腹いっぱい。
2013/11/29(金) 05:31:41.640903名無しさん@お腹いっぱい。
2013/11/30(土) 02:53:35.49それ、evil 関係なくない?
うちでは、普通に動いてるっぽいけど。
0904名無しさん@お腹いっぱい。
2013/11/30(土) 09:09:31.90あらかじめキーワードを指定した状態で呼び出したいです。
ミニバッファに
patter:キーワード
↑キーワードがすでに打ち込まれた状態でキーバインドから呼び出したいのですが、
わかる方いらっしゃいますか?
0905名無しさん@お腹いっぱい。
2013/11/30(土) 09:50:04.68これかな。
(anything-c-moccur-occur-by-moccur-base "キーワード")
0906名無しさん@お腹いっぱい。
2013/11/30(土) 10:56:30.83実行できました。
ありがとうございます!!
0907名無しさん@お腹いっぱい。
2013/11/30(土) 14:51:51.78あんまりEmacsに慣れてないからよくわかんないんだけど
・閉じ括弧でC-M-f(forward-sexp)を呼ぶと、モード・位置関係なく Scan error: "Containing expression ends prematurely" と出てカーソルは移動しない
・それ以外の場合はEmacsモードでは普通に動作する
・evilのnormalステートだとカーソルが行の最後の要素の一番後ろの文字の上に乗った状態で引っかかる。閉じ括弧じゃないならエラーメッセージは出ないけどやっぱり動かない
・evil-move-cursor-backをnilにするか、行末にスペースがあるとちゃんと次の要素に飛んでくれる
っていう状態です
誰か助けて
ちなみに
GNU Emacs 24.3.1 (i386-mingw-nt6.0.6002)で
evilのバージョンは1.0.8です
0908名無しさん@お腹いっぱい。
2013/11/30(土) 14:55:22.090909名無しさん@お腹いっぱい。
2013/11/30(土) 17:21:04.87そうだとするならばモード移動の切り替えも面倒な気がするけれど
慣れてしまったせいかemacsのctrl+n, ctrl+pの方がモードを気にせず楽だと思うけれどね
0910名無しさん@お腹いっぱい。
2013/11/30(土) 17:47:39.09試しに、forward-sexp を、evil の insert state や emacs state で、やってみ。
normal mode のbox cursor と、 emacs での box cursor の位置の解釈の仕方が、
違うんだ。
行末での cursor 位置の違いを emacs state と normal state で
見比べてみると、一個ずれてるのに気づくと思うけど。
ちなみに、エラーメッセージの意味は、閉じカッコの手前で forward に進もうとするから、進めねーよ(意訳)ってことだろう?
対策としては、advice とか使って、ちょっと、手を加えるとかになるんじゃないんかな。
おれは、insert state で使ってすましてる。
0911名無しさん@お腹いっぱい。
2013/11/30(土) 19:15:09.87今はemacs終了時に変更されているバッファを保存するかどうか聞かれるのでyを何度も押しています
0912名無しさん@お腹いっぱい。
2013/11/30(土) 19:19:09.40save-some-buffers に universal-argument を付けて実行。
C-u C-x s かな。
buffer-save-without-query を t にしておけば C-x s で問答無用で保存してくれるようになる。
そのかわり終了時にも聞かれなくなるかもしれない。
0913名無しさん@お腹いっぱい。
2013/11/30(土) 21:16:51.36ありがとうございます
0914名無しさん@お腹いっぱい。
2013/11/30(土) 23:10:44.15ほんとだ、insertステートだと問題なく動く
多分、normalステートだと行末の改行にカーソルが乗らずに一文字戻るって仕様なんだね
理屈は分かったから後はこっちで色々いじってみるよ
どうもありがとう
0915名無しさん@お腹いっぱい。
2013/12/01(日) 13:14:05.85すでにそういうパッケージってあったりするんだろうか
0916名無しさん@お腹いっぱい。
2013/12/03(火) 12:17:55.720917名無しさん@お腹いっぱい。
2013/12/04(水) 08:41:44.37ミニバッファ側
表示用テキスト : 「」
「」に初期値を入れておきたいのですが、やりかたが見つからず。
C-x C-fのようなかんじです。
よろしくおねがいします。
0918名無しさん@お腹いっぱい。
2013/12/04(水) 11:28:06.67単に自前でプロンプト出す関数を使ってるだけの話だね。
(defun with-default-input (text)
(interactive (list (read-input "Text: " "hello, world")))
(message "Input text: %s" text))
0919名無しさん@お腹いっぱい。
2013/12/05(木) 00:14:15.27ありがとうございます。
できました。
lisp全体にですが理解が浅いので助かります。
read-inputってはじめて知りましたw
0920名無しさん@お腹いっぱい。
2013/12/05(木) 02:34:57.31http://d.hatena.ne.jp/khiker/20100924/popup_select_window のスクリーンショットが一番わかりやすいです。
0921名無しさん@お腹いっぱい。
2013/12/05(木) 11:05:36.283つ以上に分割してる時に選んだ先のウィンドウをわかりやすく表示するってこと?
0922名無しさん@お腹いっぱい。
2013/12/05(木) 12:40:22.02かつ選ぶウィンドウをわかりやすく色付けするって拡張だったのか。
バッファ選択の場合、iswitchb なんかだと↓付けることで
現在選ぼうとしてるバッファがリアルタイムで表示されてちょっとはわかりやすくなるんじゃないかな
popup.el で表示させたいんだったら自分でなんか書かないとだめじゃないかね。
(require 'cl-lib)
(defadvice iswitchb-exhibit
(after ad-iswitchb-exhibit-with-display-buffer activate)
"選択しているバッファをウィンドウに表示する."
(when (and (eq iswitchb-method iswitchb-default-method)
iswitchb-matches)
(let ((iswitchb-method 'samewindow)
(selected (get-buffer-window
(cl-find-if-not 'minibufferp (buffer-list)))))
(when selected
(select-window selected)
(iswitchb-visit-buffer
(get-buffer (car iswitchb-matches)))
(select-window (minibuffer-window))))
))
0923名無しさん@お腹いっぱい。
2013/12/05(木) 12:56:33.94(switch-to-buffer
(popup-menu* (mapcar
(lambda (b) (popup-make-item (buffer-name b) :value b))
(cl-remove-if (lambda (b)
(string-match "^ " (buffer-name b)))
(buffer-list)
))))
0924名無しさん@お腹いっぱい。
2013/12/05(木) 13:03:36.67delq はもっと使われていい。
(switch-to-buffer
(popup-menu*
(delq nil (mapcar
(lambda (buf)
(unless (string-match "^ " (buffer-name buf))
(popup-make-item (buffer-name b) :value buf)))
(buffer-list)))))
0925名無しさん@お腹いっぱい。
2013/12/05(木) 16:29:41.76keyboard-quitを割り当てたいのですが("<enter>" . 'keyboard-quit)と書いても何も起きませんでした
0926名無しさん@お腹いっぱい。
2013/12/05(木) 19:46:43.050927名無しさん@お腹いっぱい。
2013/12/05(木) 22:33:13.02そうでした...
0928名無しさん@お腹いっぱい。
2013/12/06(金) 01:23:33.45魔がさした。反省はしてない
0929名無しさん@お腹いっぱい。
2013/12/06(金) 09:23:32.560930名無しさん@お腹いっぱい。
2013/12/06(金) 10:10:44.44昔の名残か
0931名無しさん@お腹いっぱい。
2013/12/06(金) 13:36:03.15returnはタイプライター、パンチカードの名残り
押すとキャリッジがリターンしたから
0932名無しさん@お腹いっぱい。
2013/12/06(金) 14:47:30.590933名無しさん@お腹いっぱい。
2013/12/06(金) 15:11:35.540934名無しさん@お腹いっぱい。
2013/12/06(金) 17:15:48.23キーボードに?
0935名無しさん@お腹いっぱい。
2013/12/06(金) 18:04:31.55大学の図書館にあった検索端末だったかな。
0936名無しさん@お腹いっぱい。
2013/12/06(金) 18:43:51.63enter / return両方刻印されてるな。
0937名無しさん@お腹いっぱい。
2013/12/06(金) 22:53:20.42エラーが発生するまで *compilation* ウィンドウを開かない方法はないでしょうか?
0938名無しさん@お腹いっぱい。
2013/12/06(金) 23:14:15.73ここにそれっぽい事が書いてある
0939名無しさん@お腹いっぱい。
2013/12/06(金) 23:38:05.74ありがとうございます。正常なら開かないのではなく正常なら閉じる、しかなさそうな感じですね。
gcc とかだとコンパイルエラーでも終了時のステータスが 0 だったので face で判断するのを書いてみました。
(add-hook 'compilation-finish-functions
(lambda (buffer msg)
(unless (with-current-buffer buffer
(let ((cur (point-min)) found)
(while (and cur (not found))
(setq found
(let ((face (get-text-property cur 'face)))
(memq 'compilation-error
(if (listp face)
face
(cons face nil)))))
(setq cur (next-property-change cur)))
found))
(when (get-buffer-window buffer)
(delete-window (get-buffer-window buffer))))))
0940名無しさん@お腹いっぱい。
2013/12/07(土) 00:31:47.18compilation-messageの方使うともうちょい短くなるな。
(add-hook 'compilation-finish-functions
(lambda (buffer msg)
(when (and (not (with-current-buffer buffer
(text-property-not-all (point-min) (point-max)
'compilation-message nil)))
(get-buffer-window buffer))
(delete-window (get-buffer-window buffer)))))
0941名無しさん@お腹いっぱい。
2013/12/07(土) 12:33:27.07font-lock のとこもうちょっとなんとかならんのかしら。
エラーが起きたかどうかをテキストプロパティから判別してるんだけど、
font-lock が遅延評価かなんかしてるせいか display-buffer しないとプロパティが設定されない。
fontify-buffer は font-lock-mode だと機能してくれなくて 一旦 font-lock-mode 解除とか間抜けなことするはめに。
(defadvice compilation-start (around compile-silently activate)
"コンパイル時にバッファを表示しない."
(cl-letf (((symbol-function 'display-buffer) 'ignore))
ad-do-it))
;; コンパイルエラー時のみ *compilation* バッファ表示
(add-hook 'compilation-finish-functions
(lambda (buffer msg)
(with-current-buffer buffer
(font-lock-mode -1)
(font-lock-fontify-buffer)
(font-lock-mode 1)
(when
(text-property-not-all (point-min) (point-max)
'compilation-message nil)
(display-buffer buffer))))
)
0942名無しさん@お腹いっぱい。
2013/12/07(土) 12:56:08.08日記にでも書いてろ
0943名無しさん@お腹いっぱい。
2013/12/07(土) 12:56:19.260944名無しさん@お腹いっぱい。
2013/12/07(土) 14:06:43.00具体的には本体とテストを簡単に行き来出来るようなパッケージを探しています。
0945名無しさん@お腹いっぱい。
2013/12/07(土) 17:25:01.890946名無しさん@お腹いっぱい。
2013/12/07(土) 22:57:48.90`ff-find-other-file' を使えば出来る気がする。
そう思ってググったらCofeeScript用の設定例が見つかった。
https://github.com/yasuyk/coffee-fof/blob/master/coffee-fof.el
0947名無しさん@お腹いっぱい。
2013/12/08(日) 09:04:29.88(defadvice direx:node-children (around sort-files activate)
"direx でディレクトリを最初に表示する."
(let ((org-directory-files (symbol-function 'directory-files)))
(cl-letf (((symbol-function 'directory-files)
(lambda (directory &optional full match nosort)
(if nosort
(funcall org-directory-files directory full match nosort)
(sort (funcall org-directory-files directory full match)
(lambda (a b)
(let ((dir-a (file-directory-p a))
(dir-b (file-directory-p b)))
(if (eq dir-a dir-b)
(string-lessp a b)
(if dir-a t)))))))))
ad-do-it)))
0948名無しさん@お腹いっぱい。
2013/12/08(日) 10:37:49.54コンパイル時にライブラリが存在してるかどうかチェックして require したり
実行ファイルが存在するかチェックして設定したり、なんてのがよくありますが、
Cのプリプロセッサみたいにコンパイル時にチェックを済ませてしまうことって出来ないんでしょうか?
(if (executable-find "ruby") (setq hoge "aaa"))
みたいなのがあった場合、コンパイル時に executable-find を実行、if の条件判断までやってしまって
ruby がない場合は elc ファイル内になにも残らず、存在する場合は setq だけ残したいです。
0949名無しさん@お腹いっぱい。
2013/12/08(日) 11:03:21.40(defmacro if-on-compile (cond &rest form)
(when cond `(progn ,@form)))
0950名無しさん@お腹いっぱい。
2013/12/08(日) 11:17:07.24(if #.(executable-find "ruby") (setq hoge "aaa"))
でいけると思う。
emacs lispでも#.は使えるみたいだけど狙った結果になるかわからん
0951名無しさん@お腹いっぱい。
2013/12/08(日) 11:21:30.610952名無しさん@お腹いっぱい。
2013/12/08(日) 12:06:16.44それだと cond が評価されない気がする
(defmacro if-on-compile (cond &rest form)
(when (eval cond) `(progn ,@form)))
0953名無しさん@お腹いっぱい。
2013/12/08(日) 12:37:34.71emacs-init-time が 0.9 から 0.8 になった
すげえ虚しい
修正に10分くらいはかかってそうだから 6000回 は emacs を起動しないと元が取れない
0954名無しさん@お腹いっぱい。
2013/12/08(日) 13:30:22.300955名無しさん@お腹いっぱい。
2013/12/08(日) 15:27:05.370956名無しさん@お腹いっぱい。
2013/12/08(日) 15:36:26.12するとしたらOSをリブートしたときとかinit.el関連を書き換えたときくらいかな
強制終了するまでは起動しっぱなしだわ
0957名無しさん@お腹いっぱい。
2013/12/08(日) 16:02:39.75わりと頻繁に終了させるようになった。
0958名無しさん@お腹いっぱい。
2013/12/08(日) 16:29:26.420959名無しさん@お腹いっぱい。
2013/12/08(日) 16:49:43.640960名無しさん@お腹いっぱい。
2013/12/08(日) 16:55:47.17君にとっては小さな0.1秒でも、
1000年後、2000年後の子孫にとっては貴重な100時間になるかもしれない。
これこそが俺達がパフォーマンスチューニングをする最大の理由なんだ。
0961名無しさん@お腹いっぱい。
2013/12/08(日) 17:06:54.960962名無しさん@お腹いっぱい。
2013/12/08(日) 17:08:10.010963名無しさん@お腹いっぱい。
2013/12/08(日) 17:29:32.30それっぽいフックがないか探したのですが見当たりませんでした。
0964963
2013/12/08(日) 17:50:04.03ぐぐったら process-sentinel に設定してる例があったのでそれを参考に作ってみました。
(add-hook 'shell-mode-hook
(lambda ()
(set-process-sentinel (get-buffer-process (current-buffer))
(lambda (process event)
(let* ((buf (process-buffer process))
(win (get-buffer-window buf)))
(when (and win (not (one-window-p)))
(delete-window win))
(kill-buffer buf))))))
0965名無しさん@お腹いっぱい。
2013/12/08(日) 23:51:05.87パフォーマンスチューニングする時間にプログラム書いて金に変え、cpuスペックを2倍にした方が合理的。
あるいは、複数端末にして使い分けるとか。
レス数が950を超えています。1000を超えると書き込みができなくなります。