トップページunix
982コメント294KB

Emacs part12

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001今臭NGNG
今日も秀丸の起動から一日が始まります。
各種 Emacs 関連はこちらで。

Emacs part11 (前スレ)
http://pc3.2ch.net/test/read.cgi/unix/1075033822/

emacs撲滅委員会
http://pc3.2ch.net/test/read.cgi/unix/1073293910/
0897895NGNG
>>896
アゲなのに、たったこれだけのレスがつくのに1時間かかるUNIX板が好き。
0898名無しさん@お腹いっぱい。NGNG
そんだけのレスで(意識して)アゲ続ける895のイカれた脳がスキ。
0899LinuxerNGNG
X上で動くemacsでも、emacs -> mozilla等、他アプリにコピペ出来ないのが痛いな。
web上に貼りたいときはテキストブラウザをemacs内で立ち上げるか、いったん保存して
他のアプリから貼り付けるかしてる。
最近、gnome-terminal内で-nwオプションで立ち上げるとターミナル自身のコピペ機能を
利用できることに気づいたが、なんかやだ。
なんとかならんのですか?
0900名無しさん@お腹いっぱい。NGNG
なるよ。
0901名無しさん@お腹いっぱい。NGNG
>>899
> X上で動くemacsでも、emacs -> mozilla等、他アプリにコピペ出来ないのが痛いな。
普通(?)はできる訳だが。
0902名無しさん@お腹いっぱい。NGNG
>>899
なぜ出来なくなっちゃってるんだろうね。
0903名無しさん@お腹いっぱい。NGNG
>>899
本当に出来ないのなら、ディストリのスレに行った方がいいと思う。

勘違いしてるかもしれないけど、
Emacs の kill-ring と X の clipboard は別だよ。
clipboard 経由なら emacs <-> 他アプリ でコピペ出来る。
0904名無しさん@お腹いっぱい。NGNG
そうやって linux 板にクズを押し付けるのはやめてくれよ。
本当に。
0905名無しさん@お腹いっぱい。NGNG
>>903
clipboardじゃなくてprimary selectionじゃないっけ?
0906LinuxerNGNG
>>900-904
おまえら、おまえら、ありがとう。
おれは顔から火が出た。
emacsのキルリングはクリップボードとは別物だから仕方がないとあきらめていた。
あるとしたらラッパーかなんかが外部に落ちてる程度かと思っていた。
ちゃんと、別物は別コマンドとして用意されていたんだな。
まじ、はずかしい。
0907名無しさん@お腹いっぱい。NGNG
x-select-enable-clipboard
0908名無しさん@お腹いっぱい。NGNG
>>906
別コマンドというか、普通にマウスでドラッグして範囲指定すれば
clipboardに入るよね?
0909名無しさん@お腹いっぱい。NGNG
エラーを起こすと、そのたびにモードラインのモードを表示している
箇所が [ ] で囲まれていくんですが、これをクリアする方法ってないん
でしょうか。
0910名無しさん@お腹いっぱい。NGNG
>>909
それってrecursive-editに入った状態じゃないの?
0911名無しさん@お腹いっぱい。NGNG
>>909
help-with-tutorial やっとけ。
0912909NGNG
>>910,911
ありがとうございます。

ESC ESC ESC やってみましたが、 *Backtrace* バッファが開いて

Debugger entered--Lisp error: (error "Cannot return from the debugger in an error")

と表示されてしまいました。

