トップページunix
1001コメント308KB

Emacs part9

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。NGNG
各種 Emacs 関連はこちらで。

Emacs
http://cocoa.2ch.net/unix/kako/967/967450973.html
Emacs part2
http://pc.2ch.net/unix/kako/1001/10010/1001087615.html
Emacs part3
http://pc.2ch.net/unix/kako/1007/10076/1007618266.html
Emacs part4
http://pc.2ch.net/unix/kako/1013/10133/1013390142.html
Emacs part5
http://pc.2ch.net/unix/kako/1021/10217/1021734785.html
Emacs part6
http://pc.2ch.net/unix/kako/1032/10326/1032611750.html
Emacs part7
http://pc.2ch.net/test/read.cgi/unix/1042141693/
Emacs part8
http://pc.2ch.net/test/read.cgi/unix/1051455239/

Emacs Lisp で書かれたプログラムのバグを知らせる方法
http://www.jpl.org/elips/BUGS-ja.html
0622名無しさん@お腹いっぱい。NGNG
このスレッドは初カキコだす。ちょっとお尋ねしたいことがあります。

Emacsの色の設定なのですが、.emacsを以下のように編集してもC言語の
キーワードなどに色がつかず、太字や下線が引かれた状態になってしま
います。
ちなみに環境は、VMWare上にLinuxをインストールし、X Window System
を走らせています。シェル上ではディレクトリや実行可能ファイルには
色がついています。X Window Systemではなくコンソール上でEmacsを使
うと下記の設定ファイルで色をつけることができます。Xがおかしいの
かEmacsがおかしいのかよくわからないです。。。
何かわかる方がいたら是非教えていただけますか。

