トップページunix
990コメント300KB

Emacs Part 39

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2011/11/29(火) 17:50:44.24
前スレ

Emacs Part 38
http://hibari.2ch.net/test/read.cgi/unix/1308635178/
0676名無しさん@お腹いっぱい。2012/01/11(水) 22:40:32.37
>>675
ああっ・・・すみません、"hoge$@$$@hage" は "hoge $$ hage" でした。

なるほど、直前の $ があれば保存するって書き方も出来るんですね。
もう少し考えてみます。ありがとうございます。
0677名無しさん@お腹いっぱい。2012/01/11(水) 22:44:05.81
>>676
下手糞だけれど、
(replace-regexp-in-string "\\(\\$?\\)\\$@?" "\\1\\1 " "hoge$@$$@hage")
0678名無しさん@お腹いっぱい。2012/01/11(水) 22:57:17.40
>>677
$$ の場合、前の$を2つおいちゃうわけですね
ただその場合 "hoge$$hage" が "hoge$$ hage" になってしまいます
ううむ・・・
0679名無しさん@お腹いっぱい。2012/01/12(木) 08:16:55.07
emacs24 のパッケージシステム、ELPAの登録少なすぎ糞がと思ってたけど
mamalade 追加したら予想してたよりしっかり登録されてて感心した。
0680名無しさん@お腹いっぱい。2012/01/12(木) 09:45:12.56
ELPA標準+marmaladeでel-getはオワコンか
0681名無しさん@お腹いっぱい。2012/01/12(木) 09:57:57.84
el-get + githubのemacsmirror
これ最強な
0682名無しさん@お腹いっぱい。2012/01/12(木) 10:00:49.74
emacsmirror いいよな。 emacswiki のelisp 落としたい放題
0683名無しさん@お腹いっぱい。2012/01/12(木) 10:23:06.46
そんなものよりるびきちさんのauto-installを使えよ
0684名無しさん@お腹いっぱい。2012/01/12(木) 11:34:39.88
emacsmirrorのレポジトリ群からel-get用レシピ生成するelispはよ
0685名無しさん@お腹いっぱい。2012/01/12(木) 18:37:38.11
emacs24のlexical-binding、ヘッダに lexical-binding: t とか入れると
全部の let が文脈依存になるのかよ・・・
使いづれえ
0686名無しさん@お腹いっぱい。2012/01/13(金) 07:43:15.33
scratch buffer で lexical どうやんのかな
0687名無しさん@お腹いっぱい。2012/01/13(金) 10:28:58.27
lexical-let を正式サポートでよかったのに。
0688名無しさん@お腹いっぱい。2012/01/13(金) 10:35:18.21
冗談はやめてくれ。
0689名無しさん@お腹いっぱい。2012/01/13(金) 10:41:53.08
*scratch* で M-: (setq lexical-binding t) でいいんじゃない?

;; 今まで
(setq a 100)
(defun foo () (message "%d" a))
(progn (let ((a 200)) (foo)) (foo))
=> 200 100

;; lex bind
(setq lexical-binding t)
(setq a 100)
(defun foo () (message "%d" a))
(progn (let ((a 200)) (foo)) (foo))
=> 100 100

ただし、a が defvar で宣言されている場合は lexical-binding を t にしてても強制的に
dynamical binding (ようするに今までのと同じ)になる。

だから基本的には置き換えしてもそんなに影響はでないはず。
0690名無しさん@お腹いっぱい。2012/01/13(金) 10:51:34.62
あと lexical-binding t にすると lambda が closure を返すようになるな。
バッファ内の未評価の defvar とかが評価結果に含まれててなんかすごく気持ち悪いけど。
0691名無しさん@お腹いっぱい。2012/01/13(金) 10:57:03.63
バッククオート展開で無理やり変数埋め込みとかしなくてよくなるのは嬉しい
0692名無しさん@お腹いっぱい。2012/01/13(金) 11:06:45.92
>>689
どっかで defvar してるシンボル名とバッティングしないような名前を使わなきゃいけないところは
変わらんってことか。

