Emacs Part 39
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2011/11/29(火) 17:50:44.24Emacs Part 38
http://hibari.2ch.net/test/read.cgi/unix/1308635178/
0527名無しさん@お腹いっぱい。
2012/01/06(金) 12:36:51.01うまく動かせている方はいらっしゃりますでしょうか?
find-grep-dired のソースを見てみると、lgrep が対応していないオプション -e がハードコーディングされていたので
defadvice で書き換えたのですが、こんどは lgrep に出力無しにするオプションがないため
dired 側がまともに動かなくなりました。
0528名無しさん@お腹いっぱい。
2012/01/06(金) 13:15:53.030529名無しさん@お腹いっぱい。
2012/01/06(金) 13:20:10.22* 部外者/非Emacsユーザーの書き込みも可。但し、女性の書き込みは場の雰囲気を乱すので不可
0530名無しさん@お腹いっぱい。
2012/01/06(金) 13:26:07.82find-grep-dired で lgrep を使うメリットは何?
0531名無しさん@お腹いっぱい。
2012/01/06(金) 13:26:47.90どうすればよいですか
候補選択時だけカーソルキーまで手を伸ばすのに違和感がありますので
0532名無しさん@お腹いっぱい。
2012/01/06(金) 13:32:39.48日本語で検索したかったので。
色んなエンコードのファイルが散らばっているのです。
0533名無しさん@お腹いっぱい。
2012/01/06(金) 13:32:56.080536名無しさん@お腹いっぱい。
2012/01/06(金) 13:53:42.910537名無しさん@お腹いっぱい。
2012/01/06(金) 13:55:35.120538名無しさん@お腹いっぱい。
2012/01/06(金) 13:59:10.090539名無しさん@お腹いっぱい。
2012/01/06(金) 14:06:22.37ヒットしないならコマンドを呼び出した位置に入力した文字列を装飾して挿入したいです
(interactive)
(let ((str (read-string "input: ")))
(save-excursion
(while (search-forward str nil t) ; バッファ内の文字列とヒットしてしまった
;; ここで(read-string)を再度呼び出したい
))
;; save-excursionを抜けてからstrを使って挿入する
(insert (format "%s" (make-my-decoration str))))
このような処理を考えたのですが
(read-string)を二度書かない方法はあるでしょうか
0540名無しさん@お腹いっぱい。
2012/01/06(金) 14:07:36.00(save-excursion
は
(save-excursion
(goto-char (point-min))
です
0541名無しさん@お腹いっぱい。
2012/01/06(金) 14:09:26.25それとも再帰的に処理したいってことか?
0542名無しさん@お腹いっぱい。
2012/01/06(金) 14:29:08.57(interactive)
(let ((buf (save-excursion
(save-restriction
(widen)
(buffer-substring-no-properties (point-min) (point-max)))))
str)
(save-match-data
(while (and (setq str (read-string "input:"))
(string-match (regexp-quote str) buf))))
(insert (format "%s" (make-my-decoration str)))
))
0543名無しさん@お腹いっぱい。
2012/01/06(金) 14:38:52.45widen するかどうかは処理内容によるんじゃないのか?あとバッファ全コピはやりすぎだ
(defun somefunc ()
(interactive)
(let (str)
(save-match-data
(while (and (setq str (read-string "input:"))
(save-excursion
(goto-char (point-min))
(search-forward str nil t))))
(insert (format "%s" (なんか str)))
)))
0544名無しさん@お腹いっぱい。
2012/01/06(金) 14:54:56.860545名無しさん@お腹いっぱい。
2012/01/06(金) 14:56:12.28そこでdefine-generim-modeで作ったモードにも同様の機能を盛り込みたいのですが
どうすればよいのですか
elispのコメントの仕様と同じものを希望します
具体的には、文字列が入力されている行なら行末に;1つ
(私の環境ではelispでは行末から20文字くらい右につきます)
リージョンが設定されているか
行に何も書いていなければ行頭に;2つ
よろしくお願いします
0546名無しさん@お腹いっぱい。
2012/01/06(金) 14:59:19.24いいことだな。
0547名無しさん@お腹いっぱい。
2012/01/06(金) 15:01:11.90るびきちのせいでこのスレのレベルが低下するのは勘弁だぜ
0548名無しさん@お腹いっぱい。
2012/01/06(金) 15:01:27.84外してたらすまんが、define-generic-mode の引数で正しくコメントの書式設定してたら
commend-dwim で普通にその動作にならない?
0549名無しさん@お腹いっぱい。
2012/01/06(金) 15:02:47.50http://www.reddit.com/r/emacs
0550名無しさん@お腹いっぱい。
2012/01/06(金) 15:14:40.55,,;f::::::::::::::::::::::ヽ
i::/' ̄ ̄ ̄ヾi::l
|::| / \,|::|
|r-( ・ );( ・ )-|
( ヽ :::(__)..:: } <・・・で?
,____/ヽ -==- /
r'"ヽ t、 ヽ___/
/ 、、i ヽ__,,/
/ ヽノ j , j |ヽ
|⌒`'、__ / / /r |
{  ̄''ー-、,,_,ヘ^ |
ゝ-,,,_____)--、j
/ \__ /
0551名無しさん@お腹いっぱい。
2012/01/06(金) 15:40:58.79別解っぽいものを書いてみた。
call-interactively は使わないほうが行儀が良いような気がする。
>>544
変だったら指摘してくれると大助かり。
(defun somefunc (str)
(interactive "sinput: ")
(if (save-excursion
(goto-char (point-min))
(save-match-data
(search-forward str nil 'noerror)))
(call-interactively 'somefunc)
(insert str)))
ただし call-interactively は使わないほうが行儀が良い気がする。
0552名無しさん@お腹いっぱい。
2012/01/06(金) 17:21:25.66http://www.youtube.com/watch?feature=player_detailpage&v=D1sXuHnf_lo#t=78s
0553名無しさん@お腹いっぱい。
2012/01/06(金) 17:31:06.540554名無しさん@お腹いっぱい。
2012/01/06(金) 17:45:38.45ほれ
;; popwin 管理下におく
(add-to-list 'popwin:special-display-config `(,sdic-buffer-name))
;; sdic-display-buffer 書き換え
(defadvice sdic-display-buffer (around sdic-display-buffer-normalize activate)
"sdic のバッファ表示を普通にする。"
(let ((p (or (ad-get-arg 0)
(point))))
(and sdic-warning-hidden-entry
(> p (point-min))
(message "この前にもエントリがあります。"))
(goto-char p))
(display-buffer (get-buffer sdic-buffer-name)))
0555名無しさん@お腹いっぱい。
2012/01/06(金) 17:53:07.75ありがとでも sdic-describe-word-at-point がちょっと変な気がする
0556名無しさん@お腹いっぱい。
2012/01/06(金) 17:59:14.72ほれ。あとちょっと挙動違ってた部分もついでになおした。
;; sdic-display-buffer 書き換え
(defadvice sdic-display-buffer (around sdic-display-buffer-normalize activate)
"sdic のバッファ表示を普通にする。"
(setq ad-return-value (buffer-size))
(let ((p (or (ad-get-arg 0)
(point))))
(and sdic-warning-hidden-entry
(> p (point-min))
(message "この前にもエントリがあります。"))
(goto-char p)
(display-buffer (get-buffer sdic-buffer-name))
(set-window-start (get-buffer-window sdic-buffer-name) p)))
0557名無しさん@お腹いっぱい。
2012/01/06(金) 18:14:46.00(defadvice sdic-other-window (around sdic-other-normalize activate)
"sdic のバッファ移動を普通にする。"
(other-window 1))
(defadvice sdic-close-window (around sdic-close-normalize activate)
"sdic のバッファクローズを普通にする。"
(bury-buffer sdic-buffer-name))
0558名無しさん@お腹いっぱい。
2012/01/06(金) 18:20:47.72>(add-to-list 'popwin:special-display-config `(,sdic-buffer-name))
を
(add-to-list 'popwin:special-display-config `(,sdic-buffer-name ,sdic-window-height))
に直したら大分良くなった
0559名無しさん@お腹いっぱい。
2012/01/06(金) 18:21:28.63(add-to-list 'popwin:special-display-config
`(,sdic-buffer-name :height ,sdic-window-height))
0560名無しさん@お腹いっぱい。
2012/01/06(金) 18:33:53.570561名無しさん@お腹いっぱい。
2012/01/06(金) 19:08:58.15こいつらみんな無職なんだぜ……
0562545
2012/01/06(金) 19:46:26.97ありがとうございます。確認してみました。
(define-generic-mode 'my-mode
'(";")
こういう書き出しではじまるgeneric-modeで
;の出力される位置は行頭行末とも適切だとわかったのですがただ行頭が;;になりません
普通generic-modeでこう設定すると行頭は;;となるのでしょうか
0563名無しさん@お腹いっぱい。
2012/01/06(金) 20:19:12.42emacs-lisp-mode みてみたら、どうやら
comment-add って変数で ; の数を制御しているみたい。
モードのセットアップしてるところで
(setq (make-local-variable 'comment-add) 1) ってやってみて。
0564名無しさん@お腹いっぱい。
2012/01/06(金) 20:19:20.550565名無しさん@お腹いっぱい。
2012/01/06(金) 20:20:28.45setq じゃなくて set ね
0566名無しさん@お腹いっぱい。
2012/01/06(金) 20:23:51.570568名無しさん@お腹いっぱい。
2012/01/06(金) 20:31:57.02思うにあいつかなりドケチだよな。
0569名無しさん@お腹いっぱい。
2012/01/06(金) 20:41:56.80http://d.hatena.ne.jp/rokujyouhitoma/20110816/1313468638
lispじゃなくて普通の方だな
0570539
2012/01/06(金) 21:11:16.68ありがとうございます。save-match-data の使い方を勉強します。
>>541
説明が不足でした。重複している処理なので
whileのたぐいで一度だけ書けばどうにかならないかと悩んでいました。
書き方は再帰でもloopでもかまいませんでした。
0571名無しさん@お腹いっぱい。
2012/01/06(金) 21:23:48.68save-match-data は >>542 が string-match 使った時に混入しただけで
search-forward 使う分には入れる必要ないかと。
0572名無しさん@お腹いっぱい。
2012/01/07(土) 00:03:43.680573名無しさん@お腹いっぱい。
2012/01/07(土) 00:07:29.320574名無しさん@お腹いっぱい。
2012/01/07(土) 00:30:53.330575名無しさん@お腹いっぱい。
2012/01/07(土) 01:04:50.460576名無しさん@お腹いっぱい。
2012/01/07(土) 01:23:09.550577名無しさん@お腹いっぱい。
2012/01/07(土) 10:32:37.890578名無しさん@お腹いっぱい。
2012/01/07(土) 10:42:25.69と思ったら一応出来ないことはないみたい
http://www.emacswiki.org/emacs/EmacsOnAndroid
0579名無しさん@お腹いっぱい。
2012/01/07(土) 11:44:15.55elisp だけでの並列プログラミングが実現出来るんじゃないか?
マルチスレッドじゃなくマルチプロセスだけど。
0580名無しさん@お腹いっぱい。
2012/01/07(土) 11:46:26.85Emacs for Android
ttp://d.hatena.ne.jp/MATSUZAKI/20101104/1288882148
0581名無しさん@お腹いっぱい。
2012/01/07(土) 12:25:49.29emacs24からはポート指定でサーバ立ち上げられるし
server-eval-at なんてのも追加されてるからあながち間違ったアプローチじゃないとおもう。
0582名無しさん@お腹いっぱい。
2012/01/07(土) 14:14:17.26このようなテキストがあるところで
akasatana
hamayarawa
ikisitini
「元のテキスト 元のテキスト」のようにテキストを複製するかのような処理を
正規表現の置換で行いたいのですがうまくいきません
置換対象の文字列検索はre-builderでは大丈夫でした
replace-regexp [ret]
\\(.+\\) [ret]
\\1 \\1 [ret]
何を修正すればよいのでしょうか
0583名無しさん@お腹いっぱい。
2012/01/07(土) 14:21:09.160584名無しさん@お腹いっぱい。
2012/01/07(土) 14:39:22.040585名無しさん@お腹いっぱい。
2012/01/07(土) 15:03:07.770586582
2012/01/07(土) 16:00:50.27なるほど、re-builderは""内に書くから\\(\\)と書かなければならなくて、
replace-regexpは""内に書かないから\(\)と書くということですね
すっきりしました
0587名無しさん@お腹いっぱい。
2012/01/07(土) 16:21:58.76The Cliffs of Inanity ? Emacs and Common Lisp http://tromey.com/blog/?p=709
そうなると長い目で見ればcommon lispを知っておいた方がよさそう
0588名無しさん@お腹いっぱい。
2012/01/07(土) 16:26:03.1710年前に Erik Naggum が言ってたのと同じことやん。
歴史は繰り返す。
0589名無しさん@お腹いっぱい。
2012/01/07(土) 16:53:47.360590名無しさん@お腹いっぱい。
2012/01/07(土) 17:10:02.39このあたりの話が関係するか。emacsをcommon lispで、っていうのは真っ正面から議論されていたのかな?
Island Life - 「Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。」
http://blog.practical-scheme.net/shiro/20100620a-lisp-speed
0591名無しさん@お腹いっぱい。
2012/01/07(土) 17:15:34.53それはそうと emacs 24で`image-library-alist' is renamed to `dynamic-library-alist' ってなってるの見て
ああもう本当にストールマンいなくなったんだなと実感した
0592名無しさん@お腹いっぱい。
2012/01/07(土) 17:22:54.270593名無しさん@お腹いっぱい。
2012/01/07(土) 17:32:50.08正規表現リテラルでもありゃあいいのにな。
0594名無しさん@お腹いっぱい。
2012/01/07(土) 17:51:12.15emacsの開発歴史というよりも
どういう人がemacsにどういう影響を与えたか、を聞きたい
0595名無しさん@お腹いっぱい。
2012/01/07(土) 18:00:10.330596名無しさん@お腹いっぱい。
2012/01/07(土) 18:03:58.85http://ja.wikipedia.org/wiki/Emacs
結構ちゃんと人物も記載されてるよ。
0597545
2012/01/07(土) 19:07:20.82test_func {
test
}
のように{が行末に来たときは次の行をスペース2つ分(かタブ1つ分)右にシフトさせて
}が行頭に来たときには左にシフトさせる設定はdefine-generic-mode向けに何かありますか
(上の例では全角スペースを使っています)
単体のemacsでは設定できずyasnippetのようなものを併用しなければならないでしょうか
0598名無しさん@お腹いっぱい。
2012/01/07(土) 19:52:42.00凝ったことしたくなったら generic-mode 使わないで素でmajor-mode作ってもいいような気もするけど
{ を入力したときに勝手に整形されるようにするのか、
改行したときに勝手にそうなるようにしたいのか、
C-i だの TAB だの入力して indent したときにそうしたいのかによって微妙に入り口は異なると思うけど
基本的には自力で整形処理を書かなきゃいけないと思うよ。
c-mode の c-indent-line の辺り読んで頑張れ
0599名無しさん@お腹いっぱい。
2012/01/07(土) 19:59:36.410600名無しさん@お腹いっぱい。
2012/01/07(土) 22:41:57.810601名無しさん@お腹いっぱい。
2012/01/07(土) 22:46:09.78(require 'cl)
; cl
(defun mapbetween (f l)
(let (y)
(mapl #'(lambda (x)
(when (cadr x)
(push (funcall f (cadr x) (car x)) y)))
l)
(nreverse y)))
; mapbetween
(mapbetween #'+ '(1 2 3 4 5))
; (3 5 7 9)
(mapbetween #'- '(0 1 4 9))
; (1 3 5)
0602名無しさん@お腹いっぱい。
2012/01/07(土) 22:47:16.570603名無しさん@お腹いっぱい。
2012/01/07(土) 22:47:31.32もう解決してるかもしれないけど、別のスクリプト (qlgrep) に
lgrep を包むって方法は採れそう。
#!/bin/sh
lgrep "$@" > /dev/null 2>&1
さらに別の関数 (find-lgrep-dired) も用意する。
(defun find-lgrep-dired (dir regexp)
(interactive "DFind-grep (directory): \nsFind-grep (grep regexp): ")
(find-dired dir
(concat "-type f -exec qlgrep - "
(shell-quote-argument regexp)
" "
(shell-quote-argument "{}")
" "
;; Doesn't work with "+".
(shell-quote-argument ";"))))
0604名無しさん@お腹いっぱい。
2012/01/08(日) 12:25:43.230605名無しさん@お腹いっぱい。
2012/01/08(日) 12:29:35.160606名無しさん@お腹いっぱい。
2012/01/08(日) 13:46:03.010607名無しさん@お腹いっぱい。
2012/01/08(日) 14:16:32.10解説とか殆ど見たことないけど、emacs23からは
インデントカスタマイズ用の smie ってライブラリが入ってるみたい。
つかったことないけどドキュメント読んだ感じ結構凝ったこと出来そうね。
http://www.gnu.org/software/emacs/manual/html_node/elisp/SMIE.html#SMIE
emacs24 の octave-mode とかは実際に使ってるみたいだから見てみたけど
文法定義から始まる重量級のライブラリだなこれ
0608名無しさん@お腹いっぱい。
2012/01/08(日) 17:34:12.70て,フルパス付きのファイル名をkill-ring-saveする方法はあるでしょうか。
ちょっとわかりにくかもしれませんが,例えば,diredで一覧表示した.emacs
に適用したなら,/home/hogehoge/.emacs という情報をコピペできる関数を探
しています。
0609名無しさん@お腹いっぱい。
2012/01/08(日) 17:49:12.340610名無しさん@お腹いっぱい。
2012/01/08(日) 17:51:00.10C-0w
0611名無しさん@お腹いっぱい。
2012/01/08(日) 19:00:19.17C-u 0 w
w runs the command dired-copy-filename-as-kill, which is an
interactive compiled Lisp function in `dired.el'.
It is bound to w.
(dired-copy-filename-as-kill &optional ARG)
Copy names of marked (or next ARG) files into the kill ring.
The names are separated by a space.
With a zero prefix arg, use the absolute file name of each marked file.
0612名無しさん@お腹いっぱい。
2012/01/08(日) 19:51:29.65まだ開発続いてると思うけど。
0613名無しさん@お腹いっぱい。
2012/01/08(日) 20:38:47.17lookup て辞書検索できる lookup のことかな。
次といっても dict と epwing が理解できればそれで十分に思える、自分には。
0614名無しさん@お腹いっぱい。
2012/01/08(日) 20:54:03.71変換スクリプトもメンテされてないし、入手不可能だったり。
0615名無しさん@お腹いっぱい。
2012/01/08(日) 20:57:40.10ただ emacs-w3m がいまいちだからねえ。
emacs-xwidget + webkit が安定して使えるようになったらうっはうはなんだが・・・
0616名無しさん@お腹いっぱい。
2012/01/08(日) 21:14:40.45それなら普通にブラウザ使う方がいい。
0617名無しさん@お腹いっぱい。
2012/01/08(日) 21:56:44.63RHEL6のx64でまともに動かんかった
emacsが悪いのか外部が悪いのかよく分からん
4文字の単語を退いたときだけ駄目とか変な挙動いろいろで調べる気が起きん
0618名無しさん@お腹いっぱい。
2012/01/08(日) 22:02:12.17むしろブラウザだけでいい
0619名無しさん@お腹いっぱい。
2012/01/08(日) 22:21:01.130620名無しさん@お腹いっぱい。
2012/01/08(日) 22:25:56.900621名無しさん@お腹いっぱい。
2012/01/08(日) 22:34:39.67Emacsにブラウザ組み込むのどっちが楽だろう
0622名無しさん@お腹いっぱい。
2012/01/08(日) 22:42:25.03後者は既出感が…
0623名無しさん@お腹いっぱい。
2012/01/08(日) 22:44:19.100624名無しさん@お腹いっぱい。
2012/01/08(日) 22:48:48.360625名無しさん@お腹いっぱい。
2012/01/09(月) 01:29:57.86seimei.el
tako.el
trr.el
0626名無しさん@お腹いっぱい。
2012/01/09(月) 01:43:55.290627名無しさん@お腹いっぱい。
2012/01/09(月) 02:55:49.39Javascript PC Emulator
ttp://bellard.org/jslinux/
で、ブラウザ上でQEmacsが使えます。
~ # which emacs
/usr/bin/emacs
~ # ls -l /usr/bin/emacs
lrwxrwxrwx 1 root root 2 May 14 2011 /usr/bin/emacs -> qe
~ # ls -l /usr/bin/qe
-rwxr-xr-x 1 root root 108240 May 16 2011 /usr/bin/qe
~ # strings /usr/bin/emacs | fgrep -i version
QEmacs version 0.3.1, Copyright (c) 2000-2003 Fabrice Bellard
■ このスレッドは過去ログ倉庫に格納されています