で、いろいろ試してたら、M-x top-level で直りました。
0913名無しさん@お腹いっぱい。NGNG
C-] でいけるよ。
0914909NGNG
>>913
おおっ、ほんとだ。サンクス。
0915909NGNG
というか、いままで *Backtrace* バッファが表示されたときに、
C-x o で元のバッファに戻っていたのが敗因でした。
q でデバッガを抜ければいいのね。
0916名無しさん@お腹いっぱい。NGNG
>>908
キーボードでする場合は明示的に
(define-key global-map "\M-w" 'clipboard-kill-ring-save)
としないと無理
0917名無しさん@お腹いっぱい。NGNG
clipboard と selection って違うのか。
よくわからんが elisp の info の Window system selections ってとこに
いろいろ書いてある。
でも、コピペするんなら普通に M-w で selection に入るので、
それでいけるよ。
0918名無しさん@お腹いっぱい。NGNG
x-select-enable-clipboard が
nil: kill-ring が CLIPBOARD に同期しないので Gtk アプリにペーストできない
t: CLIPBOARD が PRIMARY セレクションより優先されるので、CLIPBOARD に何か
入ってる場合は kterm 等から Emacs にペーストできない
と、t でも nil でも不具合があるので、こんなん書いて対処してる。
(defun my-x-get-selection (type)
(or (condition-case nil (x-get-selection type 'COMPOUND_TEXT)
(error nil))
(condition-case nil (x-get-selection type 'STRING)
(error nil))))
(defun my-select-selections ()
(interactive)
(let ((l (list (my-x-get-selection 'CLIPBOARD)
(my-x-get-selection 'PRIMARY)
(condition-case nil (x-get-cut-buffer 0)
(error nil))))
(x-select-enable-clipboard t) c)
(save-window-excursion
(with-temp-buffer
(dotimes (i (length l))
(insert (format "%d: %s\n" i (nth i l))))
(goto-char (point-min)) (delete-other-windows)
(switch-to-buffer (current-buffer))
(while (progn (setq c (read-char "which string to be killed? "))
(not (and (>= c ?0)
(<= c (+ (length l) ?0))))))
(let ((s (nth (- c ?0) l)))
(kill-new s)
(message "%s" s))))))
0919名無しさん@お腹いっぱい。NGNG
昔からXでやってるような選択でコピーして中ボタンでペーストするようなのは
PRIMARY(とSECONDARY)を使って、C-c/C-x/c-vのように明示的なコピー&ペーストの
操作があるときだけCLIPBOARDを使うって規約がどっかにあったと思うんだが
ICCCMだっけ?

PRIMARYもCLIPBOARDも同じ機構だけど使われ方が微妙に違った気がする。
0920名無しさん@お腹いっぱい。NGNG
混乱するからcxyをここで例えに使うな。馴染みの無い人だって沢山いる。
0921名無しさん@お腹いっぱい。NGNG
gtk版だとgtkのコピー、ペーストに対応してる?
0922名無しさん@お腹いっぱい。NGNG
ローカルのコンソールの X からだと emacs が起動するのに、
リモートの cygwin の Xwin.exe に表示させようとすると起動しません。
.emacs を読み込みに行っている気配もありません。

何が起こっているのか知りたいのですが、emacs の起動時の
振舞を逐一表示させるデバッグモードもしくは verbose モード
のようなものはありませんか?
0923名無しさん@お腹いっぱい。NGNG
ありません
0924名無しさん@お腹いっぱい。NGNG
~/.emacsの読み込み中のエラートラップは--debug-initだっけ。
でもどっちかというと、Emacs以前にXの問題のような気がする。
ほかのXクライアントはちゃんと出るのか? xeyesとか。
その次はXのリソースの指定があれば一旦全部無効にして、-qつけて試すとか。

0925名無しさん@お腹いっぱい。NGNG
>>919
http://freedesktop.org/wiki/Standards_2fClipboardsWiki
これかな。

GNU Emacs のデフォルト動作がこれから激しく逸脱してるのは間違いない。
0926名無しさん@お腹いっぱい。NGNG
cua-mode
0927名無しさん@お腹いっぱい。NGNG
>>924 出るんですよ、Firefox も動いてるし、
GNOME も KDE も動いてます。
xgalaga でゲームもできてるんです。
フォントが足りないから?とかおもって xfs でフォントを引っ張ってきてみたり、
depth の問題?とかおもってdepthもいろいろと変えて試してみたんですが。

つかれたので emacs -nw で使うことにします。
0928927=922NGNG
xemacs も問題なく動くので、それでしのぎます。
0929名無しさん@お腹いっぱい。NGNG
なんだろね。昔同じようにあるXサーバでは動くのに別のXサーバでは動かないと
いうのを経験したことがあるんだけど、そのときはどうやったんだっけか、
思い出せない。
0930名無しさん@お腹いっぱい。NGNG
人のソースを編集する時にインデント違う時って、どうしてますか?
普段は、c-basic-offsetを2にしてるんですが、4や8もあるんですよね。
動的に変えたいんですが、便利なminor-modeとかないっすか?
0931名無しさん@お腹いっぱい。NGNG
M-: (setq c-basic-offset 4)

Cは書かないので便利なelispとかは知らないが、
M-x change-offsetとかすると、c-basic-offsetをバッファローカルにして、
現在が2なら4,4なら8,8なら2に変更するコマンドを書くのは?
別にミニバッファから数値読み込んでもいいが。
0932名無しさん@お腹いっぱい。NGNG
ソースからスタイル自動識別してくれるようなelispって無いんかな?
0933名無しさん@お腹いっぱい。NGNG
Loading Unicode .... で、起動がすごく遅いんですが、
なんとか速くする方法ありませんか?
0934名無しさん@お腹いっぱい。NGNG
http://www.google.com/search?hl=en&c2coff=1&q=mule-ucs+%E9%81%85%E3%81%84&btnG=Search&lr=lang_ja
0935名無しさん@お腹いっぱい。NGNG
>>932
あ、それ私も何回も思った。 読んだソースに合わせてインデントの深さ
を設定してくれるだけでもえらく便利になるな。
0936名無しさん@お腹いっぱい。NGNG
>>935
ファイルに Local Variable を記述するしかないんじゃないですかね.
ファイルの最後にこんな感じ.

/* Local Variables: */
/* c-basic-offset: 2 */
/* End: */

もしくは一行目に
/* -*- c-basic-offset: 2 -*- */
かな.

ファイルを開くと Local Variable になりますよ.
0937名無しさん@お腹いっぱい。NGNG
ファイル開いたときの hook で
中身を調べて適当にモードや変数を変える関数を加えるくらいなら
簡単にできそうだな。
0938名無しさん@お腹いっぱい。NGNG
tab4 で書かれているのに tab8 で開いてしまって
結局インデントが合わなかったり
たまたまマッチさせた行がインデントおかしかったりすることもあるし
>>936の方法に限っていないけどソース以外のところでチェックしないと無理だと思うよ
0939名無しさん@お腹いっぱい。NGNG
すごく消極的な方法だけど、
私は hook でファイルのパスを調べてタブとインデントを設定してます。
たいていの場合、同じプロジェクトのファイルは同じパス以下にあって、
プロジェクト単位ではタブとインデントが統一されてるから。
いじるプロジェクトが増減すると設定も見直さなきゃならないけど、
その都度 M-: ほげほげするよりは楽だし、
うっかり違う設定で commit しちゃうと悪いので。
0940名無しさん@お腹いっぱい。NGNG
>>939
pbf-modeってのがあるね。
0941名無しさん@お腹いっぱい。NGNG
Blankspace の Sticky-Shift

ttp://homepage1.nifty.com/blankspace/emacs/sticky.html

を便利に使わせてもらっていますが、たまに input-method をフランス語
キーボード (french-azerty) にすると、シフト + セミコロンが句読点 (".")
に割り当てられているのでセミコロンが入力できなくなります。

競合を解決するか、この時だけ sticky-shift を無効にするにはどうしたら
よいでしょうか?

へぼい質問で申し訳ありませんが、よろしくお願いします。
0942名無しさん@お腹いっぱい。NGNG
>>939
hook の一種だけど, autoinsert 使えば同じコトがもっと楽にできるよ.

オレは普段 Meadow 使ってるから
デフォルトのコーディングシステムは sjis なんだけど
perl とか shell-script とか書くときは euc がいいからこんな風にしてる.

(setq auto-insert-alist
'(((cperl-mode . "Shell-Script mode magic number") ""
'(setq buffer-file-coding-system 'euc-jp-unix)
"#!/usr/bin/perl\n\n"
"### " (file-name-nondirectory (buffer-file-name)) "\n\n"
_ "\n\n### " (file-name-nondirectory (buffer-file-name)) " ends here.\n")
((sh-mode . "Shell-Script mode magic number") ""
'(setq buffer-file-coding-system 'euc-jp-unix)
"#!/bin/sh\n\n"
"### " (file-name-nondirectory (buffer-file-name)) "\n\n"
_ "\n\n### " (file-name-nondirectory (buffer-file-name)) " ends here.\n")
(("bin/[^.]+[^/]\\'" . "Shell-Script mode magic number") ""
'(when (eq major-mode default-major-mode)
(sh-mode)
(setq buffer-file-coding-system 'euc-jp-unix)
(insert "#!/bin/sh\n\n")
(insert "### " (file-name-nondirectory (buffer-file-name)) "\n\n")
(insert "\n\n### " (file-name-nondirectory (buffer-file-name)) " ends here.\n")
(forward-line -3)))
(("^[^.]+\\.el\\'" . "Emacs Lisp header") ""
'(setq buffer-file-coding-system 'euc-jp-unix)
";;; " (file-name-nondirectory (buffer-file-name)) " -*- mode: Emacs-Lisp -*-\n\n"
_ "\n\n;;; " (file-name-nondirectory (buffer-file-name)) " ends here.\n")))
0943名無しさん@お腹いっぱい。NGNG
>>942のいいトコロは
既存のファイルについては変更を加えないこと.
プロジェクトのファイルを編集しても大丈夫.

