Emacs Part 39at UNIX
Emacs Part 39 - 暇つぶし2ch127:名無しさん@お腹いっぱい。
11/12/20 10:41:44.36
小菊って開発停止してるのな・・
いつからそうなってたのかわからないけど Emacs 23 で find-file 中に completion 対象が内状況で
補完しようとすると Wrong type argument: stringp, file-exists-p とか出てくる。

128:名無しさん@お腹いっぱい。
11/12/20 10:48:47.65
>>127
M-x toggle-debug-on-error

して trace 出してみたら?コメントつくかも。

129:名無しさん@お腹いっぱい。
11/12/20 11:00:52.00
了解です。とりあえず貼ってみます。
ちなみにNTEmacs + Cygwin on Windows7 な環境です。
Kogiku:ON の状況で ~/.emacs.d/p で補完(pで始まるファイルはない)でTABを押すとこの状況になります。
Kogiku:Fire(OFF) の状況だとちゃんと [No match] が出ます。

Debugger entered--Lisp error: (wrong-type-argument stringp file-exists-p)
signal(wrong-type-argument (stringp file-exists-p))
completion--some(#[(style) " \236A@\n\f
$\207" [style completion-styles-alist string table pred point] 5] (basic partial-completion emacs22))
completion-try-completion("~/.emacs.d/p" kogiku-read-file-name-internal file-exists-p 12)
completion--do-completion()
minibuffer-complete()
funcall(minibuffer-complete)
(let ((minibuffer-completion-table minibuffer-completion-table)) (when (or ... ...) (setq minibuffer-completion-table ...)) (funcall (car kogiku-original-functions)))
kogiku-complete(nil)
call-interactively(kogiku-complete nil nil)
completing-read("Find file: " read-file-name-internal file-exists-p confirm-after-completion "~/.emacs.d/" file-name-history "~/.emacs.d/")
read-file-name("Find file: " nil "c:/Users/XXXXX/Documents/.emacs.d/" confirm-after-completion)
find-file-read-args("Find file: " confirm-after-completion)
byte-code("\300\301\302 \"\207" [find-file-read-args "Find file: " confirm-nonexistent-file-or-buffer] 3)
call-interactively(find-file nil nil)


130:名無しさん@お腹いっぱい。
11/12/20 17:04:01.70
URLリンク(jblevins.org) のmarkdown-mode.elを入れたら
行頭に[がくるときに色づけがおかしくなることに気づきました

a [example] testでは問題ないのですが
[example] testのように行頭に[がくると
]: が現れるまでの行がずっと同じ色になります

[example]: URLリンク(www.example.com)
こういう表記があるのですが、この [text]: url 形式だと設定が誤認しているのでは
ないかと思います

行頭に[があって]:で終わっていない場合、つまり[example] testのような場合に
適切に色づけをするにはどこを修正すればよいのでしょうか
markdown-mode.elを]:で検索してもそれらしき設定が見当たらないため、手詰まりしてしまいました
よろしくお願いします

131:名無しさん@お腹いっぱい。
11/12/20 17:14:04.67
>>130
多分 markdown-regex-reference-definition の正規表現に問題があるんだろうけど
markdown をよく知らないのでどうなおしたらいいのかわからない
.+?のところを改行を除くにしてみるとかなのかね。

(defconst markdown-regex-reference-definition
"^ \\{0,3\\}\\(\\[.+?\\]\\):\\s *\\(.*?\\)\\s *\\( \"[^\"]*\"$\\|$\\)"
"Regular expression for a link definition [id]: ...")


132:名無しさん@お腹いっぱい。
11/12/20 17:36:04.39
replace-regexpでリージョン内の。を。\n(\nは改行)に
置換するにはどうすればよいのでしょうか
replace-regexp [ret] 。 [ret] \&\n
と入力したら
invalid use of \ in replacement text
となりました
replace-regexp [ret] 。 [ret] \&\\n
では。\nが出力され、失敗になります
できれば。のあとに改行がきていないときだけ。のあとに改行を加えるような
置換処理をしたいです

133:名無しさん@お腹いっぱい。
11/12/20 17:42:47.67
改行は C-q [ret] で直接改行入れちゃえばいいと思う。

replace-regexp [ret] 。 C-q [ret]? [ret] 。C-q [ret]


134:名無しさん@お腹いっぱい。
11/12/20 17:45:46.29
改行文字は C-q C-j で入れる。

一度



。 [C-j]

に置換して、次に

。 [C-j] [C-j]

。 [C-j]

に置換すればいい。
replace-string で十分。

135:132
11/12/20 19:15:34.11
>>133-134
できました。ありがとうございます。

136:名無しさん@お腹いっぱい。
11/12/21 13:45:38.66
特定ディレクトリ内の特定拡張子ファイル(*.txtや*.html)に
grepをかけて置換する処理はemacsでできますか?
できれば特定の拡張子を除外するという設定もしたいのですが


137:名無しさん@お腹いっぱい。
11/12/21 14:01:19.31
grep-edit だの color-moccur だの色々あるよ

138:名無しさん@お腹いっぱい。
11/12/21 15:02:50.36
あとfind-grepだな。

139:127
11/12/21 15:39:29.08
小菊がemacs23でおかしくなった件ですが、とりあえずの回避方法がわかったので残しておきます。
completion-sytles の中の partial-completion が kogiku と相性が悪いようです。
emacs23 はデフォルトで partial-completion 有効になってたんですねー。

この方法だと補完対象が存在しない場合でもエラーにならず [not match] が出るようになります。
ただ、 "~[TAB]" などでまだエラーになるので根本的な解決にはなっていないようです。

■以下を設定ファイルに記入
;; completion-pcm-try-completion は kogiku と相性が悪いので使わない
(setq completion-styles (delete 'partial-completion completion-styles))
;; partial-completion を使いたい場合、partial-completion-mode を使う
; (partial-completion-mode t) ;; kogiku より前に実行
(require 'kogiku)


140:名無しさん@お腹いっぱい。
11/12/21 19:18:57.79
>>139
ありがとうございます!

スレリンク(software板:951番)
から来た物ですが、この設定をしたら、wanderlustのdraftバッファで添付ファイルを添付しようと小菊でブラウズした際にNTEmacs毎落ちる現象が出なくなりました。

暫くこれで様子を見させてください!


141:名無しさん@お腹いっぱい。
11/12/21 22:13:18.22
>>137-138
ありがとうございます。助かりました。


142:名無しさん@お腹いっぱい。
11/12/22 01:08:01.91
(set-frame-size (selected-frame) 168 51)

を init.el の最後に書いてんだけど、最後にちょっとだけずれる。なんで?

143:名無しさん@お腹いっぱい。
11/12/22 01:18:43.67
init.el の読み込みより後に実行されるフックで評価されるようにしたらいいんじゃない

144:名無しさん@お腹いっぱい。
11/12/22 01:31:35.18
>>134
やってみた

(add-hook 'after-init-hook
'(lambda ()
(set-frame-position (selected-frame) 0 0)
(set-frame-size (selected-frame) 168 51)
))


って感じで。でもやっぱ最後にちょとだけずれて
frame-height が 49 になる。なんで?

145:142
11/12/22 02:32:40.30
どうも selected-frame には tool-bar も含まれるようで、
これが原因のようです。

window-system や toolkit によって tool-bar や menu-bar と
height の関係が異なるようです。

URLリンク(www.gnu.org)

どうもお騒がせしました。

146:名無しさん@お腹いっぱい。
11/12/22 13:10:15.72
elispでshell-command経由でファイルを扱うとき
ベースとなるディレクトリを変更したいのですがどうするのでしょうか


147:名無しさん@お腹いっぱい。
11/12/22 13:54:22.19
>>146
shell-command の引数に cd hoge; と書くか、直前に (cd "hoge") する。

148:名無しさん@お腹いっぱい。
11/12/22 14:25:05.51
Emacs 23 なんだけど、
^L のリセンサーを上に行ったり下に行ったりしないようにするには
どんな設定をすればいいの?

149:名無しさん@お腹いっぱい。
11/12/22 14:26:26.02
リセンサー→リセンター

150:名無しさん@お腹いっぱい。
11/12/22 14:28:19.97
>>148
M-x redraw-display ってこと?

151:名無しさん@お腹いっぱい。
11/12/22 14:36:22.41
>>148
(setq recenter-positions '(middle))

質問前に \C-h k などを使って Help を見るようにすべき。

152:名無しさん@お腹いっぱい。
11/12/22 15:17:02.00
>>151
custom-set-variables に
    '(recenter-positions (quote (middle)))
の設定を加えました。

ありがとう、勉強になった。

153:名無しさん@お腹いっぱい。
11/12/22 16:50:40.22
>>147
shell-commandの方がなぜかただしく動きませんがcdなら大丈夫でした
ありがとうございます

154:名無しさん@お腹いっぱい。
11/12/22 18:03:12.62
elispを編集しているときに
()の)を入力したときには前括弧が太字になるのですが、
入力したときだけじゃなくてカーソルを合わせたときにも
太字にする方法はあるでしょうか?

155:名無しさん@お腹いっぱい。
11/12/22 18:18:50.61
>>154
show-paren-mode

156:名無しさん@お腹いっぱい。
11/12/22 19:34:35.43
>>155
ありがとうございます!

157:名無しさん@お腹いっぱい。
11/12/22 22:48:57.09
evil-modeとかvimpulse使ってる人いる?
個人的にはモーダルなemacsって最高だと思うんだけど邪道なのかな?

158:名無しさん@お腹いっぱい。
11/12/22 22:57:27.11
そりゃ素直にvim使えとは思う。
色んなelispをvi系のモードに合わせるのってしんどくない?

モーダルな入力でおもったけど
(setq view-read-only t) にして view-mode をガンガン操作しやすくカスタマイズすれば
C-x C-q (もしくはもっと気楽なキーバインド)をトリガにした素直なモーダル Emacs と言えるんじゃないかな。

159:名無しさん@お腹いっぱい。
11/12/23 02:34:38.74
xyzzyからemacsに移行しようと思うのですが
キルリングとクリップボードが同期してしまうのをできれば解除したいです

キルリングはemacs内だけで簡潔するようにし(他のアプリのクリップボードと連携せず)、
クリップボードは従来通り他のアプリと連携できるようにする
こういった設定は可能でしょうか?

160:名無しさん@お腹いっぱい。
11/12/23 03:03:32.40
(setq interprogram-cut-function nil)
(setq interprogram-paste-function nil)

でどう?(試してない)

161:名無しさん@お腹いっぱい。
11/12/23 09:42:18.30
>>158
おぉ!斬新な考え方だな。
俺はちょっと編集して一息付く時に必ずセーブ→カーソル移動して確認
のような事をしているから、同時にセーブもすればいいんだな。
キーバインドはやっぱりESCだろうね。

162:名無しさん@お腹いっぱい。
11/12/23 15:06:12.55
shell-commandを非同期実行で順番に使いたいとき、
たとえば
1.hoge.exeを起動して処理する
2.1.の処理後にtest.exeを起動して処理
3.2.の処理後にfoo.exeを起動して処理
4.処理終了
こういうことはemacsで設定できるでしょうか
非同期実行が shell-command と & の組み合わせでできるということまではわかったのですが
その先がよくわかりません

163:名無しさん@お腹いっぱい。
11/12/23 15:21:00.40
>>162
shell が何かによるけど
(hoge.exe ; test.exe ; fo0.exe) &

それぞれが成功した時だけ(戻り値0の場合だけ)次を実行したい場合は
(hoge.exe && test.exe && foo.exe) &

164:名無しさん@お腹いっぱい。
11/12/23 15:21:50.70
shell-command だけでやるんならそれぞれのコマンドを && で連結して実行する。

hoge.exe の処理結果を emacs で一旦受けとってから test.exe に渡したいん
なら、低レベル API の start-process を使って hoge.exe を呼び出して
process-sentinel で test.exe 以降を順次実行する。

165:名無しさん@お腹いっぱい。
11/12/23 15:27:30.08
>>163-164
ありがとうございます。
&&ですかなるほど。もしかするとstart-processを使って調整するかもしれませんでしたので
とても参考になりました。

166:名無しさん@お腹いっぱい。
11/12/23 16:09:11.99
>162
それは同期実行ではだめなの?
(shell-command "hoge.exe")
(shell-command "test.exe")
(shell-command "foo.exe")


167:名無しさん@お腹いっぱい。
11/12/23 16:47:23.22
時間かかる処理なら止まっちゃうじゃん。

168:名無しさん@お腹いっぱい。
11/12/23 16:57:23.03
gnupackのemacsを使っています
eshellをexitで抜けようとしたらエラーが出るようになってしまいました
init.elのいろいろな場所を編集する最中だったため、原因を突き止められていません
*Warning* buffarにはこうあります
These default coding systems were tried to encode text
in the buffer ` *temp*':
(utf-8 ...)
However, each of them encountered characters it couldn't encode:
utf-8 cannot encode these: ...
japanese-shift-jis cannot encode these: ...
init.elでこう設定しています
(set-keyboard-coding-system 'cp932)
(prefer-coding-system 'utf-8-dos)
(set-file-name-coding-system 'cp932)
(setq default-process-coding-system '(cp932 . cp932))
(add-hook 'set-language-environment-hook
(lambda ()
(when (equal "ja_JP.UTF-8" (getenv "LANG"))
(setq default-process-coding-system '(utf-8 . utf-8))
(setq default-file-name-coding-system 'utf-8))
(when (equal "Japanese" current-language-environment)
(setq default-buffer-file-coding-system 'utf-8))))
(set-language-environment "Japanese")
どうも過去に日本語を含むパスのelispの履歴が残っているようで
それを削除すれば解決すると考えているのですが、
そうなるとどのファイルを編集することになるのでしょうか

169:名無しさん@お腹いっぱい。
11/12/23 17:17:54.97
全然わからんけど session-save-file かなぁ。
おれが思うに eshell なんて使わない方がいいよ。変なのが伝染る。

170:名無しさん@お腹いっぱい。
11/12/23 17:24:53.82
~/.eshell/history じゃないの?
つーかるびきちの悪影響だよな
eshellなんか使うのは

171:名無しさん@お腹いっぱい。
11/12/23 17:36:24.38
win+cygwin なもんで ansi-term がまともに動かんから
shell-mode で我慢してる。っていうかあれで充分。シグナル変なのは advice つけて直した

172:名無しさん@お腹いっぱい。
11/12/23 18:31:37.90
文字符号入り乱れた複数のファイルを標準出力つこて扱う時に
文字化け対策用変換パイププログラムとかねーのかな

173:名無しさん@お腹いっぱい。
11/12/23 18:34:00.68
iconvとかnkfとかそいうんではなく?

174:名無しさん@お腹いっぱい。
11/12/23 19:11:46.96
>>169-170
ありがとうございます
そのあたりをあさっていたら ~/.eshell/lastdir のファイルがおかしいことに気づきました
その箇所を削除したら無事終了するようになりました

ところで、>>170の通りるびきちの本をもとにeshellを使いはじめてみたのですが
emacsを使う人は通常他の外部シェルを使うのでしょうか

175:名無しさん@お腹いっぱい。
11/12/23 19:18:37.63
このスレはるびきちにツンデレだから

176:名無しさん@お腹いっぱい。
11/12/23 19:23:02.71
一般的かどうかは分からないけど、なんで今さら eshell なんだよって感じは
する。るびきちに関しては感性が相当に偏っているので、彼のいうことにあん
まり没頭しすぎるのは考えものだとは思う。



177:名無しさん@お腹いっぱい。
11/12/23 19:27:14.55
>>176 そういわれればそうですね


178:名無しさん@お腹いっぱい。
11/12/23 19:30:55.80
俺はるびキチが使う前からeshellをバリバリ使ってたけど、
msysだのcygwin入れなくても、ls,cp,mv,rm,chmod,とか使えるのは相当便利だよ。


179:名無しさん@お腹いっぱい。
11/12/23 19:38:39.16
POSIXコマンドがネイティブに使える環境ではあえて eshell 使う理由もないと思う。
シェルをカスタマイズしまくっているなら ansi-term 一択

180:名無しさん@お腹いっぱい。
11/12/23 20:06:41.14
でも重いんだよねえ。
結構 CPU 負荷がかかる。

181:名無しさん@お腹いっぱい。
11/12/23 20:23:56.55
>>158
最近evil-mode使い始めたところなんたけど
確かに設定が面倒くさい。
viewモードメインのアプローチも確かに良さそうだね。そっちも試してみる。



182:名無しさん@お腹いっぱい。
11/12/23 20:37:24.12
migemoをisearch-modeの時はオンにして、RETしてsearch-foward等の時は
オフにするにはどうすればいいですか。

183:名無しさん@お腹いっぱい。
11/12/23 22:28:23.45
GNU Emacs Lispリファレンスマニュアル: Emacs Lisp関数のアドバイス
URLリンク(www.bookshelf.jp)
アドバイス機能を使って
>isearch-modeの時はオンにして、RETしてsearch-foward等の時はオフにする
そのとおりに設定するのがよいかと
具体的にはisearch-modeの実行時にmigemoをonに切り替えるようbeforeで設定
isearch-modeの実行終了時に migemoをoffに

こうするとsearch-forward等には手をつけなくていいかと

184:名無しさん@お腹いっぱい。
11/12/24 00:09:46.51
>>131
お礼が遅くなってすみません
それでうまくいきました

185:名無しさん@お腹いっぱい。
11/12/24 02:03:40.31
elispの書き方について質問します

(if test
(list (aa) (bb) (cc) (dd) (ee))
(list (aa) (ff) (ee)))

(aa)や(dd)などはすべて文字列を返す関数で、
このような処理をしようと思うのですが、
list関数と aa, ee関数が重複しており編集しづらいです
重複分を削る手はないでしょうか

186:名無しさん@お腹いっぱい。
11/12/24 02:45:42.90
編集しづらいってコードの編集のことか?
list の中身のソート順をプログラマが考えて決めるんだったらある程度冗長
になるのは仕方ないと思うんだけど。
どうしたいのかいまいちわからない。

187:名無しさん@お腹いっぱい。
11/12/24 03:01:13.07
重複分とlistを削ってみた。元の方が全然見やすいな。

`(,(aa)
,@(mapcar
#'(lambda (f) (funcall f))
(if test '(bb cc dd) '(ff)))
,(ee))


188:名無しさん@お腹いっぱい。
11/12/24 03:27:46.43
>>185
こんな感じ?

(append
 (list (aa))
 (if test
    (list (bb) (cc) (dd))
  (list (ff)))
 (list (ee))


(mapcar 'funcall
        `(aa
          ,@(if test
              '(bb cc dd)
              '(ff))
          ee))

189:名無しさん@お腹いっぱい。
11/12/24 08:59:28.95
みなさんは、WindowsでEmacsって使われてますか?


190:名無しさん@お腹いっぱい。
11/12/24 09:12:31.39
使ってるよ。
NTEmacsスレもよろしくね。
スレリンク(software板)

191:名無しさん@お腹いっぱい。
11/12/24 11:05:00.31
>>186
そうです。コード編集です。
もっと縮められないものかとおもっていました

>>187-188
ありがとうございます。
appendとバッククオートでそう組み立てるのは思いつきませんでした
例を示していただいて気づいたのですが、自分はリスト生成の内側でifを使いたかったんだなと


192:名無しさん@お腹いっぱい。
11/12/24 12:25:44.35
ネタだが、Google Insights for Search を使った Emacs ユーザの特性考察がなかなかおもろい。
URLリンク(d.hatena.ne.jp)

193:名無しさん@お腹いっぱい。
11/12/24 12:36:21.37
関数の再定義についてお伺いしたいのですが
(require 'hoge)で読み込んでいるファイル hoge.el に書いてある関数を
init.elに新たに関数を書いて上書きしようとしてもうまくいきません

hoge.elの該当部分の関数定義をコメントアウトすると
init.elで再定義したとおりに動きます
どうすればいいのでしょうか

194:名無しさん@お腹いっぱい。
11/12/24 12:36:25.61
>>191
書きやすいコードより見やすいコードを目指した方がいい。

195:名無しさん@お腹いっぱい。
11/12/24 12:58:09.19
>>193
新たな関数を (require 'hoge) より前に書いてるというオチではないよな?

196:名無しさん@お腹いっぱい。
11/12/24 13:06:18.14
>>193
(eval-after-load 'hoge '(defun ...))
とか、多分邪道だけど
(defadvice fuga (around ... )
ad-do-it なし)

にする。

197:名無しさん@お腹いっぱい。
11/12/24 14:02:29.09
>>193
再定義していると思っている関数のスペルが間違っている
再定義後に再びload-file, load-libraryしている

198:名無しさん@お腹いっぱい。
11/12/24 17:38:11.00
>>196
なんとなく書き換わるの怖くてdefadvice派だなぁ。

199:名無しさん@お腹いっぱい。
11/12/25 05:44:00.27
>>192
おそらく一部には反感を買いそうだけど、
楽しんで書いてるのが伝わってきて確かに面白い。

200:名無しさん@お腹いっぱい。
11/12/25 10:45:34.31
>>192の派生記事でこんなのがあったんだけど
URLリンク(d.hatena.ne.jp)
この中にでてくる、EmEditorの「折り返し行表示も論理的にインデントされる」機能って
なかなか素敵だと思うんだけど Emacs 用でそういうのないかな。

自前のソースだったら長くなりすぎないよう適度に分割するんだけど
拾ってきたソース見てる時とかウィンドウ幅細くして眺めてる時とかこれできたらちょっとうれしい気がする。

201:名無しさん@お腹いっぱい。
11/12/25 11:52:18.04
>192
田舎を馬鹿にしてるのは芸風かと思うけど、
emacsに関する分析で、石川県にJAISTがあるのを知らないのか、
知ってて無視してるのか…

202:名無しさん@お腹いっぱい。
11/12/25 12:10:42.62
emacs関係でその大学の名前を聞いた記憶があんまりないんだけど。
オープンソース扱ってるとときどき聞くけど。

203:名無しさん@お腹いっぱい。
11/12/25 12:26:15.80
現在開いているファイルがutf-8のとき、
utf-8bomかutf-8non bomかを開いているファイル名情報(ミニバッファ欄というのでしょうか)の
左側に表示したいのですが、可能でしょうか?

204:名無しさん@お腹いっぱい。
11/12/25 12:27:38.96
書き忘れていました。
改行がlfかcrかも表示させたいです

205:名無しさん@お腹いっぱい。
11/12/25 12:50:00.45
>>203
; BOMなしを 大文字の U に
(coding-system-put 'utf-8 :mnemonic ?U)
; BOMありを 小文字の u に
(coding-system-put 'utf-8-with-signature :mnemonic ?u)

基本的に一文字でしか表示は出来ないみたい。
ちなみに今何が設定されているか知りたいときは以下を実行
M-x list-coding-systems

UTF関連は全部ひっくるめてUになっちゃってるから必要であれば細かくわけたほうがいいかも。
一文字縛りだから厳しいけど。


206:名無しさん@お腹いっぱい。
11/12/25 12:51:07.42
>>204
cr だの lf だの crlf は一応もともと表示はされているけど、
もっとわかりやすくしたいなら以下で。

(setq eol-mnemonic-dos "[CRLF]")
(setq eol-mnemonic-unix "[LF]")
(setq eol-mnemonic-mac "[CR]")
(setq eol-mnemonic-undecided "[?]")


207:名無しさん@お腹いっぱい。
11/12/25 13:20:29.19
>>202 うーむ、月日が流れるのは早いもんだ。


208:名無しさん@お腹いっぱい。
11/12/25 13:22:36.47
> (ミニバッファ欄というのでしょうか)

mode-line ね。

mode-line-mule-info いじればなんとでもなりそうな気はするけど。
マウスカーソル合わせればいろいろ表示できるからそれで十分な気がする。

209:名無しさん@お腹いっぱい。
11/12/25 13:30:34.87
session.el を使っていると file-name-history に w3m の一時ファイル名が溜まるのが嫌なので
(setq session-set-file-name-exclude-regexp "[/\\]\\.overview\\|[/\\]\\.session\\|News[/\\]\\|w3mtmp")
というように、デフォルトの値に付け加えてみたんですが、やはりお構いなしに溜っていきます。

Emacs は 21.1 を使っているんですが、これを設定してる人はちゃんと効いてますか?

210:名無しさん@お腹いっぱい。
11/12/25 13:30:46.10
load-path とかを設定するときに
append したり add-to-list を繰り返したりするのはよくみるけど
バッククオート使ったリスト展開使ってる人ってあんまり見かけない気がするんですが、
何かデメリットとか互換性とかでまずい点とかがあるんでしょうか?

(setq load-path `("~/lisp" "~/site-lisp" ,@load-path))

211:名無しさん@お腹いっぱい。
11/12/25 13:36:40.41
>>210
デメリットは読みづらいって点じゃないかね。
真性 lisper の作った macro とか読んでると分かるかも。

212:名無しさん@お腹いっぱい。
11/12/25 13:39:17.64
>>211
なるほど、あんまり見ないという意味で読みづらいってのはありそう。
でもただリストに追加するだけ、ってのが設定ファイル上だと多発してるんで、
短くて読みやすいこっちを使ってみます。
ありがとうございました。

213:名無しさん@お腹いっぱい。
11/12/25 14:57:06.79
xyzzyにはある機能だな
emacsはというと見当たらない気がする

214:名無しさん@お腹いっぱい。
11/12/25 15:10:17.46
>>213
リスト展開はEmacsで普通に使えてるぞ

215:名無しさん@お腹いっぱい。
11/12/25 15:59:36.74
>>214
すまねえ、>>213>>200向けのレスだった
アンカーが抜けてしまったわ


216:名無しさん@お腹いっぱい。
11/12/25 16:05:04.22
>>215
ああ、そういうことか。了解。
>>200 はxyzzyで使えるなら頑張ればEmacsにも移植出来そうなもんだね。

217:名無しさん@お腹いっぱい。
11/12/25 17:27:51.00
バッファローカルなマクロや関数を設定する方法ってありますでしょうか?

218:名無しさん@お腹いっぱい。
11/12/25 17:48:27.78
オーソドックスな方法はない。
obarray とか make-variable-buffer-local とか intern とか組み合わせてが
んばればもしかしたらそれっぽいことはできるかも。何がやりたいかによりそ
う。


219:名無しさん@お腹いっぱい。
11/12/25 18:09:35.92
>>218
特定のファイル内でのみ使える使い捨ての関数を使いたかったのでした。

funcall での呼び出しで妥協するなら make-local-variable => lambda => funcall で他への影響少なく
実現出来ましたが、fset しちゃうとしっかりグローバルにマップされちゃうのが残念な感じ・・


220:名無しさん@お腹いっぱい。
11/12/25 18:29:51.56
特定のファイル(バッファ?)内で呼び出すならそれでいいけど、
いろんなところで呼び出す関数の中でその使い捨て関数を使おうとするとだめじゃないか?

↓はevalしたバッファでなら問題なく動くけど他のバッファで say-hello するとNG
(set (make-local-variable 'somefunc) (lambda () (message "hola!")))
(defun say-hello ()
(interactive) (funcall somefunc))



221:名無しさん@お腹いっぱい。
11/12/25 22:34:15.94
リストの中で条件に一致するものだけを抜き出す関数ってありますか?
find-if みたいな条件式を外から渡せるものが欲しいです。

222:名無しさん@お腹いっぱい。
11/12/25 22:57:39.93
remove-if-not かな。名前分かりづらいよね。

223:名無しさん@お腹いっぱい。
11/12/25 23:05:47.16
>>222
ありがとうございます。条件に一致しないものを全て除く、なんですね。
わかりづらいですねw

224:名無しさん@お腹いっぱい。
11/12/26 20:45:07.50
>>160
すみません。ためして見ましたが他のアプリとの連携が完全に断ち切られてしまいました。

よく考えてみたらxyzzyでいうところのセレクションとリージョンの区別が
emacsには無いのかもしれないと思いました
xyzzyの説明はこれです
URLリンク(hie.s64.xrea.com)

希望する動作を詳しくいうと、もしもemacsにセレクションの機能があるとして
仮にメモ帳の文字をコピーしたとしてemacsに貼り付けようとするとき
セレクションの貼り付け->メモ帳からの貼り付けok
キルリングのヤンク->メモ帳からの貼り付けNG

逆も同様で、emacsで
セレクションの範囲選択からコピー->メモ帳に貼り付けok
リージョンの範囲選択からコピー->->メモ帳に貼り付けNG

セレクションが無いとするとキルリングを改変して
独立したリージョンのようなもの
(指定したキルリングのみ他のアプリと文字の受け渡し可)
を使いたいのですが可能でしょうか。何か複雑なことになってしまいましたが…

225:名無しさん@お腹いっぱい。
11/12/26 21:13:29.20
>>224
ちょっとよく分からないけど・・

クリップボードと同期したくないだけなら
(setq x-select-enable-clipboard nil) でよかったはず。

上記の状態でキルリングではなくクリップボードから貼付けしたい時は clipboard-yank
切り取りの clipboard-kill-region と貼付けの clipboard-kill-ring-save ってのはあるんだけど
こっちは kill-ring にも入っちゃうんだよね。

クリップボードと直接やり取りしてるのは >>160 が言ってる変数の中身に指定されている関数である
x-select-text と x-get-selection-value。

セレクションについても普段使ってるプライマリの他にセカンダリ(Alt+ドラッグで指定出来る/Alt+真ん中クリックで貼付け)
ってのがあるから、それと組み合わせて何か関数作ればクリップボード連携専用セレクションは作れると思う。



226:名無しさん@お腹いっぱい。
11/12/26 21:40:30.25
やっつけでかいてみた。

;; クリップボードとのkill/yank連携解除
(setq x-select-enable-clipboard nil)

;; クリップボードから貼付け
(global-set-key (kbd "C-c y")
(lambda ()
(interactive)
(let ((x-select-enable-clipboard t)
(x-last-selected-text nil))
(insert (or (x-get-selection-value) "")))))

;; クリップボードへコピー
(global-set-key (kbd "C-c w")
(lambda ()
(interactive)
(when (region-active-p)
(let ((x-select-enable-clipboard t))
(x-select-text (buffer-substring-no-properties
(region-beginning) (region-end)))))))


227:名無しさん@お腹いっぱい。
11/12/26 22:43:20.34
>>226
やっつけに突っ込む & 試してないけれど、
(lambda (beg end)
    (interactive "r")
    (let ((x-select-enable-clipboard t))
      (x-select-text (buffer-substring-no-properties beg end))))

228:名無しさん@お腹いっぱい。
11/12/27 00:56:12.67
>>225-227
ありがとうございます!まさに意図したとおり動いています
思わず笑顔になってしまいました
>>225の説明がわかりやすくて参考になります
ありがとうございました

229:名無しさん@お腹いっぱい。
11/12/27 11:39:39.37
windowsでファイラーの右クリックからemacsにファイルを送ると
あらたなemacsが起動してしまうのですが
emacsがすでに起動しているならそのemacs内でファイルを開くように設定できますか


230:名無しさん@お腹いっぱい。
11/12/27 12:04:09.38
>>229
emacsclientw.exe とか?

231:名無しさん@お腹いっぱい。
11/12/27 13:57:42.71
>>230
ありがとうございます
それを使って設定できました

232:名無しさん@お腹いっぱい。
11/12/27 21:10:00.44
メジャーモードの作成でdefine-generic-modeを使うとき
キーワードリストで設定するのと色づけリスト内のfont-lock-keyword-faceで設定するのは
変わりないのでしょうか?
それと、予約語や組み込み関数が膨大な言語を扱うときに一つ一つを書くのではなくて
予約語一覧や組み込み関数一覧の別ファイルを読みこんでfont-lockを設定できないものでしょうか
るびきち著のemacslispテクニックバイブル10章を読んでもこのあたりのことが
書いていないのでよくわかりません。

233:名無しさん@お腹いっぱい。
11/12/27 22:00:50.40
generic-mode ではキーワードの外出しはサポートしてないっぽいね。

↓の関数でどうでしょ。
(defun keywords-from-file (file)
"ファイルからキーワードのリストを取得。ファイル内のキーワードは改行で区切ること"
(with-temp-buffer
(insert-file-contents file)
(split-string (buffer-substring-no-properties (point-min) (point-max)) "[\r\n]" t)))

(define-generic-mode
'hogehoge-mode
'("#")
(keywords-from-file "~/.emacs.d/hogehoge-mode-keywords")
...
)

みたいな感じで。

234:名無しさん@お腹いっぱい。
11/12/28 02:04:40.26
>>233
ありがとうございます。うまくいきました。

235:名無しさん@お腹いっぱい。
11/12/28 10:32:52.68
C-yでyankした後にM-yで履歴を遡れますが、
うっかり戻り過ぎた時に戻るコマンドはないのでしょうか。
リングを全部もう1周するのは大変です。
C-/でundoするのも時にはありなんですが、
やっぱり違ったって時にM-yを継続できないので不便です。
簡単に履歴を行ったり来たりできないのでしょうか。

236:名無しさん@お腹いっぱい。
11/12/28 10:39:02.54
anything-show-kill-ringを使うといいよ^^^

237:名無しさん@お腹いっぱい。
11/12/28 10:43:02.78
標準の M-y だとあんまり器用なことはできないね。
M-1 M-y とかで yank するヒストリの位置を指定したりできるけどそんなの頭で把握していないだろうし。

素直に browse-yank とか kill-summary とか browse-kill-ring とか popup-kill-ring とかの
貼る奴を選べるタイプのを使ったほうがいいと思う。

anything でも kill-ring は扱えるらしいんだけど使っていないからちょっとそっちは分からない。

238:名無しさん@お腹いっぱい。
11/12/28 10:55:49.77
>>235
C-u -1 M-y

239:名無しさん@お腹いっぱい。
11/12/28 11:06:30.27
M-- M-y でいいじゃん。
anything なんか勧めるな

240:名無しさん@お腹いっぱい。
11/12/28 11:18:09.10
そういうこと言っちゃうとまた彼がくるよ。

241:名無しさん@お腹いっぱい。
11/12/28 11:24:06.46
実際anything使ってるの?
auto-completeの作者はanythingアンチっぽいな

242:名無しさん@お腹いっぱい。
11/12/28 11:35:51.24
割と技術ある人はだいたいanythingアンチ。
若い人があの人の煽りに乗せられちゃってるんだよ。

243:名無しさん@お腹いっぱい。
11/12/28 12:06:07.16
> auto-completeの作者はanythingアンチっぽいな
これソース何?その人のブログとか読んだ限りじゃanythingユーザっぽいんだが…

244:名無しさん@お腹いっぱい。
11/12/28 12:27:14.73
過剰反応

245:名無しさん@お腹いっぱい。
11/12/28 13:25:04.41
>>235
redo.elで検索

246:名無しさん@お腹いっぱい。
11/12/28 14:35:05.68
技術のある人はanythingを使わない(キリ
技術のある人はるびきち本などクソだと思っている(キリッ
vim・nviなどviではない(キリリッ

247:名無しさん@お腹いっぱい。
11/12/28 16:01:44.06
/*
test
hoge
test
hoge
*/
これ全体にヒットするelispの正規表現はどのようなものでしょうか?
/\\*[\\n.]+\\*/ と書いたのですがヒットしませんでした

248:名無しさん@お腹いっぱい。
11/12/28 16:12:30.51
> /\\*[\\n.]+\\*/

bracket (文字クラス) の中では . の意味は失われて通常文字になる。

(re-search-forward "/\\*\\(\n\\|.\\)*?\\*/")

でとりあえずマッチする。
コメントみたいなのに正規表現はあんまりよくないんじゃないかね。

249:名無しさん@お腹いっぱい。
11/12/28 16:18:39.47
> コメントみたいなのに正規表現はあんまりよくないんじゃないかね。

よくないって書いたのはコメントが大きくなってきたときに正規表現がオーバー
フローするって意味です。ちょっとした利用なら気にしなくていいはずです。


250:247
11/12/28 16:25:53.05
ありがとうございます。わかりました。


251:名無しさん@お腹いっぱい。
11/12/28 17:20:48.37
るびきちとご飯を食べる会とかやってるみたいだし
elisp書いてる界隈は総じて仲良いように見えるけどな。
anything!!anything!!ってプッシュしてなきゃあの人も色々面白い記事かくいい人だと思うよ。

252:名無しさん@お腹いっぱい。
11/12/28 17:29:19.67
どんないい記事かこうとあの情報商材みたいな文章の羅列ですべて台無しだよ。
どっかの大学にでも勤めて真っ当な研究でもすればいいのに。いや無理か。。

253:名無しさん@お腹いっぱい。
11/12/28 17:30:56.46
うるせえ、創造的破壊するぞ

254:名無しさん@お腹いっぱい。
11/12/28 17:33:59.06
イノベーション()

255:名無しさん@お腹いっぱい。
11/12/28 17:38:16.02
そうだね
倭猿ごときがEmacsの伝道師なぞ恐れ多いわ

256:名無しさん@お腹いっぱい。
11/12/28 17:41:26.13
Lisp方言ならまかせろー!ならまだいいんだけど
たかだか1エディタの設定だけだもんな

257:名無しさん@お腹いっぱい。
11/12/28 17:46:11.19
もうちょっと手広くやればいいのにね。
Emacsだけで食べるなんて無理だよ。
100ユーザ集ったとか悪いけど嘘くさすぎる。

258:名無しさん@お腹いっぱい。
11/12/28 17:48:25.85
まだ本業のrubyがあるからあわてる時期じゃない

259:名無しさん@お腹いっぱい。
11/12/28 17:50:15.62
そういえば設定本にviewer.elでview-modeのmode-lineを色付けして
他のモードと区別しやすくしようなんてページがあったのだけど

載ってるスクショが白黒だた

260:名無しさん@お腹いっぱい。
11/12/28 17:53:07.29
>>258
最後の ruby kaigi に参加したとき自分の中でrubyは三年前のままで時間が止まってるとかほざいてたぞ。
お前その名前詐欺だろと思ったわ。

261:名無しさん@お腹いっぱい。
11/12/28 17:55:39.93
>>259
ズコーw

262:名無しさん@お腹いっぱい。
11/12/28 17:57:45.09
お前ら文句いいつつもしっかり本買ってるあたり、るびきちのことなんだかんだいって好きだよな

263:名無しさん@お腹いっぱい。
11/12/28 17:58:27.22
嫌いです。

264:名無しさん@お腹いっぱい。
11/12/28 17:58:35.12
ひとくくりにされてもな。

265:名無しさん@お腹いっぱい。
11/12/28 18:03:04.34
Elisp本はLisp遊びで充分です

266:名無しさん@お腹いっぱい。
11/12/28 18:04:38.74
リスト遊びか?

267:名無しさん@お腹いっぱい。
11/12/28 18:18:48.69
俺らるびきちなんて格下興味ないからな

268:名無しさん@お腹いっぱい。
11/12/28 18:23:38.65
lisp遊びなんてでてたんや

269:名無しさん@お腹いっぱい。
11/12/28 18:54:32.36
山本さんのじゃなくて?

270:名無しさん@お腹いっぱい。
11/12/28 18:57:51.43
>>264
なあ。俺らはるびきち本がどんなにつまらん内容か確認するためだけに買ってその後捨てたわ。


271:名無しさん@お腹いっぱい。
11/12/28 19:17:33.42
せめてbookoffに。

272:名無しさん@お腹いっぱい。
11/12/28 19:24:54.32
少しでも無意味な本が世に出回らんようにという配慮だ
emacswikiもいらん、このスレだけで十二分だ

273:名無しさん@お腹いっぱい。
11/12/28 19:41:22.07
俺なんか間違ってあんな本を買うやつが出ないように近くの本屋で買い占めたからな

274:名無しさん@お腹いっぱい。
11/12/28 19:49:32.87
山本さんは今ではHaskellの人というイメージやな

275:名無しさん@お腹いっぱい。
11/12/28 20:39:36.16
お前らかずさんのことを悪く言うのか

276:名無しさん@お腹いっぱい。
11/12/28 20:42:01.54
emacswiki面白いけどなあ。

>>273
俺も買い占めは出来なかったけどせめての布教防止にと2冊買った。


277:名無しさん@お腹いっぱい。
11/12/28 22:27:24.40
だれもkazuさんのことを悪く言ってない
悪く言われているのは……


278:名無しさん@お腹いっぱい。
11/12/28 22:39:30.78
なんでルビキチって叩かれてるの?

279:名無しさん@お腹いっぱい。
11/12/28 22:44:46.33
一流のスポーツ選手ほど叩かれる
つまりそういうことだ


280:名無しさん@お腹いっぱい。
11/12/28 22:46:15.31
つまりルビキチは神ってことすか?

281:名無しさん@お腹いっぱい。
11/12/28 22:49:10.02
神キチ

282:名無しさん@お腹いっぱい。
11/12/28 23:06:09.34
キチさんってruby時代から叩かれてるよね
あの頃は顔写真まで使って叩いてて酷いと思った

283:名無しさん@お腹いっぱい。
11/12/28 23:07:47.51
アクの強いキャラクターだからなあ
別に悪人じゃないし色々貢献している人ではあるんだけど

284:名無しさん@お腹いっぱい。
11/12/28 23:12:26.85
いったい何に貢献してるんだ?
最近anything連呼してるだけじゃん。

285:名無しさん@お腹いっぱい。
11/12/28 23:13:51.02
個人的にはjplの人が一番偉いと思ってる

286:名無しさん@お腹いっぱい。
11/12/28 23:14:14.58
設定本では「筆者が開発している」anythingだったのが
elisp本では「筆者がメンテナンス・開発している」anythingになっていた
ちなみに原作者の名前はまったく出てこない。まさに神の御業である

287:名無しさん@お腹いっぱい。
11/12/28 23:45:54.41
るびきちが残念なのはemacsの枠内でだけ考えていること
anything.elもなんだかんだ言って既存のemacsスクリプトを取り込んで拡張していったから
自ずと限界は見えてしまう

anything.elがemacsの諸ライブラリの統合だと主張するのはわかったから
つぎはvimとemacsの統合というか融合の形を見せてほしい

288:名無しさん@お腹いっぱい。
11/12/28 23:49:42.01
なんだそりゃ

289:名無しさん@お腹いっぱい。
11/12/28 23:55:24.14
viperでいいのでは

290:名無しさん@お腹いっぱい。
11/12/29 00:01:08.69
いちおうるびきちのブログみる感じだとemacs内で閉じるのは×で
外部プログラム使おうぜって主張だったと思うけど。

正直emacs内のhttpライブラリとかうんこちんちんだからなあ。
ただ外部プログラム呼ぶと他の環境に移る時めんどくさい。

291:名無しさん@お腹いっぱい。
11/12/29 00:35:35.93
>>290
>正直emacs内のhttpライブラリとかうんこちんちんだからなあ。
詳しく聞きたい

292:名無しさん@お腹いっぱい。
11/12/29 00:40:34.06
俺達って、もう Emacs だけで第一線張っていくの無理なのかな……(涙
なんとか言ってくれよ誰か!俺達が…俺達が費した青春は何だったんだよ!

293:名無しさん@お腹いっぱい。
11/12/29 00:47:03.98
url.el が糞な点

・POSTメソッドをサポートしてない
・非同期接続時にタイムアウト指定できない
・接続待機はコンパイル時のオプション次第によっては非同期にならない

これはあかんよ。

294:名無しさん@お腹いっぱい。
11/12/29 01:06:16.02
>>293
postメソッドについては知らなかった
そうだったのか

295:名無しさん@お腹いっぱい。
11/12/29 11:50:02.70
モードラインに現在のバッファの最大行数を常に表示するのにはどうしたらいいんですか?

296:235
11/12/29 12:39:55.01
外部プログラムに頼りたくないので>>239さんの
M-- M-y
を使いたいと思います。
みなさんありがとうございました。

297:名無しさん@お腹いっぱい。
11/12/29 12:49:16.97
define-generic-modeの初期化関数リストの部分で
(custom-set-faces
'(font-lock-keyword-face ((t (:foreground "yellow")))))
のようにすると他のモードにも色が反映されてしまうのですが、
任意のモードのときにのみ特定の色をつけるということは可能でしょうか

298:名無しさん@お腹いっぱい。
11/12/29 13:09:33.71
>>297
デフォルトのfaceを使いたくない場合は、自分でfaceを作って
font-lock に教えてあげる必要がある。
特定のフェイスの色をバッファ毎に置き換える方法はちょっと分からない。

(make-face 'hogehoge-green-face)
(set-face-attribute 'hogehoge-green-face nil :foreground "green")

(make-face 'hogehoge-red-face)
(set-face-attribute 'hogehoge-red-face nil :foreground "red")

(font-lock-add-keywords 'hogehoge-mode
'(("^GREEN: .*" . 'hogehoge-green-face)
("^RED: .*" . 'hogehoge-red-face)))

んで、
generic-mode の場合は generic-make-keyword-list って関数があって、
これだとキーワードのリストに対して任意の face を指定出来るみたいだからこっち使ったほうがいいのかもね。
詳しい使い方は関数のヘルプをみてちょうだいな。


299:名無しさん@お腹いっぱい。
11/12/29 13:11:14.19
typo だ。
× generic-make-keyword-list
○ generic-make-keywords-list


300:名無しさん@お腹いっぱい。
11/12/29 14:34:09.80
kbd マクロに変数を渡すとエラーになってしまいますが
どうしても変数を渡したい場合は以下の方法しかないんでしょうか?
(setq a "C-c a")
(kbd a) ;; => (wrong-type-argument integer-or-marker-p a)
(eval `(kbd ,a)) ;; => "^C"

301:名無しさん@お腹いっぱい。
11/12/29 14:57:49.13
横レスだけど

(macroexpand '(kbd a))

>Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p a)
となるのはなぜなのだろう?
(macroexpand '(dolist (x '(a b c)) (print x)))
は問題ないのに

302:名無しさん@お腹いっぱい。
11/12/29 15:32:41.59
なんでって質問にはなかなか答えられないかもしれない。。
lisp reader作っちゃうような真性lisperの集まるスレに行って聞くといいかも。
プログラム板のschemeとかclとかの。

>>300
(setq a "C-c a")
(read-kbd-macro a)

ってやっちゃうととりあえず願いは叶うんだろうけど、これじゃ不満だろうか?
kbd はシンタックスシュガーな気がするしループの中でなんかするとかそうい
う使い方じゃないんじゃなかろうか。

303:名無しさん@お腹いっぱい。
11/12/29 15:49:18.27
>>301だけどありがとう
なるほど

304:名無しさん@お腹いっぱい。
11/12/29 16:11:41.68
>>301
macroexpandはマクロを実行するものだから。
マクロというのはありえいにいえば処理系に置き換えてもらいたい式を返す関数。
この場合 (kbd 'a) が実行される。

305:名無しさん@お腹いっぱい。
11/12/29 16:30:54.88
elispを編集中にカーソル下の関数の説明を見るにはどうすればよいですか?

306:名無しさん@お腹いっぱい。
11/12/29 17:34:09.08
>>305
describe-function
C-h をバックスペースにしてなければ C-h f

307:名無しさん@お腹いっぱい。
11/12/29 19:30:33.63
>>306
ありがとうございました。

308:名無しさん@お腹いっぱい。
11/12/29 20:03:41.81
メジャーモードやマイナーモードで
1タブあたりの半角空白の数を指定するにはどうするのですか

309:名無しさん@お腹いっぱい。
11/12/29 20:14:26.30
(add-hook 'なんかの-mode-hook
(lambda () (setq tab-width 4)))

310:名無しさん@お腹いっぱい。
11/12/29 20:17:02.17
(add-hook 'hoge-mode-hook
(lambda ()
(set (make-variable-local 'tab-width) 10)
(set (make-variable-local 'tab-stop-list) '(10 20 30 40 50 60 70 80 90))))

311:名無しさん@お腹いっぱい。
11/12/29 20:17:19.76
間違い
make-local-variable だった。

312:名無しさん@お腹いっぱい。
11/12/29 20:35:18.17
>>309
できました。

313:名無しさん@お腹いっぱい。
11/12/29 20:45:44.21
初心者質問増えた気がするのはrubikitch本の影響なのかなぁ。

314:名無しさん@お腹いっぱい。
11/12/29 21:07:39.90
URLリンク(www.mag2.com)
るびきちの経歴をはじめて見た気がする

315:名無しさん@お腹いっぱい。
11/12/29 21:08:33.99
>>313
Software Design とかで Emacs の特集くまれたのも関係してるのかもね。

316:名無しさん@お腹いっぱい。
11/12/29 21:08:33.89
るびきちは責任もってにわかの処理をしろ

317:名無しさん@お腹いっぱい。
11/12/29 21:14:15.30
とりあえず anything 使っとけで OK



318:名無しさん@お腹いっぱい。
11/12/29 21:16:33.71
Emacs をこれからわざわざ使い始める必要はないと思うけどなあ。

Emacsのキーバインドは呪いだぞ。下手になれるとずーーーーーっと付きまとわれる。

319:名無しさん@お腹いっぱい。
11/12/29 21:17:07.28
小指が痛いのは呪いのせいだぜ。

320:名無しさん@お腹いっぱい。
11/12/29 21:35:38.97
>>316
URLリンク(www.mag2.com)

で500yen/1month払った人の相手は責任もってやります。

321:名無しさん@お腹いっぱい。
11/12/29 21:39:04.70
内容読んでないからわからないけど
むしろ入門書よんでたら describe-function とかタブ幅設定知らないってことはないんじゃないのか?

322:名無しさん@お腹いっぱい。
11/12/29 21:39:34.05
URLリンク(www.mag2.com)
> 【月額512円】 1配信あたり約 512円

これが525円? ぼったくりにもほどがある。

323:名無しさん@お腹いっぱい。
11/12/29 21:53:46.94
512って書いてあんじゃん!

324:名無しさん@お腹いっぱい。
11/12/29 21:54:34.37
消費税の魔力は恐ろしいな。

325:名無しさん@お腹いっぱい。
11/12/29 22:04:44.97
テンプレに初心者はるびきちに聞けって入れとうこうぜ

326:名無しさん@お腹いっぱい。
11/12/29 22:17:21.39
inhibit-startup-echo-area-message ってなんでわざわざあんなめんどくさい仕様なの?

327:名無しさん@お腹いっぱい。
11/12/29 22:20:05.18
バイトコンパイルで動作が速くなるというのは.elと比べて
起動時の読み込み処理+起動後の処理の両方が速くなるということでしょうか

328:名無しさん@お腹いっぱい。
11/12/29 22:23:48.15
読み込みが早くなるだけで実行速度はかわらないんでないの。
読み込んだ後にどうせ内部的にコンパイルしているわけだし。

329:名無しさん@お腹いっぱい。
11/12/29 22:49:44.35
いや、計算が多いコードだと明らかに速くなるよ。


330:名無しさん@お腹いっぱい。
11/12/29 23:14:35.22
現行のバイトコンパイラはlucid製の最適化コンパイラで実行速度も速い。

331:327
11/12/29 23:28:18.08
分かりました

332:名無しさん@お腹いっぱい。
11/12/30 11:12:48.18
キャラクタセット毎にフォントを指定する時の疑問なんですが、
(set-fontset-font "xxx" 'japanese-jisx0208 "SomeFont") みたいに直接指定するのと
(set-fontset-font "xxx" 'japanese-jisx0208 (font-spec :family "SomeFont"
:registry "unicode-bmp" :lang 'ja))
みたいにfont-specで指定するのってどう違いがあるんでしょう?

333:名無しさん@お腹いっぱい。
11/12/30 11:18:48.69
set-fontset-font is a built-in function in `C source code'.
(set-fontset-font NAME TARGET FONT-SPEC &optional FRAME ADD)

FONT-SPEC may one of these:
* A font-spec object made by the function `font-spec' (which see).
* A cons (FAMILY . REGISTRY), where FAMILY is a font family name and
REGISTRY is a font registry name. FAMILY may contain foundry
name, and REGISTRY may contain encoding name.
* A font name string.
* nil, which explicitly specifies that there's no font for TARGET.


334:名無しさん@お腹いっぱい。
11/12/30 11:44:46.71
ということは、SomeFont の特定の registry に属するものだけ指定したい場合とかだけ
font-spec 使ったり cons セル渡したりすれば良いということなんですね。

font と fontset の仕組みがなかなか理解できないなぁ・・・
list-fontsets で出てくるフォントセット名って必ずしもそこで指定された family に属してるフォントだけってわけでもないんですよね。

335:名無しさん@お腹いっぱい。
11/12/30 12:15:08.17
> フォントセット名って必ずしもそこで
「そこ」ってどこよ? set-fontset-fontの事?

フォントセットはcreate-fontset*で作成し、その時にフォントセット名を指定する。
set-fontset-fontで指定してないフォントセット名がリストされても何も不思議じゃないんだが。

336:名無しさん@お腹いっぱい。
11/12/30 12:29:14.72
>>335
create-fontset* したときにフォントセット名を未指定だと
そのフォントの XLFD がフォントセット名になるじゃないですか。

それがあったから自分にはわかりづらかったんですよ。
なんで Family が * じゃないのに別の Family のフォントが使えるの???みたいに。
フォントセット名って結局は単純に名前なだけで内容は別に XLFD とは関係ないってことなんですよね。

337:名無しさん@お腹いっぱい。
11/12/30 12:50:29.54
set-frame-font等でフォントファミリーで指定することもできるので無関係というわけでもない。

338:名無しさん@お腹いっぱい。
11/12/30 12:55:33.81
正月休みに読もうと、図書館でるびきち本を借りようとしたら貸し出し中だった
自分以外にも買わないで済ます奴がいるんだなw

339:名無しさん@お腹いっぱい。
11/12/30 13:23:40.98
本屋で平積みになってたので
上に『いまどきのアセンブラプログラミング』を乗せてきた

340:名無しさん@お腹いっぱい。
11/12/30 14:29:28.44
いまどきのアセンブラプログラミングちょっと気になるな

とおもって書評見に行ったらメタクソでワロタ。
中身もトンデモだった。

341:名無しさん@お腹いっぱい。
11/12/30 14:54:17.74
キチの本は評判どうなんだろう


342:名無しさん@お腹いっぱい。
11/12/30 15:00:56.70
るびきちのemacs本を2冊とも持っているけど
誤植が結構ある気がするんだよな(とくにemacs lispの方)
正誤表がネットにあればいいのに

343:名無しさん@お腹いっぱい。
11/12/30 15:04:58.08
Emacsテクニックバイブルの方は正誤表あった
URLリンク(d.hatena.ne.jp)
Emacs Lispテクニックバイブルの方は知らん

電子書籍で販売しないあたりがオールドタイプ

344:名無しさん@お腹いっぱい。
11/12/30 15:07:51.32
>奇跡はまだ終わりません。 ちょうど1年後、2008年にanythingの開発を引
>き継ぐことになりました。 原作者はanything開発の時間が取れないとの
>ことで、熱烈なanythingファンの筆者がすぐに次期開発者として名乗りを
>上げ、了承されました。 バグを修正し、使いやすくするために大幅に機
>能を追加しました。 その結果、コードは約4倍に膨れ上がりました。 熱
>狂的なファンも増えました。 anythingを使ったLispプログラムもたくさ
>ん登場しました。 いつしかanythingがないと生きていけない様を表す
>「anything脳」という言葉も登場しました。 anythingで生産性が上がっ
>た人がたくさんいます。 そして現在は「anythingのるびきち」として知
>られるようになりました。


きんもーい

345:名無しさん@お腹いっぱい。
11/12/30 15:10:59.90
これもきもい
> 42歳のおっさんです。前著作とともに購入しました。
> ともに自宅用、会社用に1冊ずつ、合計4冊購入しました。
> ただ、すでに痛み始めているので、ともに、あと1冊ずつ購入することになると思います。
> メルマガも先ほど、購読の手続きを完了しました。楽しみにしています。


346:名無しさん@お腹いっぱい。
11/12/30 15:58:14.87
別にきもくはない。年齢的にも金持ってるんだろうし、俺もリファレンス的
な本は会社と自宅で2冊買ってたりしてた。


347:342
11/12/30 16:00:32.43
>>343
ありがとう。手元にあるemacsテクニックバイブルは2刷りだけど
日本語の文章としておかしい箇所があった気がする
メモをしていなかったので場所は忘れた
コードはざっと見た限りひどい間違いはなさそう
もう一度通読してみるか

348:名無しさん@お腹いっぱい。
11/12/30 16:55:04.23
>>293
嘘よくない…。post できるヨ…。

349:名無しさん@お腹いっぱい。
11/12/30 18:45:36.05
無知乙。10年前ぐらいはPOSTできないのが常識だった事も知らんのか。

350:名無しさん@お腹いっぱい。
11/12/30 19:02:40.92
誰に対して無知なんだよ…


351:名無しさん@お腹いっぱい。
11/12/30 19:04:55.83
HTTP/0.9にはGETメソッドしかなかったからな。

352:名無しさん@お腹いっぱい。
11/12/30 19:25:34.59
バカだとかアホだとかおよそ書籍に似つかわしくない単語が並んでた。

353:名無しさん@お腹いっぱい。
11/12/30 21:05:55.40
>>352
?どういうこと?

354:名無しさん@お腹いっぱい。
11/12/30 21:23:42.61
キチボンにそういう単語が並んでるってこと?

355:名無しさん@お腹いっぱい。
11/12/30 21:29:48.87
そう。cl に関する記述の部分だったかな。
おれはこのことに怒っているぞみたいなこと書いてあった。

356:名無しさん@お腹いっぱい。
11/12/30 21:32:26.59
ああいう表現って編集の人に止められないもんなのかね。
触らぬキに祟りなしとかで何も言わないのか。

357:名無しさん@お腹いっぱい。
11/12/30 23:04:23.29
cl に関しては公式が正しいと思うけどな。
Common LispだけがLispじゃないんだし。

358:名無しさん@お腹いっぱい。
11/12/30 23:09:10.31
ただ、dolist みたいな便利マクロが標準で用意されててもいいだろとは思ったわ。
どうせみんな書くんだろうし。

359:名無しさん@お腹いっぱい。
11/12/30 23:11:07.88
>>348
リクエストメソッドをPOSTに出来るだけでしょ。
マルチパートの送信も出来ないのにPOST出来るとはとてもとても。

360:名無しさん@お腹いっぱい。
11/12/30 23:39:38.22
>>356
clマクロを取りまく現状について
「こうしたねじれた事態は馬鹿げている」と強い口調で書いてはある
けれどバカと馬鹿げているではニュアンスがまるで違うからキとか言うのはよくない

361:名無しさん@お腹いっぱい。
11/12/30 23:42:51.17
キについては自称だからなぁ。

362:名無しさん@お腹いっぱい。
11/12/30 23:44:13.73
cl 使うなっていうなら標準で添付するなよなとは思うわ。
意味わからん。

363:名無しさん@お腹いっぱい。
11/12/31 00:31:14.97
>>358
dolist, dotimes は subr.el に標準で用意されている。
正直 cl とマージすればいいと思うんだけど、何かポリシー
があるんだろうな。

364:名無しさん@お腹いっぱい。
11/12/31 00:33:53.26
自前の使い捨てスクリプト書くときは便利だし。
パッケージとして作るものに (require 'cl) するなって意味だったような。


365:名無しさん@お腹いっぱい。
11/12/31 00:51:35.45
> バカと馬鹿げているではニュアンスがまるで違う

単語だけ切り出したらそう思うかもしれないけど、
全体の文脈からしてかなり烈しい内容だったと思うけどな。
この辺が幼稚な印象を強くしちゃうんだよ。rbktせんせ。


366:名無しさん@お腹いっぱい。
11/12/31 00:58:58.98
なんで subr に入れないんだろうね。
find-if とかの cl-seq の中身便利なのに。

367:名無しさん@お腹いっぱい。
11/12/31 01:07:28.40
文字数をモード列に表示することはできるのでしょうか

368:名無しさん@お腹いっぱい。
11/12/31 02:34:37.32

>>364
すみません、私はcl.el大好きなんですが、
eval-when-compileで囲んでもやはり使うべきではない、
というのが現在の一般的な意見、ということになっているのでしょうか?

>>366
RMSがキーワード引数が好きではないから、という説を
どこかで聞いた気がします。


369:名無しさん@お腹いっぱい。
11/12/31 02:41:52.98
FMV-BIBLO LOOX(6インチモニタのノート)でemacs常用している猛者はいないか?
買うかどうか悩んでるんだ。ソースコード編集してC-c C-cで部分実行するだけならこの画面で十分な気がするんだけどどうだろ

370:名無しさん@お腹いっぱい。
11/12/31 02:51:04.54
(eval-when-compile (require 'cl)) して使っていいのがCLマクロ
使っちゃダメなのがCL関数
じゃないの?

371:名無しさん@お腹いっぱい。
11/12/31 04:32:15.06
Richard Stallmanは以下のように書いているのですが、

The rule against using CL functions at run time is for the sake of the
user. The CL functions are not a standard part of the Emacs Lisp
namespace. Thus, loading CL can conflict with the user's function
definitions.

subr.elでdefunされているremoveと、
cl-seq.elでdefunされているremove-ifとでは、

「can conflict with the user's function definitions」という点で
どのような違いがあるのでしょうか。


372:名無しさん@お腹いっぱい。
11/12/31 09:34:41.01
皆でガンガンclの関数使って形骸化させようぜみたいなのにならなかったのだろうか

373:名無しさん@お腹いっぱい。
11/12/31 09:38:21.89
clの実装は小汚いからな。
喜んで使うのは三流グラマだけ。

374:名無しさん@お腹いっぱい。
11/12/31 09:52:56.96
>>371
subr.el で定義されている -> ぶつかったらユーザの責任
cl.el で定義されている -> ぶつかったら cl.el をロードしたやつの責任

という点で異なる

375:名無しさん@お腹いっぱい。
11/12/31 10:01:45.63
下手に準拠唄うとアレがダメだこれがダメだと重箱の角ツツク
ゴミッカスが喜び勢い付くだけだからね~

376:名無しさん@お腹いっぱい。
11/12/31 10:18:28.75
anythingに関しても今のところはつっこまれてないだけで、これからつっこま
れる可能性は高いよね。ところでanythingの標準添付の作業ってどこでされて
るんだ?trunk見ても見当たらないんだけど。

377:名無しさん@お腹いっぱい。
11/12/31 11:45:32.41
きちさんの脳内じゃない?
cedet もそうだけどあえて一緒にしない方がいいパッケージってあるよな

378:名無しさん@お腹いっぱい。
11/12/31 13:02:19.33
アレが添付されると臭くなりそうだな。

379:名無しさん@お腹いっぱい。
11/12/31 13:08:23.97
emacs本体の一部として配布されるEmacs Lispコードの中でremove-ifを使いたいという要求があったとして、
仮にremove-ifがcl-remove-ifという名前でcl-seq.elでdefunされていたとすると、

-> ぶつかったらユーザの責任、なので
-> -> emacs本体の一部として配布されるEmacs Lispコードでeval-when-compileで囲まずに(require 'cl)してOK

と言えるんでしょうか?

あるいは、remove-ifがマクロなら(eval-when-compile (require 'cl))して標準配布物内で使ってOK、だとして、
remove-ifをマクロとして再実装するのはすごくたいへんなんでしょうか?


380:名無しさん@お腹いっぱい。
11/12/31 13:14:40.25
そういや remove-if の実装どうなってんだろと思ってみにいったら
関数に cl-* の接頭辞が付きまくってて目眩がした
ネームスペースの仕組みあればねえ。

381:名無しさん@お腹いっぱい。
11/12/31 14:00:39.92
c--がよくわかりません
describe-keyで調べたらこう出ました

(negative-argument ARG)

Begin a negative numeric argument for the next command.
C-u following digits or minus sign ends the argument.

具体的にはどういうことなのでしょうか
使い道を知りたいです

382:名無しさん@お腹いっぱい。
11/12/31 14:12:24.79
>>381
C-- 数字 コマンド でそのコマンドに -数字 の引数を与えられるってこと。
C-- 3 C-p とかやると 三行「下に」移動する。

383:名無しさん@お腹いっぱい。
11/12/31 14:31:15.96
>>382
なるほど、C-uの繰り返しがデフォルトで4となっていましたが、
それの基本的な機能なのですね
わかりました

384:名無しさん@お腹いっぱい。
11/12/31 14:34:32.20
>>383
C-- はあくまで負の数な。
正の数の動作が基本だから
C-3 C-p とか M-3 C-p とかの方が普通。

385:名無しさん@お腹いっぱい。
11/12/31 14:56:23.71
>>293
え、POSTできるけど……

386:名無しさん@お腹いっぱい。
11/12/31 15:01:55.78
フォントを設定するとき、ある family に属するフォントが無い場合、別の family を使う、というのを実現するのに
以下のような関数を作ったのですが、もっと妥当なやり方があれば教えていただけると助かります。

(require 'cl)
(defun safe-font (&rest family-list)
"有効なフォントファミリを返す。"
(find-if (lambda (f) (find-font (font-spec :family f))) family-list))

(set-face-attribute 'default nil
:font (safe-font "あずきフォントL" "MeiryoKe_Console" "MS Gothic" "mono"))


387:名無しさん@お腹いっぱい。
11/12/31 15:02:52.09
>>385
>>359

388:名無しさん@お腹いっぱい。
11/12/31 15:10:04.48
flet で作ったローカルな関数をスコープから外れてからも呼ぶ方法はありませんでしょうか?
具体的にはこんな感じです。

(flet ((greeting (msg) (message "%s" msg)))
(defun say-hello ()
(greeting "hello"))
(defun say-good-bye ()
(greeting "good bye")))

(say-hello) ;; greeting が無いって怒られないようにしたい
(say-good-bye) ;; 同上
(greeting "nono") ;; でも greeting は外から見せたくない

389:名無しさん@お腹いっぱい。
11/12/31 15:24:12.63
>>388
flet の代わりに labels を使う。
ダイナミックスコープとレキシカルスコープを調べるべし。

390:名無しさん@お腹いっぱい。
11/12/31 15:24:53.27
macroletなら。

Emacsの関数はただのlambda式(か、それをバイトコンパイルしたもの)なので、
fletじゃ無理。実行時にgreetingが見えなければエラーになって終わり。

391:名無しさん@お腹いっぱい。
11/12/31 15:36:12.19
>>389
ありがとうございます。macrolet だとマクロとしてその場に展開、
labels だと文脈依存の関数としてちゃんと関数として定義されるってことですね。

レキシカルとダイナミックを見てて思ったんですが、
純粋なローカル変数を使いたい場合は let より lexical-let を使うべきな気がするんですけど
(内部の関数で参照しているシンボルを不用意に束縛しないため)
そういう認識であっていますか?

392:名無しさん@お腹いっぱい。
11/12/31 15:44:04.23
いや。クロージャとして持ち出したい場合以外は普通のletの方がいい。
なぜならEmacsには基本的にそっちしかないから。

レキシカルスコープは擬似的なものなんだよ。
基本的にはgensymで作った「変な名前の内緒のグローバル変数」に
値や式を持っておいてそれをsymbol-valueで取り出す。
labelsにせよ、lexical-letにせよ、適当な式をmacroexpand-allすればわかる。

393:名無しさん@お腹いっぱい。
11/12/31 16:17:46.66
>>392
なるほど。そうすると let で使うシンボル名は
せめて既に使われているようなのを不用意に使わないよう気をつけるしかないですか。


394:名無しさん@お腹いっぱい。
11/12/31 21:45:31.70
次のようなテキストファイルがあります
Test1243
(@import "./foo/foo.txt")
(@import "/usr/mytext.txt")
Pipipi
テキスト中に(@import path)と書いてある時はPathのファイルを埋め込んで別のテキストファイルとして出力したいです
Elispの正規表現でpathの文字列を取り出すのは分かるのですが
ファイルを読み込んだ上でファイルを作るのが良くわかりません
よろしくお願いします



395:名無しさん@お腹いっぱい。
11/12/31 22:00:24.55
こんな感じのこと?

;; 文字コードてきとー
(defun hoge-func ()
(let ((in (read-file-name "入力ファイル: "))
(out (read-file-name "出力先ファイル: ")))
(with-temp-buffer
(insert-file-contents in)
(goto-char (point-min))
;; 正規表現てきとー
(while (re-search-forward "(@import \"\\([^\"]+\\)\")" nil t)
(let* ((fn (match-string 1))
(contents (save-match-data
(with-temp-buffer
(insert-file-contents fn)
(buffer-string)))))
(replace-match contents nil nil nil 0)))
(write-region (point-min) (point-max) out))))

396:名無しさん@お腹いっぱい。
11/12/31 22:22:46.05
emacsのtext-modeで、タブを押したときにインデントを、
前の行には関係なく、一定量に設定するにはどうすればよいでしょうか?
(1)ではなく(2)となるようにしたいのですが。

(1)前の行を参照するタブ
123456789 abc
      ←スペースの後の位置に移動

(2)タブの移動量を8に
123456789 abc//
     ←ここに移動

397:名無しさん@お腹いっぱい。
11/12/31 22:32:56.01
よーわからんけど C-q C-i でタブ文字強制入力じゃだめ?

398:名無しさん@お腹いっぱい。
11/12/31 22:33:24.10
C-q TAB で純粋にタブ移動できるけど恒久的にやる方法はちょっとわからない。
というかいつの間に indented-text-mode = text-mode になってたんだ・・気づかなかった。


399:名無しさん@お腹いっぱい。
11/12/31 22:41:12.31
もっとまともな方法があるとは思うけど↓でtext-modeのTABは強制的に\tになる。
(add-hook 'text-mode-hook
(lambda ()
(setq indent-line-function (lambda () (insert " ")))
))


400:名無しさん@お腹いっぱい。
11/12/31 22:41:52.06
" " のところは C-q C-i でタブが入力されてると思ってくれ。

401:396
11/12/31 22:54:22.58
>>397-400
ありがとうございます。
>>399
これで完璧に解決しました。とても助かりました。

402:名無しさん@お腹いっぱい。
11/12/31 23:11:00.92
TAB関連で
tab-to-tab-stop の文字位置へ移動するにはどんなコード書けばいいんだろう?

403:名無しさん@お腹いっぱい。
11/12/31 23:14:38.73
(move-to-tab-stop)じゃあかんの?

404:名無しさん@お腹いっぱい。
12/01/01 00:07:44.48
Elispをすらすら書ける人は
普段からlispに慣れている人なのかな
尊敬するわ

405:名無しさん@お腹いっぱい。
12/01/01 01:15:55.55
一口にLispっつーても色々あって、それぞれノウハウ違うから
elispをスラスラ書ける人は普段からelispに慣れてる人だと思う

406:名無しさん@お腹いっぱい。
12/01/01 01:48:01.75
リストの処理とかがスラスラ書けても
バッファの弄り方とかテキストプロパティとかオーバレイとか辺りになってくると
あんまりLisp関係ないもんね。

407:名無しさん@お腹いっぱい。
12/01/01 12:40:54.90
暇なので elisp 紹介

■emacs で google map 表示

URLリンク(julien.danjou.info)
M-x google-maps して地名を入れるとpopupしたバッファに地図が表示される

そのままだと地名がアルファベットになっちゃうので以下を追加
(eval-after-load "google-maps"
'(defadvice google-maps-static-show (before google-maps-set-lang activate)
(ad-set-args 0 (append '(:language "ja")) (ad-get-args 0))))

popwin の管理下に入れておくとうっとおしくなくて良い。

408:名無しさん@お腹いっぱい。
12/01/01 12:43:07.23
oh... ちょっと間違った
↓ね。
(defadvice google-maps-static-show (before google-maps-set-lang activate)
(ad-set-args 0 (append '(:language "ja") (ad-get-args 0))))


409:名無しさん@お腹いっぱい。
12/01/01 13:35:41.22
>>407
㌧㌧、これはいいねぇ

410:名無しさん@お腹いっぱい。
12/01/01 13:46:38.69
おれもー
どっかから拾ってきた奴
yankしたとき貼りつけた内容がハイライトされる
popup-kill-ring つこうてる人は popup-kill-ring-interactive-insert が t じゃないと
ちゃんと反応してくれない

(defadvice yank (after yank-highlight-string activate)
(let ((ol (make-overlay (mark t) (point))))
(overlay-put ol 'face 'highlight)
(sit-for 0.5)
(delete-overlay ol)))

(defadvice yank-pop (after yank-pop-highlight-string activate)
(when (eq last-command 'yank)
(let ((ol (make-overlay (mark t) (point))))
(overlay-put ol 'face 'highlight)
(sit-for 0.5)
(delete-overlay ol))))


411:名無しさん@お腹いっぱい。
12/01/01 15:04:21.29
せめて unwind-protect で overlay の後始末はするべきだな。

412:名無しさん@お腹いっぱい。
12/01/01 15:08:16.25
>>411にならって直してみた

(defadvice yank (after yank-highlight-string activate)
(let ((ol (make-overlay (mark t) (point))))
(unwind-protect
(progn (overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol))))

(defadvice yank-pop (after yank-pop-highlight-string activate)
(when (eq last-command 'yank)
(let ((ol (make-overlay (mark t) (point))))
(unwind-protect
(progn (overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol)))))


413:名無しさん@お腹いっぱい。
12/01/01 15:11:01.01
いいですね。いただきます。

414:名無しさん@お腹いっぱい。
12/01/01 16:34:08.50
>>412の真似して undo で文章が復帰した時にもハイライトするようにしてみた。
もうちょっとマシな書き方出来ないか誰か添削してくれると嬉しい。

やってることは、
buffer-undo-list を頭からたどっていって
・(integerp . integerp) の cons セルにあたったらその範囲をハイライトしてループ終了
・(stringp . なんか) の cons セルにあたったらループ終了

(defadvice undo (after flash activate)
(catch 'loop
(dolist (c buffer-undo-list)
(let ((beg (car c))
(end (cdr c)))
(cond ((and (integerp beg)
(integerp end))
(let ((ol (make-overlay beg end)))
(unwind-protect
(progn (overlay-put ol 'face 'highlight)
(sit-for 0.5))
(delete-overlay ol)
(throw 'loop nil))))
((stringp beg)
(throw 'loop nil)))))))


415:名無しさん@お腹いっぱい。
12/01/01 16:57:08.39
>>412
副作用が怖いですが
アドバイス対象をinsert-for-yankにすると一つで済みました


416:名無しさん@お腹いっぱい。
12/01/01 17:59:01.61
>>414
dolist の中から return で脱出できたような。
けれど自分ならこうするかな。

(defadvice undo (after flash activate)
  (loop for (beg . end) in buffer-undo-list
        if (and (integerp beg)
                (integerp end))
        return (let ((ol (make-overlay beg end)))
                 (unwind-protect
                     (progn
                       (overlay-put ol 'face 'highlight)
                       (sit-for 0.5))
                   (delete-overlay ol)))
        else when (stringp beg)
        return nil))

417:名無しさん@お腹いっぱい。
12/01/01 18:23:18.31
>>416
loop を使うとシンプルになるんですね。
勉強しないといかんなーloop難しい

418:名無しさん@お腹いっぱい。
12/01/01 19:44:03.56
>>416
わかりやすいコードでいいね

419:名無しさん@お腹いっぱい。
12/01/02 00:40:25.00
NTEmacs スレが沈んだ
>>1が2008年9月とかのんびりした進行だっただけに誰も次スレ建てなかったわけだ

420:名無しさん@お腹いっぱい。
12/01/02 14:53:59.03
flet で関数を置き換えた際に、その関数内で置き換え前の関数を呼ぶ方法はありませんでしょうか?

(flet ((load (file &optional noerror nomessage nosuffix must-suffix)
(load file noerror t nosuffix must-suffix)))
(load "something"))

こんな風にすると再帰してしまいます。

421:名無しさん@お腹いっぱい。
12/01/02 14:59:40.35
symbol-function で関数の実体を取り出してどっかの変数に退避しておいてっ
て方法はある。

こんな感じかな?

(let ((original (symbol-function 'load)))
(flet ((load (file &optional noerror nomessage nosuffix must-suffix)
(funcall original file noerror t nosuffix must-suffix)))
(load "something")))


422:名無しさん@お腹いっぱい。
12/01/02 15:15:59.61
>>421
なるほど!ありがとうございます。これでやりたいことが出来ました。
session.el でセッション復帰時のローディングメッセージを消したかったのでした。
ソースの load してるところを直接書き換えちゃえばそれで済むといえばそれまでなんですが。

(defadvice session-initialize (around session-load-silently activate)
"セッションロード時のメッセージ抑制"
(let ((org-load (symbol-function 'load)))
(flet ((load (file &optional noerror nomessage nosuffix must-suffix)
(funcall org-load file noerror t nosuffix must-suffix)))
ad-do-it)))

423:名無しさん@お腹いっぱい。
12/01/02 15:37:23.73
>>387
URLリンク(www.emacswiki.org)

424:名無しさん@お腹いっぱい。
12/01/02 15:41:37.42
>>423
そんな標準で用意されていない elisp 持ち出されても。
むしろそういうのが標準パッケージに取り込まれないあたりが話になんね。
やっぱ url.el はうんこちんちんだな。

425:名無しさん@お腹いっぱい。
12/01/02 15:52:00.34
どうせemacsから画像のアップロードとかしないからいいんじゃね。

426:名無しさん@お腹いっぱい。
12/01/02 16:13:53.44
Gnu pack emacsを使っています
(open-file "./index.html")のようにして
windowsの関連付けどおりにファイルを開くことは可能でしょうか
それらしき関数が見当たらなかったので質問しました

427:名無しさん@お腹いっぱい。
12/01/02 16:19:35.26
gnusで仕様的に正しいmime multipartなメッセージ作れるんじゃないの?と思ってみてみたけど
multipart/mixedとかは良い感じに実装されてるのにmultipart/form-dataはないのな。惜しいな。

428:名無しさん@お腹いっぱい。
12/01/02 16:22:33.06
>>426
gnupack で cygwin もセットで導入しているなら
(defun open-file (file)
(interactive)
(start-process "cygstart" nil "cygstart" file))
cygwin いれてないなら cygstart を start に置き換えればいいんじゃないかな。

429:名無しさん@お腹いっぱい。
12/01/02 16:26:41.04
>>428
interactiveなのに引数必須とはいかがなものか。

(defun open-file (&optional file)
(interactive "fFile: ")
(start-process "cygstart" nil "cygstart" file))

430:名無しさん@お腹いっぱい。
12/01/02 17:08:05.60
>>429
file が nil だとエラーになるだろうし、
&optional がいらない。

431:名無しさん@お腹いっぱい。
12/01/02 17:08:59.52
ニワカが増えたな。

432:名無しさん@お腹いっぱい。
12/01/02 17:11:57.96
るびきちのせいだ

433:名無しさん@お腹いっぱい。
12/01/02 17:19:09.42
>>429 水準の間違いは昔からだろ。ただの勘違いかもしれないけど。

434:名無しさん@お腹いっぱい。
12/01/02 17:20:19.64
神社で除夜の鐘ならせるところってあるんだ?
てっきり寺だけかと思ってたんだが。

435:名無しさん@お腹いっぱい。
12/01/02 17:25:14.37
るびきちはemacs内で完結しないでどんどん外部のプログラムをelisp内から使えよって言ってるけど
外部のプログラムが入ってくると色んな環境で動かす時めんどくさくてやだ。
elispで完結してる方がいいよ。

436:名無しさん@お腹いっぱい。
12/01/02 17:58:55.73
elisp遅いし正規表現うんこだし非同期がアレじゃないの?
まあ確かに面倒だしキチは嫌いだけどな


437:名無しさん@お腹いっぱい。
12/01/02 20:06:07.02
emacs に喋らせたくて google 翻訳使ったのを作ったんだけど、日本語含むのがちゃんと動かない。
url-hexify-string の中で encode-coding-string utf-8 してるから問題ないと思ったんだけど何が不味いんだろう。
助言をください・・・

(require 'url-http)
(defvar speech-default-language "en"
"デフォルトの言語。")
(defvar speech-sound-player "cmd /c start %s"
"mp3音声再生プログラム。%s にファイル名が入る。") ;; windows 向け設定

(defun speech-message (text &optional lang)
"指定された文章を音声再生する。"
(interactive "sMessage: ")
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
temp-file)
(with-current-buffer
(url-retrieve-synchronously
(format "URLリンク(translate.google.com)"
(or lang speech-default-language)
(url-hexify-string text)))
(set-buffer-multibyte nil)
(setq temp-file (make-temp-file "speech-" nil ".mp3"))
(write-region (point-min) (point-max) temp-file nil 'silent)
(apply 'start-process "player" nil
(split-string (format speech-sound-player temp-file))))))

;; 以下を評価でしゃべる
(speech-message "a happy new year!")
(speech-message "a happy new year!" "ja") ;; 言語指定
(speech-message "あけましておめでとうございます" "ja") ;; 動作がおかしい...

438:名無しさん@お腹いっぱい。
12/01/02 20:21:32.48
temp-file の中身のぞいてみたら?日本語の結果には明らかに mp3 っぽくな
いものが入ってくるけど。google に投げるパラメータが正しいのか確認を。

で、気になったのが英語の方は再生できるとなると、http ヘッダがファイル
に残ってても再生できるってことなのか?


439:名無しさん@お腹いっぱい。
12/01/02 20:46:38.58
>>438
ヘッダ切り出ししなきゃいけなかったんですね。
MediaPlayerでためしてたからか、先頭にゴミがつまってても再生できてたみたいでした。

>>437 の一部を直してヘッダを切り取ってみましたが、状況変わらずでした。
(point-min) (point-max) temp-file nil 'silent)

(goto-char (point-min))
(write-region (search-forward-regexp "\n\n") (point-max) temp-file nil 'silent)

↓を評価して出来上がる文字列を chrome で表示するとちゃんと「あけましておめでとう・・」って音声が出てくるので
emacs側の文字コード変換とかが間違っているんでしょうか・・・
(format "URLリンク(translate.google.com)"
"ja" (url-hexify-string "あけましておめでとうございます"))

"URLリンク(translate.google.com)"

440:名無しさん@お腹いっぱい。
12/01/02 20:47:47.37
URL間違ってた・・・
↓です。
URLリンク(translate.google.com)

441:名無しさん@お腹いっぱい。
12/01/02 21:43:52.50
あとは chrome で送ってる http ヘッダと url-http.el で送ってる http ヘッ
ダを調べながら試してくしかないかなぁ。

どうやら User-Agent で弾いてはいないみたいだが。


442:名無しさん@お腹いっぱい。
12/01/02 22:02:11.86
>>441
url-debug を t にしてみてみたところ、emacs 側でリクエスト文字列が途中で書き変わってたりということはありませんでした。

他でどうなんだろうとおもって wget で試してみたところ User-Agent に何か適当なのが入っていないと
403 エラーになりました。
指定して取得した結果は英語は大丈夫、日本語は Emacs の時とまったく同じ変な結果が返されてきました。

おっしゃるとおり Chrome のリクエストヘッダと比較して差分を調べて見ることにします。何か足りていないんでしょうね。
ありがとうございました。

443:名無しさん@お腹いっぱい。
12/01/02 22:45:45.02
うまくいきましたので報告します。
結論から言って User-Agent でした。"Safari/" が含まれていないとなんでか半分ぐらいに切れた結果が返ってきてしまうようです。
(なのでIEでもEmacsと同じ壊れ方になりました。)
あと長過ぎてもダメだったりもするみたいですね。これは通常の Webインターフェースからでも制限かかってるみたいでした。

最終的に以下のようになりました。これで sdic で発音チェックしたり読み方わからない漢字読ませたり出来そうです。

;; (speech-message "鮃より鰆を食べたい。" "ja")
;; (speech-message "Learn basic keystroke commands." "en")
(defvar speech-default-language "en"
"デフォルトの言語。")
(defvar speech-sound-player "cmd /c start %s"
"音声再生プログラム。%s にファイル名が入る。")
(defun speech-message (text &optional lang)
"指定された文章を音声再生する。"
(interactive "sMessage: ")
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
(url-privacy-level 'paranoid)
(url-request-extra-headers '(("User-Agent" . "Emacs/URI Safari/0"))))
(with-current-buffer
(url-retrieve-synchronously
(format "URLリンク(translate.google.com)"
(or lang speech-default-language) (url-hexify-string text)))
(let* ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
(temp-file (make-temp-file "speech-" nil ".mp3"))
(cmdlist (split-string (format speech-sound-player temp-file))))
(set-buffer-multibyte nil)
(goto-char (point-min))
(write-region (search-forward-regexp "\n\n") (point-max) temp-file nil 'silent)
(apply 'call-process (car cmdlist) nil nil nil (cdr cmdlist))))))

444:名無しさん@お腹いっぱい。
12/01/02 22:50:38.11
>>443
環境や目的によるけれど、
open-jtalk なら日本語発声できるよ。
日本語のパースや発音方法を自前でするなら
mbrola などでもできる。

445:名無しさん@お腹いっぱい。
12/01/02 23:03:14.58
>>443
url.elは糞だ、外部プログラム呼ぶのはキチだって話してる最中にいい度胸だな。

446:名無しさん@お腹いっぱい。
12/01/02 23:09:56.87
おもしろいね
(setq speech-sound-player "mpg123 %s")


447:名無しさん@お腹いっぱい。
12/01/02 23:19:58.45
おもしろいじゃん
カーソル位置の単語を喋らせるのつくってみたよ

(defun speech-at-point ()
(interactive)
(speech-message (thing-at-point 'word)))
(global-set-key (kbd "C-c C-s") 'speech-at-point)

これで日本語対象にしてみたらダメだった
文字列から言語判別出来るようにすればよさそうだな

448:名無しさん@お腹いっぱい。
12/01/03 00:37:02.55
自分なりに改造してみた。
取り敢えず非同期に & >>447 の機能をいれた。
> 文字列から言語判別出来るようにすればよさそうだな
これはできてない。
あと、エラーになったときにバッファやファイルが削除されないかも。

(defun speech-callback (status &rest cbargs)
  (unwind-protect
  (progn
  (set-buffer-multibyte nil)
  (goto-char (point-min))
  (lexical-let ((temp-file (make-temp-file "speech-" nil ".mp3")))
  (let ((coding-system-for-read 'binary)
  (coding-system-for-write 'binary)
  (cmdlist (split-string (format speech-sound-player temp-file))))
  (write-region (search-forward-regexp "\n\n") (point-max) temp-file nil 'silent)
  (set-process-sentinel (apply 'start-process (car cmdlist) nil cmdlist)
  (lambda (process event)
  (delete-file temp-file))))))
  (kill-buffer)))

(defun speech-message (text &optional lang)
  "指定された文章を音声再生する。"
  (interactive (list (read-string "Message: " (thing-at-point 'word))))
  (let ((coding-system-for-read 'binary)
  (coding-system-for-write 'binary)
  (url-privacy-level 'paranoid)
  (url-request-extra-headers '(("User-Agent" . "Emacs/URI Safari/0"))))
  (url-retrieve (format "URLリンク(translate.google.com)"
  (or lang speech-default-language) (url-hexify-string text))
  'speech-callback)))

449:名無しさん@お腹いっぱい。
12/01/03 02:44:31.02
手抜きで
(or lang (and (string-match "\\cj" text) "ja") speech-default-language)


450:名無しさん@お腹いっぱい。
12/01/03 12:03:34.70
ちょいとうざいがベルの代わりに声で叱ってもらう
'("もう" "だめよ" "しかたないこね" "ちょっとだけよ")とかもいいな

(defvar speech-bell-messages '("おい" "こら" "いい加減にせいや" "いてまうぞわれ")
"御叱りの言葉")
(defvar speech-bell-language "ja"
"御叱りの言語")
(defvar speech-bell-cur nil)

(defun speech-bell-function ()
"声で叱る"
(let ((ring-bell-function nil))
(unless speech-bell-cur
(setq speech-bell-cur speech-bell-messages))
(speech-message (pop speech-bell-cur) speech-bell-language)))

(setq ring-bell-function #'speech-bell-function)

451:名無しさん@お腹いっぱい。
12/01/03 13:41:41.56
そういやemacspeakってのあったよな。

452:名無しさん@お腹いっぱい。
12/01/03 13:44:26.85
す、すばらしい
(speech-message "C'est parfait!" "fr")

453:名無しさん@お腹いっぱい。
12/01/03 13:58:29.87
>>448
おおー
set-process-sentiel で終了を検知すれば後始末が出来るんですね。
勉強になります。

454:名無しさん@お腹いっぱい。
12/01/03 14:50:57.48
Windowsでcmd /c start とかで再生しちゃうとiTunesだのMediaPlayerとかだのでてうざかったから
mplayerのWindows用gui無し版を入れたらはかどった。mpg123のwindowsビルドだとなんでか再生うまくいかなかったので。
URLリンク(www.mplayerhq.hu)

(setq speech-sound-player "mplayer -really-quiet %s")

455:名無しさん@お腹いっぱい。
12/01/03 15:00:57.91
今年こそは脱emacsしたい

456:名無しさん@お腹いっぱい。
12/01/03 15:05:52.66
>>453
>>448 だと lexical-let を使ったけれど、
(let ((process (apply 'start-process (car cmdlist) nil cmdlist)))
  (set-process-plist process `(temp-file ,temp-file))
  (set-process-sentinel process
  (lambda (process event)
  (delete-file (get 'temp-file
  (process-plist process))))))
という風にするほうが真っ当かもしれない。

457:名無しさん@お腹いっぱい。
12/01/03 15:08:39.08
  (  ) 脱イ・・・・・・
  (  )
  | |


 ヽ('A`)ノ マックス!!!
  (  )
  ノε|


 __[警]
  (  ) ('A`)
  (  )Vノ )
   | |  | |

458:名無しさん@お腹いっぱい。
12/01/03 15:18:16.09
おやくそくの
alias emacs=vim

459:名無しさん@お腹いっぱい。
12/01/03 15:52:40.25
>>428-430
できました。ありがとうございます。

460:名無しさん@お腹いっぱい。
12/01/03 16:00:41.47
一応NTEmacsスレ立てといた

NTEmacs スレッド 3
スレリンク(software板)

461:名無しさん@お腹いっぱい。
12/01/03 19:09:55.27
>>395
完璧です。どうもです。

462:名無しさん@お腹いっぱい。
12/01/03 19:38:37.96
anythingを入れています。
emacs起動後に*scratch*などで評価(作成)した関数が
anythingの候補一覧に載ってほしいのですが
どうすればよいのでしょうか

463:名無しさん@お腹いっぱい。
12/01/03 19:43:29.24
るびきちに聞けやボケぇ

464:名無しさん@お腹いっぱい。
12/01/03 19:49:26.67
anything使ってる人なんて都市伝説だろ

465:名無しさん@お腹いっぱい。
12/01/03 21:12:08.20
複数の関数に同じ advice を付けたいのですが、うまく書けません。
第一引数に変数を持ってくる正しい書き方はどのようにしたらよいのでしょう?

;; func-a と func-b に同じadviceをつける
(dolist (func '(func-a func-b))
(defadvice func (before ad-func activate) (message "before")))
これだと func 変数についてしまったようで func-a と func-b には何もなしでした。

466:名無しさん@お腹いっぱい。
12/01/03 21:17:05.44
どこからつっこめばいいかわからない。

467:名無しさん@お腹いっぱい。
12/01/03 21:18:12.97
るびきちの責任は重いな

468:名無しさん@お腹いっぱい。
12/01/03 21:25:45.54
>>466
マクロと関数と引数の評価は初心者が嵌りそうなところだと思うけれどなあ。

469:名無しさん@お腹いっぱい。
12/01/03 21:29:06.07
るびきちは責任もってニワカを引き取れよ

470:名無しさん@お腹いっぱい。
12/01/03 23:25:19.84
500円払えよ

471:名無しさん@お腹いっぱい。
12/01/03 23:26:58.36
本買ってやったじゃん。さっさと教えないと捨てるぞ。

472:465
12/01/03 23:50:32.16
色々調べて書きなおしてみました。
これで正しいのか、なんでうまくいっているのかいまいち理解できていないですが動いているのでよしとしました。

(dolist (func '(func-a func-b))
(eval `(defadvice ,func (before ,(intern (format "ad-%s" (symbol-name func))) activate)
(message "before"))))

>>466
すみませんでした。本買って勉強しなおしてきます。

473:名無しさん@お腹いっぱい。
12/01/04 00:05:35.25
Anything無いと途方に暮れる。
C-:にanything-filelist+を割り当ててるけど、これ以上素早く
ファイル(バッファ)を開く術は無いと思うけど。
あと、Semanticを有効にした状態でのimenuも便利過ぎる。


474:名無しさん@お腹いっぱい。
12/01/04 13:03:01.19
うわっ・・・私のEmacs起動、遅すぎ・・・?
(message "init time: %d msec"
(+ (* (- (nth 1 after-init-time) (nth 1 before-init-time)) 1000)
(/ (- (nth 2 after-init-time) (nth 2 before-init-time)) 1000)))
=> init time: 5172 msec

475:名無しさん@お腹いっぱい。
12/01/04 13:09:54.22
M-x emacs-init-time

476:名無しさん@お腹いっぱい。
12/01/04 13:24:41.72
M-x emacs-init-time
1.2 seconds

普通こんくらい。

477:名無しさん@お腹いっぱい。
12/01/04 13:38:19.83
9.4 seconds

478:名無しさん@お腹いっぱい。
12/01/04 13:46:51.94
yasnippet を入れないと 1秒台、入れないと3秒台

479:名無しさん@お腹いっぱい。
12/01/04 13:53:28.13
15.1 seconds だ。
Emacs 起動と同時に Gnus も起動してるともっとかかる、多分 1 分ぐらい。

480:名無しさん@お腹いっぱい。
12/01/04 14:12:44.28
15秒っていったいどんだけのファイルロードしてるんだ・・・

481:名無しさん@お腹いっぱい。
12/01/04 14:55:50.16
12.3 secondsだった
結構かかっているな

482:名無しさん@お腹いっぱい。
12/01/04 14:59:19.82
みなさんキーボードはハッピーハッキングキーボードなのでしょうか
ハッピーハッキングキーボードだとCGソフトのBlenderがうまく使えないので
乗り換えるべきか迷うのですが
ハッピーハッキングキーボードのメリットってなんでしょう?

483:名無しさん@お腹いっぱい。
12/01/04 15:04:58.86
そんなこと悩む時点でメリットなんて特にない。
あれは呪いにかかった人が仕方なく使うアイテム。

484:名無しさん@お腹いっぱい。
12/01/04 15:27:43.87
ぶっちゃけ中二病アイテムでしかないよな
ワナビ御用達って感じ

485:名無しさん@お腹いっぱい。
12/01/04 15:58:04.74
20.5秒だった

486:479
12/01/04 16:12:44.06
>>480
もしかして、自分はここの人たちと比べても変態なのか……!?

PC のスペックが Intel(R) Atom(TM) CPU N455 @ 1.66GHz
と低いことに原因があるのかな。


487:名無しさん@お腹いっぱい。
12/01/04 16:25:04.74
Atomだから遅いのかもね。
あとうちでは一回目と二回目で起動時間の差が生じたな。
初回は7秒ぐらいだったのが2回目は1秒ぐらいになってた。
ディスクキャッシュとかフォントとかそこら辺のせいっぽいなあ。

488:名無しさん@お腹いっぱい。
12/01/04 19:16:11.14
imenuとかこんなに便利なもの全然しらなかったよ
menubar関係かと思ってスルーしてた

るびきちの本はニワカだったら買って損ないわ
知ったかして敬遠してて損した

489:名無しさん@お腹いっぱい。
12/01/04 19:32:28.19
ステマか

490:名無しさん@お腹いっぱい。
12/01/04 19:42:10.48
あからさマ

491:名無しさん@お腹いっぱい。
12/01/04 19:55:25.37
とうとうこんな僻地のEmacsスレにまでステマの波が・・・

492:名無しさん@お腹いっぱい。
12/01/04 20:25:01.45
放置しておくべきなんだろうけど。
あいつよっぽど生活苦しいんだろうな。


493:名無しさん@お腹いっぱい。
12/01/04 20:35:53.09
買い支えてやれよ。

どうせならLisp極めてそれ系の本出したほうがかっこいいのにね。

494:名無しさん@お腹いっぱい。
12/01/04 20:50:22.94
なんでelispに拘り続けるのかわからんよね。
elispをバネに他の言語にも拡げればいいのに。
rubyに挫折して大した能力がないと自覚しちゃったのかな?
だとしたら、気の毒で憐れなやつだよな。

495:名無しさん@お腹いっぱい。
12/01/04 20:51:17.33
Emacs Lispテクニックバイブル正誤 - (rubikitch loves (Emacs Ruby CUI Books))
URLリンク(d.hatena.ne.jp)

496:名無しさん@お腹いっぱい。
12/01/04 21:16:02.43
>>495
>完全メールサポートつきで初月無料
>でなので安心して誤登録ください。
errata で誤字とか lisp 的でいいな。

497:名無しさん@お腹いっぱい。
12/01/04 21:18:40.48
誤って登録しても初月無料ですから安心してっていいたかったんじゃない?

498:名無しさん@お腹いっぱい。
12/01/04 21:28:39.22
なるほど

499:名無しさん@お腹いっぱい。
12/01/04 21:54:57.85
>>494
るびきちより有能な奴10000人が書き込むこのスレって天才たちの社交場だな

500:名無しさん@お腹いっぱい。
12/01/05 05:00:09.62
>>499
ああ、こういうのを負け犬の遠吠えっていうんだな。

501:名無しさん@お腹いっぱい。
12/01/05 10:55:29.78
emacs24はクロージャ正式にサポートかよ

502:名無しさん@お腹いっぱい。
12/01/05 11:57:07.33
今年こそは真面目に脱Emacsをはかるぜ
リハビリにしばらくWindowsのメモ帳だけで生活してやる

503:名無しさん@お腹いっぱい。
12/01/05 12:11:07.06
おもむろに elisp 紹介
・Ace jump mode - emacs 用 hit-a-hint 風カーソル移動
URLリンク(github.com)

(require 'ace-jump-mode)
(global-set-key (kbd "C-;") 'ace-jump-mode)

ってやって C-; a とか押すと画面上の a のところにアルファベットの連番が振られて
押せばジャンプできる。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch