Emacs Lisp 3

このエントリーをはてなブックマークに追加
931デフォルトの名無しさん:2012/07/14(土) 11:37:17.51
Window System != Windows
X とか Mac の非コンソールも Window System版だよ
932はちみつ餃子 ◆8X2XSCHEME :2012/07/14(土) 12:07:31.88
X-Window のことを dis るときに X-Windows って書いたりするよね。
最近の Windows はよくできてるから dis りになってないような気もするけど伝統なので。
933デフォルトの名無しさん:2012/07/14(土) 12:17:43.21
dis る程 X 自体が話題に上がることもなくなったよね
934デフォルトの名無しさん:2012/07/14(土) 12:20:39.71
外部elファイルでこのような内容があった時、
(defvar my-func '((name . "funcname")))
外部elファイルを弄らずにこの(name . "funcname")を(name . "abcdef")に変更するにはどうすれば良いのでしょうか?
935デフォルトの名無しさん:2012/07/14(土) 12:32:57.80
(setcdr (assoc 'name my-func) "abcdef")
936デフォルトの名無しさん:2012/07/14(土) 12:42:15.75
これは凄い…
lispってこんな簡単にoverride出来るんだ…
ありがとう
937デフォルトの名無しさん:2012/07/14(土) 12:56:52.55
overrideっていうより単に連想配列の値を変更したってだけだと思うが・・・
938デフォルトの名無しさん:2012/07/14(土) 18:23:48.63
調子にのってpure space壊さないようにな
939デフォルトの名無しさん:2012/07/17(火) 11:04:24.63
カーソルのあるfaceの色を取得するにはどうすればいいのでしょうか?

(message "%s" (get-char-property (point) '????))
940デフォルトの名無しさん:2012/07/17(火) 11:34:45.29
(face-foreground (face-at-point))
941デフォルトの名無しさん:2012/07/17(火) 11:56:22.53
ありがとう
942デフォルトの名無しさん:2012/07/18(水) 20:11:00.96
rubyで書いたものを一発でコンパイルする設定がどうしても出来ませーん

943デフォルトの名無しさん:2012/07/18(水) 20:34:26.34
意味がわからない
smart-compile とか quickrun でも導入したら?
944デフォルトの名無しさん:2012/07/19(木) 18:27:25.56
>>943
説明不足でした。
「smart-compile」を導入しようと思い、
usr/.emacs.d/elisp/ smart-compile.el をいれて、
usr/.emacs.d/init.el に
(require 'smart-compile)
(define-key ruby-mode-map (kbd "C-c c") 'smart-compile)
(define-key ruby-mode-map (kbd "C-c C-c") (kbd "C-c c C-m"))
を書き込んだんですけど。

この設定では、ダメなんですかね〜。
945デフォルトの名無しさん:2012/07/19(木) 18:28:27.43


           ゙'.    '.;`i  i、 ノ  .、″
             ゙'.     ,ト `i、  `i、    .、″
                |    .,.:/""  ゙‐,. `    /
             `  .,-''ヽ"`    ヽ,,,、   !
                、,、‐'゙l‐、      .丿 : ':、
               、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''`  .,"-、
              ,r"ツぃ丶  ``````   ../  `i、
          ,.イ:、ヽ/ー`-、-ヽヽヽ、−´    .l゙`-、
         _,,l゙-:ヽ,;、、             、、丶  ゙i、,,、
        ,<_ l_ヽ冫`'`-、;,,,、、、、.............,,,,、.-`":    │ `i、
      、、::|、、、ヽ,、、.    ```: : : ```      、.、'`  .|丶、
     .l","ヽ、,"、,"'、ぃ、、,、、、、.、、、.、、、_、.,,.ヽ´    l゙  ゙).._
    ,、':゙l:、、`:ヽ、`:、  : `"```¬――'''"`゙^`     : ..、丶  .l゙ `ヽ
   ,i´.、ヽ".、".、"'ヽヽ;,:、........、           、、...,,,、−‘`   、‐   |゙゙:‐,
  ,.-l,i´.、".`ヽ,,,.".`   `゙゙'"`'-ー"``"``r-ー`'":      _.‐′  丿  ,!
 j".、'ヽ,".、".、"`''`ー、._、、、           、._,、..-‐:'''′   .、,:"  丿
 ゙l,"`"`''ヽヽ"`"`  ```゙'''"ヽ∠、、、、ぃ-`''''": `      、._./`  ._/`
  `'i`ヽヽヽ`''ーi、、、: :                   、.,-‐'`   、/`
   ``ヽン'`"`  : `~``―ヽ::,,,,,,,,,,.....................,,,,.ー'``^    ,、‐'"`
      `"'゙―-、,,,,..、、               : ..,、ー'"'`
           : `‘"`―---------‐ヽ``"''''''""
946デフォルトの名無しさん:2012/07/19(木) 19:14:23.08
ここはelispパッケージの使い方のスレッドではありません。
947デフォルトの名無しさん:2012/07/19(木) 19:20:13.95
>>944
またちょっとわからんのだけど、
C-c c を押したら smart-compile が呼び出される
C-c C-c を押したら確認なしで smart-compile が実行される、を実装したいってことかね?

普通に動くけど。動かないってのはどういうふうに動かないわけ?
ruby のパスとかちゃんととおってるのかね。
948デフォルトの名無しさん:2012/07/26(木) 02:25:27.85
elispパッケージのパッケージの話題はここでいいのかな。
mcomplete.elというパッケージの作者です。
しばらくelispから離れていたんですが、昨日あたりからemacs24.1をWindows7にインストールして復帰をもくろんでいます。

mcomplete.elは以前は多少は使ってくれている人がいたんですが、最近の様子はどうなんでしょう。
すでに機能的にobsoleteなpackageになってしまったのか他のpackageがとって替わったとか、
そこらへんの状況を教えていただけないでしょうか。

もし需要があるようならelispのリハビリもかねて何かアップデートしようかなと思っています。

http://homepage1.nifty.com/bmonkey/emacs/index.html
949デフォルトの名無しさん:2012/07/26(木) 09:15:05.59
23あたりで補完絡みが色々かわってて、
completion-styles に自分で使いたい補完の種類をいれるみたいになったみたい。
completion-styles-alist に設定出来るスタイルを説明付きでいれるんだけど、
partial-completion-mode みたいなのはここで設定するようになったってのと、
lch ->> list-command-history なんて補完も出来るようになったのが違いか。

kogikuはここらへんの変更についていけなくなってて追加された機能を一部殺さないと使えなくなった。
mcompleteも更新するんであればここら辺の仕様に則って更新してくれると嬉しいなぁ
950デフォルトの名無しさん:2012/07/26(木) 13:33:31.21
>>949 レスありがとうございます。とりあえずEmacsのcompletion周りの変更を勉強してみます。
gnu.emacs.helpにも似たような質問を投稿したんですが、Emacs24にバンドルされているidoが
mcompleteと機能的にかぶっているということと。helm、iciclesっていう補完パッケージがあるってことが
分かりました。いまのところあっちではいまでもmcomplete使っているって人はいませんでした。
951デフォルトの名無しさん:2012/07/26(木) 13:35:28.26
helmことanythingはmcompleteとは趣が結構ことなるものだよね
個人的にはiciclesとかmcompleteみたいなemacsの元々の性質生かしてるようなのが好きだなあ
952デフォルトの名無しさん:2012/07/29(日) 21:56:48.72
/sshx:remotehost:filepathでリモートホストにアクセスしているときに、
リモート環境ではなく、ローカル環境のパスを参照することはできますか?

たとえば(shell-command-to-string "ls")を実行すると、リモートシェルが使われて、
リモートのファイルリストが取得されてしまいます。

リモートファイルをEmacsで編集している最中に、
ローカルファイルから動的にキーワードを読み込んで貼り付けたいのですが。
953デフォルトの名無しさん:2012/07/29(日) 22:28:52.88
>>952
cd 関数を使うか default-directory 変数を直接いじるかして
ローカルディレクトリを指し示しておけばいいよ。
954952:2012/07/29(日) 23:11:59.36
>>953
あ、なるほど。ラッパーを被せてうまく行きました。ありがとうございます。
(defun shell-local-command-to-string (command-string local-path)
(interactive)
(let ((temp-dir default-directory) result)
(setq default-directory local-path)
(setq result (shell-command-to-string command-string))
(setq default-directory temp-dir)
result))

955デフォルトの名無しさん:2012/07/29(日) 23:16:49.71
>>954
let で直接 default-directory を設定しちゃっても問題ないよ。
スコープ抜ければ元の値に元通りだから。

(defun shell-local-command-to-string (command-string local-path)
(interactive)
(let ((default-directory local-path))
(shell-command-to-string command-string)))
956デフォルトの名無しさん:2012/07/29(日) 23:37:54.55
>>955
添削助かります。m(__)m
957デフォルトの名無しさん:2012/08/01(水) 01:04:15.65
emacsからjsonファイルの整形を行おうとしてつまずいたので教えてください。
やりたい事は、バッファに読み込まれたjsonファイルをコマンド一つで整形して、現在のバッファ内のデータと置き換えることです。
とりあえず
(defun reformat-buffer ()
(interactive)
(let ( (original-src (buffer-substring-no-properties (point-min) (point-max))) )
(delete-region (point-min) (point-max))
(shell-command (format "echo \'%s\' | python -m json.tool&" original-src) (current-buffer))))
↑で目的のことはできたのですが、*Message*バッファにコマンドが出力されるのがうざいので消したいのです。
いい方法はないでしょうか?
ちなみに shell-command-on-region というのだとマークを設定しないといけないのでやめました。
代わりにcall-process-regionを利用できないかと、
まず、↓でテストししたところ
(call-process "python" nil t nil "--help")
するとエラーになりバックトレース表示になってしまいました。
ちなみに
(shell-command "python --help")
は動いて↓も動きます。
(call-process "python2.6" nil t nil "--help")
関係ありそうなのが、バイナリ直接指定ではなく
シェル上でリンクが張られているバイナリの場合、
call-processでリンクを指定するとだめらしいということぐらいです。
どうしたらいいですかね・・。
958デフォルトの名無しさん:2012/08/01(水) 01:53:41.60
shell-command-on-regionは範囲を引数で指定できるが
959デフォルトの名無しさん:2012/08/01(水) 02:08:32.88
>>958
あ、それはわかってます。
ただ、引数で(point-min) (point-max)だけを渡しても、
markがセットされていないと、
"The mark is not set now, so there is no region"
ていわれてすぐ帰ってきちゃいます。
リージョンハイライト設定してる状態でマーク等をセットすると、ハイライトされちゃいますよね?おそらく。
それがいやなのでマーク自体をセットしないで、上記の方法をとっていました。
960デフォルトの名無しさん:2012/08/01(水) 03:34:49.11
少なくともemacs-23.4.1ではマークがセットされてなくてもエラーにならない。
961デフォルトの名無しさん:2012/08/01(水) 03:39:17.91
call-process系使えればこれでパツイチのはず
プログラムがエラーで死ぬ場合とか考慮してないけど
(defun reformat-buffer ()
(interactive)
(call-process-region (point-min) (point-max) "python" t t nil "-m" "json.tool"))

> シェル上でリンクが張られているバイナリ
って意味わからんのだけどシンボリックリンクなら普通に動くはずだし
もしbashrcとかでalias張ってるって意味ならcall-processはシェル通さないから動かなくて当たり前
そうだとしたらPROGRAMをシェルへのパスにしてARGSを"-c" "python -m json.tool"にするとか?

> というのだとマークを設定しないといけないのでやめました。
> リージョンハイライト設定してる状態でマーク等をセットすると、ハイライトされちゃいますよね?
save-excursionっていう便利なフォームがあってね
962デフォルトの名無しさん:2012/08/01(水) 03:42:12.63
同じくemacs-23.4.1では↓もエラーにならない。
(call-process "python" nil t nil "--help")
963デフォルトの名無しさん:2012/08/01(水) 03:55:58.11
シンボリックリンクの場合ですね。

たとえば
la /bin/python

lrwxrwxrwx 1 usr-name None 13 Apr 25 20:04 /bin/python -> python2.6.exe*
となっているものはことごとくcall-processではダメでした。
gcc, g++ なども。
ようはリンク先を直指定するとおkみたいな。
964デフォルトの名無しさん:2012/08/01(水) 03:59:56.35
>>961
> call-process系使えればこれでパツイチのはず
> プログラムがエラーで死ぬ場合とか考慮してないけど
> (defun reformat-buffer ()
> (interactive)
> (call-process-region (point-min) (point-max) "python" t t nil "-m" "json.tool"))
>
うちもこうやるつもりだったのですが、やっぱりだめですね。
*message*には
reformat-buffer: Searching for program: no such file or directory, python
になってます。

> > シェル上でリンクが張られているバイナリ
> って意味わからんのだけどシンボリックリンクなら普通に動くはずだし
> もしbashrcとかでalias張ってるって意味ならcall-processはシェル通さないから動かなくて当たり前
> そうだとしたらPROGRAMをシェルへのパスにしてARGSを"-c" "python -m json.tool"にするとか?

そもそも shell-command内部ではcall-processしてるはずだから動かないはずないと思うのですが、どうしてだろう・・
シンボリックリンクを有効化するような何かが行われている?


> > リージョンハイライト設定してる状態でマーク等をセットすると、ハイライトされちゃいますよね?
> save-excursionっていう便利なフォームがあってね
あー、それしらないです、見てみます。
965デフォルトの名無しさん:2012/08/01(水) 04:02:04.69
cygwin? 使ったことないけど、インチキシンボリックリンクなのか?
966デフォルトの名無しさん:2012/08/01(水) 04:06:35.27
967デフォルトの名無しさん:2012/08/01(水) 05:21:20.37
ああ、cygwinか……
exec-pathに/binが入ってないとかかとも思ったけど同じ/binにあるpython2.6を直接指定だと動くってんならたぶん違うしな
もしcygwin特有の事情が原因なら俺にはお手上げだわ

>>964
> そもそも shell-command内部ではcall-processしてるはずだから動かないはずないと思うのですが、どうしてだろう・・

(shell-command "python --help") としたときに内部でcall-processを使って実行されるのは
sh -c 'python --help' とかだからpythonの場所は実行されたシェルが環境変数PATHを見て探すことになる
一方call-processで python --help を直に叩く場合は実行する前にまずemacsが変数exec-pathを見てpythonを探すのだが今回はそこで何かシクってるらしいというわけ
だからshell-commandだと動くというのなら
(call-process-region (point-min) (point-max) shell-file-name t t nil shell-command-switch "python -m json.tool"))
json.tool'
でとりあえず動くはずではある
968デフォルトの名無しさん:2012/08/01(水) 10:55:14.05
cygwinだと外部コマンドは鬼門
ptyとか
969デフォルトの名無しさん:2012/08/01(水) 11:19:30.15
fakecygpty かませないとちゃんと動かないのも多いよね。
970デフォルトの名無しさん:2012/08/01(水) 14:18:17.51
俺はcygwinも使ってるけど、EmacsはWin版使ってる。
971デフォルトの名無しさん:2012/08/01(水) 16:22:09.70
NTEmacs と cygwin だと fakecygpty ないと話にならないよね
シェル絡みは。
972デフォルトの名無しさん:2012/08/03(金) 04:39:09.17
>>967
記載のとおりで解決しました。
ありがとうございました。
973デフォルトの名無しさん:2012/08/04(土) 01:29:34.87
kill-buffer でもし編集されていても、何も聞かずに
バッファをkillするってのは、どうすれば出来ます?
(while (buffer-modified-p)
(undo (current-buffer)))
とかやってからkillとしてみたのですが、
undo出来ないと怒られることが多くて
他の方法を探しています。
974デフォルトの名無しさん:2012/08/04(土) 01:36:03.07
つ (set-buffer-modified-p nil)
975デフォルトの名無しさん:2012/08/04(土) 01:42:32.30
>>974
ちょっと工夫が必要ですねー。やってみます。
なるほどー。でもカレントバッファ対象じゃないんで
976975:2012/08/04(土) 01:43:22.07
なぜか1行目と2行目が入れ替わってました。
変な日本語ですみません
977デフォルトの名無しさん:2012/08/04(土) 08:53:20.45
つ with-current-buffer
978デフォルトの名無しさん:2012/09/02(日) 16:06:33.23
#("aaaa" 0 4 (symbol "d"))
の内容のstringからaaaaだけを抽出するにはどの関数を使えば出来ますか?
979デフォルトの名無しさん:2012/09/02(日) 16:28:14.32
substring-no-properties でok
-no-properties で apropos するといろいろバリエーションが見つかるかと
980デフォルトの名無しさん
>>979
出来ました。ありがとうございます。