ネームスペースはよ
0693名無しさん@お腹いっぱい。2012/01/13(金) 14:48:38.91
auto-completeでメジャーモードhoge-modeの補完候補を~/.emacs.d/ac-dict/hoge-modeの各行としたいです
tabを押さずに自動的に補完候補を表示するスタイルにしたいと思います
.emacsに
(setq ac-auto-start t)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(add-to-list 'ac-modes 'hoge-mode)
と書いてhoge-modeを~/.emacs.d/ac-dictに置いたのですが何にもなりません
ac-dict/hoge-modeは改行(lf)区切りなのですが、それがいけないのでしょうか
http://cx4a.org/software/auto-complete/manual.ja.html
このマニュアルにはそういうことが書いていないのでよくわかりません
0694名無しさん@お腹いっぱい。2012/01/13(金) 15:27:05.91
当然だけど
(require 'auto-complete-config) とか
(ac-config-default) とかは普通に書いてあるんだよな?
0695名無しさん@お腹いっぱい。2012/01/13(金) 16:16:39.75
>>694
(require 'auto-complete-config) は書いていましたが
(ac-config-default)が抜けていました。
ばっちり動きました!ありがとうございました。
0696名無しさん@お腹いっぱい。2012/01/14(土) 10:09:51.35
anythingってupgradeするたびに動かなくなるね。ぽぽぽぽーん。。
すごいわ。修正された行数とかもすさまじいし。。
うんざり。
0697名無しさん@お腹いっぱい。2012/01/14(土) 10:20:52.49
Semanticはちゃんと補完してくれてかなりいいんだけど、カーソルの下の
関数名の定義場所がエコーエリアに表示されているにもかかわらず、
そこに飛ぶ術がないという糞仕様。
そもそも使いづらいからAnything用のインターフェースでも作るかな…
0698名無しさん@お腹いっぱい。2012/01/14(土) 10:27:57.09
あ、動いた。どうやらanything-match-plugin.elが必須になったぽいな。
そしてこのモッサリ感。鈍重すぎる。
もともと腐ってたのが白骨化した死骸のような感じになってきたな。
0699名無しさん@お腹いっぱい。2012/01/14(土) 12:07:34.45
ごめん質問。ひさびさのEmacsで困ってる。
eshellでも(call-proccess ... )の出力をバッファに出しても
表示される日本語部分が化けてしまう。UTF-8なテキストファイル開くと化けない。
UTF-8環境なLinux上。Emacs23にて。
set-language-environment "Japanese"だし
set-terminal-coding-systemもset-keyboard-coding-systemも
set-buffer-file-coding-systemもdefault-buffer-file-coding-systemも
全部utf-8としたし、実際化けてるバッファでも左下はU:と表示されてるからutf-8に
なってるはずなんだが。
なにか解決のヒントくれたらおいら嬉しいのでおねがいしまふ
0700名無しさん@お腹いっぱい。2012/01/14(土) 12:14:26.08
default-coding-system は設定してある?

最近は個別にコーディングシステム設定しないで
(prefer-coding-system 'utf-8-unix) とかするもんらしい。
バッファ/ファイル名からプロセスから何から何まで一発でやってくれるよ。

0701名無しさん@お腹いっぱい。2012/01/14(土) 12:22:24.16
あわわ
× default-coding-system
○ default-process-coding-system でした
0702名無しさん@お腹いっぱい。2012/01/14(土) 12:24:27.36
>>697
anything と semantic で検索するとちらほら引っかかるけど
それじゃだめなん?
0703名無しさん@お腹いっぱい。2012/01/14(土) 12:34:23.81
>>699
process-filter-multibyte-p
set-buffer-multibyte
とかの multibyte 関係。
0704名無しさん@お腹いっぱい。2012/01/14(土) 12:37:58.99
むしろ一旦何も設定しない状態で試したほうがいいと思うの
0705名無しさん@お腹いっぱい。2012/01/14(土) 12:44:07.38
そもそも最近の emacs って
LANG=ja_JP.UTF=8 とかしておけば特に何の設定もしなくても
ちゃんと日本語でUTF-8な環境にセットアップしてくれるんだよな。
0706名無しさん@お腹いっぱい。2012/01/14(土) 13:20:19.97
編集中の文書のアウトライン表示させるためにsr-speedbarを試しています。
http://www.emacswiki.org/emacs/SrSpeedbar
なかなかいい感じですが編集中ファイルと同じディレクトリに他のファイルが
あると,speedbarにそれらのファイル以外も表示されてしまいます。編集中の
ファイルだけをspeedbarに表示する方法があれば教えてください。
0707名無しさん@お腹いっぱい。2012/01/14(土) 13:33:09.07
>>706
自分で新たに speedbar のモードを書くしかないと思う。
*SPEEDBAR* で b とか r を押せば開いているバッファが表示されるけれど、これは違うのだろうし。
0708名無しさん@お腹いっぱい。2012/01/14(土) 13:48:41.17
speedbar-file-regexp を make-local-variable して
バッファ名だかバッファファイル名だかだけ引っかかるような設定にすりゃいいんでないの。

これも悪くないな
http://d.hatena.ne.jp/kitokitoki/20100517
07096992012/01/14(土) 14:06:07.65
>>700
(prefer-coding-system 'utf-8-unix)
でいけました。ありがとー
07106972012/01/14(土) 14:10:38.94
>>702
ttp://dev.ariel-networks.com/Members/matsuyama/open-anything-emacs/
ここで目的のものが見つかった。
ただ、Anythingのソース作成方法を理解してないからよくわからん。
積読状態だった例の本をちゃんと読むか…
0711名無しさん@お腹いっぱい。2012/01/14(土) 15:07:22.59
るびきちさんが叩かれてる理由がだんだん分かってきた。
0712名無しさん@お腹いっぱい。2012/01/14(土) 15:08:20.51
大部分が男のジェラシーですね
0713名無しさん@お腹いっぱい。2012/01/14(土) 15:16:00.39
>>712
違うと思う。
0714名無しさん@お腹いっぱい。2012/01/14(土) 15:39:05.52
ジェラシーとか嫉妬とか言うやつは一人しかいないわけで。
何もかも一人でやってるようなグラマにろくなのはいないっていう悪例だよ。
0715名無しさん@お腹いっぱい。2012/01/14(土) 15:43:01.18
カーソル行の冒頭の空白の類いを取得したいです
正規表現は^[\t\s]+でカーソル行を取得するのは(thing-at-point 'line)でよいのですが
取り出した文字列を正規表現で検索する方法がわかりません
正規表現で検索というとre-search-forwardがありますが
これではバッファ内の文字列を検索することになってしまいます
どうすればいいでしょうか
0716名無しさん@お腹いっぱい。2012/01/14(土) 15:48:26.55
string-match
0717名無しさん@お腹いっぱい。2012/01/14(土) 15:57:07.69
\C-h f re-search-backward
0718名無しさん@お腹いっぱい。2012/01/14(土) 16:24:06.55
>>716-717
ありがとうございます。調べた結果
string-matchでもre-search-backwardでもできました
0719名無しさん@お腹いっぱい。2012/01/14(土) 16:39:21.50
>>707
>>708
ありがとうございます。
自分で設定する方法はわからないので,しばらくはimenu-treeと併用してみます。

0720名無しさん@お腹いっぱい。2012/01/14(土) 19:31:25.59
マクロを使いたいけど以下のようにしたい場合はどうしたらいいのでしょう?

・コンパイル後は内容が展開されるのでマクロ自体は未定義になってほしい
・コンパイルしないで el のみのロードの場合は普通に定義されたままでよい

eval-when-compile だと el のみのロードの場合にダメになっちゃいますよね・・・
0721名無しさん@お腹いっぱい。2012/01/14(土) 19:35:53.07
>>720
describe-function eval-when-compile
> In interpreted code, this is entirely equivalent to `progn'.
0722名無しさん@お腹いっぱい。2012/01/14(土) 19:53:14.68
>>721
ありがとうございます。 eval-when-compile の中にマクロ定義を置く、で何ら問題なかったんですね。

しかし、eval-after-load みたいなコンパイルされない式の方だと実行時にマクロ定義がないとエラーになってしまいます。
これをコンパイル時にマクロ展開する方法はないのでしょうか?
0723名無しさん@お腹いっぱい。2012/01/14(土) 20:26:35.83
(eval-when-compile (require 'cl))
(defun my-func () (loopとか))
(eval-after-load "library" '(my-func))

じゃだめなのけ?
0724名無しさん@お腹いっぱい。2012/01/14(土) 20:36:30.14
>>723みたいに関数化した方がバイトコンパイルもされるから実際一番いいと思う。

一応別解

(eval-when-compile (defmacro somemacro (x) (concat x "-ok")))

(eval-after-load "hogehoge"
(eval-when-compile
(macroexpand-all
'(progn
(setq hoge (somemacro "hoge"))))))

eval-after-load から macroexpand-all までを eval-when-compile 内にマクロで置けば完璧
これなら el でロードしてもコンパイルしてもちゃんとマクロ展開される
0725名無しさん@お腹いっぱい。2012/01/15(日) 16:36:48.20
>>653
レジストリ書き換える方法で良ければ、scancode map でぐぐると見つかる。
XP以降はLoginユーザ別に設定できる。
windows server 2003 resource kitに入っている remapkey.exe というのでも
出来るけど。ユーザ個別設定は出来ないかもしれない。
0726名無しさん@お腹いっぱい。2012/01/16(月) 18:42:59.64
たしかC-aやC-eを連続して押すとカーソルが行ったり来たり(?)する
elispがどこかで公開されていた気がするのですが
ご存じの方はいらっしゃいませんか
これでカーソル移動がもっと快適になるとか書いてあったような気がします
るびきち本とかどっちかと思いましたが見つかりませんでした
0727名無しさん@お腹いっぱい。2012/01/16(月) 18:46:46.90
アドベントカレンダーで見た気がする
0728名無しさん@お腹いっぱい。2012/01/16(月) 18:50:20.77
マジキチ先生のsequential-commandかな
他にも似たようなのあるかもしらんが
0729名無しさん@お腹いっぱい。2012/01/16(月) 20:11:35.65
>>727-728
ありがとうございます。両方の情報とも関係がありそうだと検討をつけて探したら
そのものずばりのページにたどり着けました
http://emacs.g.hatena.ne.jp/k1LoW/20101211/1292046538
この図こそ記憶にあったものです
感謝です
0730名無しさん@お腹いっぱい。2012/01/16(月) 20:25:39.60
gnupackのemacsで等幅フォント(migu 1m)を使っているはずなのに
微妙にずれてしまう気がします
対処策はあるのでしょうか
0731名無しさん@お腹いっぱい。2012/01/16(月) 21:45:30.64
>>730
NTEmacsスレの方がストレートな解答が貰えるかもしれない。
Windowsだとフォント重ねあわせでボールド化するとかの設定有効にしてると
ずれることがあるって聞いたことがあるな。変数名は忘れたが。
0732名無しさん@お腹いっぱい。2012/01/16(月) 22:03:50.99
あれ、うちもだそれ。LinuxでGNU Emacs 23.3.1、Ricty 3.1.2

Rictyを使ってるんだけど例えば $ の幅が他の文字の 90% ぐらいになってる
フォントの設定はなんか難しいから放置中
0733名無しさん@お腹いっぱい。2012/01/16(月) 22:18:58.39
Rictyってたしか複数のフォントをマージした奴だったよね。
しかもライセンスの問題でバッチ処理で自分で結合処理するんだった記憶が。
幅あってないんじゃない?
0734名無しさん@お腹いっぱい。2012/01/16(月) 22:31:27.69
いやRictyって幅を合わせたのが売りじゃなかったっけ?
0735名無しさん@お腹いっぱい。2012/01/16(月) 22:40:43.46
C-u C-x = で $ と字を調べてみたら?
違うフォントや違うサイズが割り当てられてたりしない?
0736名無しさん@お腹いっぱい。2012/01/16(月) 23:02:15.92
ヒントどうもです。 差し当たり $ と 1 についての C-u C-x = の出力および
init.el の関係ありそうな設定部分を貼っときます
http://codepad.org/cN7neV2I

($) xft:-unknown-Ricty-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 (#x07)
(1) xft:-unknown-Ricty-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 (#x14)
07377302012/01/17(火) 13:39:36.57
解決策がわかりました
フォントのサイズを3の倍数にすればよいだけでした
>Emacs で等幅フォントの半角文字・全角文字の横幅比 1:2 を必ず達成するフォント設定
ttp://stickydiary.blog88.fc2.com/blog-entry-107.html
0738名無しさん@お腹いっぱい。2012/01/17(火) 14:43:24.37
EmacsLisp勉強中です。自作の関数をさらしますので添削お願いします。

(defun random-string (length)
(let ((i length)
(s "0123456789abcdefghijklmnopqrstuvwxyz")
(a '())
n c)
(while (> i 0)
(setq n (random 36))
(setq c (substring s n (+ n 1)))
(setq a (cons c a))
(setq i (- i 1)))
(string-join "" a)))
0739名無しさん@お腹いっぱい。2012/01/17(火) 14:50:18.40
動けばいいってこと?

(defun random-string (length)
(let ((i length)
(s "0123456789abcdefghijklmnopqrstuvwxyz")
(a '())
n c)
(while (> i 0)
(setq n (random 36))
(setq c (substring s n (1+ n)))
(setq a (cons c a))
(setq i (- i 1)))
(mapconcat 'identity a "")))
0740名無しさん@お腹いっぱい。2012/01/17(火) 15:05:13.65
(defun random-string (length)
(let ((s "0123456789abcdefghijklmnopqrstuvwxyz")
a n)
(while (> length 0)
(setq n (random 36))
(setq a (concat a (substring s n (1+ n))))
(setq length (1- length)))
a))
0741名無しさん@お腹いっぱい。2012/01/17(火) 15:24:40.20
(defun random-string (length)
(concat (loop with s = "0123456789abcdefghijklmnopqrstuvwxyz"
repeat length
collect (aref s (random 36)))))
0742名無しさん@お腹いっぱい。2012/01/17(火) 15:40:14.13
(defun random-string (length)
(let* ((offset (random 36))
(char (substring "0123456789abcdefghijklmnopqrstuvwxyz" offset (1+ offset))))
(if (> length 1)
(concat char (random-string (1- length)))
char)))
0743名無しさん@お腹いっぱい。2012/01/17(火) 15:59:27.93
(defun random-string (length)
(substring (shuffle-vector "0123456789abcdefghijklmnopqrstuvwxyz")
0 length))
0744名無しさん@お腹いっぱい。2012/01/17(火) 16:08:57.86
(defun random-string (length)
  (loop with s = (make-string length 0)
  for i from 0 to (1- length)
  do (aset s i (aref "0123456789abcdefghijklmnopqrstuvwxyz" (random 36)))
  finally return s))
0745名無しさん@お腹いっぱい。2012/01/17(火) 16:13:45.58
はい、そこまで。
0746名無しさん@お腹いっぱい。2012/01/17(火) 16:33:07.71
アホ学生の課題か
0747名無しさん@お腹いっぱい。2012/01/17(火) 17:17:27.28
random 36っていうのは何というかスマートじゃ無いな
0748名無しさん@お腹いっぱい。2012/01/17(火) 17:26:31.48
見る限り >>742 >>743 はトーシロだな。
0749名無しさん@お腹いっぱい。2012/01/17(火) 17:29:19.73
>>748
なんで?
0750名無しさん@お腹いっぱい。2012/01/17(火) 17:33:44.72
関数への入力値を大きくしてみたまえ。
0751名無しさん@お腹いっぱい。2012/01/17(火) 17:41:13.00
そんなデカい値で使うような関数か?
0752名無しさん@お腹いっぱい。2012/01/17(火) 17:44:04.87
負け犬プログラマーがここにも。こーゆーやつよくいるんだよね。ヽ(´▽`)ノ
0753名無しさん@お腹いっぱい。2012/01/17(火) 17:47:45.79
職場でやられると締め殺したくなるやつだな。w
0754名無しさん@お腹いっぱい。2012/01/17(火) 17:58:40.75
elispだけで文字列をパスワードつけて暗号化できるパッケージないですか?
0755名無しさん@お腹いっぱい。2012/01/17(火) 18:52:51.80
七色に光るタッチキーボードかあ
好きな色にキーボード光らせるなら
ctrとaltは目立つ色にしたいな
0756名無しさん@お腹いっぱい。2012/01/17(火) 18:53:41.57
>>755
誤爆?
0757名無しさん@お腹いっぱい。2012/01/17(火) 18:55:29.08
http://ax3s.blog54.fc2.com/blog-entry-345.html
こいつでemacsとか最高じゃないか
0758名無しさん@お腹いっぱい。2012/01/17(火) 18:58:37.67
キーボードの話はこっちでいいんじゃない。

Keyboard キーボード 3
http://toro.2ch.net/test/read.cgi/unix/1285489282/
0759名無しさん@お腹いっぱい。2012/01/17(火) 19:17:47.77
>>757
テンキーレスってところがいいな。
英語配列ならなおよかったんだけど。
0760名無しさん@お腹いっぱい。2012/01/17(火) 19:20:18.21
「ハンファ」

なんかヤダ。
0761名無しさん@お腹いっぱい。2012/01/17(火) 19:23:45.05
Emacsとなにも関係ない件
0762名無しさん@お腹いっぱい。2012/01/17(火) 20:16:45.69
自由にカスタマイズできるって言っても、C-cの後とかC-xの後に有効なキーだけ
色を変えるってのはできないんでしょう?
0763名無しさん@お腹いっぱい。2012/01/17(火) 20:25:40.12
色を変えるってキーボードの?ww
0764名無しさん@お腹いっぱい。2012/01/17(火) 20:58:16.61
あんたインテリアこだわるの好きね。
0765名無しさん@お腹いっぱい。2012/01/17(火) 21:42:54.57
Emacsにハマりそうで怖い。

論文書くのにWordだとだるい

Emacs + LaTexってよさげ

Tutorialをやってみる

るびきち本を買ってくる ← いまここ

独特の操作系で敷居が高いと思っていたけれど、
これはこれでアリだと思う様になってきた。
0766名無しさん@お腹いっぱい。2012/01/17(火) 21:44:16.70
>>765
LaTeX を使うなら他のエディタを選択することもできただろうに。
0767名無しさん@お腹いっぱい。2012/01/17(火) 22:16:48.10
Emacsだけで色々完結するってのも惹かれた点。
しかしGoogle DocsやEvernoteなんかまで編集できるとは思わなかった。
0768名無しさん@お腹いっぱい。2012/01/17(火) 22:21:42.98
>>762
でもブラインドタッチしてる以上あんまり色かわっても意味ないな。

無効なキーを押すと電流が走るとかなら教育効果があるかもしれん。
0769名無しさん@お腹いっぱい。2012/01/17(火) 22:22:11.64
>>767
今ならまだ間に合う。引き返せ。
わりとマジで。
0770名無しさん@お腹いっぱい。2012/01/17(火) 22:26:38.41
>>769
後悔してる理由教えて
0771名無しさん@お腹いっぱい。2012/01/17(火) 22:28:11.82
>>769
後悔してる理由教えて
0772名無しさん@お腹いっぱい。2012/01/17(火) 22:39:33.15
呪いが解けなくなるよ
0773名無しさん@お腹いっぱい。2012/01/18(水) 01:28:50.52
>>739-744
たくさんの人に答えていただき、ありがどうございます。
けど、結局どう書くのがいいのかは、よみとれませんでした。

・string-joinよりconcatのほうがいいの?
・loopとかつかったほうがいいの?
・for i from 0 to ... とか初めて見たけど、これって普通に使われているの?

もうちょっと、EmacsLisp初心者向けにお願いしたいんですが、だめでしょうか。
0774名無しさん@お腹いっぱい。2012/01/18(水) 02:47:01.89
どっから持って来たんだ、string-join って
どうせ中身は mapconcat なんだろうけど
0775名無しさん@お腹いっぱい。2012/01/18(水) 02:48:56.76
半ページスクロールってできないっすか?
■ このスレッドは過去ログ倉庫に格納されています