/* .emacs の内容 */
;; フォントロックをオン
(add-hook 'c-mode-common-hook '(lambda () (font-lock-mode 1)))
;; これだけではできなかったため以下のコマンドも追加した。
;; が、結果は同じで"int"などが青色にはならない。。。
(add-hook 'font-lock-mode-hook
'(lambda ()
(my-font-lock-set-face)))
(defun my-font-lock-set-face ()
;;予約語
(make-face 'my-keyword-face)
(set-face-foreground 'my-keyword-face "blue")
(setq font-lock-keyword-face 'my-keyword-face)


0623620NGNG
>>621
ありゃりゃ、スマソ。
0624名無しさん@お腹いっぱい。NGNG
次のようにするとeshellのプロンプトでclear
できるそうですが、shell-modeでできるように
するにはどうすればいいでしょうか?
s/eshell/shell/ ではだめぽ。直接呼ぶと
(M-x shell/clear)ちゃんと動いてます。

(defun eshell/clear ()
(interactive)
(let ((inhibit-read-only t))
(erase-buffer)))
0625名無しさん@お腹いっぱい。NGNG
>>622
同じような方法で俺のとこではうまくいってるのでよくわからないが、
他に色つけるような機能(color-mate とか)があれば切ってみるとか、
list-faces-display で my-keyword-face を確認してみるとか。

あと int とかは font-lock-type-face じゃなかったっけ。
0626名無しさん@お腹いっぱい。NGNG
>>624
shell-mode で適当なキーにバインドしたのですか?
それとも、
% shell/clear
とか
% (shell/clear)
のように呼出したのですか?
0627名無しさん@お腹いっぱい。NGNG
基本なのも知れないけど検索しても分からん:
英語のファイルをひらいた時にワードラップ(単語単位で改行してくれる)で表示してくれるにはどうしたらいいの? 実際に改行文字を挿入するんでなく、表示だけ単語で改行してほしいんだけど...
0628名無しさん@お腹いっぱい。NGNG
>>627
そのまえに改行入れて書き込むようにおつゆ。
0629624NGNG
>>626
eshellでは
prompt> clear
できるらしいので、shell-modeで同じように
試みました。M-xで呼べば動くのは分かって
いるのでそれでよければバインドするのですが、
プロンプトで`clear'したいので。
0630名無しさん@お腹いっぱい。NGNG
>>629
Meadowならできるけどな
0631ヽ(´ー`)ノNGNG
ansi-term にすれば?
0632名無しさん@お腹いっぱい。NGNG
>>631
それはそれでディレクトリが同期しないっていう人がいるし。
俺は好きだけど。
0633名無しさん@お腹いっぱい。NGNG
>>629
eshell/clear() と、普通の terminalでの clear の挙動が違うから、
これでいいのか分からんが、
(add-hook 'shell-mode-hook
(lambda ()
(local-set-key "\C-l"
(lambda ()
(interactive)
(ignore-errors
(while t
(scroll-up 1)))))))
こんなのはどうだ?
0634名無しさん@お腹いっぱい。NGNG
emacsを
LANG=C emacs
で起動する以外に
Shift+Space
Ctr-o
での日本語入力を殺すことはできますか?
0635名無しさん@お腹いっぱい。NGNG
>>634
xim を殺したいのか、それ以外も殺したいのかどっちだ?
0636名無しさん@お腹いっぱい。NGNG
>>634
できます。
0637634NGNG
Shift+Spaceや、Ctr-oで変換モードにならなければ
なんでもいいです。
0638名無しさん@お腹いっぱい。NGNG
>>637
何回この話題出るんだろうね。
テンプレートに入れた方がいいんじゃない?

Shift-space や Ctrl-o の日本語入力(XIM)を無効にしたい時は
以下のコマンドで Emacs を起動する。

sh系シェル

% XMODIFIERS=@im=none emacs

csh系シェル

% \env XMODIFIERS=@im=none emacs
0639627NGNG
>>628
そですね。すまそ
0640名無しさん@お腹いっぱい。NGNG
>>638
1. --without-xim でコンパイルする
2. .Xdefaults に Emacs*xnlLanguage: C を追加
3. .Xdefaults に Emacs*useXIM: false を追加

とかもアリ。
0641名無しさん@お腹いっぱい。NGNG
auctex mode使おうとしているんですが、
これって、リージョンを\section{}や\emph{}でかこったりするのは
できないんでしょうか?
infoずーっと舐めてみたりgoogleしてみたりしたけど
見つからないような気がするんですが、おねがいします。

0642名無しさん@お腹いっぱい。NGNG
>640
3 はパッチがいるんじゃないかい?
0643名無しさん@お腹いっぱい。NGNG
.NETにもついている、C/C++ソース中の中括弧「{」「}」内の
ソースを隠したり、出したり切り替えれるモードってありませんか?
0644名無しさん@お腹いっぱい。NGNG
特定の mode で、viper を完全に止めることってできますでしょうか?
0645名無しさん@お腹いっぱい。NGNG
>>644
viper を止める関数を hook に入れるとか。
0646名無しさん@お腹いっぱい。NGNG
>>645
一度 viper をロードする事によって、
emacsの他の関数へのアドバイスしてしまうのが、
viper抜けても影響与えたりしないかとか、どうなんだろ。
以前気楽に viperと non-viperをトグルできたら
便利かなーと思った事があったけど、それが心配で導入してない。
0647名無しさん@お腹いっぱい。NGNG
>>646
ですよね。そうなんですよ、advice 多過ぎなんですよ。
自分で使うだけなので、viper の keymap のいくつかを、
local variable にして define-key で、nil を設定して
切り抜けました。
ぬりがとう。
0648名無しさん@お腹いっぱい。NGNG
おれはこうしてる。
(add-hook 'viper-load-hook
(lambda ()
(add-to-list 'viper-vi-state-mode-list 'scheme-mode)
(add-to-list 'viper-vi-state-mode-list 'ruby-mode)
(add-to-list 'viper-emacs-state-mode-list 'help-mode)
(add-to-list 'viper-emacs-state-mode-list 'log-view-mode)
(add-to-list 'viper-emacs-state-mode-list 'diff-mode)
0649名無しさん@お腹いっぱい。NGNG
emacs でバイナリーファイルを編集できる
ようなのですが、Big Endian のバイナリー
データを Little Endian に変換するのを簡単
にできますでしょうか。
0650名無しさん@お腹いっぱい。NGNG
>>649
量による。
見ながらちょっと替えるだけでいいなら、hexl-modeをそのまま使うか、簡単な関数を追加するだけで
できる。
具体的にどんなことをしたいのかな?
0651名無しさん@EmacsNGNG
>>650
レスどうも.

>量による。
ファイルがたくさんあるわけではなのですが,1つの
ファイルのデータ量がたくさんあるので一括でやり
たいなあ.

>具体的にどんなことをしたいのかな?
やりたいのは,昔の UNIX 機 (Big Endian) で作られ
たバイナリファイルを今の Intel 機 (Little Endian)
で使えるように変換したいということなんですが.

ですから、emacs でどうしてもしなくちゃいけない話
なくて申し訳ないのですが、emacs なら簡単にできる
かなと思った次第です.
0652名無しさん@お腹いっぱい。NGNG
loop {
a = read(1); b = read(1)
write(b); write(a)
}
みたいなのじゃ駄目なのかな?
0653名無しさん@お腹いっぱい。NGNG
>>651
それだけじゃどんな構造かわからないけど、Programming するしかなさそうだな。
知っている人なら Emacs (elisp) でも C とかでも簡単にできると思う。
0654名無しさん@お腹いっぱい。NGNG
dd conv=swab ではだめなのかしら。既にemacsと関係ないけど。
0655名無しさん@EmacsNGNG
>>653

確かにデータの構造も把握してないや.
ちゃんと C で Program 組んでやった方が
良さそうですね.
ありがとうごさいました.
0656名無しさん@お腹いっぱい。NGNG
すいません、くだ質レベルだと思うんですが、
emacsでhtml文書を保存すると、
必ず文字エンコードがiso-2022-jpになってしまいます。
これはhtml文書はiso-2022-jpで書くべきだ、
ということでこうなるのでしょうか?
もしそうでなかったら、どうすればこれを回避できるのか、
教えていただけないでしょうか。
0657名無しさん@お腹いっぱい。NGNG
>>656
major-mode は?
0658名無しさん@お腹いっぱい。NGNG
>>657
すいません、ちゃんと確認しないで書き込んでしまいました!
html文書とかは関係なくて
(htmlはisoという変な固定観念があったので勘違いしました。。)
UTF-8で保存したものは、iso-2022-jpになるようです。
JDEEなどでも確認しました。emacsは21.3です。
もしかしてこれはFAQでしょうか。。
0659名無しさん@お腹いっぱい。NGNG
>>658
major-mode は?
0660656=658NGNG
>>659
major-modeって何かわかんねーんだよ。
頭悪そうな雰囲気で気付けよぼけ
0661名無しさん@お腹いっぱい。NGNG
(setq hoge "abc\"def")

というような命令をそのままファイルに書きこむプログラムが書きたい。
(setq hoge と ) はそのまま

(insert "(setq hoge")
(insert ")")

で書きこめる。でも "abc\"def" の部分が上手くいかない。
いったん (setq temp "abc\"def") とやって

(insert temp)

とすると、単に abc"def と書きこまれてしまう。どうすべし?
みなさん、教えれ。
0662名無しさん@お腹いっぱい。NGNG
>>660
major-mode は?
0663名無しさん@お腹いっぱい。NGNG
>>661
(insert (prin1-to-string '(setq hoge "abc\"def")))
ってこと?
0664名無しさん@お腹いっぱい。NGNG
>>662
ガイルの強パンチ空中投げ
0665名無しさん@お腹いっぱい。NGNG
>>660
Emacs 使うなら major-mode くらい知っとかないと。
C-h t やっとくといいよ。
あと、頭の悪さは自慢にならにょ。

>>664
それはフライングバスタードロップ。
0666名無しさん@お腹いっぱい。NGNG
VIPERを使っている人が割といるようなので、
1つ質問させてください。
:map を使用すると以下のような式が.viperに登録されるのですが、

(viper-record-kbd-macro "gg" 'vi-state [\1 G] 't)

いざ gg を入力すると一瞬妙な間があってから 1G が実行される
感じなのですが、これはそういうものなのでしょうか?
できれば、gg を入力した直後にさくっと実行されるようにしたい
のですが、なにか方法があるのでしょうか、教えてください。
0667名無しさん@お腹いっぱい。NGNG
>>665
フライングメイヤー
0668名無しさん@お腹いっぱい。NGNG
>>664
どのゲームのガイルよ。
0669名無しさん@お腹いっぱい。NGNG
major-mode からどーしてゲームネタに繋がるのかサパーリわからんが、
そろそろいいかげんにしてくれ。
0670名無しさん@お腹いっぱい。NGNG
ガイルは
しょうさ【少佐】

a major(陸軍)
0671名無しさん@お腹いっぱい。NGNG
ガイルは少佐(==major)
0672664NGNG
mayorとmajorのつづりが似ていたからなんて言えないよな…
0673名無しさん@お腹いっぱい。NGNG
関係ないけど私は野鳥を使ってます。
0674661NGNG
>>663
(゚д゚)ウマー、これこれ。
そのまんま挿入したかったの。
サンクスコ。
0675名無しさん@お腹いっぱい。NGNG
C-x C-v の動作が糞ムカつくからラップした。

(defun my-find-alternate-file ()
"カーソル位置を保持したままファイルを読み直す"
(interactive)
(let ((point (point)))
(find-alternate-file (buffer-file-name))
(goto-char point)))

(global-set-key "\C-x\C-v" 'my-find-alternate-file)

便利だろ?
0676名無しさん@お腹いっぱい。NGNG
alternate-file を開くことができないのは仕様ですか?
0677(not 675)NGNG
advice で書き直してみた。save-excursion() はこの場合使えないのね。

(defadvice find-alternate-file
(around find-alternate-file-revival-point (filename) activate)
"カーソル位置を保持したままファイルを読み直す"
(let ((point (point)))
ad-do-it (goto-char point)))

関連情報: http://namazu.org/~satoru/diary/?200203c&to=200203272#200203272

>>676
どういう意味?
0678名無しさん@お腹いっぱい。NGNG
C-x C-v runs the command find-alternate-file
which is an interactive compiled Lisp function in `files'.
(find-alternate-file FILENAME)

Find file FILENAME, select its buffer, kill previous buffer.
If the current buffer now contains an empty file that you just visited
(presumably by mistake), use this command to visit the file you really want.
0679675NGNG
>>676
開くことなんて無いだろ。
とはいえ、俺は>>677の方を使うことにする。
0680 NGNG
(defadvice find-alternate-file
(around find-alternate-file-ad (filename) activate)
"読み直しならカーソル位置を保持する"
(let ((point (if (equal (expand-file-name filename) buffer-file-name)
(point))))
ad-do-it
(if point (goto-char point))))
0681(not 675)NGNG
>>680
オレもようやく気づいて、同じように変更していたよ。。。
0682名無しさん@お腹いっぱい。NGNG
>>679
> 開くことなんて無いだろ。
あるよ。おれは。
0683名無しさん@お腹いっぱい。NGNG
>>682
どの位の頻度で?
0684682NGNG
>>683
週に数回くらいかな?
同じファイル開き直すことよりは多いよ。
0685名無しさん@お腹いっぱい。NGNG
同じファイルの読み直しは
http://namazu.org/~satoru/diary/?date=20020327#p02
を使ってる。
0686名無しさん@お腹いっぱい。NGNG
>>684
> 週に数回くらいかな?
> 同じファイル開き直すことよりは多いよ。

私も割りと良く使うかな、find-file で、開いたら違うファイルだったとかいっ
た場合、バッファの数を増やしたくないので、そのときには、
find-alternate-file を使って find-file で読み込んだファイルそのものを
置き換えています。
0687名無しさん@お腹いっぱい。NGNG
>>684

自動読み込み(global-auto-revert-mode)を使え、天国だ。
ttp://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=revert

俺は使っていないが自動がいやなら、disk かな?
ttp://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=disk

0688名無しさん@お腹いっぱい。NGNG
>>687
なんかズレてるような。
0689名無しさん@お腹いっぱい。NGNG
>>687
global-auto-revert-modeは便利そうだから使ってみた。
けど、カーソル位置が保持されないのが欠点があった。
天国ではなかった。
0690NGNG
×保持されないのが欠点
○保持されない欠点
0691629 NGNG
>>633
プロンプトで`clear'と打ちたいのですが..
comint使えばできるでしょうか?
0692名無しさん@お腹いっぱい。NGNG
comintって出力の方か..( ;゜Д゜)
0693629NGNG
できますた (*-_-*)

(defun comint-watch-for-clear-command (string)
(when (string-match "clear" string)
(interactive)
(let ((inhibit-read-only t))
(erase-buffer))))
(add-hook 'comint-input-filter-functions 'comint-watch-for-clear-command)
0694693NGNG
"^clear$"
にしないとまずいですね
0695名無しさん@お腹いっぱい。NGNG
>>693
!!interactiveてそんな後ろに書いてもOKでつか!
はじめてみますた。
0696名無しさん@お腹いっぱい。NGNG
>>695
確かに。
0697名無しさん@お腹いっぱい。NGNG
>>689
保存されるよ.
バージョンによって違うのかな.

どうしても駄目なら

(defadvice auto-revert-buffers
(around save-cursor-position activate)
(let ((cp (point)))
ad-do-it
(goto-char cp)))

とでもしておくとかかな.
0698名無しさん@お腹いっぱい。NGNG
>>695
逆にinteractiveの位置なんかに
制限あったのか、目から鱗
0699名無しさん@お腹いっぱい。NGNG
>>698
制限無いのか有るのか、どっちや。
あと、複数の interactiveを用意しといて、
条件で呼び分けたりするのも大丈夫なんかな。
0700名無しさん@お腹いっぱい。NGNG
>>693 のを評価した後、
(interactive-form 'comint-watch-for-clear-command)
=> nil
だよ。

> Once the function is called, all its body forms including the
> `interactive' form are executed, but at this time `interactive'
> simply returns `nil' without even evaluating its argument.
ということで、interactive をどこに置いてもエラーにはならないけど、
単に nil を返す関数とみなされてるだけ。
実際にその関数がコマンドであると宣言するには、interactive が
最初の form でないとだめみたい。

> 条件で呼び分けたりするのも大丈夫なんかな。
そういうことしたい場合は、
(interactive (if (なんとか) (list あれ これ) (list それ どれ)))
みたいな感じにするしかない。
0701名無しさん@お腹いっぱい。NGNG
>>700
>>693ので動いてるみたいに見えるが結局どうすりゃいいんだ?
0702 NGNG
>>701
(interactive) は不要
0703689NGNG
>>697
勘違いしてた。カーソル位置は保存されます。
よって global-auto-revert-mode は天国であると認定します。

;; 俺の設定
(global-auto-revert-mode 1)
(setq auto-revert-interval 1)
(setq auto-revert-verbose nil)
0704名無しさん@お腹いっぱい。NGNG
>>702
確かにそうだ。add-hookするためだけだし。
それに、この程度ならlambdaの方がいいかもナンテオモウ。
0705名無しさん@お腹いっぱい。NGNG
カメレスだけど やっぱり20.7の方が体感的にはかなり早いみたいです

環境 Vine 2.6
Emacs 20.7 デフォルトのRPM
Emacs 21.2 適当に make した椰子
---
その時の気分で使い分けてます
PCの速度的には気にならない速度でてるんだけど、実際使い比べちゃうとね・・・
0706名無しさん@お腹いっぱい。NGNG
カメレスだけど やっぱり20.7の方が体感的にはかなり早いみたいです

環境 Vine 2.6
Emacs 20.7 デフォルトのRPM
Emacs 21.2 適当に make した椰子
---
その時の気分で使い分けてます
PCの速度的には気にならない速度でてるんだけど、実際使い比べちゃうとね・・・
0707名無しさん@お腹いっぱい。NGNG
   /二二ヽ
   ||・ω・||  <スマソふかわやっちゃったよ...
.  ノ/  / >   <スマソふかわやっちゃったよ...
  ノ ̄ゝ
0708643NGNG
>>643 を調べた結果、outline-modeを何とかやればできる
らしいことは分かりました。

一応下記のようなコードを拾ってきたのですがうまく動きません。(Emacs21.1)
(「M-x hide-body」をすると全部隠れる。)

(add-hook 'c-mode-common-hook
'(lambda ()
(setq outline-regexp "^\\(\\(\\w\\|[$_ \t]\\)+::\\)?\\(\\w\\|[$_~+-]\\)+\\s *\\(\\(\\w\\|[$_]\\)+\\s *((\\|(\\)[^)]*)+$")
(outline-minor-mode)))

うまく動かせられる方はいませんでしょうか?
0709名無しさん@お腹いっぱい。NGNG
vipを使ってみてコリャいける。と思った私ですが、
vipを使う事によるデメリットって結構あるのですか?
0710名無しさん@お腹いっぱい。NGNG
viper 使ってるけど、自分にはメリットばかりだよ。
ただ、emacs の各種 major-mode, minor-mode と共存させるために
美しくない設定が必要なこともあって、それが少し面倒。
とはいえ、自分でさくっと直せるのが lisp で書かれているいい所。

vip と viper どう違うのかな。viper の方が新しいらしいから、
調べもせずに viper にしたけど。
0711ヽ(´ー`)ノNGNG
もともと vip があって、それを拡張したのが viper じゃなかったっけ?
0712名無しさん@お腹いっぱい。NGNG
History によると
----
;; Viper is a new name for a package formerly known as VIP-19,
;; which was a successor of VIP version 3.5 by Masahiko Sato
;; <ms@sail.stanford.edu> and VIP version 4.2 by Aamod Sane
;; <sane@cs.uiuc.edu>. Some ideas from vip 4.4.2 by Aamod Sane
;; were also shamelessly plagiarized.
----
となっていますね。はずかしげもなく盗用したと書いてあります。;-)
0713名無しさん@お腹いっぱい。NGNG
あ〜〜
でもvipとc++-modeとかを一緒に使えないみたいね・・・
0714名無しさん@お腹いっぱい。NGNG
viper は他の emacs の major-mode と同時に使えるはず。
0715名無しさん@お腹いっぱい。NGNG
emacsとxemacsの違いが分らないんで教えてください。
xemacsは重いだけで違いが分らないんです。
0716名無しさん@お腹いっぱい。NGNG
>>715
漏れが気にしてるのはこれぐらい↓

XEmacsの特長
・lispから見えるメモリ空間が広い(FSFは256MB以下)
・そのかわりconsセル1個あたりのメモリ消費量がFSFより多い
・バイナリ拡張モジュールをdlできる
・パッケージシステム

FSF Emacsの特長
・ボタンのラベルに対してisearchできる

他に何かある人は追加よろ。
0717名無しさん@お腹いっぱい。NGNG
こんにちは。
Emacsの話じゃないかもしれないので恐縮ですが、
windows98+Cygwin1.5.5+Meadow1.10(emacs20.4.1)環境で
M-x grep をした時のことをお伺いしたいのです。
当方、日本語を検索するために lv を lgrep として M-x grep から
呼ぶように設定しておりますが、
M-x grep リターンで、ミニバッファにて
Run grep (like this): lgrep -n As フォント .emacs リターン
すると
cd c:/cygwin/home/mydir
lgrep -n -As フォント .emacs NUL
NUL: No such file or directory
88 [main] lgrep 1703171 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
9525 [main] lgrep 1703171 open_stackdumpfile: Dumping stack trace to LGREP.EXE.stackdump

grep exited abnormally with code 101120 at Fri Sep 26 00:10:13
となり、
なにやら、NULという名前のファイルからも検索しようとしてエラーに
なっているみたいなんです。
これはミニバッファでリターンしたときにその改行コードが lgrep コマンド
に 'NUL' という文字列として渡されてしまっているのでしょうか?
だとしたらどうしたらそれを抑止できるのでしょう?
meadowの使用文字コードはShift-JISです。(モードラインにSと出ている)
同じ症状のかたはいませんか?
ちなみに
M-x grep
lgrep -n -As フォント .emacs;リターン
のようにセミコロンをいれ、ここでコマンドは終わりです。とすると
正常に検索できますが、最後に1行
/usr/bin/bash: line 1: /usr/lib/NUL: No such file or directory
と出ます。ので、やはりシェルに'NUL'という文字がわたっているんだろうなぁ。
と考えています。
0718名無しさん@お腹いっぱい。NGNG
>>717
どうぞ。

Meadowについて語ってくれなスレ 3
http://pc2.2ch.net/test/read.cgi/software/1056601345/
0719名無しさん@お腹いっぱい。NGNG
>>715
http://www.xemacs.org/About/XEmacsVsGNUemacs.html
0720名無しさん@お腹いっぱい。NGNG
>>717
NUL の前に > 入れてみ。直るから。
0721720NGNG
いやまて?ウソついたかも。。
■ このスレッドは過去ログ倉庫に格納されています