Emacs Part 39
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2011/11/29(火) 17:50:44.24Emacs Part 38
http://hibari.2ch.net/test/read.cgi/unix/1308635178/
0713名無しさん@お腹いっぱい。
2012/01/14(土) 15:16:00.39違うと思う。
0714名無しさん@お腹いっぱい。
2012/01/14(土) 15:39:05.52何もかも一人でやってるようなグラマにろくなのはいないっていう悪例だよ。
0715名無しさん@お腹いっぱい。
2012/01/14(土) 15:43:01.18正規表現は^[\t\s]+でカーソル行を取得するのは(thing-at-point 'line)でよいのですが
取り出した文字列を正規表現で検索する方法がわかりません
正規表現で検索というとre-search-forwardがありますが
これではバッファ内の文字列を検索することになってしまいます
どうすればいいでしょうか
0716名無しさん@お腹いっぱい。
2012/01/14(土) 15:48:26.550717名無しさん@お腹いっぱい。
2012/01/14(土) 15:57:07.690718名無しさん@お腹いっぱい。
2012/01/14(土) 16:24:06.55ありがとうございます。調べた結果
string-matchでもre-search-backwardでもできました
0719名無しさん@お腹いっぱい。
2012/01/14(土) 16:39:21.50>>708
ありがとうございます。
自分で設定する方法はわからないので,しばらくはimenu-treeと併用してみます。
0720名無しさん@お腹いっぱい。
2012/01/14(土) 19:31:25.59・コンパイル後は内容が展開されるのでマクロ自体は未定義になってほしい
・コンパイルしないで el のみのロードの場合は普通に定義されたままでよい
eval-when-compile だと el のみのロードの場合にダメになっちゃいますよね・・・
0721名無しさん@お腹いっぱい。
2012/01/14(土) 19:35:53.07describe-function eval-when-compile
> In interpreted code, this is entirely equivalent to `progn'.
0722名無しさん@お腹いっぱい。
2012/01/14(土) 19:53:14.68ありがとうございます。 eval-when-compile の中にマクロ定義を置く、で何ら問題なかったんですね。
しかし、eval-after-load みたいなコンパイルされない式の方だと実行時にマクロ定義がないとエラーになってしまいます。
これをコンパイル時にマクロ展開する方法はないのでしょうか?
0723名無しさん@お腹いっぱい。
2012/01/14(土) 20:26:35.83(defun my-func () (loopとか))
(eval-after-load "library" '(my-func))
じゃだめなのけ?
0724名無しさん@お腹いっぱい。
2012/01/14(土) 20:36:30.14一応別解
(eval-when-compile (defmacro somemacro (x) (concat x "-ok")))
(eval-after-load "hogehoge"
(eval-when-compile
(macroexpand-all
'(progn
(setq hoge (somemacro "hoge"))))))
eval-after-load から macroexpand-all までを eval-when-compile 内にマクロで置けば完璧
これなら el でロードしてもコンパイルしてもちゃんとマクロ展開される
0725名無しさん@お腹いっぱい。
2012/01/15(日) 16:36:48.20レジストリ書き換える方法で良ければ、scancode map でぐぐると見つかる。
XP以降はLoginユーザ別に設定できる。
windows server 2003 resource kitに入っている remapkey.exe というのでも
出来るけど。ユーザ個別設定は出来ないかもしれない。
0726名無しさん@お腹いっぱい。
2012/01/16(月) 18:42:59.64elispがどこかで公開されていた気がするのですが
ご存じの方はいらっしゃいませんか
これでカーソル移動がもっと快適になるとか書いてあったような気がします
るびきち本とかどっちかと思いましたが見つかりませんでした
0727名無しさん@お腹いっぱい。
2012/01/16(月) 18:46:46.900728名無しさん@お腹いっぱい。
2012/01/16(月) 18:50:20.77他にも似たようなのあるかもしらんが
0729名無しさん@お腹いっぱい。
2012/01/16(月) 20:11:35.65ありがとうございます。両方の情報とも関係がありそうだと検討をつけて探したら
そのものずばりのページにたどり着けました
http://emacs.g.hatena.ne.jp/k1LoW/20101211/1292046538
この図こそ記憶にあったものです
感謝です
0730名無しさん@お腹いっぱい。
2012/01/16(月) 20:25:39.60微妙にずれてしまう気がします
対処策はあるのでしょうか
0731名無しさん@お腹いっぱい。
2012/01/16(月) 21:45:30.64NTEmacsスレの方がストレートな解答が貰えるかもしれない。
Windowsだとフォント重ねあわせでボールド化するとかの設定有効にしてると
ずれることがあるって聞いたことがあるな。変数名は忘れたが。
0732名無しさん@お腹いっぱい。
2012/01/16(月) 22:03:50.99Rictyを使ってるんだけど例えば $ の幅が他の文字の 90% ぐらいになってる
フォントの設定はなんか難しいから放置中
0733名無しさん@お腹いっぱい。
2012/01/16(月) 22:18:58.39しかもライセンスの問題でバッチ処理で自分で結合処理するんだった記憶が。
幅あってないんじゃない?
0734名無しさん@お腹いっぱい。
2012/01/16(月) 22:31:27.690735名無しさん@お腹いっぱい。
2012/01/16(月) 22:40:43.46違うフォントや違うサイズが割り当てられてたりしない?
0736名無しさん@お腹いっぱい。
2012/01/16(月) 23:02:15.92init.el の関係ありそうな設定部分を貼っときます
http://codepad.org/cN7neV2I
($) xft:-unknown-Ricty-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 (#x07)
(1) xft:-unknown-Ricty-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 (#x14)
0737730
2012/01/17(火) 13:39:36.57フォントのサイズを3の倍数にすればよいだけでした
>Emacs で等幅フォントの半角文字・全角文字の横幅比 1:2 を必ず達成するフォント設定
ttp://stickydiary.blog88.fc2.com/blog-entry-107.html
0738名無しさん@お腹いっぱい。
2012/01/17(火) 14:43:24.37(defun random-string (length)
(let ((i length)
(s "0123456789abcdefghijklmnopqrstuvwxyz")
(a '())
n c)
(while (> i 0)
(setq n (random 36))
(setq c (substring s n (+ n 1)))
(setq a (cons c a))
(setq i (- i 1)))
(string-join "" a)))
0739名無しさん@お腹いっぱい。
2012/01/17(火) 14:50:18.40(defun random-string (length)
(let ((i length)
(s "0123456789abcdefghijklmnopqrstuvwxyz")
(a '())
n c)
(while (> i 0)
(setq n (random 36))
(setq c (substring s n (1+ n)))
(setq a (cons c a))
(setq i (- i 1)))
(mapconcat 'identity a "")))
0740名無しさん@お腹いっぱい。
2012/01/17(火) 15:05:13.65(let ((s "0123456789abcdefghijklmnopqrstuvwxyz")
a n)
(while (> length 0)
(setq n (random 36))
(setq a (concat a (substring s n (1+ n))))
(setq length (1- length)))
a))
0741名無しさん@お腹いっぱい。
2012/01/17(火) 15:24:40.20(concat (loop with s = "0123456789abcdefghijklmnopqrstuvwxyz"
repeat length
collect (aref s (random 36)))))
0742名無しさん@お腹いっぱい。
2012/01/17(火) 15:40:14.13(let* ((offset (random 36))
(char (substring "0123456789abcdefghijklmnopqrstuvwxyz" offset (1+ offset))))
(if (> length 1)
(concat char (random-string (1- length)))
char)))
0743名無しさん@お腹いっぱい。
2012/01/17(火) 15:59:27.93(substring (shuffle-vector "0123456789abcdefghijklmnopqrstuvwxyz")
0 length))
0744名無しさん@お腹いっぱい。
2012/01/17(火) 16:08:57.86(loop with s = (make-string length 0)
for i from 0 to (1- length)
do (aset s i (aref "0123456789abcdefghijklmnopqrstuvwxyz" (random 36)))
finally return s))
0745名無しさん@お腹いっぱい。
2012/01/17(火) 16:13:45.580746名無しさん@お腹いっぱい。
2012/01/17(火) 16:33:07.710747名無しさん@お腹いっぱい。
2012/01/17(火) 17:17:27.280748名無しさん@お腹いっぱい。
2012/01/17(火) 17:26:31.480749名無しさん@お腹いっぱい。
2012/01/17(火) 17:29:19.73なんで?
0750名無しさん@お腹いっぱい。
2012/01/17(火) 17:33:44.720751名無しさん@お腹いっぱい。
2012/01/17(火) 17:41:13.000752名無しさん@お腹いっぱい。
2012/01/17(火) 17:44:04.870753名無しさん@お腹いっぱい。
2012/01/17(火) 17:47:45.790754名無しさん@お腹いっぱい。
2012/01/17(火) 17:58:40.750755名無しさん@お腹いっぱい。
2012/01/17(火) 18:52:51.80好きな色にキーボード光らせるなら
ctrとaltは目立つ色にしたいな
0756名無しさん@お腹いっぱい。
2012/01/17(火) 18:53:41.57誤爆?
0757名無しさん@お腹いっぱい。
2012/01/17(火) 18:55:29.08こいつでemacsとか最高じゃないか
0758名無しさん@お腹いっぱい。
2012/01/17(火) 18:58:37.67Keyboard キーボード 3
http://toro.2ch.net/test/read.cgi/unix/1285489282/
0759名無しさん@お腹いっぱい。
2012/01/17(火) 19:17:47.77テンキーレスってところがいいな。
英語配列ならなおよかったんだけど。
0760名無しさん@お腹いっぱい。
2012/01/17(火) 19:20:18.21なんかヤダ。
0761名無しさん@お腹いっぱい。
2012/01/17(火) 19:23:45.050762名無しさん@お腹いっぱい。
2012/01/17(火) 20:16:45.69色を変えるってのはできないんでしょう?
0763名無しさん@お腹いっぱい。
2012/01/17(火) 20:25:40.120764名無しさん@お腹いっぱい。
2012/01/17(火) 20:58:16.610765名無しさん@お腹いっぱい。
2012/01/17(火) 21:42:54.57論文書くのにWordだとだるい
↓
Emacs + LaTexってよさげ
↓
Tutorialをやってみる
↓
るびきち本を買ってくる ← いまここ
独特の操作系で敷居が高いと思っていたけれど、
これはこれでアリだと思う様になってきた。
0766名無しさん@お腹いっぱい。
2012/01/17(火) 21:44:16.70LaTeX を使うなら他のエディタを選択することもできただろうに。
0767名無しさん@お腹いっぱい。
2012/01/17(火) 22:16:48.10しかしGoogle DocsやEvernoteなんかまで編集できるとは思わなかった。
0768名無しさん@お腹いっぱい。
2012/01/17(火) 22:21:42.98でもブラインドタッチしてる以上あんまり色かわっても意味ないな。
無効なキーを押すと電流が走るとかなら教育効果があるかもしれん。
0769名無しさん@お腹いっぱい。
2012/01/17(火) 22:22:11.64今ならまだ間に合う。引き返せ。
わりとマジで。
0770名無しさん@お腹いっぱい。
2012/01/17(火) 22:26:38.41後悔してる理由教えて
0771名無しさん@お腹いっぱい。
2012/01/17(火) 22:28:11.82後悔してる理由教えて
0772名無しさん@お腹いっぱい。
2012/01/17(火) 22:39:33.150773名無しさん@お腹いっぱい。
2012/01/18(水) 01:28:50.52たくさんの人に答えていただき、ありがどうございます。
けど、結局どう書くのがいいのかは、よみとれませんでした。
・string-joinよりconcatのほうがいいの?
・loopとかつかったほうがいいの?
・for i from 0 to ... とか初めて見たけど、これって普通に使われているの?
もうちょっと、EmacsLisp初心者向けにお願いしたいんですが、だめでしょうか。
0774名無しさん@お腹いっぱい。
2012/01/18(水) 02:47:01.89どうせ中身は mapconcat なんだろうけど
0775名無しさん@お腹いっぱい。
2012/01/18(水) 02:48:56.760776名無しさん@お腹いっぱい。
2012/01/18(水) 08:52:46.80> ・string-joinよりconcatのほうがいいの?
・mapconcat は文字列のリストに作用するし、concat は char のリストに作
用すると覚えておけ。apply 使えるようになれば違いはほとんどない。
> ・loopとかつかったほうがいいの?
とりあえず使うな。while と mapcar を覚えろ。
> ・for i from 0 to ... とか初めて見たけど、これって普通に使われているの?
はい。loop に狂ってる連中は使う。ほとんどが上級者だな。
ここで質問する前に他の人のコードをひたすら読め。
elisp以前にプログラマの基本だ。
0777名無しさん@お腹いっぱい。
2012/01/18(水) 10:08:52.240778名無しさん@お腹いっぱい。
2012/01/18(水) 12:35:55.81日付と履歴情報が自動的に更新されている気がする
たとえば http://www.emacswiki.org/emacs/download/auto-install.el
日付の自動更新はtime-stamp.elでできるけど
履歴情報(changelog)の自動更新はどうやるのだろう
0779名無しさん@お腹いっぱい。
2012/01/18(水) 16:24:31.76elispファイルに履歴なんて書いても誰もみないから分離してほしいよな。
githubにでもリポジトリ公開すればいいのに。
0780名無しさん@お腹いっぱい。
2012/01/18(水) 16:31:22.63まあChangeLogはふつう別ファイルだから何かしら細工していると思うが
$Id: の部分も別ファイルのChangeLogを挿入しているだけかと
0781名無しさん@お腹いっぱい。
2012/01/18(水) 17:06:37.54> とりあえず使うな。while と mapcar を覚えろ。
mapcもね
0783名無しさん@お腹いっぱい。
2012/01/18(水) 18:12:11.630784名無しさん@お腹いっぱい。
2012/01/18(水) 18:42:21.520785名無しさん@お腹いっぱい。
2012/01/18(水) 20:53:48.69コンパイルするしかない?
0786名無しさん@お腹いっぱい。
2012/01/18(水) 20:59:27.450787名無しさん@お腹いっぱい。
2012/01/18(水) 22:51:29.370788名無しさん@お腹いっぱい。
2012/01/19(木) 08:03:24.33なんかもうどうでもよくなった
0789名無しさん@お腹いっぱい。
2012/01/19(木) 08:36:10.64とか言われない限り取り除く気は無い
0790名無しさん@お腹いっぱい。
2012/01/19(木) 16:08:28.58やりたいことは、現在のポジションを短い名前付きで覚えておき、あとからその名前を使ってジャンプすることです。
emacsを終了しても覚えておかなくていいです。
0791名無しさん@お腹いっぱい。
2012/01/19(木) 16:12:47.560792名無しさん@お腹いっぱい。
2012/01/19(木) 17:28:51.63ありがとうございます。
0793名無しさん@お腹いっぱい。
2012/01/19(木) 21:41:24.31キツいhookだなぁ。
0794名無しさん@お腹いっぱい。
2012/01/19(木) 22:08:53.23Rubyで書くとこんな感じです。
arr = []
region.each_line do |line|
if line =~ regexp
arr << $1
end
end
リージョンを受け取るには (interactive "r") を指定するらしいところまではわかりましたが、
その先がさっぱりわかりません。だれか助けて。
(defun regexp-collect-matched-in-region (beg, end)
(interactive "r")
;; どう書けばいいの?
)
0795名無しさん@お腹いっぱい。
2012/01/19(木) 22:28:30.59リージョンの開始位置までポイントを進めて、
リージョンの終了位置を検索の境界に指定して検索を進めればいい。
goto-char、re-search-forward と match-string とかを describe-function しなさい。
save-restriction とか save-excursion、save-match-data とかもぐぐるといいかもね。
単純に操作としてやりたいだけなら keep-lines とかはどうかね。
0796名無しさん@お腹いっぱい。
2012/01/19(木) 22:52:46.90いいから解答教えろよ役にたたねえな
0797名無しさん@お腹いっぱい。
2012/01/19(木) 22:56:09.090798名無しさん@お腹いっぱい。
2012/01/20(金) 00:07:41.12ありがとうございます。
こんなかんじになりました。
(defun regexp-collect-matched-in-region (regexp index beg end)
(let ((list '()))
(save-excursion
(goto-char beg)
(while (re-search-forward regexp end t)
(setq list (cons (match-string index) list))))
(reverse list)))
どうでしょうか?
なお796は別人ですので無視してください。
0799名無しさん@お腹いっぱい。
2012/01/20(金) 00:11:48.82listって変数名は関数のlistとかぶってるから別の方がいいかも。特に動作上の弊害はないんだけど。
リストへの追加は push でもいいかもね。
0800名無しさん@お腹いっぱい。
2012/01/20(金) 00:20:11.57よく見るのはlis か lst かな
0801名無しさん@お腹いっぱい。
2012/01/20(金) 00:55:32.980802名無しさん@お腹いっぱい。
2012/01/20(金) 02:47:45.08eldocとかで不必要におかしな名前で出てくるのは間が抜けた感じ。
0803名無しさん@お腹いっぱい。
2012/01/20(金) 08:31:17.14reverse を nreverse にする
そもそも (goto-char end) + (re-search-backward ...) を使うと、 reverse がいらなくなる
loop 大好き
(save-excursion
(goto-char beg)
(loop while (re-search-forward regexp end t)
collect (match-string index)))
0804名無しさん@お腹いっぱい。
2012/01/20(金) 08:40:02.69> そもそも (goto-char end) + (re-search-backward ...) を使うと、
> reverse がいらなくなる
これやると正規表現の量指定子はどういう挙動をするの?
0805名無しさん@お腹いっぱい。
2012/01/20(金) 11:18:01.360806名無しさん@お腹いっぱい。
2012/01/20(金) 12:17:24.19これのインデントの関数の再設定を見て疑問に思ったのですが例えば
(add-hook 'text-mode-hook
(lambda ()
(setq indent-line-function (lambda () (insert " ")))))
このように書くのと、
(add-hook 'text-mode-hook
(lambda ()
(set (make-local-variable 'indent-line-function) (lambda () (insert " ")))))
と書くのでは、一つ目の方ではtext-mode-hook以外にも適用されてしまうと
理解しているのですが、これでいいでしょうか
それと、add-hook で他のモードに影響させないバッファローカルな関数を定義することは可能でしょうか
(add-hook 'input-method-activate-hook
(lambda() (set-cursor-color "yellow")))
この設定をelispモードのバッファにのみ適用させたいです
0807名無しさん@お腹いっぱい。
2012/01/20(金) 12:22:38.490808名無しさん@お腹いっぱい。
2012/01/20(金) 12:28:15.44> と書くのでは、一つ目の方ではtext-mode-hook以外にも適用されてしまうと
text-mode-hook が実行? されるバッファ以外にもだけれど、合ってる。
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(add-hook 'input-method-activate-hook (lambda() (set-cursor-color "yellow")) nil 'local)))
0809名無しさん@お腹いっぱい。
2012/01/20(金) 13:20:47.87ありがとうございます。その例とadd-hookのdocを見て理解できました。
0810名無しさん@お腹いっぱい。
2012/01/20(金) 17:42:04.360811名無しさん@お腹いっぱい。
2012/01/20(金) 18:14:36.03http://www.reddit.com/r/emacs/comments/ook6a/does_something_like_this_exist_for_emacs/
0812名無しさん@お腹いっぱい。
2012/01/21(土) 00:58:51.832chでは連続した空白スペースが省略されると思うんだが
■ このスレッドは過去ログ倉庫に格納されています