蛇足だけど .html は html-helper-mode 使っているから
html-helper-insert-new-buffer-strings が新規ファイル作成のときだけ
呼ばれるから, コーディングシステムはここで変えてる.

(defadvice html-helper-insert-new-buffer-strings
(around html-helper-coding activate)
ad-do-it
(set-buffer-file-coding-system 'euc-jp-unix))

これも既存ファイルを勝手に変えないから便利.
0944名無しさん@お腹いっぱい。NGNG
>>942
autoinsert って変数も設定できるんですね。
今まで新規作成時のテンプレートとしてしか使ってなかったです。
確かにこの方が楽そう。試してみます、ありがとう。
0945名無しさん@お腹いっぱい。NGNG
>>944
と思ったけど、auto-insert-alist の docstring を読む限り、
最初にマッチしたやつしか有効にならないみたい。
それだとグローバルに適用させるには hook のほうが楽かな…
0946名無しさん@お腹いっぱい。NGNG
>>944
>>942
>(("bin/[^.]+[^/]\\'" . "Shell-Script mode magic number") ""
これなら ~/bin/なんとか とか /usr/local/bin/かれこれ
みたいなファイルを find-file で作成すれば
auto-mode-alist にないファイル (拡張子なしとか) も
shell-script-mode になるよ, って設定なので,
この部分をプロジェクトの数だけ用意すればオッケ.

ただし, 先に書いてあるものから優先されるので
記述の順番は気をつけてね.
0947946NGNG
ぐぉ…遅かったか….
まぁ, そういうコトです….
0948Emacs part13 スレの 1 ◆y1O6Cqv4XU NGNG
どうでもいいけどGNUってブッサイクだよなー。
http://en.wikipedia.org/wiki/Image:Heckert_GNU_white.png
誰か新しいGNUキャラクター作ってやれよ
0949名無しさん@お腹いっぱい。NGNG
>>948
妙に擬人化しすぎだな。
0950名無しさん@お腹いっぱい。NGNG
GNUの萌え擬人化キャラはないのかな?

0951名無しさん@お腹いっぱい。NGNG
http://images.google.co.jp/images?q=GNU%20%E8%90%8C&hl=ja&lr=&oe=EUC-JP&inlang=ja&c2coff=1&sa=N&tab=wi
0952名無しさん@お腹いっぱい。NGNG
cvs の emacs だけど、configure 後に次のパッチをあてないと
家ではビルドできなかった。
あと、-O3 は不可。-O2 可。OS は FreeBSD-5.3stable です。
多分、emacs-unicode-2 でもこのパッチを当てないとビルドできないと思う。

--- emacs-21.3.50/lisp/Makefile.origSun Dec 12 05:40:49 2004
+++ emacs-21.3.50/lisp/MakefileSun Dec 12 05:41:21 2004
@@ -177,7 +177,7 @@
autoloads: $(lisp)/loaddefs.el doit
wd=$(lisp); $(setwins); \
echo Directories: $$wins; \
-$(EMACS) $(EMACSOPT) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins
+$(EMACS) $(EMACSOPT) -l emacs-lisp/autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins

$(lisp)/subdirs.el:
$(MAKE) $(MFLAGS) update-subdirs
0953名無しさん@お腹いっぱい。NGNG
>>952
( ´_ゝ`)フーン
0954名無しさん@お腹いっぱい。NGNG
-O3 はだめなのか…
俺まさにいまから -O3 他最適化オプション満載で
リビルドしようと思っていたのに。
0955名無しさん@お腹いっぱい。NGNG
>>952
Solaris 9だと当てなくてもOK
0956名無しさん@お腹いっぱい。NGNG
CVS の HEAD (GNU Emacs 21.3.50.1) で physical-line.el を使うと,
C-e の挙動がおかしくなった.最悪.
0957名無しさん@お腹いっぱい。NGNG
>>956
(vertical-motion 0)
の動作が行頭へ移動に戻ったからね。
physical-line.el とやらを変更する必要があるかも。
0958名無しさん@お腹いっぱい。NGNG
今、こんな感じで日本語キーボードの無変換キーをシフト
の替りにあてているんですけど、アルファベットしか効きません。

(if (keymapp key-translation-map)
nil
(setq key-translation-map (make-sparse-keymap)))
(let ((i ?a))
(while (<= i ?z)
(define-key key-translation-map
(vector 'muhenkan i)(vector (- i 32)))
(setq i (1+ i))))

これを数字や他の記号にも適用させる上手い方法はないですか?
0959名無しさん@お腹いっぱい。NGNG
そういうのは Window System でやった方がいいと思うが
(let ((map (make-sparse-keymap)))
(dotimes (i (1+ (- ?z ?a)))
(define-key map (char-to-string (+ ?a i)) (char-to-string (+ ?A i))))
(dolist (pair '(("`" "~") ("1" "!") ("2" "@") ("3" "#") ("4" "$")
("5" "%") ("6" "^") ("7" "&") ("8" "*") ("9" "(")
("0" ")") ("-" "_") ("=" "+") ("[" "{") ("]" "}")
("\\" "|") (";" ":") ("'" "\"") ("," "<") ("." ">")
("/" "?")))
(define-key map (car pair) (cadr pair)))
(define-key key-translation-map [muhenkan] map))
0960名無しさん@お腹いっぱい。NGNG
>>959

