元スレEmacs Part 44
emacs覧 / PC版 /みんなの評価 : △
201 = :
ありがとう
やっぱりできないか
204 = :
後者?
207 = :
>>198
フォントまわりは悩ましいよね。
俺も>>199さんと同じで日本語と英字で同じフォントにしてる。
それでもフォントの大きさによってずれることがあるので、
うまく合う大きさを指定してる感じ。
208 = :
ttf 編集出来るソフトで俺俺フォント作っちゃったほうが色々楽になりそうだ
209 = :
Cocoa Emacs のフォント設定について - my-misc.blog
http://d.hatena.ne.jp/setoryohei/20110117/1295336454
210 = :
>>209
結局 face-font-rescale-alist って高さも幅もリスケールしちゃうから
どう頑張ってもずれるフォントはずれるんだよね。
強制的に高さと幅指定してそれに満たない部分は空白で埋めるとかできればなあ。
211 = :
話の流れぶった切るけどと取り敢えず貼っとく
Emacsの標準機能だとminibufferにカーソル位置の単語を初期入力に
してないものがあったりしてイラついたんで汎用的なのを作った
(defun minibuffer-insert-word-at-point ()
"Get a word at point in original buffer and insert it to minibuffer."
(interactive)
(when (window-minibuffer-p)
(let ((word-at-point (with-current-buffer (window-buffer (minibuffer-selected-window))
(thing-at-point 'word))))
(when word-at-point
(insert word-at-point)))))
(define-key minibuffer-local-map [(control ?.)] 'minibuffer-insert-word-at-point)
これでminibufferでC-.でカーソル位置の単語をコピってくる
ちなみにminibuffer.elのケツに似た様なのがあったんでそれをパクった
214 = :
うーんこの
216 = :
>>215
ありがとうございます。backtrace は自分で呼び出せるんですねー。
呼び出し元でどれだけ遡るかを決めなくてはいけないのは致し方ないですね。
217 = :
元々sjis(?)でエンコードされたファイルがUTF-8で表示されるようになって
しまって、それをセーブしたら、ファイルの文字が以下のように壊れてしまいました。
\343\202\253\343\203\274\343\202\275 ...
これを元の文字に直す方法はありませんか? 再現できればsjisでもutf-8でも問題ありません。
219 = :
eval-when-compile と eval-and-compile の使い分けは以下の認識であってますでしょうか?
前提) コンパイル時に素の require は実行されない。
・eval-when-compile
通常ロード時は他とかわらず普通に eval される。
バイトコンパイル時は eval した結果に置き換わり元の式の形では残らない。
→事前に複雑な定数式の計算をさせたり、
コンパイル時に置き換えてしまって残したくない内部的なマクロ定義をしたり、
コンパイル時に必要な定数値や関数定義をロードするのに使う。
・eval-and-compile
通常ロード時は他とかわらず普通に eval される。
バイトコンパイル時に eval されるが、コンパイル結果は元の式のまま残る。
→コンパイル時/実行時共に必要な定数値や関数定義をロードするのに使う。
220 = :
>>219
あってると思う。
222 = :
SKK は今どこにあるんですか?
224 = :
あけおめー
225 = :
>>222
http://www.ring.gr.jp/archives/elisp/skk/maintrunk/
227 = :
腹が…
228 = :
RMSは腹の中にGNUを貯めてるから
229 = :
>>175
俺も calc-mode 改造したぜ!
↓この4行をそのままコピーしてペーストしても
0x1869F円
298,000円
100円
¥10,000
↓スタックにはこう入って超便利!
99999
298000
100
10000
233 = :
calc 実際便利だよな
234 = :
定数について質問です。
C の #define のように、コンパイル時に完全に置き換わってシンボル名を残さない定数定義は可能でしょうか?
defconst の場合、コンパイルしても置き換えは起こりませんでした。
defmacro は eval-when-compile と組み合わせればシンボル名を残さずに定義できますが、
関数呼び出しの形で書かなくていけないのがいまいちな感じです。
235 = :
(eval-and-compile (defconst hogehoge "HOGE!"))
こうじゃなかったっけ?
236 = :
>>235
elc を見てみましたがやっぱり置き換えは発生しておりませんでした。
(eval-and-compile (defconst test-hogehoge "HOGE"))
(defun test-func () test-hogehoge)
=>
(defconst test-hogehoge "HOGE")
(defalias 'test-func #[nil "^H\207" [test-hogehoge] 1])
237 = :
>>236 あ、ほんとだ。消えない。すまぬ。
(eval-when-compile (defconst test-hogehoge "HOGE"))
(defun test-func ()
(eval-when-compile test-hogehoge))
eval-when-compile で全部包むと消えるみたいけど、めんどくさいかな。
238 = :
>>234
cl-symbol-macrolet はどうだろう。clパッケージに依存するけれど。
(require 'cl-macs)
(cl-symbol-macrolet ((hoge "HOGE")
(fuga "FUGA"))
(defun f ()
(list hoge fuga)))
(symbol-function 'f)
;=> (lambda nil (list "HOGE" "FUGA"))
239 = :
>>237
やっぱりその場で eval させないとだめっぽいですね。
>>238
おおおー
スコープ絞ればかなり期待通りの動作です。
ありがとうございます。
cl 奥が深いなあ
240 = :
二つのリストを与えてそれをemacs lispで処理したいです
このようなものです
(mapc (lambda (a b) (print (+ a b)))
'(2 3 4) '(3 4 5))
想定しているのはcommon lispのmapcのようなことなのですが、できないものでしょうか
241 = :
>>240
cl の mapc がそのまんま common lisp の挙動だね。
(require 'cl-lib)
(cl-mapc (lambda (a b) (print (+ a b))) '(2 3 4) '(3 4 5))
242 = :
>>241
!ばっちりです!ありがとうございました
243 = :
auto-save-hook で *scratch* の内容を保存してるのですが
保存時に出るこのエコーを無効にしたいです。
Saving file /usr/home/jk2/.emacs.d/.scratch…
Wrote /usr/home/jk2/.emacs.d/.scratch
「Saving file~」は message の defadvice で消せました。
「Wrote~」はどこで無効にすればよいのでしょうか?
244 = :
write-region の第5引数になんか指定すれば黙るよ。
245 = :
>>244
ありがとうございます!静かになりました。
246 = :
signal を投げるとデバッガが起動しますが、
デバッガを終了した後に signal を投げた箇所から再開させるよう
デバッガの操作ではなくコード側から指示することは可能でしょうか?
(let ((count 100))
(while (> count 0)
;; do something
(when something-happened
(signal 'some-error nil))
;; do something ;; <= エラーが起きてもここから再開したい & ignore-errors でシグナルを無視はしたくない & ループも抜けたくない
(setq count (1- count))))
247 = :
>>246
(debug 'some-error)
にする
248 = :
>>247
ありがとうございます。
(debug 'hoge) でシグナルと同じようにデバッガに入れるんですね。
いま気がついたんですけど ignore-errors でもどちらにせよエラー起きた場所で止まっちゃうんですね。
(ignore-errors
(signal 'error nil)
(message "ppp") ;; <= ここまで到達はしない
)
basic とかにある、on error resume next みたいなのは無理かー
249 = :
set-process-filter で設定したフィルタ関数内で
accept-process-output したりすると、(プロセスの出力があれば)フィルタ関数内で
フィルタ関数が呼ばれることになるんでしょうか?
250 = :
>>212
Gaucheのリーダマクロ #?= みたいにprintfデバッグを書くのに debug-print.el というのを作ったのですが,
可能であれば函数名を読み取って表示するので要望に合うかもです.
現状では debug-print を上書きすれば表示は変えられるけど, もうちょい変えやすくしますかね.
(debug-printという関数名は twittering-mode.el も使ってるんで現状では少し注意.)
何か要望出してもらえれば反映するかもです.
丁度いい機会なのでいくつか質問を.
1. 既存の函数の戻り値に一時的に少し手を加えたい場合はどうするのが良いのでしょうか.
adviseされた函数をfletで上書きするとエラーが出るのでadviceを使うのが正しいのでしょうが,
常にそのadviceを有効にしたいわけではないのです. 大域変数を使ってadvice内部で
その変数を見て動作を切り替えるというのが標準的なんですかね?
2. そのやり方で何か不都合が出るかどうかが気になります.
因みに上のやり方がパッと思いつかなかったので現状では ad-enable-advice と ad-disable-advice
でadviceの有効/無効を切り替えています. こちらは既にバグがあることがわかっています.
みんなの評価 : △
類似してるかもしれないスレッド
- Emacs Part 54 (97) - [92%] - 2023/1/25 17:15
- Emacs Part 46 (984) - [92%] - 2014/12/24 14:15
- Emacs Part 34 (1001) - [92%] - 2010/6/21 19:45 ○
- Emacs Part 41 (1001) - [92%] - 2012/12/24 4:15
- Emacs Part 42 (1001) - [92%] - 2013/6/9 5:15 △
- Emacs Part 43 (1001) - [92%] - 2013/12/14 11:30
- Emacs Part 45 (1001) - [92%] - 2014/6/23 9:45
- Emacs Part 40 (1001) - [92%] - 2012/9/7 0:30
- Emacs Part 47 (995) - [92%] - 2015/4/19 13:01
- Emacs Part 49 (974) - [92%] - 2016/12/7 9:45
- Emacs Part 48 (997) - [92%] - 2015/12/9 15:15
- Emacs Part 53 (989) - [84%] - 2022/12/5 12:45
- Emacs Part 31 (1001) - [84%] - 2009/10/23 10:31 ○
- Emacs Part 32 (1001) - [84%] - 2009/12/20 2:04 ○
トップメニューへ / →のくす牧場書庫について