のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,542,671人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレEmacs Part 39

emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
351 : 名無しさん@お腹 - 2011/12/30(金) 19:04:55.83 (-1,-29,-14)
HTTP/0.9にはGETメソッドしかなかったからな。
352 : 名無しさん@お腹 - 2011/12/30(金) 19:25:34.59 (+85,+29,-22)
バカだとかアホだとかおよそ書籍に似つかわしくない単語が並んでた。
353 : 名無しさん@お腹 - 2011/12/30(金) 21:05:55.40 (+60,+25,-2)
>>352
?どういうこと?
354 : 名無しさん@お腹 - 2011/12/30(金) 21:23:42.61 (+57,+29,-17)
キチボンにそういう単語が並んでるってこと?
355 : 名無しさん@お腹 - 2011/12/30(金) 21:29:48.87 (+57,+29,-5)
そう。cl に関する記述の部分だったかな。
おれはこのことに怒っているぞみたいなこと書いてあった。
356 : 名無しさん@お腹 - 2011/12/30(金) 21:32:26.59 (+88,+29,-41)
ああいう表現って編集の人に止められないもんなのかね。
触らぬキに祟りなしとかで何も言わないのか。
357 : 名無しさん@お腹 - 2011/12/30(金) 23:04:23.29 (-1,-29,-16)
cl に関しては公式が正しいと思うけどな。
Common LispだけがLispじゃないんだし。
358 : 名無しさん@お腹 - 2011/12/30(金) 23:09:10.31 (+61,+29,-26)
ただ、dolist みたいな便利マクロが標準で用意されててもいいだろとは思ったわ。
どうせみんな書くんだろうし。
359 : 名無しさん@お腹 - 2011/12/30(金) 23:11:07.88 (+93,+18,-34)
>>348
リクエストメソッドをPOSTに出来るだけでしょ。
マルチパートの送信も出来ないのにPOST出来るとはとてもとても。
360 : 名無しさん@お腹 - 2011/12/30(金) 23:39:38.22 (+63,+30,-59)
>>356
clマクロを取りまく現状について
「こうしたねじれた事態は馬鹿げている」と強い口調で書いてはある
けれどバカと馬鹿げているではニュアンスがまるで違うからキとか言うのはよくない
361 : 名無しさん@お腹 - 2011/12/30(金) 23:42:51.17 (+44,+21,-11)
キについては自称だからなぁ。
362 : 名無しさん@お腹 - 2011/12/30(金) 23:44:13.73 (+57,+29,-7)
cl 使うなっていうなら標準で添付するなよなとは思うわ。
意味わからん。
363 : 名無しさん@お腹 - 2011/12/31(土) 00:31:14.97 (+6,-29,-23)
>>358
dolist, dotimes は subr.el に標準で用意されている。
正直 cl とマージすればいいと思うんだけど、何かポリシー
があるんだろうな。
364 : 名無しさん@お腹 - 2011/12/31(土) 00:33:53.26 (+4,-29,-24)
自前の使い捨てスクリプト書くときは便利だし。
パッケージとして作るものに (require 'cl) するなって意味だったような。
365 : 名無しさん@お腹 - 2011/12/31(土) 00:51:35.45 (+58,+29,-40)
> バカと馬鹿げているではニュアンスがまるで違う

単語だけ切り出したらそう思うかもしれないけど、
全体の文脈からしてかなり烈しい内容だったと思うけどな。
この辺が幼稚な印象を強くしちゃうんだよ。rbktせんせ。
366 : 名無しさん@お腹 - 2011/12/31(土) 00:58:58.98 (+4,-29,-18)
なんで subr に入れないんだろうね。
find-if とかの cl-seq の中身便利なのに。
367 : 名無しさん@お腹 - 2011/12/31(土) 01:07:28.40 (+0,-27,-2)
文字数をモード列に表示することはできるのでしょうか
368 : 名無しさん@お腹 - 2011/12/31(土) 02:34:37.32 (+3,-29,-66)

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

>>366
RMSがキーワード引数が好きではないから、という説を
どこかで聞いた気がします。
369 : 名無しさん@お腹 - 2011/12/31(土) 02:41:52.98 (+3,-30,-76)
FMV-BIBLO LOOX(6インチモニタのノート)でemacs常用している猛者はいないか?
買うかどうか悩んでるんだ。ソースコード編集してC-c C-cで部分実行するだけならこの画面で十分な気がするんだけどどうだろ
370 : 名無しさん@お腹 - 2011/12/31(土) 02:51:04.54 (-2,-30,-59)
(eval-when-compile (require 'cl)) して使っていいのがCLマクロ
使っちゃダメなのがCL関数
じゃないの?
371 : 名無しさん@お腹 - 2011/12/31(土) 04:32:15.06 (+7,-30,-171)
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 : 名無しさん@お腹 - 2011/12/31(土) 09:34:41.01 (+57,+29,-8)
皆でガンガンclの関数使って形骸化させようぜみたいなのにならなかったのだろうか
373 : 名無しさん@お腹 - 2011/12/31(土) 09:38:21.89 (+57,+29,-2)
clの実装は小汚いからな。
喜んで使うのは三流グラマだけ。
374 : 名無しさん@お腹 - 2011/12/31(土) 09:52:56.96 (-1,-29,-37)
>>371
subr.el で定義されている -> ぶつかったらユーザの責任
cl.el で定義されている -> ぶつかったら cl.el をロードしたやつの責任

という点で異なる
375 : 名無しさん@お腹 - 2011/12/31(土) 10:01:45.63 (+57,+29,-63)
下手に準拠唄うとアレがダメだこれがダメだと重箱の角ツツク
ゴミッカスが喜び勢い付くだけだからね~
376 : 名無しさん@お腹 - 2011/12/31(土) 10:18:28.75 (+62,+29,-18)
anythingに関しても今のところはつっこまれてないだけで、これからつっこま
れる可能性は高いよね。ところでanythingの標準添付の作業ってどこでされて
るんだ?trunk見ても見当たらないんだけど。
377 : 名無しさん@お腹 - 2011/12/31(土) 11:45:32.41 (+57,+29,-8)
きちさんの脳内じゃない?
cedet もそうだけどあえて一緒にしない方がいいパッケージってあるよな
378 : 名無しさん@お腹 - 2011/12/31(土) 13:02:19.33 (+57,+29,-3)
アレが添付されると臭くなりそうだな。
379 : 名無しさん@お腹 - 2011/12/31(土) 13:08:23.97 (+3,-30,-285)
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 : 名無しさん@お腹 - 2011/12/31(土) 13:14:40.25 (+23,-4,-52)
そういや remove-if の実装どうなってんだろと思ってみにいったら
関数に cl-* の接頭辞が付きまくってて目眩がした
ネームスペースの仕組みあればねえ。
381 : 名無しさん@お腹 - 2011/12/31(土) 14:00:39.92 (+7,-30,-104)
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 : 名無しさん@お腹 - 2011/12/31(土) 14:12:24.79 (+7,-29,-24)
>>381
C-- 数字 コマンド でそのコマンドに -数字 の引数を与えられるってこと。
C-- 3 C-p とかやると 三行「下に」移動する。
383 : 名無しさん@お腹 - 2011/12/31(土) 14:31:15.96 (+12,-20,-9)
>>382
なるほど、C-uの繰り返しがデフォルトで4となっていましたが、
それの基本的な機能なのですね
わかりました
384 : 名無しさん@お腹 - 2011/12/31(土) 14:34:32.20 (+0,-29,-12)
>>383
C-- はあくまで負の数な。
正の数の動作が基本だから
C-3 C-p とか M-3 C-p とかの方が普通。
385 : 名無しさん@お腹 - 2011/12/31(土) 14:56:23.71 (+78,+12,-1)
>>293
え、POSTできるけど……
386 : 名無しさん@お腹 - 2011/12/31(土) 15:01:55.78 (+3,-30,-191)
フォントを設定するとき、ある 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 : 名無しさん@お腹 - 2011/12/31(土) 15:02:52.09 (+95,+30,+0)
388 : 名無しさん@お腹 - 2011/12/31(土) 15:10:04.48 (+7,-30,-116)
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 : 名無しさん@お腹 - 2011/12/31(土) 15:24:12.63 (+6,-29,-29)
>>388
flet の代わりに labels を使う。
ダイナミックスコープとレキシカルスコープを調べるべし。
390 : 名無しさん@お腹 - 2011/12/31(土) 15:24:53.27 (-2,-30,-48)
macroletなら。

Emacsの関数はただのlambda式(か、それをバイトコンパイルしたもの)なので、
fletじゃ無理。実行時にgreetingが見えなければエラーになって終わり。
391 : 名無しさん@お腹 - 2011/12/31(土) 15:36:12.19 (+3,-29,-103)
>>389
ありがとうございます。macrolet だとマクロとしてその場に展開、
labels だと文脈依存の関数としてちゃんと関数として定義されるってことですね。

レキシカルとダイナミックを見てて思ったんですが、
純粋なローカル変数を使いたい場合は let より lexical-let を使うべきな気がするんですけど
(内部の関数で参照しているシンボルを不用意に束縛しないため)
そういう認識であっていますか?
392 : 名無しさん@お腹 - 2011/12/31(土) 15:44:04.23 (+73,+6,-69)
いや。クロージャとして持ち出したい場合以外は普通のletの方がいい。
なぜならEmacsには基本的にそっちしかないから。

レキシカルスコープは擬似的なものなんだよ。
基本的にはgensymで作った「変な名前の内緒のグローバル変数」に
値や式を持っておいてそれをsymbol-valueで取り出す。
labelsにせよ、lexical-letにせよ、適当な式をmacroexpand-allすればわかる。
393 : 名無しさん@お腹 - 2011/12/31(土) 16:17:46.66 (+67,+29,-21)
>>392
なるほど。そうすると let で使うシンボル名は
せめて既に使われているようなのを不用意に使わないよう気をつけるしかないですか。
394 : 名無しさん@お腹 - 2011/12/31(土) 21:45:31.70 (+3,-30,-182)
次のようなテキストファイルがあります
Test1243
(@import "./foo/foo.txt")
(@import "/usr/mytext.txt")
Pipipi
テキスト中に(@import path)と書いてある時はPathのファイルを埋め込んで別のテキストファイルとして出力したいです
Elispの正規表現でpathの文字列を取り出すのは分かるのですが
ファイルを読み込んだ上でファイルを作るのが良くわかりません
よろしくお願いします

395 : 名無しさん@お腹 - 2011/12/31(土) 22:00:24.55 (+34,-30,-285)
こんな感じのこと?

;; 文字コードてきとー
(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 : 名無しさん@お腹 - 2011/12/31(土) 22:22:46.05 (+13,-30,-94)
emacsのtext-modeで、タブを押したときにインデントを、
前の行には関係なく、一定量に設定するにはどうすればよいでしょうか?
(1)ではなく(2)となるようにしたいのですが。

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

(2)タブの移動量を8に
123456789 abc//
     ←ここに移動
397 : 名無しさん@お腹 - 2011/12/31(土) 22:32:56.01 (+31,-29,-11)
よーわからんけど C-q C-i でタブ文字強制入力じゃだめ?
398 : 名無しさん@お腹 - 2011/12/31(土) 22:33:24.10 (-2,-30,-20)
C-q TAB で純粋にタブ移動できるけど恒久的にやる方法はちょっとわからない。
というかいつの間に indented-text-mode = text-mode になってたんだ・・気づかなかった。
399 : 名無しさん@お腹 - 2011/12/31(土) 22:41:12.31 (+38,-30,-65)
もっとまともな方法があるとは思うけど↓でtext-modeのTABは強制的に\tになる。
(add-hook 'text-mode-hook
(lambda ()
(setq indent-line-function (lambda () (insert " ")))
))
400 : 名無しさん@お腹 - 2011/12/31(土) 22:41:52.06 (-1,-29,-7)
" " のところは C-q C-i でタブが入力されてると思ってくれ。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について