Window System != Windows
X とか Mac の非コンソールも Window System版だよ
X-Window のことを dis るときに X-Windows って書いたりするよね。
最近の Windows はよくできてるから dis りになってないような気もするけど伝統なので。
dis る程 X 自体が話題に上がることもなくなったよね
外部elファイルでこのような内容があった時、
(defvar my-func '((name . "funcname")))
外部elファイルを弄らずにこの(name . "funcname")を(name . "abcdef")に変更するにはどうすれば良いのでしょうか?
(setcdr (assoc 'name my-func) "abcdef")
これは凄い…
lispってこんな簡単にoverride出来るんだ…
ありがとう
overrideっていうより単に連想配列の値を変更したってだけだと思うが・・・
調子にのってpure space壊さないようにな
カーソルのあるfaceの色を取得するにはどうすればいいのでしょうか?
(message "%s" (get-char-property (point) '????))
(face-foreground (face-at-point))
ありがとう
942 :
デフォルトの名無しさん:2012/07/18(水) 20:11:00.96
rubyで書いたものを一発でコンパイルする設定がどうしても出来ませーん
意味がわからない
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"))
を書き込んだんですけど。
この設定では、ダメなんですかね〜。
゙'. '.;`i i、 ノ .、″
゙'. ,ト `i、 `i、 .、″
| .,.:/"" ゙‐,. ` /
` .,-''ヽ"` ヽ,,,、 !
、,、‐'゙l‐、 .丿 : ':、
、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''` .,"-、
,r"ツぃ丶 `````` ../ `i、
,.イ:、ヽ/ー`-、-ヽヽヽ、−´ .l゙`-、
_,,l゙-:ヽ,;、、 、、丶 ゙i、,,、
,<_ l_ヽ冫`'`-、;,,,、、、、.............,,,,、.-`": │ `i、
、、::|、、、ヽ,、、. ```: : : ``` 、.、'` .|丶、
.l","ヽ、,"、,"'、ぃ、、,、、、、.、、、.、、、_、.,,.ヽ´ l゙ ゙).._
,、':゙l:、、`:ヽ、`:、 : `"```¬――'''"`゙^` : ..、丶 .l゙ `ヽ
,i´.、ヽ".、".、"'ヽヽ;,:、........、 、、...,,,、−‘` 、‐ |゙゙:‐,
,.-l,i´.、".`ヽ,,,.".` `゙゙'"`'-ー"``"``r-ー`'": _.‐′ 丿 ,!
j".、'ヽ,".、".、"`''`ー、._、、、 、._,、..-‐:'''′ .、,:" 丿
゙l,"`"`''ヽヽ"`"` ```゙'''"ヽ∠、、、、ぃ-`''''": ` 、._./` ._/`
`'i`ヽヽヽ`''ーi、、、: : 、.,-‐'` 、/`
``ヽン'`"` : `~``―ヽ::,,,,,,,,,,.....................,,,,.ー'``^ ,、‐'"`
`"'゙―-、,,,,..、、 : ..,、ー'"'`
: `‘"`―---------‐ヽ``"''''''""
ここはelispパッケージの使い方のスレッドではありません。
>>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
23あたりで補完絡みが色々かわってて、
completion-styles に自分で使いたい補完の種類をいれるみたいになったみたい。
completion-styles-alist に設定出来るスタイルを説明付きでいれるんだけど、
partial-completion-mode みたいなのはここで設定するようになったってのと、
lch ->> list-command-history なんて補完も出来るようになったのが違いか。
kogikuはここらへんの変更についていけなくなってて追加された機能を一部殺さないと使えなくなった。
mcompleteも更新するんであればここら辺の仕様に則って更新してくれると嬉しいなぁ
>>949 レスありがとうございます。とりあえずEmacsのcompletion周りの変更を勉強してみます。
gnu.emacs.helpにも似たような質問を投稿したんですが、Emacs24にバンドルされているidoが
mcompleteと機能的にかぶっているということと。helm、iciclesっていう補完パッケージがあるってことが
分かりました。いまのところあっちではいまでもmcomplete使っているって人はいませんでした。
helmことanythingはmcompleteとは趣が結構ことなるものだよね
個人的にはiciclesとかmcompleteみたいなemacsの元々の性質生かしてるようなのが好きだなあ
952 :
デフォルトの名無しさん:2012/07/29(日) 21:56:48.72
/sshx:remotehost:filepathでリモートホストにアクセスしているときに、
リモート環境ではなく、ローカル環境のパスを参照することはできますか?
たとえば(shell-command-to-string "ls")を実行すると、リモートシェルが使われて、
リモートのファイルリストが取得されてしまいます。
リモートファイルをEmacsで編集している最中に、
ローカルファイルから動的にキーワードを読み込んで貼り付けたいのですが。
>>952 cd 関数を使うか default-directory 変数を直接いじるかして
ローカルディレクトリを指し示しておけばいいよ。
954 :
952: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))
>>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)))
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でリンクを指定するとだめらしいということぐらいです。
どうしたらいいですかね・・。
shell-command-on-regionは範囲を引数で指定できるが
>>958 あ、それはわかってます。
ただ、引数で(point-min) (point-max)だけを渡しても、
markがセットされていないと、
"The mark is not set now, so there is no region"
ていわれてすぐ帰ってきちゃいます。
リージョンハイライト設定してる状態でマーク等をセットすると、ハイライトされちゃいますよね?おそらく。
それがいやなのでマーク自体をセットしないで、上記の方法をとっていました。
少なくともemacs-23.4.1ではマークがセットされてなくてもエラーにならない。
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っていう便利なフォームがあってね
同じくemacs-23.4.1では↓もエラーにならない。
(call-process "python" nil t nil "--help")
シンボリックリンクの場合ですね。
たとえば
la /bin/python
で
lrwxrwxrwx 1 usr-name None 13 Apr 25 20:04 /bin/python -> python2.6.exe*
となっているものはことごとくcall-processではダメでした。
gcc, g++ なども。
ようはリンク先を直指定するとおkみたいな。
>>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っていう便利なフォームがあってね
あー、それしらないです、見てみます。
cygwin? 使ったことないけど、インチキシンボリックリンクなのか?
ああ、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'
でとりあえず動くはずではある
cygwinだと外部コマンドは鬼門
ptyとか
fakecygpty かませないとちゃんと動かないのも多いよね。
俺はcygwinも使ってるけど、EmacsはWin版使ってる。
NTEmacs と cygwin だと fakecygpty ないと話にならないよね
シェル絡みは。
>>967 記載のとおりで解決しました。
ありがとうございました。
973 :
デフォルトの名無しさん:2012/08/04(土) 01:29:34.87
kill-buffer でもし編集されていても、何も聞かずに
バッファをkillするってのは、どうすれば出来ます?
(while (buffer-modified-p)
(undo (current-buffer)))
とかやってからkillとしてみたのですが、
undo出来ないと怒られることが多くて
他の方法を探しています。
つ (set-buffer-modified-p nil)
>>974 ちょっと工夫が必要ですねー。やってみます。
なるほどー。でもカレントバッファ対象じゃないんで
976 :
975:2012/08/04(土) 01:43:22.07
なぜか1行目と2行目が入れ替わってました。
変な日本語ですみません
つ with-current-buffer
978 :
デフォルトの名無しさん:2012/09/02(日) 16:06:33.23
#("aaaa" 0 4 (symbol "d"))
の内容のstringからaaaaだけを抽出するにはどの関数を使えば出来ますか?
substring-no-properties でok
-no-properties で apropos するといろいろバリエーションが見つかるかと