1 :
名無しさん@お腹いっぱい。 :
2013/06/09(日) 14:05:32.09
2 :
名無しさん@お腹いっぱい。 :2013/06/09(日) 14:16:55.54
M-x otsu
リンク三つ目なんだこりゃ。ドン引き
宣伝乙
ここ最近公開されたおもしろいelispは何かある?
特にない
前スレ
>>972 (defun my-japanese-search ()
(interactive)
(run-with-idle-timer 0.1 nil 'isearch-edit-string)
(isearch-forward))
としてみれば、どうかな!?
desktop-save-modeってwindow configulationを保存しないけど、保存させるには どんな設定をすればいい?
C-x r N なんて便利なコマンドあったんだな。知らなかった。 表示のカスタマイズはC-u C-x r N だな。 こういう便利機能を時々発見するのもEmacsの醍醐味だね。
12 :
名無しさん@お腹いっぱい。 :2013/06/13(木) 03:30:16.46
馬鹿にスレ立てさせんな
ならさっさと自分で立てれ。
>>11 これ何に使うと便利と感じるの?
数値計算屋さんで変な定数何回も入力するとか?
[奥が深い症候群]
>>14 >>11 じゃないけど wdired でファイルに連番づけするときなどに活用してる。
>>16 cua-set-rectangle-markの方が使いやすいと思うけど。
define-minor-modeで複数行を/* */でコメントアウトするように設定したいのですがどうすればいいですか define-generic-modeではコメントの設定で("/*" . "*/")と書けば良かったのですが、define-minor-modeの方が分かりません。 お願いします
マイナーモードとメジャーモードって区別でマイナーモード側でコメント設定する必要性がわからんな。 elisp(メジャー)モードでマイナーモードを使うようにしたからって、コメントが /* */ になったって嬉しくもなんともない。 具体的になにしたいんだか書いたほうがいいと思うぞ。
そういわれればそうですね 考え直します
process-send-string とかprocess系の関数で質問です。 この関数で設定したstringが実際にプロセスへ送信されるタイミングはいつですか? たとえば process-send-string proc "hoge" process-send-string proc "huga" process-send-string proc "hage" とした場合、 3つキューに詰まれた上で、lispのコールスタックが上層までもどった時点なのか、 それとも process-send-stringを実行した直後なのか。 基本この関数は非同期ですよね? 非同期だけど、少なくとも上記のように3連続で実行している間に送信されないことが保障されているほうが ありがたいのですが・・、どういう実装なんでしょう? 勝手なイメージとしては、 process-send-stringでキューかバッファに積んでいって lispのコールスタック上層に戻ったときに送信されるのが望ましいのですが。
上の質問に絡んだ内容ですが、 現在編集中のバッファで process-send-string proc を実行するような関数が実行されている状態で emacsがこれとはまったく無関係に 別のバッファを開いて、そのバッファでprocess-send-string procを実行するとします。 send対象のprocは同一プロセスです。 この場合、送信されるデータはどのようになりますか? 分かりやすく書くと 作業中のバッファAで process-send-string proc "a:hoge" process-send-string proc "a:huga" process-send-string proc "a:hage" とし、 emacsが裏でオープンするバッファBのc-mode-hookなどで process-send-string proc "b:hoge" process-send-string proc "b:huga" process-send-string proc "b:hage" が実行された場合です
>>21 正確な解説じゃないだろうけど、知ってる範囲で説明すると
> この関数で設定したstringが実際にプロセスへ送信されるタイミングはいつですか?
process-connection-type によってかわる。
大雑把にいえば t のときは改行を送信したとき。
nil のときは process-send-string 関数が呼ばれたとき。
> 基本この関数は非同期ですよね?
> 非同期だけど、少なくとも上記のように3連続で実行している間に送信されないことが保障されているほうが
> ありがたいのですが・・
ここの意味はよくわからないけど、 process-send-string から帰ってこないことはありえる。
非同期ではないと思う。
で
>>22 を読んでて思ったのだけど
process-connection-type の設定を考慮したら直面してる問題が解決したりしない?
eww.el --- Emacs Web Wowser こんなのがコミットされてた。 ただ、shr.el --- Simple HTML Renderer がベースだから、表示能力は推して知るべしだ。
VimGolf in Emacs | Irreal
http://irreal.org/blog/?p=1953 thingatpt.elのforward-whitespace関数にキーバインドを割り当てていれば7手でいけるが
素のemacsのキーバインドで7手で本当に達成できるか分からない
M-@ [mark-word] と M-( [insert-parentheses] で2手分を使ってしまうから
f3とf4を駆使すると思うのだけれど、分かる人はいる?
>>26 コメントに書いてある
electric-pair-modeを使うそうだ
28 :
22 :2013/06/15(土) 21:51:35.76
> > この関数で設定したstringが実際にプロセスへ送信されるタイミングはいつですか? > > process-connection-type によってかわる。 > 大雑把にいえば t のときは改行を送信したとき。 > nil のときは process-send-string 関数が呼ばれたとき。 > ありがとう、ためしてみます。 > > 非同期だけど、少なくとも上記のように3連続で実行している間に送信されないことが保障されているほうが > > ありがたいのですが・・ > > ここの意味はよくわからないけど、 process-send-string から帰ってこないことはありえる。 > 非同期ではないと思う。 lisp以外の言語で非同期プログラムなどを書く場合 他のプロセス・スレッドや同期オブジェクトにアクセスしたタイミングでプリエンプションされる可能性があるので そういった意味で言いました。
29 :
22 :2013/06/15(土) 22:08:34.16
>>25 > auto-complete-clang-async.el ネタです。
> 前スレでこの話があったけど、 >22 の人かな?
はいそうです。
> 純粋にたくさんファイルを開いたときならダメだけど、そうではなくて clang-complete プロセスが
> いっぱい残る問題ならこれでたぶん解消すると思います。
auto-complete-clang-asyncの問題としては、
・バッファ毎にclang-complete.exeを割り当てるので
ファイルを8個以上ひらくとパイプエラーになってしまうのでそれ以上開けない。
・64bit版がない。
というのがあるので
64bit版のclang-complete.exe相当のものを自作して試しています。
1バッファ1プロセス起動はやめて、nバッファ1プロセスという形にしています。
なのでclangの補完対象になるバッファは全て1つのclang-complete.exeで管理しています。
ここで問題がおきていて、
あるバッファでclang-compelteへ補完コマンドを送信中に
裏でCEDETが動作して、別バッファにincludeされる対象のファイルを自動的にオープンすることがあり
その際にc-common-hookなどにセットしてあるclang-completeへの登録コマンドなどが動作して
clang-completeのstdinに入ります。
これで応答がなくなってしまったことがあり
このときに、コマンドの送信順番がどうなるかが気になっています。
process-connection-typeがnilの場合でも
process-send-string単位ということなので
バッファAのprocess-send-stringと
バッファBのprocess-send-stringが
入り乱れる形で送信されるのであれば厄介な話だなとおもって上で聞きました。
ただemacs-lisp自体はシングルスレッドなんですよね?
なので並列性に関しては心配していませんが、
平行性はどういう単位で実現されているのかで、問題の解決方法が変わってくるとおもいます。
30 :
25 :2013/06/16(日) 06:12:00.66
31 :
名無しさん@お腹いっぱい。 :2013/06/16(日) 17:51:32.94
いちおつ
java-modeのenumがうまくインデントされないんだけどいい解決方法ないかな 一応ググっては見たんだけど英語をまともに読めないし試してもうまく動かなくて困ってる
エスパーさんお呼びですよー
読んだぁ〜?
なんでこのくらいでエスパーが必要なのかわからない java-modeのenumがうまくインデントされない解決方法わかる人居るか聞いてるんだけど
ちょろっと触ってみた感じではわりと賢くインデントしてくれるようなんだが どういう風にうまくインデントされないのかを書け あとたぶんemacs標準添付のjava-mode使ってると思うから、そのemacsのバージョンとかも
"GNU Emacs 23.4.1 (i486-pc-linux-gnu, GTK+ Version 2.24.10) of 2012-09-10 on murphy, modified by Debian" enum hoge{ a, b, c, d, }; こんな感じになってしまう
emacsではjava書かんから見てないがそこだけmmm-mode使ってc++-modeとかにしたらえがっぺ。
取り敢えずそれを頼りに明日頑張ってみる ありがとう
>>37 java-modeってcc-mode.elが提供してるのね
emacs23添付のは確かにそうなるなあ
emacs24添付のだと問題無く綺麗にインデントしてくれる
それなら emacs24 の cc-mode.el のと24のを ediff すりゃええべ。 多分ファイルすり替えしてもうまく動かんだろうからね。
>>35 みんな同じ環境を使っていると思っちゃいけない。それじゃ典型的なしろーとだぞ。
最低限環境と*具体的に*どうなるのかemacs -Q(古いのだと -q --no-site-initだっけ?)で
起動したらどうなのかを書いたほうがいい。
素の最新版でどうなるかを試せればさらによし。
自分の質問の仕方が悪かったのは謝る これを機会に最新版入れてみる
define-generic-modeでc++のインデント規則をそのまま利用するには どうすればいいのでしょう
Emacs ユーザーの心の狭さがまた一つ露呈したのか。 それがこのスレの悲しさよ。
純情な子羊ユーザーが迷い込むたびに このスレは容赦なく牙を向いてきた。 それこそ10年も前からこのスレは血を吸って生きてきたのさ。
emacs信者が来たよ
まぁEmacsスレだからな。
気になるelispを導入しようとしているのですが melpa, elpa, el-get, auto-installと最近はいろいろな言葉を聞くので うまく使ってみたいです これまではelispを地道にsite-lispに放り込んで居たのですが 上記の仕組みを使うとどういうことができるのでしょうか
>>50 M-x コマンド
で勝手に引っ張ってきてくれる
許可は得てるで
その仕組みで何か悪さできないの?
君のがんばり次第。
何言ってんだ
横向きの方が有利かもしれない
ある特定のファイルが更新されていた場合に、バッファへの読み直しをさせるには、どのように書けば良いでしょうか? メモ書きファイルに追加書き込みさせるのに、 (swith-to-buffer memo-file-path)とバッファを切り替えているのですが、 更新されている場合には、changed on disk. Reread from diskと聞かれてemacs lispの処理が止まってしまいます。
>>58 読み直ししたいなら無理矢理(revert-buffer nil t)とでもすればいいんじゃね
もしswitch-to-bufferをやめてset-bufferとかwith-current-bufferあたりで済む話ならそっちを使って逃げるとか
60 :
58 :2013/06/27(木) 16:59:52.53
>>59 (revert-buffer nil t)でいけました。ありがとうございます。
hoge.org から hoge.tex やhoge.html を生成するコマンドをmakefileに書きたいのだけど どんなコマンド書けばいいのでしょう
$ git --init $ touch ticket.org でemacs使った簡易Redmineもどきできるな ticket.orgからmakefileも生成してほしい
>>61 つ basename
というかemacsスレでする質問じゃないな。
batch で云々って話ではなく?
と意味不明な供述を繰り返しており
>61 コマンドラインからelisp実行したいのね elisp への引数指定がめんどそう
>>61 普段emacs上で手動でやっているんだと思うけれど
どういう操作をしているのかを書いてみそ
69 :
名無しさん@お腹いっぱい。 :2013/06/30(日) 04:43:25.31
shell-modeで改行無しのテキストファイルをcatしても中身が表示されないです。 何か設定すれば見えるようになりますか?
>>69 ファイルの内容を abc だけで試したけど
[email protected] , emacs24.3@gnupack では問題ないな
環境と、ファイルの内容を詳しく
この件ではあまり関係ないとは思うけれど、お約束で emacs -Q で起動したときの結果も
>>69 $ echo abc
abc
$ echo -n abc
abc$
$ echo -n abc > /tmp/t.txt
$ cat /tmp/t.txt
abc$
72 :
名無しさん@お腹いっぱい。 :2013/06/30(日) 15:44:02.22
>>70 ,71
どうやらzshだとダメみたいです。
explicit-shell-file-nameにbashやtcshを指定したら表示されました。
zshでも何もしないsedにパイプすれば表示されるんですが・・・
% echo -n abc
% echo -n abc | sed ''
abc
% cat /tmp/t.txt
% cat /tmp/t.txt | sed ''
abc
unsetopt prompt_cr
74 :
名無しさん@お腹いっぱい。 :2013/06/30(日) 17:06:33.05
>>73 表示できました!ありがとうございます!!
感動した
>>61 (org)Batch execution
を読んで、
org-export-as-html
などを実行するように変更する。
>>77 .emacs 読み込んだ後に defface で face つくられてんでねーの?
eval-after-load 使って対象 face が load された後に custom-set-faces 呼んでみたら?
>>78 autoloadしてeval-after-loadの中でcustom-set-facesを使ってみましたが
なぜかうまくいきませんでした
ただset-background-colorで設定できたのでこれを使おうと思います
ありがとうございました
autoloadが何の関係あるんだろ? eval-after-loadのformをクオートしてないのでは。
c++-modeなどで特定のキーワードにfaceをつけたくて font-lock-add-keywords を使ってみたんですが、 コメントに含まれているワードまでfaceがついてしまい困っています。 コメント中のワードには適用しないようにするのはどうすればいいでしょうか? ちなみにこんなかんじでつかってます。 (font-lock-add-keywords c++-mode '( ("\\<\\(Hoge\\)\\>" 1 font-lock-keyword-face t) )) これだと // Hoge a; とか /* Hoge a; */ にも適用されてしまいます。
font-lock-add-keywordsのdocstringに書かれているように既知のバグです。
83 :
名無しさん@お腹いっぱい。 :2013/07/06(土) 19:28:07.16
commentのfaceを最後に持ってくる、では駄目?
84 :
名無しさん@お腹いっぱい。 :2013/07/07(日) 05:11:15.65
気にしないようにしてたのに気になってきたじゃないか
C-x C-s セーブ時に以下のエラーがでてしまします。 Saving file c:/hogehoge.cpp basic-save-buffer-2: Opening output file: invalid argument, c:/hogehoge.cpp エラーが出ないファイルと出るファイルがあり、 エラーになる場合はセーブができません。 考えられる原因はなんでしょうか? 使用しているのはemacs24.3です。
hidden ファイル アンチウイルス
rootはやめとけ
89 to Joe
Macなんですが
ttp://sakito.jp/emacs/emacs24.html#usr-local を参考にIMEパッチをあてて、/usr/local/にバイナリ生成しました。
しかしターミナルからemacsコマンドで開くとEmacsで文字やらコマンドが打てなくなりました。厳密にはEmacsがアクティブになりません。
/usr/local/bin/を見るとemacsとemacs-24.3というものがあり
ターミナルでemacsとうち、起動するとターミナルの上の部分がemacs-24.3になります。
対処法などはないでしょうか?
以下のようにshell-commandを発行すると、 (shell-command (concat "saykana hello")) (Shell command succeeded with no output) のように表示されてしまうのですが、 なにも表示されないようにするにはどうすればよいでしょうか?
>>91 1. message-log-max + message nilでくるむ。楽だけど message 自体は一瞬表示される。
(let (message-log-max)
(shell-command)
(message nil))
2. shell-command-to-string を使う。
3. call-process, start-process などの low level api を使う。
93 :
91 :2013/07/10(水) 23:42:50.12
>>92 ありがとうございました。
楽だったので1を使いました。
>>90 たぶん Emacs.app をビルドして
/Applications フォルダにドラッグして入れたほうがいいんじゃね
やり方はそのサイトにはあるはず
OSX のアプリとしては /Applications に入れたほうがいいとおも
95 :
名無しさん@お腹いっぱい。 :2013/07/12(金) 09:18:21.23
モードラインに日付と時間を出しているのですが、環境によって同じバージョン(24.2)で 表示が違うのはどうしてでしょうか。 2013-07-12 Fri 09:06 ← Cygwin 2013-07-12 Fri 09:06 0.36 ← Mac OS X 10.6 init.el にはこう書いています。 (setq display-time-format " %Y-%m-%d %a %R") (display-time)
Cygwin って loadavg 取れないんじゃなかったかな
M-: (load-average) すれば取得出来てるかどうか分かる。 ちなみに(122 123 120)だった。
emacs 24.3のquery replaceがおかしい気がします。 c++-modeなどでつかっていますが、たまに以下のような動作をします。 abc0 abc1 abc2 abc3 abc4 これの一部を abc > xyz とreplaceするとします abc0(no) abc1(no) abc2(yes) abc3(yes) abc4(yes) という風に選択する予定なので abc0,abc1をnoでスキップ abc2をyesでリプレース 以前のemacsでの挙動ならabc3をリプレースするか問い合わせてきますが いきなりスキップしたはずのabc0から再度問い合わせしてきます。 再度abc0,abc1をスキップしてabc3をリプレースすると 再びabc0を問い合わせてきます、これを繰り返す状態になります。 状況の再現性についてですが その他周りのテキストも関係しているのか ↑のテキストだけはりつけて query replaceしても再現しないと思います。 ただ、発生しているときは、なんどやっても必ず同じ挙動になります。
100 :
名無しさん@お腹いっぱい。 :2013/07/12(金) 19:50:59.48
>>96-97 Cygwin 側が変なんですね。なんか値が4つ入ってるし。
(0 0 0 0) ← Cygwin
(28 16 15) ← Mac OS X 10.6
気にしない事にします。ありがとうございました。
101 :
名無しさん@お腹いっぱい。 :2013/07/13(土) 16:56:37.80
Emacs を使っていれば一流のハッカーみたいな風潮、もうやめない?
はい
いいえ
104 :
名無しさん@お腹いっぱい。 :2013/07/13(土) 17:12:31.07
便利だから使ってるだけだが
Emacsも使えないハッカーとか(笑)
>>9 >としてみれば、どうかな!?
遅レスで申し訳ないです。ありがとうございました。うまく行きました。
個人的にこれでかなりストレスを軽減できます。
Emacsの起動時のロゴが、雄牛が牝牛を襲ってる図にみえてしょうがないんですが、どうにかしてもらえませんかね?
だよな
リアルな話をすると、底辺 IT 現場では Emacs とか Linux とか聞いただけでハッカー扱いしてくれるからな…… 一般的にはそんなもん。
>>99 自分も以前そういうのが欲しくて探したけど簡単な方法がなかった記憶がある。
TeXでの例。(てきとう)
https://gist.github.com/kenoss/5992132 使ってないし管理もしてないので改造するよりは自分で書いた方が早いと思う。
ツリーにしたければ(多分)imenu-create-index-functionでツリーを返す必要がある。
(imenu--index-alistのヘルプ参照。)
112 :
99 :2013/07/14(日) 14:21:08.63
font-lock-keywords(variable)のdocstringより ;; font-lock.elをprependで検索した。 OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification can be overwritten. If `keep', only parts not already fontified are highlighted. If `prepend' or `append', existing fontification is merged with the new, in which the new or existing fontification, respectively, takes precedence. If LAXMATCH is non-nil, that means don't signal an error if there is no match for SUBEXP in MATCHER.
115 :
名無しさん@お腹いっぱい。 :2013/07/15(月) 00:00:25.52
>>107 (setq inhibit-startup-message t)
しておけば。
116 :
113 :2013/07/15(月) 11:28:51.10
tramp でリモートのファイルを編集するときに auto-complete-mode を使っていると、 ./ とタイプするとリモートのファイルを探しに行って固ってしまう。 実際には何10分も待てば帰ってくるのですが、事実上固まるに等しい状態です。 不便で仕方がないのですが、何か良い方法ありますか?
org-modeで見出しは*, **, ***ですが、その行に自動的に着色される設定を変更したいです 変更したいのは*と**の場合で、font-lock をいじるのかと思ったのですが 該当するものを見つけられませんでした org-modeで見だしの色を変更している人はいませんか
org-level-1 とか org-level-2 の face 変えればいいんでわ?
>>117 auto-completeを窓から捨てる。
trampに罪はない。
121 :
名無しさん@お腹いっぱい。 :2013/07/17(水) 07:41:50.54
>>117 Gitにあるacを使う
リリースが追いついてないらしい
122 :
118 :2013/07/17(水) 12:54:49.66
ちなみにカーソル合わせて M-x describe-face で face がわかるよ。
windowがsplitされているかどうかを判定する関数はありますか?
get-buffer-window-list して要素数数えるとかなのかねえ。
emacs org-modeの ditaa で以下の縦線、横線をキーバインド一発で入力する方法ないですか? ----- | | |
ありますよ。
129 :
名無しさん@お腹いっぱい。 :2013/07/18(木) 22:28:46.01
>>124 one-window-pならsplitされていない事がわかるはず。
130 :
124 :2013/07/20(土) 09:12:37.10
133 :
名無しさん@お腹いっぱい。 :2013/07/23(火) 00:55:38.10
新しいEmacsに入った eww という擬似Webブラウザ、 emacs-w3mよりも圧倒的に速いな。いったいどういう原理で 動いているんだろう?
ソース読めばいいだろう。 最近の Emacs だと外部プロセスって意外と速くないんだよな。
んなことなかんべ
w3mがその証拠。chromeやffの方が速いだろ、と思う。
外部プロセスを呼ぶこと自体は遅くないんじゃないの。 外部プロセスから受け取ったデータの処理が遅いだけで。
その根拠は?
139 :
137 :2013/07/23(火) 16:18:02.38
根拠ってほどのものはないです。
emacs-w3m は昔から遅かったから プロセス一般の話に持ってっちゃいかん
gnusに戻りたいよう
init-loaderとESUP(Emacs Start Up Profiler)の併用について質問します init-loaderでサブディレクトリ内のelispを読み込んで評価しているのですが、esupではそれぞれのelispの処理時間を計測してくれません init-loaderによって読み込まれた一つずつのファイルについてもESUPで調査し結果を出力するにはどうすればよいですか
>>133 パースにlibxml2を使っている。
libxml2が速いんだろうね。
yatexが勝手にeucに変換してしまうので 文字化けする 何か設定すればutfのまま使えるの?
>>144 YaTeX-kanji-codeをチェック.
あとはLocal variables.
emacsでコマンド起動するときに、一緒に新規ファイル作成をする方法を教えてくれ viでいうところの↓と同じ事をemacsでやりたい $ vi hello.txt → hello.txtファイルが実在しなくてもエディタが起動する → その状態で保存すると、hello.txtファイルが作成されて編集内容が保存される $ emacs hello.txt → hello.txt does not exist. と表示されてemacsが起動しない
touch hello.txt; emacs hello.txt
つーか、emacs hello.txt で普通にできない?
>>147 touchするのが面倒なのよ
でも、コマンドを作って、そんな形にすればいいってことに気づいた
thx
>>148 うそーっと思ってlinux上で実行してみたら出来た
Emacs MacPortはあかんのか
そんなスレがあったのですね 失礼しました
Macだが/usr/bin/emacsでも /opt/local/bin/emacs (MacPort)でも問題ない。
>>149 えっとね。
$ sw_vers -productVersion
10.7.5
$ port installed emacs-app |tail -1
emacs-app @24.3_1+fullscreen+inline+jpfont+patches (active)
$ open -a Emacs.app hoge.txt ; echo $?
The file /Users/xxx/hoge.txt does not exist.
1
と、確かになるけど、
$ /Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs hoge.txt; echo $?
0
なの。だから、
$ alias |grep emacs=
alias emacs='/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs'
としておけば、普通に
$ emacs hoge.txt; echo $?
0
になる。
openコマンドのメッセージだな... $ open -a hogehogeboo /tmp/t.txt The file /tmp/t.txt does not exist.
>>152 Emacs Mac port っていうmac向けに改良したemacsのことです
2本指のジェスチャーとかに対応していて使いやすいです
port installed | grep emacs
emacs-mac-app @4.2_0+imagemagick+rsvg (active)
>>153-154 おお!
たしかにopen -a していました
直接Contents/MacOS/Emacsを叩けば良かったんですね
157 :
名無しさん@お腹いっぱい。 :2013/08/01(木) 07:39:53.27
>>156 別にイイじゃねえか、知らなかったこと知れるし
心の狭いヤツだな
158 :
名無しさん@お腹いっぱい。 :2013/08/01(木) 16:22:48.41
>>157 そういう若手イケメンなレスをすると
このスレでは住人生命終わるぞ。
ここは冴えないEmacsオヤジ達の聖域。
ここで長生きしたかったら
安居酒屋での生き方ってもんを身につけるこったあ。
どこかの設定がおかしいせいか、emacsが数十秒に一回、数秒間固まってしまうようになりました どのmajor-modeでも起こるようでして、minor-modeが原因かと思いましたが、恥ずかしながら原因をまだ突き止められていません 似たような症状に陥り問題を解消した方はいますか
>>159 とりあえず timer-list みてあやしげなの cancel-timer で止めてみれ。
>>142 ですがinit-loader-show-logで十分でした
しばらく小指が使えないのだけど ctrを押さないで操作するか ctrを違う場所に移動するのにお勧めのキー はありませんでしょうか
前にここで教えてもらって変換、無変換に割り当ててるけど 小指痛くならないしいいわこれ
浅田真央さんのお母さんは良いお母さんです。
なぜならEmacsを使っているからです。
>>165 変換と無変換の両方ともctrlにするの?
そこはお好みで。
>>170 その配列だとCTRLを親指じゃなくて小指で押すことになるんじゃないのかねえ?
おれの親指はZの下までは伸びないぞ
指摘されて初めて気がついた でも俺の小指ではZのした辺りまで届かないんだよな
欧米人は手がデカいんじゃね。
小指使えないとshiftも移動させないといけなくなるな
>>173 欧米人は手がデカいと言っても、
指が長いだけじゃなくて手のひらの幅も広いんだから、
親指をあそこまでも持ってくのは逆にキツイだろw
肝はAの左なのでHHK信者は心して見るように。
>>172 小指の下の方、手の付け根あたりで押すという技もあるけどね。同時押しが増えてくると辛いか。
>>170 のキーボードで、
CtrlとMetaの同時押しを多用するemacsのLispモードが使い物になるとは思えないんだよねえ
>>179 Super とか Hyper を使うのではないの?
>>163 SandC とか SandS という方法も無くは無い。
ctrlを小指の付け根、metaは反対側の小指
Unix端末にはSuperがなかったから代用でC-M-とかにしたんだろうねえ
自分はTabの位置にAltを置いてる。Hyper(左手親指)はemacsで使って、SuperはXmonadで使う。
似非SandS(右手親指)も使ってる。小指が壊れたときどうするんだろう。
>>181 右手側のキーが死んだりしない?
やっぱり足踏みだろ 飛行機のシミュレータ好きそうなやつ多そうだし
>>185 s & sってことか。 砂場遊びでも始まるのかとおもった。
>>185 スペースキーを長押しして離した時にスペースが挿入されなければ、かなりいいな。
SKK使いはShiftで小指を酷使するからEmacsで実装して欲しいもんだ。
Emacsなら実装出来るはずだろうけど、やり方が良くわからん。。残念
長押し検知する方法が timer で監視ぐらいしか思いつかん。他に方法あんのかな? timer 使う実装方法を選んじゃうと popwin みたいに次第に腐っていく気がする。
Emacs内でやらなきゃいかんの?
>>188 key-chordとspace-chord使う。
>>191 space-chord.elは某氏作か。とりあえず、紹介ページのとおりに設定したが、うまくいかん。
fedrao17で24.3を使ってるが、winの人とかはうまくいくのか?
お、trunkにdos.elがコミットされた。 これ必須だったから標準で入ってると助かる。 しかし、コミットされたとたんみんなから修正されまくった挙句 bat-mode.elにリネームされちゃったw 標準に取り込まれたら、もう自分のもので無くなってしまうという罠。
文字コード関連の質問です utf8で出力したいファイルをwith-temp-fileで開き sjisのファイルをinsert-file-contents-literallyから読み込んで 編集したいのですがutf8で出力する仕方がわかりません どう設定すればよいですか
buffer-file-coding-systemを設定すれば?
elispでは(declare (indent 1))とすることでマクロのインデントを 調整することができますが(以下のように)、slimeとCommon Lispにおいて 同等の動きをさせるにはどうすればよいのでしょうか? ;; 最低一回は評価するwhile (defmacro do-while (cond &rest body) (declare (indent 1)) `(progn ,@body (while ,cond ,@body)))
その以下のように書けばいいんじゃねーのか?w
clとemacs切り離されているので言語内でインデントには言及できないと思います。
;; (cl-indent 名前 手本) (cl-indent 'iterate 'let) (cl-indent 'collect 'progn) (cl-indent 'mapping 'let) (cl-indent 'mapping 'let) .emacsにこのように記述することでうまくいきました
emacs lispの質問です 特定の関数内で呼び出す関数の返り値を外部から変えることはできますか? (defun foo (x) (print x)) (defun bar1 () (foo "a")) (defun bar2 () (foo "b")) defadviceでfoo関数そのものを自由にいじれるのは分かったのですが このうちbar1で呼び出すfoo関数の返り値だけを変えるようにして bar2で呼び出すfoo関数はそのままにしておきたいです
>>202 もっとエレガントにできないものか。
(defadvice foo (after hoge disable)
(setf ad-return-value "c"))
(defadvice bar1 (around fuga activate)
(ad-enable-advice #'foo 'after 'hoge)
(ad-activate #'foo)
ad-do-it
(ad-disable-advice #'foo 'after 'hoge)
(ad-activate #'foo))
>>202 (backtrace) みるとかどうよ。
defadvice自体がエレガントかどうかっていう議論もあるような気がする ちゃんと他人のプログラムのことを考えたうえでのものならいいんだけどね
>特定の関数内で呼び出す関数の返り値を外部から変える 設計が腐ってる臭いがする
emacsのカレンダーをA4のミスコピー用紙の裏紙に印刷して 半分におって綴じるとシステム手帳に代わりになる みたいなブログを以前に見た記憶あるのですが 半分におって綴じる の部分は普通にクリップで挟むだけなのでしょうか? 何かシステム手帳みたいな物はないのでしょうか
>>206 馬鹿か?adviceの話なんだから設計具合など関係ない。
>>209 そんなキミにひとつ名言を捧げよう
トンカチを握ったヤツには
全ての問題が釘に見える
211 :
202 :2013/08/21(水) 13:31:08.95
defadviceじゃなくてfletとかlabelsを使えば? 他人のelispの中での関数呼び出しの挙動を少しだけ変えるときはそうしてることが多い。
そのコメントを見て気になっていたのですが、obsolete macro と指摘されていたlabelsとfletについてお尋ねします `labels' is an obsolete macro (as of 24.3); use `cl-labels' instead. `flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'. このようなエラーメッセージが出るようになったので labelsをcl-labelsにdefmacroしたいのですが defaliasのようなもので設定すればよいのでしょうか
>>213 まずは自分で試してみるべし
ただ、obsolete認定されたんなら cl-flet を使う方向で考えたほうが前向きなような気がする
下位互換を考えるならば、 cl-flet がない環境では cl-flet を defalias してあげればいいと思う
他人のコードならそのうち対応するだろうから、気にしない
fletはダイナミックスコープだったけどcl-fletはレキシカルなんだよなー flet相当のことはcl-letfで一応できるけどちょっと冗長になる (cl-letf (((symbol-function 'foo) (lambda () ...))) ...)
>>214-215 なるほど、他人のコードで更新が停滞しているものだったので
どこまで手を入れるか考えあぐねていました
symbol-functionを使う手は考えていなかったので参考になります
へー、レキシカルになったのか。 個人的には少しの手間でダイナミックスコープ特有のバグが減らせるなら喜ばしい。
最近本家更新ないけどどうなってるん? 次は24.4?25?
次が何番でもいいんですけど、 (setq scroll-conservatively 99999) とかでやってる 1行スクロールが時々飛ぶ現象が、いい加減直ってくれたらいいなと思いますです。 2009年ごろには認知されてるのに…。
Changelogには確か直ったと書いてあった
>>220 まじですか。24.2.1では相変わらずときどき飛びますです。
(setq scroll-conservatively most-positive-fixnum) で若干マシにはなりますけど
Emacs上でXサーバ、VNC、RDPクライアントっぽい事が出来るスクリプトとか無いでしょうか?
Emacs内にX等の窓をだすっていうんだったら多分ない。 Webkitを取り込んだバージョンのなんかだとその内出来るかもしれんけど。
NEWSを調べたところ24.3からだね。↓こんな感じ *** If you customize `scroll-conservatively' to a value greater than 100, Emacs will never recenter point in the window when it scrolls due to cursor motion commands or commands that move point (e.f., `M-g M-g'). Previously, you needed to use `most-positive-fixnum' as the value of `scroll-conservatively' to achieve the same effect.
>>224 ごめん24.1からだった。。
ということは直ってないし、永久に直らないね多分。
>>225 わざわざ調べてくれてありがd
飛ぶときに recenter が働いていたというのがちょっと疑問な気がします。
ひょっとすると似て非なる現象なのかもしれないです。
あまり頻繁ではないので、引き続き我慢しますです。
先端だと (setq scroll-conservatively most-positive-fixnum) すると飛ばないような気がするなあ。
most-positive-fixnum を使えば飛ぶ頻度は格段に(ときどき→まれに)減るのですが、油断していると飛びますw emacs -q 環境では飛んだことがないので、かなり環境に依存するのではないかと。 フォントが小さい場合や、toggle-truncate-lines で折り返しなしにしたときに起きやすいような気が…
環境依存ってか最近はメジャーモード自体がいろいろ凝ったことをやるし たいていはマイナーモードもてんこ盛りだから もう fundamental-mode でもない限りそもそもレベルで重いわな そんなことより vi/emacs 使うなら 5行5文字以上の移動にキー押しっぱなししてるうちはニワカ という教えも思い出してやってください
230 :
222 :2013/09/01(日) 11:05:29.52
>223 そうですか。 XserverさえアレばEmacsだけ入った*Nixとか Emacs詰め合わせを持ち込んですぐに自分の環境を整備、、、 とか期待したんですが、、、 どうもありがとうございました。 aalibだけを使ったXserverが有るらしので、Emacsと合わせて どうやれば最小構成でポータブルに持っていけるのか、、、 難しいかな
>>229 みんなどうやって移動してるんだ?
forward-wordとかisearch-forward使って移動してるんだけどこれでいいんか?
>>229 そうは言っても、スクロールくらいは普通のエディタっぽい動きをしてほしい
>>231 君のディスプレイをのぞきこんだ人に
「カーソルと画面が飛びまくって何してんのかぜんぜんわからない。
てかそれってエディタなの?」
と言われたら一人前ですな
編集するときや読みたい場所わかってるときはぴょんぴょん飛ぶのもいいけど 全文読む時なんかは普通にスクロールしてほしいよね
マウスのスクロール使えばなんとか
>>229 emacs/vim 両方使うが、vim の時は fa とか ta とかで移動することは多いけど、
emacs だと普通に C-f C-b とかで移動してる。
これっておかしいの?
んなもん好きにせいよw おかしいと言われたら直すのか?
俺もみんながどうやって移動してるか知りたい 今のところhelm-c-moccurとfoward-wordと連打が多い あとはsmartparens.elの移動も使い始めた 今気になってるのはpophintとvim のfっぽい挙動 これは便利っていうのあったら教えてください
移動だけじゃないけどlispを編集するならpareditが超便利
emacsといえばsexp系移動
sexp はいつ見ても sex-predicate に見えてしまう
>>237 直すかどうかわからんが、もっと効率がいい方法がわかりゃ検討するさ
カーソルキーにスクロールを割り当ててるけど結構便利
この話題になると明確な答えが出ることはない それは本当に上手い話は独り占めが基本だからだ!
245 :
名無しさん@お腹いっぱい。 :2013/09/01(日) 16:53:20.25
● 流出でこのスレすっかり寂れててわろた…… わろた……orz
えっ!むしろ今までより盛り上がってるような
夏の全鯖規制祭りが解けて久々に書けてるヤツの方が多いだろ
ace-jump-mode使ってる?
>>233 昔、コードレビューでそんな感じになって、途中で通訳してくれる人が来てくれて助かった。
Emacsって社内の標準エディタだったんだけど…。
コードレビューの時は操作が飛びすぎるとレビュアーの理解が追いつかないから、GUIの統合開発環境でわかりやすく飛んでる
>>248 10年位上Emacs使ってるけど、初めて知りました。
これよさそう。
今酔ってるから、あした試してみるね。あんがと!
デフォの半画面スクロールに慣れるとそれで良くなるよ。 しばらく我慢して使ってみ。
>>252 View-scroll-half-page-*のこと?
これって割当てられてるキーバインドあるのかな
254 :
253 :2013/09/02(月) 00:02:42.24
何言ってるんだ俺 そんなコマンドないぞ
C-v・M-vだろう。
あ、書き込めた。移動系はC-sが多いな。 isearchからM-s oでoccurに派生したり、M-s h rでマーカーに派生したり。 あとは、C-x r SPCでレジスタ利用かな。 重くなったらナローイングするけど、一つのバッファに対して複数指定できれば便利かもね
ThinkPadのトラックポイント(小声)
もうメンテされてなさそうだけどanything-c-moccurが多い
いまさらながら auto-complete 入れてみた。 スクラッチバッファに (point) と書こうとしたら、候補に pong と出てきた。 M-x pong してみた。 しばし仕事中に遊んでしまった。
ナローイングとか使ったことないわ
ナローイングめっちゃ使うなあ 弄るときも読む時も使う
レジスタ置いてもそのまま忘れて自力で戻ってることがよくあるw タグジャンプしてんのに自力で戻ってることもよくあるww
set-family-attributeのfamilyで任意のフォントを指定できますが そのフォントを指定したディレクトリ内から探してくるよう設定することはできませんか フォントのパスを格納している変数が何かあるかと思ったのですが、探せませんでした
>>258 helm-c-moccurに移行しないの?
>>261 どんなとき便利なんだろう。
レジスタってなんか覚えられん。
>>264 あるんだ。じゃあいい加減helmに移行しようかな
ナローイングは関数とかクラスとかの中のシンボルを一括で変項したいとき使う。読むときに使うってのは他に意識を散らさないためにするのかな。 レジスタはキーボードマクロと一緒に使うくらいだな。
ナローイングはローカル変数の検索に使うことが多いな 悲しいかなむやみにでかい関数なんかにもよく出会う ポイントの移動には視線ポインティングデバイスが普及してくれるとうれしいと思う でかい画面でC-sでの移動も、途中で引っかかったりすると、ポイントがどこにあるのか探す羽目になったりするし できれば複数人の視線分のポインタが色違いで出てくれたりするとうれしいな
ビデオ会議中におっぱいに視線ポインタが集中して気まずくなるのか
このスレ加齢臭がする
キーボードに専用キーつけて、押している間だけ反応するとかにしないと、なんにしても使い物にならないとは思う 医療用のだと瞬きで反応したりするけれど、エディタ使うような奴には無理があるしな ビデオ会議中、視線ポイント有効キーを押している間は、チラ見もしないという集中力が求められるのは当然のこと^^
寄り目にすると有効になるとかできたらいいな
フットスイッチとか普通に売ってるし、SFネタで良ければマスタースレーブ方式の パワードスーツで武器選択する際には舌でスイッチしてたっけ。
小指だけでも辛いものがあるのに、舌使うなんてこと想像もしたくないぞ 現行のキーボードでもカーソル移動系のキーが余るだろう(そのくらいの精度がないと使えんし)から、 フットスイッチまではいらないと思う コンピュータの操作でポインタ移動系はかなりのウェートを占めていると思うしな ディスプレイとの距離の問題があるから少なくともカメラ2つは必要そうだけれど、 なんせかんせ3Dばやりなんだから各ディスプレー毎に3Dカメラ搭載がデフォになるのはそう遠くないと思う ずいぶん前から視線をトレースする(光学系かな?)ことってできてたと思うし、 デジタル処理加えれば何とかなりそうな気がするんだけれど、いまだに出てこないというのはなんかあるのかな?
evil-surround で質問です。ご指南下さい。 複数行を tag で囲むには どのようにすればよいのでしょうか? やりたいこと aaa bbb ccc ↓ "aaa" "bbb" "ccc" やったこと visual mode で選択し、s" と入力してみたのですがだめでした。 ↓こんな感じになったりします。 "aaa bbb ccc" # とりあえず regex で置換してます。 # cscope って便利ですね。
isearchでの移動だとカーソルと移動先の文字の位置関係を気にしないといけないからace-jumpでの移動に切り替えようと思ってたんだけど、 ace-jumpをC-c SPCに割り当ててるとどうにも使いにくいのでいい方法はないか調べてたらこんなのがあった。 ``` どんなもんかと簡単に説明すると、H-a 〜 H-z, H-0 〜 H-9をすべてace-jump-modeに割り当て、例えばH-c通したら即座に画面上の文字cにジャンプしようとするようにします。 画面上に文字cが1つしか現れていなければH-cで即座にジャンプしますし、複数現れていればH-c bみたいな感じで2ストロークで飛べます。 候補が多すぎる場合はそれに応じてストローク数は増えますが、大体2-3回です。 Hって何って人は後述の修飾キーの説明をどうぞ。 ``` ちょっと強引がけどすごく使いやすい。
>>276 それはvimユーザーの方が詳しそう
>>277 vimのfをバッファ全体に拡張してhintを加えた感じか
pophintから乗り換えようかな
ace-jump-modeを使ってみたけれど面白いねこれ 別ウィンドウを表示しているときにlineの移動コマンドを呼び出すと、ウィンドウをまたいで特定の行に移動することが簡単にできるないでこういうことができるなんて面白い
>>276 C-x ( ←キーマクロの開始
C-a ←行頭へカーソルの移動
" ←「"」の入力
C-e ←行末へカーソルの移動
" ←「"」の入力
C-n ←次の行へカーソルの移動
) ←キーマクロの終了
そんで、例えば4行分キーマクロを実行させたければ
実行したい位置へカーソルを移動させて
4 C-x e
と、実行する。ちなみにわかるとは思うが7行分実行させたい場合は
7 C-x e
な。
281 :
280 :2013/09/04(水) 18:39:18.02
>>276 スマン。キーマクロの終了が間違っていた。
ただしくは、
C-x ) ←キーマクロの終了
だった。
移動の話になるといっつも思うのは何行下とか何桁右とか瞬間的にわかるの?
283 :
280 :2013/09/04(水) 18:59:41.45
column-nuber-mode とか line-number-mode のこと?
>>280 俺も最近まで知らなかたけど
C-x e の後にeを押した回数だけキーマクロが実行される
つまり4回キーマクロを実行したい場合はC-x e e e eと入力すれば良い
他にはコマンドを複数回実行したい場合は
C-u 4 C-x e (これで4回キーマクロが実行される)
の他に
C-4 C-x e
なんて方法もある
>>284 > 俺も最近まで知らなかたけど
(Type e to repeat macro)
って表示されてるのに。
286 :
名無しさん@お腹いっぱい。 :2013/09/04(水) 19:13:05.23
(Type e to repeat macro) ほんとだ、俺も今まで全く見てなかった・・
287 :
280 :2013/09/04(水) 19:14:19.05
288 :
280 :2013/09/04(水) 19:23:36.94
>>276 重ね重ねのミス本当にスマン。
キーマクロを繰り返し実行するときは
>>284 さんのように C-「繰り返し回数の数値」が正解。
マクロはマクロのキーバインドを忘れてしまって結局使わないってパターンがおおいわ・・ dmacro も一時期使ってたけど今の emacs で動くのかな
290 :
276 :2013/09/04(水) 22:42:58.27
>>278 Vim 板で訊いてみます。
>>280 情報ありがとうございます。
でも evil-surround でやってみたいのです。
kbd-macro だと regex とあまり変わらないので・・・。
ace-jump-mode 面白いですね。使わせていただきます。
あと Hyper, Super なる修飾キーがあるとは全然知りませんでした。
ありがとう。
Super を <convert> もしくは <non-convert> に割り当てたいんですが
どなたかご存知ありませんでしょうか?
行頭、行末でいいんならそんなにregexp使わなくてもできるだろ 先頭行と最終行は手でやるって前提。いきなりやる程自信はないんでいつもquery付だけど M-% C-q C-j [Enter] " C-q C-j " [Enter] y g M-% C-q C-j [Enter] " C-q C-j ", [Enter] y g っつーのはまれによく使う
そんならこれでいいんじゃない M-x replace-regexp [Return] .* [Return] "\&" 空行をスキップしたいなら M-x replace-regexp [Return] .+ [Return] "\&"
散々既出だと思うのですが、カーソル移動系のコマンドを作ろうとすると、 (let ((bol (save-excursion (beginning-of-line) (point))) : などをものすごい頻度で使います。 もうそろそろ、C関数で行頭/行末のposを返す関数を載せてホスィ
>>293 1996-11-25 Karl Heuer <
[email protected] >
* editfns.c (Fline_beginning_position, Fline_end_position): New fns.
>>294 M-x describe-function line-end-position して、自分の盲目さに気づきました。
1996年というと自分はまだ elisp 触っておりませんです。お恥ずかしい限り。
>>248 ドン亀だけど、ace-jump-mode 使ってみました
すごくいい!ありがとうござます!
移動系は行を跨いだ移動と行内の移動で違うな あと画面内の移動とファイル全体の移動も違う
>>294 gnu.ai.mit.edu
神々の住まうドメイン
.emacs.d直下のelisp全部消しちまった・・・ サルベージは諦めたのでお勧めのemacsの設定を公開してるgithubリポジトリとか教えてください。
バニラから使い始める ↓ 気づいたところで足りないものを足していく ↓ けっこうすぐ元に戻る ↓ 必要なものだけきれいに揃っており、結果的に大掃除完了 ↓ しあわせ
あるある xemacs とか mule でも動くように設定してある部分とかいらんしね 使いもしない言語のパッケージとかノリでいれたのとかもばっさり消えてすごくすっきり
gitに対するvc-annotateが遅すぎて死にそうなんですが、 中の人はなにをやってて遅いんでしょうかね? やりたいことは git blameしたのと同じ表示を得ることと、 指定コミットや前後のコミットへの移動(表示)だけなのに。
YOU ソース追ッチャイナヨ!
バニラってなんすか?emacsen?
「素の」ってことだ。
>>305 >>306 Ergo Emacs みたいな派生品があるのかと思いました。
おお、勉強になりますた。
>>304 >バニラってなんすか?emacsen?
研究社 リーダースプラス英和辞典
a. ありきたりの, 平凡な, 普通の.
>>308 リーダーズ英和辞典第2版
3 《電算俗》 普通[ありきたり]の機種, 汎用[標準]機種;
俗語かい!
Jargon=計算機俗語 ってことじゃないの?
>>309 全部引用しろよ
vanilla
n. _《電算俗》 普通[ありきたり]の機種, 汎用[標準]機種; _
《俗》 《性嗜好が》 フツーの人, まともな人;
《黒人俗》 白人, 白人女.
a. _《口》 どうってことない, つまらない;
《口》 飾りのない, シンプルな (plain-vanilla_);
《電算俗》 普通の, 標準的な, ありふれた;
《俗》 《性的嗜好が》 正常な, まっとうな,
《ホモ俗》 ストレートの.
一次スレが伸びなかったけど規制食らってた? そもそも過疎ではあるけど
このスレ、伸びてた時期なんかあったか?
ここ数年少なくとも大手ISPの都内近郊は全鯖規制で何ヵ月も締め出されるのがデフォ 正月、GW、お盆などの大型連休はまず全鯖規制が鉄板 いろんな板にいきつけのスレがあるとぱったりと書き込みが減るのが分かる
教えてほしんだけど規制って何のためにあるの? 鯖への負荷の低減?NGユーザーの締め出し?○を買わせるため?
よそでやれ。
vanilla adj. [from the default flavor of ice cream in the U.S.] Ordinary {flavor}, standard. When used of food, very often does not mean that the food is flavored with vanilla extract! For example, vanilla wonton soup means ordinary wonton soup, as opposed to hot-and-sour wonton soup. Applied to hardware and software, as in "Vanilla Version 7 Unix can't run on a vanilla 11/34." Also used to orthogonalize chip nomenclature; for instance, a 74V00 means what TI calls a 7400, as distinct from a 74LS00, etc. This word differs from {canonical} in that the latter means `default', whereas vanilla simply means `ordinary'. For example, when hackers go on a {great-wall}, hot-and-sour soup is the {canonical} soup to get (because that is what most of them usually order) even though it isn't the vanilla (wonton) soup.
バニラ味のワンタンスープ・・・
wonton=ワンタンだったのか? 漠然と、なんか西洋のスープだと思ってた。 このスレ勉強になるわ
xemacsの-vanillaオプションのことも忘れないであげてください -vanilla Equivalent to -q -no-site-file -no-early-packages.
まだxemacsって生きているのか
markdownをhtml5に変換するelispはありますか?
現在定義されているキーボードマクロをラムダ式の形式で取得することは できますか? たとえば、 C-x ( C-a " C-e " C-n C-x ) と定義されているときに、 (lambda () (move-beginning-of-line nil) (insert "\"") (move-end-of-line nil) (insert "\"") (next-line)) を取得するようなことは可能でしょうか?
>>327 キーボードマクロは、キーの記録をとるだけだからねえ。
それでも良ければ、
M-x name-last-kbd-macro で適当な名前をつけて
M-x insert-kbd-macro でカーソル下に挿入
329 :
328 :2013/09/15(日) 03:25:54.53
ちなみにaという名前をつけたら こんな感じで挿入されるんだけど、 (fset 'a "\C-n") これをinit.leとかに書いておけば、M-x aで呼び出せるし、 キーに割り当てることもできる。 関数書けなかった時は、こんな感じでお茶を濁していた。
>>327 edit-kbd-macro はそれぞれのキーがどのコマンドになるかを調べて
コメントで表示するってことをやってるから、
それを参考に自分で書いてみてはどうか。
331 :
327 :2013/09/15(日) 05:33:28.07
>>328 なるほど、symbol-functionで文字列として値をとれるんですね。
(symbol-function 'a)
; "^A\"^E\"^N"
>>329 以下のようになりました。
;; Keyboard Macro Editor. Press C-c C-c to finish; press C-x k RET to cancel.
;; Original keys: C-a " C-e " C-n
Command: last-kbd-macro
Key: none
Macro:
C-a ;; move-beginning-of-line
"
C-e ;; move-end-of-line
"
C-n ;; next-line
edit-kbd-macroを読んでみます。
interactiveに呼び出した場合と、関数内から呼び出した場合とで挙動が変わる 関数もあったりするから、関数の呼び出しにするのはいろいろ面倒なんじゃないかな
>>332 やってはないけど、すべての呼び出しを call-interactively でやればいくね?
Mac OSのEmacs24を導入しはじめてます。 ELPAで入れたパッケージ(たとえばpopwinなど)が、locate-libraryすると見つからないのに、requireすると参照できるからくりはいったいどうなっているのでしょうか??
Meadow 使ってる人が Emacs に投票して、「あ、ミスった」となる罠。 ところで投票結果見れんのですが
>>335 質問に答えても最新の統計結果が見れないけどなんでだろう
俺も見れなかったな
341 :
名無しさん@お腹いっぱい。 :2013/09/15(日) 16:39:40.97
ほんとだ見れない XPの質問の結果は見れるのに
342 :
名無しさん@お腹いっぱい。 :2013/09/15(日) 16:59:34.25
vimはLinuxでは必須のエディタとして扱われてるのに Emacsはいつまで経ってもオプション扱い。 高機能エディタは競争が激化していくが vimはシステム保守用のエディタとして安泰だからなあ。 正直Emacsはジリ貧だと思う。 もうVimacsとか作って本格的にvimを駆逐するしかない。
そんなわけわからんアンケートサイトに釣られる必要もないと思う
vimmerの平均年齢は低いと思う もしそうならvimmerの声がでかいのも納得いくし アンケートでも少数が張り切ってるだけだから問題ないだろ
>>342 最近はnanoとかpicoしか入ってなかったりするだろ。vim終わりってことか。
>>342 >vimはLinuxでは必須のエディタとして扱われてる
おじいちゃん乙
emacsは永久に不滅です
そもそもなんで自分がEmacsを使い始めたのか思い出せない。
350 :
名無しさん@お腹いっぱい。 :2013/09/16(月) 08:42:44.13
最近の若い子はみんなvimだって職場のemacs使いのおじいちゃんが言ってた。 キミは若いのにemacsなんてジジ臭いにもほどがあるよとも言われた。
emacsの哲学ってemacsで全て完結でいいのか?
っていうか amazon で emacs で検索すると
>>351 が出てくるのはなんでや
とりあえずは kitchen sink かな。 台所の流しのようにとりあえずなんでも突っ込んでしまうというポリシー。 まだソースのどこかにこの(ダサいw)アイコンが残ってるはず。 これは単機能の小さいコマンドを組合せるという、 いわゆる UNIX 哲学に対するかたちで引き合いに出されることが多かった。 だから元々「emacs は UNIX 的ではない」というのが自他ともに認めるところだったりした。 でも反面で移植性・可搬性のためにビルドや実行の枷になり得る依存を (なるべく)入れないというポリシーもあり、 このため kitchen sink を標榜すからには有ってよさそうなものを拒んでいたりする。 たとえば C で書かれたライブラリを elisp からダイナミックローディングする機能だとか、 X (てかビットマップな GUI) への対応で悶着したのも記憶に新しいところ。 異論は認める。補足も認める。
リージョン内部の全角英数を半角英数に変換して 全角カナは半角カナに変換しないようにするにはどうすればいいですか japanese-hankaku-region関数を使うとどちらも半角になってしいました
skk-latin-region
>>357 (japanese-hankaku-region (point-min) (point-max) :ascii-only)
あるいは、
(defadvice japanese-hankaku-region
(around japanese-hankaku-region (from to &optional ascii-only)
activate)
(let ((ascii-only t))
ad-do-it))
でどうですか。
>>356 > たとえば C で書かれたライブラリを elisp からダイナミックローディングする機能だとか、
> X (てかビットマップな GUI) への対応で悶着したのも記憶に新しいところ。
>
> 異論は認める。補足も認める。
てかダイナミックローディングほしいんだけど、その話どうなったの?
プロセス間通信ばっかりはもういやだお。
レスポンスわるい。
Elisp で C を書けるという発想が欲しい。
ダイナミックローディングも C で書くことも そこそこ emacs を使い込んだら誰もが望むネタの筆頭わけだけど、 C みたいなアーキテクチャやコンパイラに個別対応 (#ifdef の嵐) するハメになる 悪夢のような低級言語で書かずに済むよう lisp という高級言語を選んだ、 というのが出発点で、 「その発想が欲しい」どころか「そういうことをせずに済む」というのが そもそものところなんですよ。 しかし近頃流行りの ffi がもちっとユニバーサルなものとして完成されてくれば 話もちがってくるんじゃねーのかな、というのがいちユーザとしての私見。
普通の emacs と NTEmacs 使ってる身とすると外部プロセスに頼るものはすごく使いづらい
>>365 rsense とか emacs-w3m とか starttls あたりかね
rsense は cygwin でもややこしいことになって無理だった
>>357 C-u M-x japanese-hankaku-region じゃダメなん?
>>365 横だが Windows で使おうとするとハマること多いね。
Windows 使うこと自体が間違ってるんだけども。
>>368 んどーせ釣られたニワカが必死こいてクリック連打してんだろアーヤダヤダ
ミニバッファ上にカーソルがある状態でM-pを押すと過去の履歴を遡ることができますが、 C-pでも同様のことをするにはどのキーマップを編集すればよいのでしょうか
minibuffer-local-mapかな?
>>371 where-is(C-h k)M-pで調べられるんじゃない。
>>364 > 普通の emacs と NTEmacs 使ってる身とすると外部プロセスに頼るものはすごく使いづらい
同じく。
>>364 >何で? どんなところ?
やりたいことにもよるかもしれんが
emacs側のバッファメモリ直接みせたかったりするんだが、
わざわざ全部転送しないといかんとか、いろいろメンドイ。
やり取りが頻繁になると当然重くなるし。
昔まだmuleが独立してリリースされてたころ、dynamic loadingにも対応した バージョンがあったな。multilingual機能は統合されたけど、そっちは 取り込まれなかった。 多分思想的な問題なんだと思う。任意のdll突っ込めるならプロプライエタリ なものも突っ込めるしなあ。
>>333 それがそうもいかないんだよ
aと打ったときに呼ばれるのはふつーはself-insert-command
これを手書きでいいから call-interacrive で実現してみるといい
M-yなんかも厄介だと思う
キーボードマクロで欠かせないであろうisearchとか
>>373 なにげに漏れも困ってたから、助かったよ。古いEmacsはC-p で遡れたもんな。
(define-key minibuffer-local-map "\C-n" 'next-history-element)
(define-key minibuffer-local-map "\C-p" 'previous-history-element)
ところで >> 374 さんの言う、where-is を試したけど、キーマップ名は分らずでした。
やり方がまずいのかな。
>>379 残念。勘違いでしたか。
キーを押して、それがdefine-key されている キーマップ名を返す関数があればいいと思うのですが、どう書けばいいかわからんです。
かつての電総研のハッカー(戸村さんあたりだったと思うが)、.soをダイナミックに ロード、アンロード出来るようにしましたとMLに投げたら、RMSがそれは独占的プロ グラム配布への道筋をつける事になりGNUの精神に反するから却下。 ということでダイナミックローダは禁じ手になっている。
382 :
357 :2013/09/17(火) 14:55:48.84
皆さん有難うございます。
当面は
>>367 のC-u M-xを使うようにして
頻繁に使うようになったら
>>359 のdefadviceを使うようにしてみます
>>381 RMSがそれは独占的プロ
>グラム配布への道筋をつける事になりGNUの精神に反するから却下。
>ということでダイナミックローダは禁じ手になっている。
これっていつぐらいの話?
まだRMSかかわってたり権限あるのかな?
>>383 >これっていつぐらいの話?
20世紀だった事は確実
>まだRMSかかわってたり権限あるのかな?
未だにmlにWindows版の提案とか来ると、そんなの捨ててGNU/Lunuxにしなよとか言って来る
NativeChecker.com 使えなくなってたので代用品を探してます pubmedia www6.ocn.ne.jp/~vmel/ というpubmedaから英文を沢山ダウンロードして grepで英作文の参考になる英文を探すツールが昔あったのですがWindwos7では動きません emacsでも似たことするツールないでしょうか 指定したディレクトリ内のpdfやテキストファイルにgrepするツール(color-moccurはlinuxでpdf検索できません) moccur + pubmed なツールあると最高なのですが
英作文の前に作文からだな ハイ次の方どうぞ〜
387 :
名無しさん@お腹いっぱい。 :2013/09/18(水) 10:19:22.48
389 :
名無しさん@お腹いっぱい。 :2013/09/18(水) 15:51:23.50
groups.google.com/forum/#!forum/fj.editor.emacs
>>388 385じゃないけど、AntConc 初めて知りますた。すげーです。
Weblio の例文見ないで済みそうです。
最近このスレ勉強になりまくり。
スレチでごめんなさい。
べつに言語問わずemacsでの開発以外念頭に置いてませんがなにか?
いえ、特に何も。
マイナー言語制作者「どうせ誰もIDE作ってくれないし俺がEmacs使ってるからお前らもEmacsで書けや」 ってパターン多くね?
んじゃIDE作ればよくね?
なにが「んじゃ」なんだかよくわからん
>>594 例えば?って聞こうと思ったけどやっぱいいわ
地震の時に便利な elisp はありますか?
code.google.com/p/bcui-emacs/source/browse/#svn/trunk/grammar emacsで英文法チェックしてくれるそうだけど インストールしても動かない どこかパス通ってるとこにgrammar.ccをコンパイルした実行ファイルおけばいいんだろうけど、なぜかgrammar.elは実行ファイルを発見してくれない
exec-path を通してないとか? 初歩的過ぎ?
ESC キーはAltと同じくMetaキーが割り付けられているようですが、 このESCキーを別のモディファイヤキー(たとえばHyperとかSuper)にすることはできるのでしょうか?
マジレスすると ESC に慣れた方がいい ちなみに C-[ と ESC は同じ
>>402 おっしゃるとおりなのですが、長年 global-set-key していると、モディファイヤキーが足らなくなってきまして、HyperやSuperが欲しくなってきました。
ctrl-x-map や ctrl+c-map も押しやすいキーは消費しているので、MetaがAltとダブっているESCキーをなんとか活用できないかと思った次第です。
404 :
名無しさん@お腹いっぱい。 :2013/09/20(金) 18:37:11.19
みんな一杯キーバインド使ってるのな 俺はCtrlとMetaだけで十分だわ
>>401 local-function-key-map 中の (escape . [27]) を
(escape . event-apply-hyper-modifier) とか
(escape . event-apply-super-modifier) に変更すればよい。
便利な設定があったら教えてくれ。
Windows だと application key が空いていそうだが。
>>408 SpaceSaver! 昔それむっちゃ欲しかった。
>>406 せっかくヒントを頂いたのに、どうやって変更すればいいか分かりませんです。
ためしにこんなのを書いてみたのですが、(wrong-type-argument listp keymap)と怒られますた。
(let ((l local-function-key-map)
(in '(escape . 55))
(new '())
(pushed nil))
(dolist (e l)
(if (eq (car e) (car in))
(progn (push in new) (setq pushed t))
(push e new)))
(unless pushed (push in new))
new)
(define-key local-function-key-map [escape] 'event-apply-hyper-modifier)
hoge.zip というファイルだけがあるディレクトリで shell-mode で ls .z まで打ってTABキーを押すと、補完されて hige.zip になりますが、これを ls h とか ls ho の時だけ補完させたいのですが可能でしょうか?
髭!と聞いて。
higepon
>>413 completion-stylesからpartial-completionをdeleteするのはどうでしょうか。
(require 'cl-lib)
; cl-lib
(cl-delete 'partial-completion completion-styles)
; (basic emacs22)
あるいは
(setq completion-styles '(basic emacs22))
417 :
名無しさん@お腹いっぱい。 :2013/09/22(日) 17:18:38.56
日本ではEmacsが最強のエディタとされてるが 海外では意外にWindowsのメモ帳がリバイバルブームきてるんだよなあ。 日本人がいつも後手にまわるのが悔しい。
日本でもEmacsはかなり落ち目だと思うが
>>416 希望通りの補完になりました。
ありがとうございました。
メモ帳はBOMが付くから使えない そういや、EmacsでUNICODEのCOMBINING系文字を使うと編集が うまく行かないんだが、コツある? 1文字に2個COMBINING付けたらわけわからなくなった。
>>420 >そういや、EmacsでUNICODEのCOMBINING系文字を使うと編集が
>うまく行かないんだが、コツある?
ASCIIしか使わない。
EUCを使う
えー? 下付き/上付き添字、ベクトルとか共役とか色々装飾 したいじゃん(濁点とか半濁点とかはしたくない)。 あとはA○とかいろいろ。 ASCIIもEUCもできないでしょ。 メモ帳での編集はどうだったかな? 場合によっては負け?
TeXってまだあるんだ。 TeXにUNICODEのCOMBINING系文字を食わしたらどうなるのかな?
メモ帳が流行ってるということは軽量なemacs cloneもくるかな MicroEmacsにS式、単語単位のカーソル移動機能や予約語の強調表示の追加くらいで十分なんだけどなあ
>>417 メモ帳で自動インデントとかシンタックスハイライトができるのか?
428 :
名無しさん@お腹いっぱい。 :2013/09/22(日) 22:23:37.02
おまいら vi に 宗旨替えるするつもりじゃないだろうな!! そんなことヤル奴はEmacs使いの 風上にも置けない奴だ! なお、俺氏は齢0x21にて現在は進行形でvimを チマチマと覚えているところだ!
そもそも、メモ帳が一度でもブームになったことがあるのか? いいやない。
メモ帳の存在を忘れかけてた あれを開くの店頭のPCを触るときぐらいだ
Windows ブームはメモ帳ブームといっても過言ではない。 ほぼ全ての Windows ユーザーがメモ帳を通過したのだから。
仕事ではしょうが無く vim 使ってる。 インターネットに接続出来ないから emacs 単体入れてもどうしようも無いけど・・・ emacs + helm とか諸々が1パッケージになってるものって無いの? どっちにしろ、.emacs を一から書かんとイカンので無理だが。
IDEは魔改造されたメモ帳と見なすことが出来るのではなかろうか
パッケージをネットワークから持ってくるとか そんな昔からやってたわけじゃないけどな だいたいのパッケージはelispファイルを持ってきて適当なとこに置けばいいだけだろ
435 :
名無しさん@お腹いっぱい。 :2013/09/23(月) 01:02:56.48
よく考えたらネットがまともに使える以前のEmacsってゴミだよな。
ネット使えないころから愛用してたよw 最初はテープで貰ってきたw
シリアル接続の純正VT端末で、window分割で使っていたころの方が、今よりもありがたみがあったような気がする
4年くらいEmacs使ってきたけど 実践Vim読んでかなり心揺れてるw
実践vimを読んでいないからわからないけれど emacsに実装できない機能がたくさん紹介されているの?
vimは.emacsを編集することが出来ます。
emacsにしか出来ないことってのに実はそんなに魅力を感じなくなってきた今日この頃
それで別のエディタを使ってみるけどやっぱりemacsに戻っちゃう
elispしこしこ書いてバッファ内に読みこんだファイルの内容を変更して、即 座に目で見て確認して保存ってこと、他のエディタでできるやつあるの?
>>439 『心揺れてる』理由が知りたいです。
emacsを数年間利用した上でemacs以外のエディターに移行しようとする方の
意見には興味があります。
gitのvc-annotateが遅すぎなので vimに移行したい
>>446 package-install mo-git-blame
も遅い?
>>448 まあ、だいたい何が言いたいかわかる。
その場しのぎでワンライナーっぽくフィルタみたいなことをやろうとすると確かにEmacsは便利。
さあ!人の作ったパッケージ(笑)の出来ひとつで 自分のやることが制限され左右されてしまう ニワカで低能のみなさんはそろそろ静かにしててね!
451 :
444 :2013/09/23(月) 18:46:14.01
>>449 > その場しのぎでワンライナーっぽくフィルタみたいなことをやろうとする
これです。これができるエディタって他にあるのかな。
while re-search-forward replace-match で何度も幸せになれたので。
452 :
名無しさん@お腹いっぱい。 :2013/09/23(月) 20:08:15.11
どうでもいいんだが、「幸せになれる」って表現 元ネタどこ?てか誰が広めたんだ? なんかイラッと来るんだが。 幸福実現党かよ。
俺も他人にとってどうでもいいようなスレチでチラウラないちゃもんを わざわざageで書いてておまけに政治ネタにふってるようなレス見ると ものすげーイラッと来るわ
多分、パソ通かfjが発祥。言い出した奴は鬼籍に入っている可能性もある。
>>444 >>449 そういう利点が、Emacs にはあるよね。
通常のテキストファイルに elisp を付属させて、必要に応じて
eval-last-sexp で簡単に処理したりで、1つのファイル内で簡潔に完結するこ
とができたり。
457 :
名無しさん@お腹いっぱい。 :2013/09/23(月) 22:15:52.76
Emacsでいいよslimeもあるし
>>456 あんましよく知らんけど、カーソルがある行を読み込んでevalにかけるくらいなら
プラグイン作れるエディタなら大抵出来そうな気がするんだが
「大抵」ではないと思うぞ。 プラグインがコンパイラ言語のものだと、無理じゃね?
編集に限って言えば言うほど使い捨てスクリプト必要になったケースってないけどなあ ちょっとしたことなら正規表現で事足りてる
>>458 あくまで「ユーザが学習して利用できるようになれば」だけど...
Emacs は、何か手軽に処理をさせたいときの仕組みが元々組み込まれていて、
その呼び出し方が簡単で自由度が高い感がある。
極端な話、その「仕組み」そのものにもシームレスにアクセスし確認できる点
(たとえば eval-last-sexp のソースコードを describe-function などで追っ
ていく) は、特筆ものだと思う。
いわゆるプラグインだと、シームレスさや手軽さが欠けるんではないかな。も
ちろん、プラグインにも利点はあるだろうが。
お前らたまには他のエディタ触ってみたらどうだ sublime textとかpython知ってりゃ5分でプラグイン作れるようになるぞ
GUIはノーサンキュー
プラグインってなんか感電しそうでいやだ。 ワイヤレスが主流の時代に時代遅れ感もあるし。 ワイヤレスインとかのほうが良い。
>>462 フック使ってるとプラグインから作るとか面倒すぎる。
elisp より python の方が書きやすいのは確かだな・・・ 標準パッケージですら手続き型みたいな書き方してるのばっかりだもの。
そりゃ、elispは手続き型言語だから。
大抵の処理はマクロとかで間に合うし マクロじゃ手に負えないようなテキスト処理をelispで書くとか考えただけでゾッとするんだが
マクロはマグロっぽくて臭い。 Elisp は Eclipse と名前かぶってるし……もうやだこの界隈。
>>471 名前がかぶっている?
もしそうだとしてもお前が思っている名前だけだろ
小学生並の柔軟な発想ですね
そもそも、*.elで機能追加するのとプラグインってなにが違うんだ? プラグインの定義ってあったら教えてほしい。
>>474 じゃあgeditだな
編集中のバッファの一部、もしくは全部を標準入力や標準出力にしてコマンドを実行できる機能があるから
お好みのLispが使えるぞ
俺なんかは逆にEmacs使いたいけどelispは嫌いだから、できるだけshell-commandでやってるわ
>>456 >通常のテキストファイルに elisp を付属させて、必要に応じて
>eval-last-sexp で簡単に処理したり
あー、これオレもよくやったわ。
シェルスクリプトだとどこに置いたかすぐに忘れてしまって、何ヶ月後かに似たようなことするときに探せないんだけど、
こうしとくと、その手のテキストを探すだけですむ。その場しのぎだとかなり該当率高いし。
ニワカの{エディタ|言語|GUI|OS|自作マシン}談義ほどつまらんものはないわ
>>477 人が作ったelispを使うだけなら、そんな感じなのも理解できまつ。
でも、ひとたび自分で elisp を書き出すとLisp脳で考えるのがフツーになって、シェルスクリプト書くのがめんどくなる。
末期的には、前に書いた elisp を find-file して、ちょこっと手直しして eval-buffer して終了、みたいなことが結構あるんだなこれが。
場合によってはキーボードマクロ使うより速いし。
>前に書いた elisp を find-file して、ちょこっと手直しして eval-buffer して終了、みたいなことが結構あるんだなこれが。 そういうことすっからオレの.emacsが手の施しようのない魔境になっちゃってるんだろうがっ!TT
よしよしここはおじさんが
>>481 なんで.emacsが関係あるんだ?いみわからずー
scratch バッファが一番使用率高くなってくる
scratch バッファみたいに保存されないところに作業内容を記録する気にはならんな。
保存されるようにすればいいのだ
アイドル時に勝手に保存されるようにして再起動してもレジュームするようにしてるよ しょうもない書き捨て .el ファイルが量産されなくなってすっきり
保存したければscratch.elをひとつ作っておくのが筋ではなかろうか 保存されないのが*scratch*さんのいいところだろうに
>>487 同じくです。
最初はそれ用の el を適当に拾ってきてそのまま使ってたんだけど
ある日突然 *scratch* がまっさらになって真っ青になったw
>>487 できればそのelispを晒してほしいでごわす
そこまでelisp書く機会が思い付かない ちょっとしたelispってどんなことをやってるのか教えてほしい
>>490 です。
ありがとうございました。
何気に、util:aif マクロがいい感じです。
(if (buffer-file-name)
(find-file (buffer-file-name))
(message "このバッファはファイルじゃないでつ"))
とか頻繁に書いていたのですが、こういうマクロを書けばよかったんですね。勉強になりますた。
マクロいうてるのがdefmacroの話してるんだかkbd-macroの話してるんだかもっと他の話してるんだかワカンネ
>>496 なんと、元は On Lisp のアナフォリックマクロでしたか。
すっかり本棚の肥やしとなっていたので、この機会に読み直しまつ!
グレアム先生、野田先生、ごめんなさい。
まだ現象の切り分けもしていないからクレクレ状態で済まないんだけれど、 auto-complete (今週頭にgithabからもらってきたもの) で、c++, cのファイルの末尾に、 ふと気が付くと改行が連続して入っているという現象について、なにか知っている人はいるかな c/c++のファイルについては、セーブするときに行末の空白とファイル末尾の改行コードを 削除するようにしているから実用上は困ってないんだけど、結構気になるんで何か知っていたら教えてクレクレ popupしたときに表示領域を確保するために改行コードを一時的につけているんじゃないかということは、 以前から使っているバージョンでも思ってはいる
>>492 SJISのソースコードにUTF-8の文字列を書かなくちゃいけなくなった時に、
"日本語"ってソースに書いてリージョン選択してコマンド実行すると
↓
static const char data[] = {
0xe6, 0x97, 0xa5, 0xe6, 0x9c, 0xac, 0xe8, 0xaa, 0x9e, 0x00
};
って変換するelispを書いた時はかなり役に立った。
そのコード貼ってもええのんやねんでんで
501 :
名無しさん@お腹いっぱい。 :2013/09/27(金) 05:57:03.11
>>499 おいどんも、コードを貼ってくれることを
希望するでごわす。
502 :
名無しさん@お腹いっぱい。 :2013/09/27(金) 08:38:55.20
>>499 高校二年女子です。
わたしからもお願いします。
しかたないにゃあ・・・
504 :
名無しさん@お腹いっぱい。 :2013/09/27(金) 12:49:19.21
gccのバージョンによって設定を場合分けしたくてこのように書いたんですが 全て"4"と出力されてしまいます どこが間違っているのでしょうか (setq debian-x86-64 "") (setq ubuntu-x86-64 "") (setq g++ver (shell-command-to-string "g++ -v")) (defun case-test (value) (case value (debian-x86-64 "1") (ubuntu-x84-64 "2") (g++ver "3") (t "4"))) (message (case-test debian-x86-64)) (message (case-test (shell-command-to-string "g++ -v"))) (message (case-test "sklfj"))
caseを使ってるとこが
ミニバッファまわりのキーバインドってなんでああも治外法権状態なん? 「お前のglobal-mapなんぞ知るかボケェ!」な奴多すぎだろ
>>504 高校二年女子です。
まずは、case-test関数をedebug-defunして、ご自分のされていることを確認されたほうがよろしいかと思います。
それと、'g++ -v'そのままではなく、regexで引っ掛ける等しないと、このままではどうしようもないかと。
g++ -vよりg++ --versionの方が一行目にバージョンが来るからいじりやすいと思う
>>507 501のエセ薩摩人です。
499氏がコードを貼り付けなかったら
おいどんと付き合ってください。
>>504 >>505 が言っているようにcondを使えばよろし
そういう形で分岐したいならこうかな
(defmacro cond-case (value &rest body)
(lexical-let* ((cand (gensym))
(result (gensym)))
`(loop for (cand result) in (quote ,body)
do (when (and (symbolp cand)
(or (equal (symbol-value cand) ,value)
(equal (symbol-value cand) t)))
(return result)))))
(defun case-test2 (value)
(cond-case value
(debian-x86-64 "1")
(ubuntu-x86-64 "2")
(g++ver "3")
(t "4")))
(message (case-test2 debian-x86-64))
(message (case-test2 (shell-command-to-string "g++ -v")))
(message (case-test2 "sklfj"))
>>509 47歳男子です。
ありがとうございます。今後ともどうぞよろしくお願い致します。
>>510 マクロのパワーを見せつけられました。
中2女子の私がこのような達人級のコードを書けるようになるには、何をすればよろしいのでしょうか?
まず服を脱ぐのは無しの方向で、お願いします。
まずスク水を着ます
服は着たままスク水着るのか
515 :
504 :2013/09/28(土) 13:39:46.00
ありがとうございます emacs lisp勉強します
512に emacs のヘルプのここを見ろというレスは付かないのかな?
Webカメラがクラックされると簡易的な地獄が顕現しそうなスレだ
520 :
499 :2013/09/29(日) 01:20:21.88
(defun util-encode-region-utf8 () (interactive) (save-excursion (let ((beg (region-beginning)) (end (region-end))) (end-of-line) (insert "\nstatic const char data[] = {\n\t") (mapc #'(lambda (x) (insert (format "0x%02x, " x))) (encode-coding-region beg end 'utf-8 t)) (insert "0x00\n};"))))
>>520 わーいありがとう!
おいどんのチン●も喜んでます
エセ薩摩人さん、ついにコテハン化w
>>522 簡潔に書き直せば、こんな感じになりそうだね。
(defun util-encode-region-utf8 (b e)
(interactive "r")
(save-excursion
(let ((s (concat (buffer-substring b e) "\0")))
(end-of-line)
(insert
"\nstatic const char data[] = {\n\t"
(mapconcat #'(lambda (x) (format "0x%02x" x))
(encode-coding-string s 'utf-8)
", ")
"\n};"))))
525 :
524 :2013/09/29(日) 10:05:19.46
527 :
510 :2013/09/29(日) 15:01:35.14
>>504 >>510 はおかしいところがいくつかあったので修正するよ ついでにもうちょっと汎用的にしてみた
(require 'cl)
;;
http://www.gigamonkeys.com/book/macros-defining-your-own.html (defmacro with-gensyms (names &rest body)
`(let ,(loop for n in names collect `(,n (gensym)))
,@body))
(defmacro cond-case (value &rest body)
(with-gensyms (cand result x)
`(loop for (cand result) in (quote ,body)
when (symbolp cand) for x = (symbol-value cand)
else for x = cand
when (member x `(,value t))
return result)))
(defun case-test2 (value)
(cond-case value
(123 "aaa")
("hoge" "bbb")
(debian-x86-64 "1")
(ubuntu-x86-64 "2")
(g++ver "3")
(t "4")))
(message (case-test2 123))
(message (case-test2 "hoge"))
(message (case-test2 debian-x86-64))
(message (case-test2 (shell-command-to-string "g++ -v")))
(message (case-test2 "sklfj"))
>>512 defmacroはon lispが、loopマクロはland of lispがわかりやすいよ emacs lispレファレンスだけだど慣れるまで時間がかかるかも
loop の中身がLISPに見えない件w
529 :
名無しさん@お腹いっぱい。 :2013/09/30(月) 02:22:05.16
>>528 Boost Spirit も似ている気がする。
言語仕様を上手く使って別言語の世界を作り出している。
Loop言語はマスターするとElispが非常に短くかけるし、
マクロなんでバイトコンパイルすれば速度処理もない。
Spiritはコンパイルするのがイヤになる
>>529 >Loop言語は
!!!
loop はDSLだと思えばよかったのですね。その発想はなかったです。
532 :
名無しさん@お腹いっぱい。 :2013/09/30(月) 12:48:36.98
loop 好きだけどアンチも多いらしい
デバッグが必要になった場合の手間考えると、展開結果が複雑になるようなマ クロは使わない方が得策だと思う。
そのマクロが正しく動くことが保証されてたら大丈夫じゃない?
535 :
名無しさん@お腹いっぱい。 :2013/09/30(月) 16:21:25.84
Emacs でマクロ否定って Emacs を否定してるようなもんじゃん。 Editor MACroS なめんなよ。
elispのloopマクロで面白いものがあれば知りたい
>>536 Common lispのloopマクロをelispで動くようにしたものなんだよね
Land of Lisp 10章のLoopマクロ周期表がおすすめ
ANSI Common Lisp によるとだな 規格でも loop は定義しきれてないってさ 実際 sbcl で動く loop が clisp でコケたりする
http://orgmode.org/worg/exporters/ox-overview.html ここにあるox-texinfoを使って.org->.texiに、
さらにtexi2htmlで.texi->.htmlに変換したら
元の.orgで#+authorで設定していたその設定が失われてしまうようで
This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82
となってしまいます
.org->.htmlであれば問題なくauthor情報が引き継がれているのですが、どうすれば引き継げるのでしょうか
orgファイルはこう書いています
#+TITLE: Org-mode test
#+AUTHOR: test-name
* hello
- world
>>541 > This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82
それで正しいのだと思うが
>>538 こんなのがあったとは。
RMS信者の私はただいま絶賛感動中です。
>>504 なんだかすごいことになっているような気もするが
君がやりたいことへの最短距離は cond を使うことだと思うぞ
サルでも完全理解loopマクロ講座を誰か書いてくれ
記号tやnilは直接指定すると tはotherwiseにnilは空リストに解釈されてしまうから、 tやnilと直接比較したい場合には クォートするかリストにいれる必要があるよって意味じゃないの? tやnilじゃなければシンボルは評価されないと思うけどね
>>545 Common Lisp loop でぐぐればいろいろある
まったく、いつになったらEmacsは縦書に対応してくれるのか! Emacs18 の頃から待ってるのに。ぷんぷん!
縦書きelispってあったような。
>>549 必要なら自分で作るんだ。
Mule拡張もそうだった。
縦書って書いたり閲覧したりするときだけ縦で テキストデータ自体は他と変わらないみたいな感じがいいのかね
縦表示ってことだろうね。
save時の処理が重くなっているようなのですが、 関連するhookを確認するにはどこを見ればよいのでしょう?
caseはちょっとわかりにくいよね わからないうちはちょっと冗長だけどつねにcondを使っておけばいい elispじゃcondがネィティブでcaseはcommon lisp互換マクロだし
558 :
名無しさん@お腹いっぱい。 :2013/10/02(水) 22:01:11.53
リアルな話になってしまうが正直コモリプは糞だと思っている。
ローカル関数すら無いどっかの超絶糞言語に比べればはるかにマシ
>>559 チューリングマシンの悪口はやめて下さい。
>コモリプ ないわ ないないない
562 :
名無しさん@お腹いっぱい。 :2013/10/03(木) 08:18:31.51
(load-theme 'wombat t) と設定しているのですが,lookupの中だけテーマを変えるには どうしたらよいでしょうか。 外字が黒文字なので見難くなってしまいます
lookupって?
load-theme使ってないからよくわからんが、enable-themeとかで切り替えはできるみたいだけど、 バッファ毎に変更なんてできるのかね? theme切り替えるんじゃなくて、 lookupの外字のfaceをthemeに合わせてカスタマイズとかじゃダメなん?
背景色をバッファ毎に変えるスマートなしくみは現状ないから無理だと思うよ。 フレーム単位なら素直にできるけど。 hiwin ってパッケージあるけどあれはオーバーレイ使って無理やり変更してる。
こもりぷてcommonlispのことか しばらく考えてしまったぞ
568 :
名無しさん@お腹いっぱい。 :2013/10/03(木) 15:06:25.14
org-modeは肥大化しすぎて、もはやEmacsでやることに無理がある気がする。 このさいOmacsとして独立してほしい。
>>568 それいいかも
俺が emacs 使い始めた動機も org-mode だったわけで
実際今は org 除くと emacs あんまり使ってない
かつてはカスタマイズに凝った時期もあったが
やってるうちに手段と目的が逆転して、気づくととんでもなく
時間が経過してたり、ってのがバカバカしくなった
Emacs24.2〜3辺りの comment-indent ってバグってない? comment-colum を設定しても、コメント位置がずれるンゴ リポジトリの先端でも直ってないっぽいし。 手前味噌で直したからいいけど。
× comment-colum ○ comment-column
M-x compile を呼ぶとき常に C-u をつけて呼びたいんだけど いい方法ないかな
(compile 4)
>>573 ありがとう
でも普通 M-x compile するとミニバッファに compile-command がでてリターンすると実行という流れなんだけど
(compile compile-command 4)
をキーバインドしてしまうと compile-command を
ミニバッファで編集するチャンスがなく実行されてしまうのでどうかなと思ってるんだけども
>>575 ありがとう!
(defun compile-with-prefix ()
(interactive)
(let ((current-prefix-arg '(4)))
(call-interactively 'compile)))
とりあえずこれをキーバインドすることにしました。
独り相撲になってしまったけど (global-set-key (kbd "s-x") '(lambda () (interactive) (execute-extended-command '(4)))) これでもいいかも C-u M-x を汎用的に使えるし
578 :
名無しさん@お腹いっぱい。 :2013/10/04(金) 08:51:53.07
579 :
536 :2013/10/04(金) 12:09:11.61
とりあえずEmacs界にはEmacs Lispをelispと呼ぶのはやめてほしい。 これはEmacs Lisp以外を「よくないLisp」と言ってるも同然で失礼。 だから生粋のLisperに嫌われるんだ。
滑ってますよ
どうやって読み取れば elisp を「良くないLisp」と読み取れるんだ?
その昔「(E)」で「カッコイー」と読ませるテレビがあった。
>>582 elisp → いーLisp
それ以外の lisp → いーLisp じゃない → よくない Lisp
ってことかと・・・
すべったネタに解説で追い討ちしてやるなよ。
これがほんとの滑り止めか。
>>584 なるほど
elispの皆さんって面白くてステキ
面白くはないな。
ステキでもないな
emacsでのゲームイイ! 昔、vzにあったsameshotというのがおもしろかったのを思い出した。
誰かtrek移植して
>>590 M-x hanoi
ってか、さめショット懐かしい
sameshotググっても見つからないんだけど どういうゲームなのそれは
samegame じゃないかな
sameshot.defってぐぐっても確かに出てこないな。niftyのライブラリにあるはずだけど。
599 :
名無しさん@お腹いっぱい。 :2013/10/06(日) 16:49:15.16
M-x bubbles って samegame なの?
実家においてあるPCにvzをインストールしてあるので、その中から見つけてdef アップするよ。ちょっと待ってください。
vz 懐かしい mifes、emacs と共に俺の人生を時間的に食い荒らした悪魔だ そういや red++ さんはもう亡くなったのかな
>>602 emacs dash で検索するといくつかひっかかったよ
Mac つかったことないから内容は精査してない
>>602 こんなのがあったとは。
買ってしまうかも…
カーソル位置のワードを引数にDash.appを呼び出すのはすでにあるが、 602が言っているのは直接Dashのドキュメント群ををEmacsのバッファで読むというやつかね? w3mとsqliteを組み合わせて実現するのかな?
>>606 >602が言っているのは直接Dashのドキュメント群ををEmacsのバッファで読むというやつかね?
macのフルスクリーンモードでemacsを使ってるから、dashのウィンドウにフォーカスが移るとめんどくさい。それが解消されればdashを買ってもいいんだけど
608 :
名無しさん@お腹いっぱい。 :2013/10/09(水) 16:18:13.71
-nw つけてターミナル上でEmacsを起動するとMetaキーが変わるから 設定したいのですが、どう設定すればいいでしょうか
OS(Window System)と何のターミナルか書けよ
つまんね。
ターミナルだとOSがキーを食べちゃうから OS側で無効にするんだろ
>>608 テメーの端末のマニュアル読め
はい次ッ!!!
検索時の”I-search:”の文字色が暗すぎてよく見えないのですが、.emacsでどの設定色を変更すればいいのでしょうか?
M-x list-faces-display で探す そしてそのままCustomize Face使って変更してしまう
ひでえ便乗見たわ
ありがとう
リバースビデオ的なことしようとするから苦労するんじゃないの? 普通に白っぽい地(俺はantiquewhite)に黒でいいと思うんだが。
list-faces-displayいじり始めると一日が終わるわ
標準の白地に黒文字でやってても ansi-color の色つき文字は黒地に白文字を想定してるとしか思えない色合いだから 調整必須だよな・・・
複数のディレクトリに入っている複数のファイルを特定のフレーズで検索し ヒットした場所を違うフレーズに置き換えるいい方法はありますか? 今はanything-grep-findでファイルを横断的に検索して ヒットした箇所を開きreplace-stringで置き換えています
sed -i -e 's/from string/to string/g' files....
>>622 みんな黒地に緑文字だと思ってた。白地とか目疲れると思うけど、視力低い人は見やすいのかな。
普通のアプリとかWebサイトとか圧倒的に白地に黒文字が多いから、 プログラム関係だけ黒地に白系文字にするとウィンドウ切り替えたときに 目の対応が追いつかない
>>623 find-grep-dired -> t -> Q かな
find-grep-dired 自体が buggy ぽいけど
>>626 > みんな黒地に緑文字
ただのじじいの懐古趣味かよ
黒字にアンバーなら許す
普通はデフォルトの白地 黒地は括弧付けたいだけ
アズキ色に白色だろJK
黒/緑は別に目にいいわけでもないってのを何かで読んだ記憶があるんだよなぁ コントラストを急激に変えない方がいいからディスプレイの後ろにも間接照明を置けとかは聞いた
634 :
名無しさん@お腹いっぱい。 :2013/10/18(金) 03:25:08.22
背景は白派だけど目がチカチカするので ごく薄いグレーにしてる
白地に白文字にして高度なセキュリティ環境を実現してるわ
何その一色碁
フォントをちっちゃくしてるから、黒地に白文字だと潰れて識別できない。 で、ベージュというか薄オレンジっぽい背景色に変えた。
638 :
623 :2013/10/18(金) 12:54:03.19
>>624 >>628 ありがとうございました
両方試してみました。find-grep-diredの方がなぜかうまく動かなかったのでmoccur-editを導入してみました
ばっちりです
>>633 じっさい暗い部屋で白地に黒を長時間とかやってると
ガンガン視力下がりそうではある
黒背景派だったけど大抵のツールが白系の背景色で 頑張ってカスタマイズして回るのもだるくなってきたのでそのまま派に・・・
目に優しいと聞いたので、一時期黒板カラー (つまり背景は濃い緑) だった。
robin hoodというカラーテーマをベースに少し変更している
自動調光が有効になってて明るいと、数時間くらいの作業でも頭が痛くなってくんだよね。無効にしてさらに黒地だと12時間は平気。
紙媒体に目を移すことも多いから輝度低めの白背景にしてるわ でも端末エミュレータは昔から黒背景から変えてないなあ
部屋が暗いとか調光がどうとかそっちを見直せ 別に白地でも24時間平気だ
部屋暗くしてたら黒背景だろうが白背景だろうが確実に視力落ちそうだな
この手の話題ってよく出てくるけど 決定打になるような学説みたいなのって出てないもんなのかね
サボるときはコントラスト低めの配色だなあ。
Qtみたいな特殊なAPIをclangで補完したりシンタックスチェックしたりできないかね
shell-modeが動いているshellバッファで、コマンド入力待ちかコマンド動作中か をelisp側から判定したいんだけど、なんかいい方法ないかな?
>>646 昔からそうだが、眼鏡かけてないぞ。
逆に鍛えられてるかも。
get-buffer-process, process-idでPIDとって、それを親に持つプロセスを/procから探す
>>652 バックグラウンドでプロセスが走っていてもshellが入力待ちであればOKと
したいんだけど、/procから判定できる?
>>650 自分でこんなの考えてみました。こんなんでいいんだろうか..。とりあえず動きました。
(defun shell-input-waiting-p (buffer-name)
(interactive)
(with-current-buffer buffer-name
(save-excursion
(comint-goto-process-mark)
(not (bolp)))))
bgプロセスが何を吐くのかも明示されていないのに、何でいいのか悪いのかなんて言えようか(いや言えん) つか、悩むくらいなんだからbgプロセスもstdout, stderrに何らかの出力をしてしまって見分けがつかん てな状況を想像してしまうのは俺だけか
>>655 まさに。654はバックグラウンドプロセスが何か出力するとだめでした..。
>>654 少しまともになったか。
(defun shell-input-waiting-p (buffer-name)
(with-current-buffer buffer-name
(save-excursion
(comint-goto-process-mark)
(let ((process-mark-point (point)))
(forward-line 0)
(comint-skip-prompt)
(eq (point) process-mark-point)))))
>>657 (comint-goto-process-mark) が行の先頭にあればだめでした。
でも、その判定を追加すればなんとか使えそう。
>>653 wchan(wait channel)で判別できると思う
別の解っていうのも十分あり得るんで、もそっと具体的に何をしたいのかを書いてみるのが吉かと
>>660 NTEmacsのスレで紹介したりしてたんだけど、ちょっと前にtrampにも対応する
shell-popもどきを作った。 www49.atwiki.jp/ntemacs/pages/34.html
結構便利に使っているんだけど、shellバッファで時間の掛かる処理を動かして
いるときには shellバッファをポップアップしないようにしたい。
それで質問したのでした。今のところ、以下をfletに追加すればいけそうかなぁと。
(shell-input-waiting-p (buffer-name)
(with-current-buffer buffer-name
(save-excursion
(comint-goto-process-mark)
(let ((process-mark-point (point)))
(forward-line 0)
(and (comint-skip-prompt)
(eq (point) process-mark-point)))))))
>>659 cygwinのpsでは見れない情報みたい。メインはNTEmacs+cygwinなのです。
>>662 OS依存な方法にならざるを得ないのだから、NTEmacsスレで聞くべき。
Emacs の shell-mode 内で完結する方法があったらい知りたいなーってレベルだったんだろ まあそれは難しいってことなんだけど
list-system-processes や process-attributes を利用できるかもしれないね。 (info "(elisp) System Processes") で調べてみたらいいかもね。
>>665 すごいな、ちゃんとNTEmacsでもps並に情報でてきたわ
>>665 情報ありがとう。process-attributesというのもあるんですね。
今回はNTEmacs+Cygwin"でも"動くものにしたいんだけど、そうすると
psの情報を使うのは難しそうな気がしてきました。NTEmacsから起動
するbashはfakecygptyを経由していたりもして。
とりあえず完璧な判定にはならないけどcomintのコマンドでなんとか
することにしたいと思います。意見くれた方ありがとうございました。
ibus.elじゃなくてFcitx.el作っておくれませ irieさま
669 :
名無しさん@お腹いっぱい。 :2013/10/24(木) 23:01:47.11
フォントの設定の仕方がいろいろありすぎてどれを使っていいかわからない
やってみてちゃんとフォントが変わったなら別にその方法でかまわんと思う
でもobsoleteとかdeprecatedとかになっちゃて、次の版からなくなったりする
最新だと (set-frame-font "Ricty-12.5") って感じ? 文字セットごとに設定する方法は知らない。
Rictyのサイトに (set-face-attribute 'default nil :family "Ricty Discord" :height 120) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 (cons "Ricty Discord" "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 (cons "Ricty Discord" "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'katakana-jisx0201 (cons "Ricty Discord" "iso10646-1")) とかあったからこれ真似したらいいのかなとか思った
emacs -nw で起動した時だけ error: Fontset 'tty' does not exists って出るんだけど、解決法はないかな?
window-systemがnilでないときだけフォントを設定する
うちでは (display-graphic-p) が t の時だけ フォント絡みやフレームサイズの設定するようにしてるわ。
理想を言えば、 .Xdefaults とか起動時の引数とか NTEmacs だとレジストリとかでフォント設定したほうが 起動した時にフォント変更で一瞬だけリサイズされたりするのを回避できていいんだよな。 ウィンドウサイズもしかり。
>677
そう思って自分は~/.Xresourcesに設定してる。
>>674 のようなこともないし。
skkを使っているのでemacs24.useXIM: falseが便利。
.Xdefaults は文字セット毎にフォント変えたりするのが面倒くさかった記憶がある
>>679 最近はxft使えるから昔と比べるとずいぶん簡単になったよ.
681 :
名無しさん@お腹いっぱい。 :2013/10/25(金) 15:38:48.62
packageでelispを管理してるけど、 packageのリポジトリにないelispはpackageのディレクトリで管理してる? やっぱり他のディレクトリにしてる?
default で ~/.emacs.d/elpa に入るのにそれ以外のものを挿入してしまうなんて変態もいいとこだと思う。
el-getでレシピ書いてそっちで管理してる
俺、cairo って何となく gnome 系かと思ってた。
>>681 俺は必ずわけるようにしてる。
ただ、最近はパッケージなかったら自分で作ることが多い。
一回作ってしまえば大抵使い回せるからね。
手動でやってる俺に隙はない
新規で環境作りなおす時なんかは package からで何の問題もないわな ただ marmalade が無いと正直足りないからいちいち足さなきゃいけないあたりがまだ面倒
package とかどうせ数年で飽きてメンテされなくなりそうだし 自前でやっとくのが一番な気が
バニラにちょっとした物足すくらいが精神衛生的にも丁度良いと思う
>>688 > ただ marmalade が無いと正直足りないから
ごめん、これって、英語圏かどこかの慣用的な言い方なの?
もしくは、パッケージとしてあるのかな?
参考までにお聞きしたいw
>>690 やがてデフォルト教に入信していくわけですね
実際大昔の設定みてるとアホなこだわりしてたなーとか思うの結構あるんだよなあ
695 :
691 :2013/10/27(日) 00:01:02.88
>>692-693 thx.
自分は、おそらく慣用的な言い方だと踏んでいたので、内心、ちょっとズッコ
ケた感じだわw
「バニラ」っていいかたなんかやだ。 俺の中ではチョコレートがスタンダードで そこからがオプションなんで。
じゃあチョコレートって言えばいいよ
「バニラ」がいやなら「すうどん」でいいだろ。
すっぴん
「しろめし」で、ひとつ
701 :
名無しさん@お腹いっぱい。 :2013/10/27(日) 23:29:33.59
.emacs.d/init.elで (set-locale-environment nil) (set-language-environment "Japanese") (prefer-coding-system 'utf-8) (set-default-coding-systems 'utf-8) (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (set-buffer-file-coding-system 'utf-8) (setq default-buffer-file-coding-system 'utf-8) と設定しているのですが、 Emacsでファイルを作成しC-x RET f で確認すると Coding system for saving file (default japanese-iso-8bit)となってしまいます。 どこか間違っているのでしょうか?
C-x RET f で出てくるデフォルトは現在のファイルのエンコーディングとは限らないような気がする。 コード見てみるとデフォルト決めるのに色々やってるなあ あと色々沢山設定してるけど、今は特別なことしないなら↓だけで問題ないと思ったけど。 (set-language-environment 'Japanese) (prefer-coding-system 'utf-8) キーボードだの端末だのバッファだのは全部 prefer-coding-system でやってくれる。 その後にファイル名のコーディングとかプロセスのI/Oを一部別なのに変更したいときだけ 個別に変えればいい。
>>702 > あと色々沢山設定してるけど、今は特別なことしないなら↓だけで問題ないと思ったけど。
> (set-language-environment 'Japanese)
> (prefer-coding-system 'utf-8)
今はこれさえも必要ないはず。
環境変数見て、Emacsが適切に設定してくれます。
mule-ja-2009の09808のスレッドで半田さんが解説してくれているんだけど、
アーカイブ残ってないのね。。。
LANG=ja_JP.UTF-8 とか設定しておけばいいってことかな。 emacs -q したら普通に current-language-environment が Japanese になってたし なんちゃら-coding-system も utf-8-unix とかになってたわ。 デフォルト教が捗るなこれは。 標準で C-h がバックスペースじゃないことだけがどうしても納得いかないけど。
705 :
703 :2013/10/31(木) 01:13:53.38
>>704 最近のディストリビューションだと、LANGの設定も要らないと思いますよ。
重隅 or 言葉の綾レベルだがつっこませてもらう LANGの設定が要らないんじゃなくて ディストリがはじめからやっといてくれるだけだろ 設定は要る
重隅って言うのか。
大隈重信
しげくま
採用された時にこのスレで話題にならなかった?
なったっけ?
どっかでちょっと話題になった気はする 当時なにかそのことで書き込んだ記憶がある スラドだったかも?
むかしのアイコンがどんなだったか忘れてしまった 四角だったよな
今時なアイコンすぎてかっこ良すぎ違和感あった emacsって古くさいアイコンを想像するので、 いい意味で予想外
*scratch* で変な式評価してエラーになると *scratch* が空になってしまいますが エラー時はミニバッファに「この馬鹿たれが!」とかメッセージを出すだけに する事は可能ですか?
>>718 変ってわけでもないんですけど、これとかカーソル以降が消えちゃいます
(replace-regexp-in-string "^\^" "" "")
>>717 eval-expression-debug-on-error と debug-on-error を両方 nil にすればできそうだけど
そんなことしなくても C-] で再帰編集から抜ければ消えた部分戻ってくるよ
>>720 なんと!ほんとだ!完全に消えたわけじゃなかったんですね
ありがとうございました
vimのH,M,Lに相当する動きって出来ませんか?
M-r で出来るけど、標準だと middle→top→bottomで順次移動になってて 直接それぞれに移動ってのはそのままだとないみたい。 (move-to-window-line 0) で H (move-to-window-line nil) で M (move-to-window-line -1) で L 相当の動きになると思うから 適当にキーバインドしてやってもいいかもね
>>722-723 タイプ数は増えるけど
C-u 0 M-r とか C-u -1 M-r とか
C-u も使うようにしたほうがいいかも。
広いディスプレイで作業してるなら、大ざっぱな移動よりも、
linum-mode で行番号表示しておいて goto-line で移動 C-u 数字 M-g g とか、
narrow-to-region を使ったほうが作業効率が上がる場合もありそうだね。
>>723 ,724
C-c h, C-c m, C-c l にバインドして使うことにしました
ありがとうございます
数字プリフィクスなら M-数字 がいいんじゃないかな M-0 M-r とか M-- M-r ならメタキーから手を離さないから比較的楽だ
emacsにc++の自動補完機能を導入しようと思ったのですが途中で詰まってしまいました
http://d.hatena.ne.jp/uhiaha888/20130304/1362382317 これの
$ git clone git://github.com/Golevka/emacs-clang-complete-async.git
$ cd emacs-clang-complete-async
$ make
ここでmakeを実行すると
cc -std=c99 -I/usr/include -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -O3 -fomit-frame-pointer -g -Wall -Wextra -pedantic -O3 -I./src -c -o src/obj/msg_handlers.o ./src/msg_handlers.c
makefile.mk:43: recipe for target `src/obj/msg_handlers.o' failed
make: *** [src/obj/msg_handlers.o] Error 1
このようなエラーが出て止まります。アドバイスをください。
>>727 llvm 3.2 で make したけどエラーにはならなかった。
コンパイル時のエラーメッセージが書かれていないんでよくワカランけど、
こっちの環境では msg_handlers.c のコンパイルはこんな↓感じ
cc -std=c99 -I/usr/lib/llvm-3.2/include -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -g -O2 -fomit-frame-pointer -fPIC -Wall -Wextra -pedantic -O3 -I./src -c -o src/obj/msg_handlers.o ./src/msg_handlers.c
>>726 C-2 M-2 C-M-2 系って意外に知られていないような気がする
C-aで行頭に、 C-a aで全選択、 とかしたいんですが、 設定方法はありますか?
C-aで行頭に戻って、そこにaを挿入するときはどうすんの?
C-a C-g a じゃね?
>>730 key-chord とかなんかそれ系のでそういうの出来たような気がする。
C-a a の a 打つまでの時間が短かったら全選択とみなすみたいな。
key-chord は同時押しだったかもしれない。
なんか似たような変態的なキーバインドパッケージ一時期増えた時のどれかだな。
あと、C-a だけだと行頭、 C-a C-a だと全選択、みたいに連続で押すと挙動が代わるのもあるよ。
sequential-command だったかな。
C-x h を、覚える
emacs上でocamlを学習したいので環境を作ったのですが.mlファイルを
開いてもモードがlispになりcamlモードで開けませんどこがおかしいのでしょうか?
OS:Windows7 64bt
emacs設定
home/.emacs.d/elisp
tuareg-2.0.6
他:
ttp://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/ocaml.html のOcaml-mode3.05の全て
Ocaml.exeの位置
C:\OCaml\bin
emacs設定
(add-to-list 'load-path "~/.emacs.d/lisp/tuareg-2.0.6")
(setq tuareg-interactive-program "ocaml")
(autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code." t)
(autoload 'tuareg-run-caml "tuareg" "startup a Caml toplevel" t)
(autoload 'camldebug "camldebug" "Run the Caml debugger." t)
(autoload 'tuareg-imenu-set-imenu "tuareg-imenu" "Configuration of imenu for tuareg" t)
(add-hook 'tuareg-mode-hook 'tuareg-imenu-set-imenu)
README を読めば (setq auto-mode-alist (cons '("\\.ml[iylp]?$" . caml-mode) auto-mode-alist)) が必要ってのがわかるはず
>>736 ありがとう
(setq auto-mode-alist
(cons '("\\.ml[iylp]?$" . caml-mode) auto-mode-alist))
(autoload 'caml-mode "caml" "Major mode for editing Caml code." t)
(autoload 'run-caml "inf-caml" "Run an inferior Caml process." t)
を追加しても動きませんでした。
.mlファイルが(Lisp)で起動されてしまう。
M-x caml-modeは [No match]になってしまう
もう少し調べてみます。
>>735 においてあるのは Ocaml-mode3.05 だけど、
>>735 で書いてる設定は tuareg-mode の設定に思える。
tuareg に一緒に添付されてるパッケージを使うんであれば ocaml-mode って必要ないのでは?
最初はcaml-modeで動かそうとしたのですが、動かず その後turregを入れました。 M-x tuareg-mode も[No match]になります。 tuareg関連のファイルはtuareg-2.0.6に入れてelisp に入れています。 elispにはauto-completeも入れていますがこちらは動作しています。 現在の.emacs.dはこんな感じです。 ;ocamlモードの設定 (setq load-path (append '("C/Ocaml/bin") load-path)) (setq auto-mode-alist (cons '("\\.ml[iylp]?$" . caml-mode) auto-mode-alist)) (autoload 'caml-mode "caml" "Major mode for editing Caml code." t) (autoload 'run-caml "inf-caml" "Run an inferior Caml process." t) (add-to-list 'load-path "~/.emacs.d/lisp/tuareg-2.0.6") (setq tuareg-interactive-program "ocaml") (autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code." t) (autoload 'tuareg-run-caml "tuareg" "startup a Caml toplevel" t) (autoload 'camldebug "camldebug" "Run the Caml debugger." t) (autoload 'tuareg-imenu-set-imenu "tuareg-imenu" "Configuration of imenu for tuareg" t) (add-hook 'tuareg-mode-hook 'tuareg-imenu-set-imenu)
ちゃんと eval するか再起動はしてるんだろか。 autoload が評価されてるなら [No match] にはならないと思うんだけどな。
再起動は設定をかえるためにやってるんですが ダメそうです。 c-modeは普通にM-x c-modeで呼び出せるんだが… 遅くまでありがとう
c-mode は標準で設定されてるから特に何もしなくても動くんだけどね。 *scratch* バッファに上記の設定貼り付けて M-x eval-buffer でもだめかね。 設定ファイルコンパイルしてなくて古い init.elc が読み込まれてるとかのオチな気がする。
(append '("C/Ocaml/bin") C/ -> C:/ 中身見ていないけれど、binの下に *.el[c] があるのか load-pathってexpand-file-nameしなくてもよくなったんだっけ? (add-to-list 'load-path (expand-file-name "~/.emacs.d/lisp/tuareg-2.0.6")) まずは *scratch* で (load-library "calm") を評価するところから始めたほうがいいと思う。
今は load-path は expand-file-name しなくてもちゃんと認識されるようになってるね。 ~/.emacs.d/misc とか普通に入れて使ってる。
>>728 遅くなってすみません。そうでしたか。もうちょっといじってみます。
>>742 設定を色々ためしながらいじっているのでコンパイルは
しないようにしています。
確認してみると.emacs下に.elcはなかったです。
>>743 *scratch*で(load-library "caml")を実行したところ
Loading ~ユーザ名~.emacs.d/elisp/caml.el(source) ...done
となりました。
読み込めてはいるのかな?
ttp://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/ocaml.html のOcaml-mode3.05の全てをelispフォルダに放り込んでいるので
これのcaml.elは読み込めているようです
少し進展がありました。
M-x caml-modeだけだとNo matchになりますが
*scratch*で(load-library "caml")実行後にM-x caml-mode
を実行すると(caml)で実行できました。
init.elが悪いのかな
init.el に load-library なり load なりを入れて それでも M-x caml-mode が動かないんだとしたら init.el がちゃんと読まれていないか 期待通りに動いていないかだね。
initial.elに(load-library "caml")を追加しても M-x caml-modeが動きませんでした。 initial.elの前半に記述している(set-foreground-color "white") などは動作しているのでocamlの設定中心にinitial.elをデバックしてみます。
もしかして古い ~/.emacs とか ~/.emacs.el があるんじゃないのかね。 init.el よりそっちのが読み込みの優先度高いよ。
コマンドプロンプトでemacs --debug-initを実行したところ Debugger entered--Lisp error: (void-function c-toggle-auto-state) (c-toggle-auto-state t) と出たため(c-toggle-auto-mode t)をコメントアウトしたところ 無事.mlファイルがcamlモードで起動できました。 ありがとうございました。 emacs関連で2日も使ってしまった。 「Emacs実践入門」だけでは知識不足か。
さすがにそれはわざわざデバッグモードで起動せんでも 起動時にエラー出てるような気がするんだけど
melpaにtuaregがあるから、packageを使ってインストールしたほうが楽なように思う。 けれどWindowsでpackage使うにはtarなどをインストールしないといけないかも。
753 :
730 :2013/11/06(水) 05:24:58.76
>> 731 時間が十分短い場合→全選択、少し空けば→a挿入、みたいなイメージ。 >> 732 ごめんなさい、C-a C-g a はよく判りませんでした。 >> 733 sequential-command だったかな。 おおお、C-a、C-aでバッファ先頭に飛ぶ例があるね。 これを使えば、C-a C-aで全選択もわけなさそう。 >> 734 C-x h を、覚える 知らんかった…。当座はこれでしのぎます。
taiyaki.org の人は今 google ime 作ってるんだよな
うん、知ってる。
help-echo プロパティで表示出来るツールチップをマウスオーバーではなく 関数で強制的に表示って出来ないですかね。
既出かもしれないけど eval-after-load のフォームの中までバイトコンパイルさせる方法考えた。 (eval-after-load "hoge" `(funcall ,(lambda () (message "ここはコンパイルされるよ!") )) もっとも eval-after-load 内にそんなごつい処理かかないだろうし、ロード時に一回しか走らないしで 大した違いが出るとは思えないけど。
バイトコンパイルってファイルが小さくなるだけじゃないの? 速度変わらないんだったら大した意味ないんじゃない?
バイトコンパイルしないとより遅くなるぞ。
eval-after-loadまでコンパイルする必要はないだろう・・・・
>>759 たかがサイズのためにどんだけまわりくどい手間かけてんだよ…
たかがサイズ されどサイズ
ファジィな痛みー
>>759 elispのバイトコンパイラはlisp専業だったlucidが手を入れた最適化コンパイラ
実行速度も向上する
js2-modeとか最適化でかなり変わるね
極力起動時の処理を軽くしようとして eval-after-load に関数定義とかまで押し込んでる場合は
>>758 は有効だと思う。
もっとも init.el に書く程度の内容だったらやっぱり誤差だろうな。
org-modeのファイルを開くときに折り返しを有効にしている状態で開くにはどうすればよいですか? 今はファイルを開いた後に(toggle-truncate-lines)を手動で1回評価しています
org-mode-hook に toggle-truncate-lines を追加してやればいいんじゃないかな
>>768 以前探して見つけたのは、org-startup-truncated を NIL にしておく方法。
X11のフォント設定に依存しない、直接ttfファイル等を指定して フォントを設定することはできますか?
今のところ OS に認識させないと無理だと思う。
twittering-modeを使っているのですが urlをクリックしたときに指定したブラウザでそのリンクを開くよう設定できますか
browse-url を使ってるみたいだから、 browse-url-browser-function を browse-url-firefox とか好きなのに変更すればいい。 デフォルトで何が選べるかは browse-url の先頭のコメントのところに列挙されている。 そこにない場合は自分で適当に追加すればいい。 twittering-mode の url クリックの時だけ変更したいなら twittering-click に包囲 advice でも追加してそこでだけ browse-url-browser-function を変更すればいい。
>>774 できました!大変助かりました。感謝です。
776 :
768 :2013/11/09(土) 01:24:53.69
>>769-770 両方を参考にしてorg-mode-hookでorg-startup-truncatedをnilにすることにしました
ありがとうございました
777 :
名無しさん@お腹いっぱい。 :2013/11/09(土) 22:33:14.63
package で color-theme のSolarizedをインストールして 設定ファイルにGithubに書かれているように書き込んだのですが Emacsを起動する際に Unable to find theme file for `solarized-dark'と出て、適用されない状態で起動されます。 Pathを確認したところしっかりとPackageでインストールされたものが はいるディレクトリは通っていますし、 M-x load-file RET ~/.emacs.d/init.el とするとエラーは出ずにしっかりとSolarizedのColorthemeが適用されます。 原因は何なのでしょうか?
>設定ファイルにGithubに書かれているように書き込んだのですが これのURLがないとなんとも
>>750 遅レスだけど、これは caml.el の作者のバグっぽいね。
c-toggle-auto-state は、cc-cmds.elを読み込まないと定義されないけど
きっと作者の環境の .emacs には、これをどこかで読み込ませる設定でも
あって、これを require するのを忘れたんだろう…
対処するならば、
(eval-after-load 'caml
'(require cc-cmds))
という方法もある。
というか、ocaml 使うなら MELPA から tuareg 入れておいたら、
autoload設定も auto-mode-alist の追加も不要なはずなんだけどなぁ。
**
>>758 この話題、ちょっと前の gnu.emacs.devel でもあったね。
Emacs 24.4 では lexical-binding の機能を活かして、
コンパイル時に変数チェックまでしてくれるから、
eval-after-load の中もコンパイルすると、変数名のミスなどが見つかるので
有効。もっとも、読み込まないライブラリがあると逆にこれは鬱陶しいので、
ライブラリがない場合は、
(with-no-warnings) で囲むようなマクロを作っておけばさらに便利。
実は Emacs 24.4 には、すでに同じようなことをしてくれる
with-eval-after-load マクロが定義されている。。。
>>777 勘で書くけど、
多分、init.el で、
(package-initialize)
を先頭の方で書いていないんじゃないかな。
これ書かないと、MELPA経由でインストールしたパッケージへの
アクセスが init.el でできない。
(package-initialize) は、init.el 読み込み完了後に
(もしinit.el で実行していないなら)自動的に行われるので
起動後は設定できるとか。
>>780 >with-eval-after-load マクロが定義されている。。。
なんでいままでなかったんだレベルだな
これか (unless (fboundp 'with-eval-after-load) (defmacro with-eval-after-load (file &rest body) `(eval-after-load ,file `(funcall (function ,(lambda () ,@body)))))) さっさか導入しちゃうのも悪くないな
投下 auto-insert で挿入するテンプレートを yasnippet に処理させる & ~/.emacs.d/template にモード名でファイルを放り込んでおけば勝手に auto-insert の対象にする (add-hook 'find-file-hook 'auto-insert) ;; テンプレートファイルのフォルダ. モード名のファイルを配置する (java-mode.java や emacs-lisp-mode.el など) (setq auto-insert-directory (locate-user-emacs-file "template")) (defvar auto-insert-template-modtime nil "テンプレートディレクトリの更新時間.") (defun auto-insert-yas-expand () "`auto-insert' するテンプレートを `yasnippet' のスニペットと見做して展開する." (yas-expand-snippet (buffer-string) (point-min) (point-max))) (defadvice auto-insert (before auto-insert-update-template activate) "`auto-insert' 前にテンプレート一覧を更新する." (let ((modtime (file-attributes auto-insert-directory))) (unless (equal modtime auto-insert-template-modtime) (setq auto-insert-template-modtime modtime) (setq auto-insert-alist nil) (dolist (template (directory-files auto-insert-directory nil "^[^.]")) (add-to-list 'auto-insert-alist (cons (intern (file-name-sans-extension template)) (vector template 'auto-insert-yas-expand)))) ))
>>777 theme は、普通の load-path とは、違う変数をたどるんだけど、
そこいらへんも、package system で、ちゃんと、面倒見てくれてるのかな?
custom-theme-directory
custom-theme-load-path
調べてみると、良いかもしれない。
locate-file (locate-library とか executable-find) の実行結果をキャッシュするのを作った。
init.el なんかでパッケージの有無で分岐して設定変更なんかしてる場合にちょっとだけ起動が速くなる。
http://pastebin.com/hCAGBh6H locate-file-cache.el で保存してなるべく早い位置で require する。
二回目以降の起動ではキャッシュを読むようになるのでディスクアクセスが発生しなくなって
ちょっとだけ速くなる。
>>785 いいね。abbrev, dabbrev, skeleton, tempo, とか全部 yasnippet/auto-complete
に整理してるんで助かった。
(defadvice auto-insert (before auto-insert-update-template activate)
"`auto-insert' 前にテンプレート一覧を更新する."
(dolist (template (directory-files auto-insert-directory nil "-mode\\.[^~]+$"))
(let ((mode (intern (file-name-sans-extension template))))
(setq auto-insert-alist (assq-delete-all mode auto-insert-alist))
(add-to-list 'auto-insert-alist
(cons mode (vector template 'auto-insert-yas-expand))))))
snippet ですむのにわざわざ elisp で実装してドヤ顔している人ってなんなの?
と思わないことはない。
SSD だとあんまり気にならなくない?
>>789 普通のHDDでも誤差レベル。
自分ところは 37 回ぐらい executable-find とか locate-library してるけど
起動時間が 1.0 sec から 0.9 sec になった程度の差だった。
自己満足ではある。
791 :
名無しさん@お腹いっぱい。 :2013/11/10(日) 20:34:49.57
1万回起動すれば1000秒(約16分)の差になる。 メロスも16分遅れていたら約束を果たせなかったかもしれない。 人生の行方を決めるには十分な時間さ。
一日2回起動するとしても16分稼ぐのに13年もかかるのか・・・ PCの性能があがると更に差は縮まるだろうしなかなか過酷な旅路になるな
>>787 一時的なファイルチェックなんかに locate-file 使われると詰むから
init.el 内のみで機能するようにした方が無難だと思う。
init.elc ファイル見てて思ったんだけど、advice 定義の中身ってコンパイルされてないのね。 上の方で eval-after-load の中身をコンパイルしてたけどこっちは出来ないんだろうか。 オプションに compile って付けてみたけど効果がよくわからない。
>>794 適当にadviceした関数の定義をsymbol-functionで見てみるとどうやらコンパイルされてるっぽいから
特に何もしなくてもいいんじゃないのかね。defadviceしたタイミングでコンパイルされるんだろうきっと。
そうすると init.el に advice 書きまくるとバイトコンパイルのせいでどんどん遅くなるんじゃないかって気がしてきた 実際 flet とか advice の中に書いとくと起動時に Compile-Log のバッファが出来てて warning が記録されてる・・
>>790 37回という回数はどうやって計測するの?
>>798 occur で数えたよ。ダサい答えでごめんなさい。
require した別のファイルの中でも呼んでたりするだろうから実際はもう少し多いかもね。
それこそ advice でも書いて数カウントでもしたほうがいいのかもしれない。
流れぶった切るけど。文字列の最初の空白のみからなる行を削除するのってemacsではどう書くのがいい? Gaucheだと (regexp-replace #/^( *\n)*/ str "") と書けるけど、emacsだと (string-match "^\( *\n\)*" " \n\n \n hoge\n \n") はnilになるので。
次のバージョンていつリリースされんだろう?
>>800 \( \) を "" の中に書くときは "\\( \\)"
^ だと行頭すべてにマッチしてしまうので文字列の頭だけなら \\`
(replace-regexp-in-string "\\`\\(?: *\n\\)+" "" " \n\n \n hoge\n \n")
;=> " hoge\n \n"
\\`[ \n]*\n \t はいらんかえ
マクロを eval-when-compile 内で定義しておいてロード時には見えないようにしてる場合、 defadvice の中でそのマクロを使ってしまうとコンパイル時に展開されないためか実行時にエラーになってしまいます。 これを回避する方法はないのでしょうか? cl を eval-when-compile で使いたいのに advice の中で使ってるせいでうまくいかない・・・ ; コンパイル時のみ有効なマクロ (eval-when-compile (defmacro moo () '"moo!")) ; 関数内でマクロ使用 (defun foo () (moo)) ; アドバイス内でマクロ使用 (defun bar () nil) (defadvice bar (before ad-bar activate) (moo)) ; コンパイル後のファイルをロードして実行した結果: ; (fboundp 'moo) => nil ; (foo) => "moo!" ; (bar) => Error: void-function moo ("moo!" になってほしい)
806 :
805 :2013/11/12(火) 16:02:59.87
一部間違えました。 (defadvice bar (before ad-bar activate) (moo)) ↓ (defadvice bar (after ad-bar activate) (setq ad-return-value (moo)))
eval-when-compileで思ったが
>>787 でやってるキャッシュなんか
全部eval-when-compileでやっちゃえばいいんじゃないかと思ったわ
どうせ違う環境にもってったらそんときinit.elコンパイルし直すだろうしな
(when (eval-when-compile (executable-find "w3m")) ...)
みたいな
マニュアルみてもコンパイル時に定数に置き換えるっていってるし
>>806 ad-return-value は before after advice では使えなかった記憶が。
around advice 使うしかなかったような。
809 :
805 :2013/11/12(火) 17:23:22.70
>>808 >>806 で after になおしています。
macroexpand でもダメだったし無理なんですかねえ・・・
810 :
805 :2013/11/12(火) 17:24:22.75
じゃないや・・ マニュアルによると ad-return-value は after でも使えるみたいです。
原理的なおっ説教ですまないが、 - advice を使う - cl パッケージを cl-* なしで使う という2重の意味でこまったことをしている気がする。。。 根本から立ち戻って、本当にそれしか方法がないのか再考はできないかなぁ。 Emacs 24.4. の nadvice.el が使えるようになったら色々と捗る気はするが、 捗らないかもしれない。
>>811 advice はともかく cl-* を使ってるかどうかは関係なくね?
どっちにしろ (require 'cl) しないと使えない上
(require 'cl) はライブラリで使う時は eval-when-compile にしてランタイムに使うなってのは
変わってないでしょ。
>>805 stackoverflow でも似たような質問出ていたけど最後は結局普通に require しろで終わってたな。
他に考えられる方法としては、advice の中身を別関数建てにして予めコンパイルさせるぐらいか。
これだとロード時じゃなくコンパイル時にちゃんと中身までマクロ展開されるし
関数名 typo とかしてても Warning 出してくれるようになる。
(eval-when-compile (defmacro moo () "moo!"))
(defun bar () nil)
(defun ad-bar-internal () (moo))
(defadvice bar (after ad-bar activate) (setq ad-return-value (ad-bar-internal)))
(require 'cl) がランタイムで禁止だったのは同名のEmacs Lispの関数を上書きして、 他のソフトがどっちを使っているのか分からなくなる問題があったため。 最近のEmacs は、clパッケージの関数の先頭に全部 cl- をくっつけることで名前衝突を防ぎ、 普通にrequire できる、 (require 'cl-lib) というのがあるので、支障がなければこっちを 使うべき。
815 :
805 :2013/11/12(火) 21:57:02.45
色々調べたり試してみましたが advice の中で素直にマクロ展開させるのは無理そうでしたorz
cl を止めて cl-lib にしたところコンパイル時の警告が出なくなったので、
自前のマクロ用に
>>813 さんに指摘された関数の形でくくりだすのと合わせて対応してみます。
>>811 さんの教えてくださった nadvice ですが、さらっと見た感じ
advice の中身も普通の関数みたいにコンパイル時にパースされるみたいですね。
導入が楽しみです。
ありがとうございました。
>>805 ,806
(defadvice bar (after ad-bar compile activate)
(setq ad-return-value (moo)))
817 :
800 :2013/11/13(水) 02:53:28.57
>>803-804 ありがとう。汚いコードを書かずに済みました。
バックスラッシュは……普段rx使ってるのでという言い訳を。
(replace-regexp-in-string (rx string-start (* (or blank "\n")) "\n")
""
" \n\n \n hoge\n \n")
818 :
805 :2013/11/13(水) 12:01:28.13
>>816 ありがとうございます。
それは前も試しましたが void-function になります。
compile オプションの説明、Info 見ても正直よくわからないんですよね。
elc ファイル直接見てもわかるんですが事前にコンパイルするって命令ではないようです。
(この場合だと elc の中で moo が展開されていない)
preactivate もいまいち使いどころがわからないし色々 advice は難しい・・・
>>818 24.3.1 で (bar) -> "moo!" となるけど?
820 :
805 :2013/11/13(水) 12:47:16.49
>>819 (fboundp 'moo) が t になってませんか?
(symbol-function 'bar) でコンパイル済みの中身がでますが、その中で moo は展開されていますでしょうか。
なにかの拍子に未コンパイルの方を一度でもロードしてしまうと
moo が定義されてしまってそのまま動いてしまったりするので。
>>820 じゃあこれでどうだ?
(defadvice bar (after ad-bar preactivate activate)
(setq ad-return-value (moo)))
(eval-when-compile
(ad-compile-function 'bar))
822 :
805 :2013/11/13(水) 15:19:12.49
>>821 うーむ、結果変わりませんでした。
preactivate の説明みてると事前にコンパイルしてくれても良さそうな内容に見えるんですけどねえ・・
emacs終了時に.recentfへの書き込み時間がいつの間にか伸びるようになってしまいました package経由でインストールしたelispのせいだと思うのですが、どれが原因か絞り切れていません なにかいい調べ方はありますか
recentf-save-list が終了時に .recentf に保存する関数みたいだけど、 実際にそれに時間かかってるのか、それとも他のが終了時に時間かかってて たまたま .recentf に保存してるメッセージが長く表示されてるように見えてるだけなのか見てみたほうがいいかも。 benchmark とか elp 使って recentf-save-list の実行にかかる時間測ってみるとかね。 あと kill-emacs-hook の中身とか。
バイナリファイルをオープンして最初の4byteをリトルエンディアンでリードして返す、 みたいな処理はemacs lispでどう書けますか? C言語ならfopenしてfreadするだけなのですが…
一旦どっかのバッファに読む必要があるけど insert-file-contents-literally を使えばいいと思う。 これだとファイルのどこをどれだけ読むか指定出来る。 文字コード変換とかしないで読み込んでくれるけど、(set-buffer-multibyte nil) は必要だったかもしれない。
>>826 ありがとうございます!
やっぱりバッファに読む必要があるんですね。
ファイルサイズが大きいとメモリ喰いそうだけど、仕方ないんですかね。。
まずは教えて頂いた関数をヒントに試してみます。
こんな感じ?なんかもっとスッキリ出来るのかな。 あと素の emacs だと 28bit までしか扱えなかったんじゃなかったっけ。最近のは違うんだろうか。 あと insert-file-contents-literally は全部読み込むわけじゃなく、指定した範囲だけ読み込むから とんでもなく大きい場合でも問題ないよ。 (defun read-dword (filename pos) (with-temp-buffer (set-buffer-multibyte nil) (insert-file-contents-literally filename nil pos (+ pos 4)) (let ((result 0)) (dotimes (c 4 result) (setq result (+ (lsh result 8) (string-to-char (buffer-substring (- 4 c) (- 5 c)))))) )))
>>828 サンプルありがとうございます。期待通りに動作しました。
insert-file-contents-literallyは&optionalの引数(beg end)で読み込む範囲を指定できるのですね。
ちゃんとマニュアル読むべきでした。すみません。
あと自分のはemacs 23.4.1ですが整数型はsigned 29bitまでしか扱えませんでした。
Emacsがどういうオプションでビルドされたかを見るにはどうすればいい?
system-configuration-options でわかるみたいだ
たまに *Quail Completions* ってバッファが出来てるんですけど これは何者ですか?
ソースをagでググれば emacs/lisp/international/quail.el にありますね。 簡易入力メソッドフレームワーク "qual" のつくるバッファ。 Emacsの入力フレームワークは「たまご」egg(たくさんまたせてごめんなさい) →eggの簡易版「うずらのたまご」quail.el →quailの簡易版「こまどりのたまご」robin.el という形になっていて、ちょっとしたものをつくる場合は robin.el は便利。
>>834 ありがとうございます。そういう事だったのですね。
Win や Mac の IME しか使ったことなくて分かってませんでした。
単に \ を入力したつもりが Ctrl + \ を押しちゃってただけでした・・・
836 :
名無しさん@お腹いっぱい。 :2013/11/18(月) 00:53:06.94
smartrepを導入したのですが、smartrepによる連続操作実行後にカーソルキーによるカーソルの移動や Deleteキーによる文字削除の動作を行うと、smartrepの解除と共にアルファベットが入力されてしまうのですが これを回避する方法はありますか?? C-fやC-b、C-dを使えば問題ないのですが・・ 環境は Windows + Cygwin です。
837 :
831 :2013/11/18(月) 01:52:01.08
838 :
名無しさん@お腹いっぱい。 :2013/11/18(月) 15:46:47.28
>>836 Mac使ってて、そういう現象は確認できなかったけど…
他のライブラリが影響を及ぼしていないかを確認するため、
素Emacsでsmartrep以外全てオフにした最小限の状態でも
同じ現象が起こるか確認できる?それで起こるなら
そのコードを張ってみてください…
>>838 Macで.emacs.dを削除して最小構成でやってみたのですが、
C-x oooooで画面を切り替えたあと→を押すと「C」と入力されてしまいます。
設定は以下になります。
(require 'package) (add-to-list 'package-archives '("marmalade" . "略")) ;; load-pathを追加する関数を定義します. (略 (add-to-load-path "elisp") (add-to-load-path "elpa") ;;; C-x o,o,o...で画面切り替えを行えるようにします。C (require 'smartrep) (smartrep-define-key global-map (kbd "C-x") '(("o" . 'other-window)))
841 :
名無しさん@お腹いっぱい。 :2013/11/19(火) 06:15:48.72
>>840 こうさん。こちらじゃ再現しない。最小限構成にしても出るのなら、
もうEmacsそのものの環境の問題とかじゃないかな?
でも確かに C-x o のsmartrep 化は便利だなぁ。
いつも windmove で動いてたけどこっちに乗り換えてみるか。
>>841 最後まで付き合ってくれてありがとうございました。
これを機会にC-f,b,n,pを使用した操作に切り替える
という手法で解決しようとおもいます!
カーソルキーがエスケープシーケンスな環境とか。
24.4とか、25って、どうなってるん? 最近リリースないな
24.4のリリースを検討し始めたとこだね。 俺的な改善点はeshellでgitのログとか見れるようになるとこだな。(わかる人しかわからんか)
っていうかgitのログすら見れんシェルを付けるなと。 eshellって名乗るぐらいなら gitログくらいグラフィカルに表示しろ。
eshell なんかまだ使ってる人いるんだな
eshellはるびきちさんが推してたので一応使ってる
つうかeshell以外なに使うんだ?
普通にshell-mode と見せかけて通はterm、これ 素人が手を出すとバッファからぬけられなくなって往生する諸刃の剣
僕は ansi-term ちゃん!
eshellの利点はwindows上でMSYSとか入れなくても、とりあえずcd,ls,cpとか使える事だな。 後はgnuwin32とかからgrepなんかの必須コマンドを落としてくればOK
eshellはなんつーか内部処理の実装が効率悪すぎなんだよね 安全側に寄せてるんだろうけど思わぬ所でシステムコールしまくりみたいな
基本 shell-mode で、たまに ansi-term かな。
Unix 系 OS 上での eshell のいいところってなんだろう
856 :
名無しさん@お腹いっぱい。 :2013/11/20(水) 15:30:20.84
やっぱりカラフルterm+ ♪
eshell はファイルを一気に開いたりするにはいい
find-file でもワイルドカード使えるよね普通に
eshellのもうひとつ便利な機能は**/*.hとかで、ディレクトリを再帰的に辿ってpathを生成してくれるところ
shell-mode 弄りすぎて他のは使えなくなってしまった
その上の例のmaxはマクロが展開された結果に残るけど、 下の例のtempvarは展開時に使うだけで展開された結果には残らない。
>>862 なるほど、マクロの理解が足りてませんでした。
評価結果で置換されるわけだから外側の let は置換後の結果にあらわれてこないと。
(defmacro foo1 () (bar)) と (defmacro foo2 () '(bar)) の違いということですね。
いまいちなんでマクロ本体にシングルクォートを置くのかわからず使っていました。
ありがとうございます。
もう一つ質問です。 intern-soft で非 nil が返ってくるのに obarray の中にシンボルが見つからないということはありうるのでしょうか。 emacs -q で起動した emacs に対して以下を評価しました: (require 'cl-lib) (intern-soft "cl-find") ; => cl-find (cl-find (lambda (sym) (string-match "^cl-find" (symbol-name sym))) obarray) ; => nil intern-soft では cl-find が定義されてるように返ってくるのですが、 cl-find で検索した結果は nil となってしまいました。 実際に obarray を展開してインクリメンタルサーチしても実際中に入っていないように見えます。
mapatoms で vector (obarray) をお探しくだせぇ 参考 (let ((vec (make-vector 1 nil))) (intern "a" vec) (intern "b" vec) (list (intern-soft "a" vec) (intern-soft "b" vec) (intern-soft "c" vec)))
obarray より cl-find の使い方からだな
>>865 ありがとうございます。
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 について勉強してみます。
(length obarray) と mapatoms で数えた要素数が異なるのもなんでかわからない・・・ (let ((count 0)) (mapatoms (lambda (sym) (setq count (1+ count)))) count) ;; length の結果とかなり異なる (ex 1511 vs 22728 など) length のドキュメントを見る限り普通に vector にも使えそうな感じではあるのですが。
872 :
名無しさん@お腹いっぱい。 :2013/11/21(木) 19:05:20.92
imaximaのgnuplot連携ですが外部のgnuplotを呼び出さずにインラインで描画させる方法有りませんか? ( ; ; )誰か助けてorz
呼び出さないってのは gnuplot の window に描画させるんでなく、emacs の window 内に表示させたいってことだよね? gnuplot がない環境でも動くようにって話ならそりゃ無理じゃねえの?としか。
rskkservはruby 1.9に対応してないようですが、 これは簡単には動きませんか?
875 :
名無しさん@お腹いっぱい。 :2013/11/21(木) 19:53:42.68
>>873 gnuplot自体は有ってgnuplot-modeでプロセス作ってコマンド入れればインラインで描いてくれます。
imaximaで使うgnuplotをemacs外部のプロセスじゃなくemacs内のプロセスでインラインにならないかと。
876 :
名無しさん@お腹いっぱい。 :2013/11/21(木) 20:00:30.54
>>872 Imaximaのサイトやブログに書いてあったよ。
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()関数を使用します。
> 引数などの書式は両者とも全く同じです。
877 :
名無しさん@お腹いっぱい。 :2013/11/21(木) 20:33:40.54
>>876 おおおお、(≧∇≦)
ありがとうございます(^o^)/
878 :
名無しさん@お腹いっぱい。 :2013/11/24(日) 06:56:36.40
今更ながら24.3にしてみたですけど、 Warning: function `map' from cl package called at runtime これはどうすれば黙らせられます?
byte-compile-warnings から cl-functions を抜けばいい。 cl-functions だけ外してずらずら列挙するか、'(not cl-functions) とか設定するとか。
あと正攻法でいくならで cl-map に置き換えるとか。 直接書き換えないんでも バージョンみて defalias して上げりゃいいと思う ただ cl-flet なんかは flet と挙動自体が変わってて cl-letf にしないとダメな場合もあるから 単純に defalias すればいいってわけでもなかったりするのもある
C++/CLI を semantic が理解できるようにする方法があったら教えてくださいませ。 c++-modeで開いてみたときの印象からは、 ^ を *, & と同じように扱えれば何とかなりそうなんだけど、 どこをどうすればいいのかがわからなくて。 Doxgenタイプのコメントをつけたいのだけれど、いちいち手で作るのは勘弁してほしいというだけなんで、 semantic使わないで、関数のコメントのテンプレートを生成する方法があれば、そちらもよろしく。
自分で調べろクソが
そこら辺はもう MS の VC 使うとかの方が健全な解な気がしてる
C# なら /// でコメントのテンプレート吐いてくれるからいいんだけれど、 C++ だと吐いてくれないから Semantic で何とかならないかと もしかして、最近のVCではできたりするのかな? 2013 Express インストールしてみる
/usr/share/emacs/lisp/cedet/semantic/bovine/c.el ぐらいを改造してC++に対応させる、のは無理か。 テンプレートだけなら /usr/share/emacs/etc/srecode/cpp.srt に加筆。
正規表現をつかって検索した単語にmultiple-cursorsすることってできますか??
繰り返しが含まれる正規表現なんかだとなんかあやしい結果になりそうだなそれ a*b みたいなのだと aaaaaaaaab とか aab に同時にカーソルが現れて欲しいってことでしょ?
windowsのgnupackでemacsを使っています twittering-mode.elでmaster passwordを使ってタイムラインを開こうとすると パスワードを入力してenterを押したとたん "the authorized token is loaded" というメッセージがエコー欄に表示されてEmacs自体が完全に固まることがあります そのときは強制終了させなければいけません 正常にタイムラインが表示されることがほとんどなのですが、エラーの結果が重大なので気がかりです どのような原因が考えられるのでしょうか
>>889 返すってのはツールチップみたいに表示したいってこと?
>>891 889です
すみません言葉足らずでした
ツールチップの表示ではなくてリンクを埋め込んだテキストを普通に表示する、という意味です
org-modeでurlを書くと自動的にクリッカブルな文字列になりますが
あのようなものをorg-mode以外でも使いたいのです
ありがとうございます。やってみます。
895 :
878 :2013/11/28(木) 02:04:03.37
>>879 >>880 すみません遅くなりましたが、ありがとうございましたm(_ _)m
とりあえず byte-compile-warnings にしてみます
>>890 ありがとうございます。NTEmacsスレで聞いてみます
emacsスレからこちらに誘導されてきました windowsのgnupackでemacsを使っています twittering-mode.elでmaster passwordを使ってタイムラインを開こうとすると パスワードを入力してenterを押したとたん "the authorized token is loaded" というメッセージがエコー欄に表示されてEmacs自体が完全に固まることがあります そのときは強制終了させなければいけません 正常にタイムラインが表示されることがほとんどなのですが、エラーの結果が重大なので気がかりです どのような原因が考えられるのでしょうか
出戻ってんじゃねえかw
すみません 素で間違えてしまいました
微笑ましい
evil使ってるとforward-sexpが行末で止まってしまうんですが、これはevil-move-cursor-backをnilにする以外では避けようがないんですかね
>>902 それ、evil 関係なくない?
うちでは、普通に動いてるっぽいけど。
anything-c-moccor-occur-by-moccorを あらかじめキーワードを指定した状態で呼び出したいです。 ミニバッファに patter:キーワード ↑キーワードがすでに打ち込まれた状態でキーバインドから呼び出したいのですが、 わかる方いらっしゃいますか?
>>904 これかな。
(anything-c-moccur-occur-by-moccur-base "キーワード")
>>905 実行できました。
ありがとうございます!!
907 :
名無しさん@お腹いっぱい。 :2013/11/30(土) 14:51:51.78
>>903 あんまり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です
vimに移るかevilを捨てるか選んで
evilのメリットってctrlを使わないでカーソル移動ができることなのかな そうだとするならばモード移動の切り替えも面倒な気がするけれど 慣れてしまったせいかemacsのctrl+n, ctrl+pの方がモードを気にせず楽だと思うけれどね
>>907 は、 cursor 位置の emacs と、vi 系の違いを理解していない。と思う。
試しに、forward-sexp を、evil の insert state や emacs state で、やってみ。
normal mode のbox cursor と、 emacs での box cursor の位置の解釈の仕方が、
違うんだ。
行末での cursor 位置の違いを emacs state と normal state で
見比べてみると、一個ずれてるのに気づくと思うけど。
ちなみに、エラーメッセージの意味は、閉じカッコの手前で forward に進もうとするから、進めねーよ(意訳)ってことだろう?
対策としては、advice とか使って、ちょっと、手を加えるとかになるんじゃないんかな。
おれは、insert state で使ってすましてる。
変更されているバッファを一度にすべて保存するコマンドはありますか? 今はemacs終了時に変更されているバッファを保存するかどうか聞かれるのでyを何度も押しています
>>911 save-some-buffers に universal-argument を付けて実行。
C-u C-x s かな。
buffer-save-without-query を t にしておけば C-x s で問答無用で保存してくれるようになる。
そのかわり終了時にも聞かれなくなるかもしれない。
914 :
名無しさん@お腹いっぱい。 :2013/11/30(土) 23:10:44.15
>>910 ほんとだ、insertステートだと問題なく動く
多分、normalステートだと行末の改行にカーソルが乗らずに一文字戻るって仕様なんだね
理屈は分かったから後はこっちで色々いじってみるよ
どうもありがとう
smart-compile とか flymake とか quickrun ってなんか上手に統合出来そうな気もするんだけど すでにそういうパッケージってあったりするんだろうか
そう思うなら自分で探してみたらいーんじゃないでしょうかね
(interactive "s表示用テキスト : ") ミニバッファ側 表示用テキスト : 「」 「」に初期値を入れておきたいのですが、やりかたが見つからず。 C-x C-fのようなかんじです。 よろしくおねがいします。
それこそその find-file を見てみりゃわかると思うけど 単に自前でプロンプト出す関数を使ってるだけの話だね。 (defun with-default-input (text) (interactive (list (read-input "Text: " "hello, world"))) (message "Input text: %s" text))
>>918 ありがとうございます。
できました。
lisp全体にですが理解が浅いので助かります。
read-inputってはじめて知りましたw
説明読んだがどういう動きするのかよくわからなかった・・・ 3つ以上に分割してる時に選んだ先のウィンドウをわかりやすく表示するってこと?
使ったらすぐ分かった。ウィンドウが 3つ以上の時に popup で選択先を選べて かつ選ぶウィンドウをわかりやすく色付けするって拡張だったのか。 バッファ選択の場合、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)))) ))
popupで表示して選ぶだけならこれでいける (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) ))))
>>923 delq はもっと使われていい。
(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)))))
smartrep.elでenterキーにコマンドを割り当てたいです keyboard-quitを割り当てたいのですが("<enter>" . 'keyboard-quit)と書いても何も起きませんでした
<return> じゃないの?
えんたあああああああああああああああああああいああああああああああああ!!!! 魔がさした。反省はしてない
entire?
しかしキーボードにはEnterって書いてあるのに、Returnキーとはこれいかに 昔の名残か
931 :
名無しさん@お腹いっぱい。 :2013/12/06(金) 13:36:03.15
enterは電算端末 returnはタイプライター、パンチカードの名残り 押すとキャリッジがリターンしたから
元々はリターンキーだったろ。エンターなんて最近。PC-98もリターンキーだったろ?
933 :
名無しさん@お腹いっぱい。 :2013/12/06(金) 15:11:35.54
大昔から「入力」「送信」なんて表記もあったよ
送信キーは何かで見たな。 大学の図書館にあった検索端末だったかな。
Macのjisキーボードには enter / return両方刻印されてるな。
compile について質問です。 エラーが発生するまで *compilation* ウィンドウを開かない方法はないでしょうか?
>>938 ありがとうございます。正常なら開かないのではなく正常なら閉じる、しかなさそうな感じですね。
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))))))
>>939 compilation-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)))))
compilation buffer を最初から表示させないのを作ってみた。エラーの時だけ表示される。 font-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)))) )
きたねーコード貼るな 日記にでも書いてろ
なにも表示させたくないならflymakeとかも検討してみたら?
emacs 上でテストを書く時にサポートしてくれるようなパッケージってありますでしょうか? 具体的には本体とテストを簡単に行き来出来るようなパッケージを探しています。
そんなものありません
946 :
名無しさん@お腹いっぱい。 :2013/12/07(土) 22:57:48.90
direx でディレクトリを先に表示するようなのを書いた (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)))
設定ファイル内で、 コンパイル時にライブラリが存在してるかどうかチェックして require したり 実行ファイルが存在するかチェックして設定したり、なんてのがよくありますが、 Cのプリプロセッサみたいにコンパイル時にチェックを済ませてしまうことって出来ないんでしょうか? (if (executable-find "ruby") (setq hoge "aaa")) みたいなのがあった場合、コンパイル時に executable-find を実行、if の条件判断までやってしまって ruby がない場合は elc ファイル内になにも残らず、存在する場合は setq だけ残したいです。
マクロを使え (defmacro if-on-compile (cond &rest form) (when cond `(progn ,@form)))
common lispなら (if #.(executable-find "ruby") (setq hoge "aaa")) でいけると思う。 emacs lispでも#.は使えるみたいだけど狙った結果になるかわからん
すまん#.使えないやん
>>949 それだと cond が評価されない気がする
(defmacro if-on-compile (cond &rest form)
(when (eval cond) `(progn ,@form)))
(when (locate... をそれに全部置き換えて eval-when-compile を駆使しまくった結果・・・・ emacs-init-time が 0.9 から 0.8 になった すげえ虚しい 修正に10分くらいはかかってそうだから 6000回 は emacs を起動しないと元が取れない
emacsの起動時間が0.5秒を超えている奴は起動するたびに人生を無駄使いしていると悟るべき。
emacsなんて一週間以上そのまま使い続けたりするし
俺も再起動は滅多にしないな するとしたらOSをリブートしたときとかinit.el関連を書き換えたときくらいかな 強制終了するまでは起動しっぱなしだわ
navi2ch とか wanderlust とか twittering-mode を使わなくなったら わりと頻繁に終了させるようになった。
shell-mode が快適すぎて終了させる気にならない
がんがん再起動するけど
>>953 君にとっては小さな0.1秒でも、
1000年後、2000年後の子孫にとっては貴重な100時間になるかもしれない。
これこそが俺達がパフォーマンスチューニングをする最大の理由なんだ。
emacs-uptime が 8時間こえたことない。たぶん。
self-insert-command の処理時間短縮に成功したなら誇っていい
shell-mode で exit した時にバッファやウィンドウも閉じて欲しいんですがどのようにしたらいいんでしょうか? それっぽいフックがないか探したのですが見当たりませんでした。
964 :
963 :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))))))
965 :
名無しさん@お腹いっぱい。 :2013/12/08(日) 23:51:05.87
>>960 パフォーマンスチューニングする時間にプログラム書いて金に変え、cpuスペックを2倍にした方が合理的。
あるいは、複数端末にして使い分けるとか。
しかし最新のCPUにしてもEmacsは重く感じる… 光速を越える事が出来ないように、Emacsが軽くなることは永遠にないんだろうね。
一昔前のノートPCでemacs24.3だけど軽いよ
968 :
名無しさん@お腹いっぱい。 :2013/12/09(月) 23:39:12.96
>>941 のだと grep とかの compilation-start を使う他の関数まで影響が出るので書き換えた
(dolist (func '(compile recompile))
(eval `(defadvice ,func (around ,(intern (format "%s-silently" func)) activate)
"エラー発生時のみ *compilation* バッファ表示"
(cl-letf (((symbol-function 'display-buffer) 'ignore)
((symbol-function 'set-window-start) 'ignore)
((symbol-function 'set-window-point) 'ignore))
(let (compilation-start-hook) ; local hook ではなく compile のみの hook
(add-hook 'compilation-start-hook
(lambda (proc)
(make-local-variable 'compilation-finish-functions)
(add-hook 'compilation-finish-functions
(lambda (buffer msg)
(with-current-buffer buffer
(font-lock-mode -1)
(font-lock-fontify-buffer)
(font-lock-mode 1)
(if (or (not (string-match "finished" msg))
(text-property-not-all (point-min) (point-max)
'compilation-message nil))
(display-buffer buffer)
(when (get-buffer-window buffer)
(delete-window (get-buffer-window buffer))))))
)))
ad-do-it))))
)
ゴミはってんじゃねえよ
add-hook とか設定を書き換えたときに 設定を有効にするにはどうしたらいいの 再起動するしかないかな
add-hookしたらすぐ有効なんじゃね?
eval-region したり eval-last-sexp したりすればいいのでは。
>>972 >>973 どうもうまくいかないのさ
みんなうまくいってるの
global-set-key とかならうまくいくけども
言葉が足りてない気がする。
976 :
971 :2013/12/11(水) 19:42:05.14
例えば local-set-key とか書き換えて評価しても 反映されないんだけど
(local-set-key (kbd "<f11>") "hello") これを scratch バッファで eval-last-sexp で評価して f11 押して hello ってはいらんのなら なんか余計な設定してるんだろ
add-hook は run-hooks とかで実行されない限り有効にならんから たとえば c-mode-hook になんか追加してもすでに c-mode になってるバッファでは何も起きないよ。 ファイル開き直すなり再度 c-mode にし直すなりしないと run-hooks が働かない。 local-set-key はしらん。目的のバッファじゃなくて init.el 開いてるバッファで eval してるってオチじゃないの。
980 :
971 :2013/12/12(木) 11:37:11.49
local-set-key のやつは ファイル開き直すのでうまくいきました 以前にどうやってもうまく行かないケースがあって 質問しようと思ってたのを忘れてしまった どうもありがとう
init.el で eval してたってオチか
Emacsでテキストをマウスクリック、またはテキスト上でEnterし特定の関数を実行させたいです。 set-text-properties等でイベント別に実行させたりできるのでしょうか? または別に専用の関数等あるのでしょうか?
>>983 ありがとうございます!
英語は苦手ですが参考にしてやってみます
そりゃ見た目にハデで効率あがるのも認めるけど やってることはマークと正規表現とquery-replaceを縦横に使いこなすっつー emacs使いにとっちゃ息をするほどの操作と同じことだろ
emacs使いっていうか大抵のエディタ使ってる奴はそれぐらいのことするわな。 multiple-cursor ってなんかズレたらどうしようってイメージしかないんだよな
もちろん普通のEmacserは関数内とかでC-M-hでリージョン選択してquery-replaceをするだろうね それとC-x r tかな ただ、インパクトは凄いんで multiple-cursor を暫く使ってみる事にするよ
cua-mode で満足してたのに、また面白そうなもの教えてくれやがって・・・
cua といえば C-S-space の cua-toggle-global-mark ってあんまり使われてなさそう
代用はあるけど 単純にかっけえなあw
>>990 cuaモードを使ってるけど、cua-toggle-global-markは使ったことなかった。
今使ってみたけどあらかじめペースト先を指定しておく位の使い方しか分からなかった。
何か便利な使い方があったら教えてくれ。
連番を指定回数分バッファに出力する何かいい方法はないでしょうか 1 2 3 4 5 こういう風に各行に一つずつ出したいです
rectangle-number-lines
>>992 ぶっちゃけそれぐらいじゃない?
multiple-cursor みたいにへえーおもしれーって一回触っておわる系。
C-u M-! seq 1 5
997 :
993 :2013/12/14(土) 17:33:10.84
>>994 ありがとうございます。その関数を使えばリージョンの各行に数値を挿入できることを確認しました。
ですが指定した個数を挿入することはできないようです。
(defun test (start end)
(loop for i from start to end do (insert (concat (number-to-string i) "
"))))
(test 1 10)のように始まりと終わりの数値を指定すればそれを一気に挿入するのが理想ですが
そのようなものがあれば知りたいです。
あとlispの書き方でつまずいたのですがdefunの引数に&optionalを指定したとき、デフォルトの値を設定することはできませんか?
上の例だとstartの既定値を1にしたいと思ったのですが、やり方が分かりませんでした。
998 :
993 :2013/12/14(土) 17:34:22.77
おらー!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。