多謝です。
0961名無しさん@お腹いっぱい。NGNG
>> 957
なるほど.physical-line.el の中身を見たところ,作者さんも
vertical-motion のバージョン間の挙動の違いに苦労されてるようでした.

; 簡単そうなら動くようにしてみようと思ったのですが,どういうアルゴリズ
; ムになっているのか分からず断念.無念です.
0962957NGNG
;;;; The vertical motion
(if (and (boundp 'running-xemacs) running-xemacs)
(defalias 'physical-line-the-vertical-motion 'vertical-motion)
(defalias 'physical-line-the-vertical-motion
'physical-line-the-vertical-motion--for-emacs21)
)


(defalias 'physical-line-the-vertical-motion 'vertical-motion)
だけにしたのでは、ダメなのかな?
僕は、ce-scroll.elを使っているので、試してないデス。
0963名無しさん@お腹いっぱい。NGNG
>> 957
アドバイスありがとうございます.
それはすでに試してみたんですが,ダメでした.

教えて頂いた ce-scroll.el が良さそうだったので,これを機に乗り換えるこ
とにします.
0964名無しさん@お腹いっぱい。NGNG
emacs の M-x shell でシェルを使ってるときに、
例えば、kterm の C-l 見たいに、
カーソルを画面の一番上に持ってくるようにするためのコマンドってあるんでしょうか。
あれば教えてください。
0965名無しさん@お腹いっぱい。NGNG
>>964
C-u 0 C-l
0966名無しさん@お腹いっぱい。NGNG
>>964,965
C-u 0 ESC r ではないかな。
0967名無しさん@お腹いっぱい。NGNG
>>965
すごい!
できました!
ありがとうございました!
0968名無しさん@お腹いっぱい。NGNG
>>966
それではできませんでした…。
0969966NGNG
ふつうのバッファのときにカーソルを左上端に持ってくる操作でした...orz
0970952NGNG
今気が付いたんだけど、lisp/Makefile じゃなくて lisp/Makefile.in への
パッチを作ればいいんだった。(`_')ノシ(+_+)
0971名無しさん@お腹いっぱい。NGNG
>>964-965
大抵のモードでは C-0 は digit-argument だから C-0 C-l で良いのでは。
ちなみにカーソル行を最下段に持ってくるのは C-- C-l。
0972名無しさん@お腹いっぱい。NGNG
>>971
C-0 が digit-argument にならない環境もあるよ.
tty とか Windows とかそうじゃなかったっけ.

なので M-0 を推しておくね.
0973名無しさん@お腹いっぱい。NGNG
>>971 >>972
どちらもできました。
digit-argument、初めて聞きました。
勉強になります。
ありがとうございました。
0974名無しさん@お腹いっぱい。NGNG
xemacs21で、emacsclientは使えないのでしょうか。
server-startって関数が消滅しているようなのですが・・・
0975名無しさん@お腹いっぱい。NGNG
gnuserv なかったけ?
0976名無しさん@お腹いっぱい。NGNG
いけました!ありがとうございます!!!
0977名無しさん@お腹いっぱい。NGNG
ange-ftp とかで入力するパスワードを
ペーストで入力できるようにするには
どうすればいいですか?
0978名無しさん@お腹いっぱい。NGNG
gnu.emacs.sourcesに出てる
tpum.el --- Popup menus in text mode.
って実行してみたけど何がどう変わるのかよくわからんちん。
0979名無しさん@お腹いっぱい。NGNG
ttp://lgarc.narod.ru/xemacs/tpum-screen.png
0980名無しさん@お腹いっぱい。NGNG
ども。でもポップアップってキーでどうやれば出るのかなあ。
0981名無しさん@お腹いっぱい。NGNG
おー、なんだかすごい気が。でも使いはしないなあ。
0982名無しさん@お腹いっぱい。NGNG
XEmacs用だから動かすには直しがいりそうだな。
いらねえからどうでもいいけど
レス数が950を超えています。1000を超えると書き込みができなくなります。