トップページunix
1002コメント322KB

Emacs Part 49 [無断転載禁止]©5ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2015/12/11(金) 17:55:35.35
前スレが落ちていたみたいなので。

GNU Emacs - GNU Project - Free Software Foundation (FSF)
https://www.gnu.org/software/emacs/

EmacsWiki: サイトマップ
http://www.emacswiki.org/emacs/

前スレ
Emacs Part 48
http://peace.2ch.net/test/read.cgi/unix/1429172451/
0697名無しさん@お腹いっぱい。2016/07/10(日) 23:18:42.52
てかみんなIMEなにつかってるのかな ^^;
0698名無しさん@お腹いっぱい。2016/07/11(月) 12:32:10.60
>>688
みずぽは無理として、最近lisp系で組まれた大規模システムってあるのかね?
昔、Paul Grahamの書いた文章か何かで例が載っていた気がするがいかんせん古すぎる。
0699名無しさん@お腹いっぱい。2016/07/11(月) 20:41:30.57
>>698

https://common-lisp.net/~dlw/LispSurvey.html#success-stories-successful-products-and-projects-written-in-lisp

↑あたりで1つずつ調べれば大規模システムがあるかもよ
0700名無しさん@お腹いっぱい。2016/07/11(月) 21:42:04.30
これからAIの時代だからLispの使用が増えていく可能性はあるかもね
新しい分野の為に新しいプログラム言語をでっち上げるのもいいけど
マクロを使って新しい言語を作り上げるのがLispのやり方
0701名無しさん@お腹いっぱい。2016/07/12(火) 02:15:15.71
航空会社のシステムがあったような気がするぞ
0702名無しさん@お腹いっぱい。2016/07/12(火) 12:49:53.26
Common Lispよりも今はClojureの方が業務での採用率は高そうだ (あくまでもLisp系の中ではという意味)
ただClojureはCommon Lispやelispとはだいぶ違っててあまり好きになれんが
0703名無しさん@お腹いっぱい。2016/07/16(土) 03:17:42.88
稼働中に repl を叩けるのは大きいと思うけど
金融系こそ lisp じゃあるまいか
0704名無しさん@お腹いっぱい。2016/07/16(土) 06:25:09.10
稼働中にreplはどこかでみたんだろうけど
金融系こそlispってのはどうしてそう思うの?
0705名無しさん@お腹いっぱい。2016/07/16(土) 19:00:59.89
open-line(C-o)すると同じバッファにありそうな行が挿入される
変なバグ踏んじゃったかな
0706名無しさん@お腹いっぱい。2016/07/16(土) 19:31:42.06
知らないうちにfill-prefixが設定されててそれが挿入されてただけだった
0707名無しさん@お腹いっぱい。2016/07/20(水) 22:32:51.45
どうもLispが好きになれんのだが
慣れてないだけなのだろうか?
有難味が良くわからん
どのあたりが優れてるんだ?
0708名無しさん@お腹いっぱい。2016/07/20(水) 22:34:41.27
みんなレベルが高い人が多くて
ライブラリを使わず書いちゃう人が多いのか
ライブラリちょっと弱くない
Lisp系列って
0709名無しさん@お腹いっぱい。2016/07/20(水) 23:58:55.69
emacs24 の 正規表現では 先読み・後読み に対応してないみたいだけど
対応の予定ってあるのでしょうか。
0710名無しさん@お腹いっぱい。2016/07/21(木) 01:02:41.63
LispはEmacsを使って編集してると編集する事自体が気持ち良くなってくる
あとオブジェクト指向とか遅延評価や継続みたいな他の言語だと処理系が対応しないと出来そうにない事もマクロを使って実装出来る
ただネイティブ対応してる言語に比べると機能が不完全とか余計な記述が必要とかしょうがない面はある
要するに構文なんて無いに等しいがマクロのお陰で工夫次第で色々出来る奥深さがあるという事だな
0711名無しさん@お腹いっぱい。2016/07/21(木) 01:12:54.52
ちなみにEmacs公式ページにあるPareditの動画見ると気持ち良さが分かるかも
0712名無しさん@お腹いっぱい。2016/07/21(木) 14:17:18.50
25 なかなかこないな
0713名無しさん@お腹いっぱい。2016/07/21(木) 18:23:45.33
括弧の対応が面倒で嫌いだったけど
なるほど
それ使えば楽そうだね
また試してみます
0714名無しさん@お腹いっぱい。2016/07/21(木) 20:22:15.34
s.el dash.el cl-lib.el あたりが出てきたのが最近ってのは割と不思議に思う
それまで remove-if とか when-let すら、堂々と使えなかったって・・・
0715名無しさん@お腹いっぱい。2016/07/21(木) 21:07:18.44
cl 使ってなにわるいねん!って感じだったからなあ
0716名無しさん@お腹いっぱい。2016/07/22(金) 00:57:23.00
Paredit使うと括弧の対応が楽になるんじゃなくて考える必要が全く無くなるんだ
こんな重要なものが標準で入ってないのが信じられん
お陰で色々亜種が氾濫しちゃってるけど
俺はSmartparensを自前キーバインド派だ
0717名無しさん@お腹いっぱい。2016/07/22(金) 01:04:19.97
ちなみに>>710のマクロ云々は全部On Lispに書いてある
読むのはスゲー大変だが…
0718名無しさん@お腹いっぱい。2016/07/22(金) 16:16:12.81
>>716
そうなんだ
使ってみよう意味がまだ理解できない
使ってみればわかるのかな?

>>717
その文書知らなかったよ
読んでみるよ
0719名無しさん@お腹いっぱい。2016/07/24(日) 14:45:41.14
シンボルlexical-bindingに非nilを設定した場合の動作について、
NEWSにはdolistやcl-labels/labelsでの注意点が記述されていますが、
それ以外に注意することはありますか?

lexical-letでは不可能だったことが(setq lexical-binding t)でできるようになった、
あるいは同様の記述でもlexical-letとは動作が異なる、というようなことはありますか?
0720名無しさん@お腹いっぱい。2016/07/24(日) 17:00:31.35
elispだとグローバル変数は全てhoge-countみたいにプリフィックスを付けるのが約束だから
let内でcountとか作ってもグローバル変数を上書きする事は皆無なんでlexical-letは使った事ないな

ちなみにmapcとかにクロージャーを渡すとレキシカルバインドでは問題無いけど
ダイナミックバインドだとエラーになる可能性は出て来る
だからレキシカルバインドだとエラーになる可能性が低くなるだけで特に気にした事はないな
返答になってないか
0721名無しさん@お腹いっぱい。2016/07/24(日) 21:34:48.32
macのemacsでmozc使いたいけど、むずすぎてわかんないお ω
0722名無しさん@お腹いっぱい。2016/07/25(月) 07:25:34.12
25.1 RC1 ようやくだ…
0723名無しさん@お腹いっぱい。2016/07/25(月) 19:34:43.54
xwidgetの件、Emacs内でブラウザが動くとかっていう紹介のされ方が多いけど、
アレはAtom動かしているElectronみたいにアプリウィジェットを提供する目標でもあるのでしょうか?
例えば 独特なUIな widget.el を置き換えるとか…
0724名無しさん@お腹いっぱい。2016/07/25(月) 23:00:12.10
Emacs内のxwidget内でAtomを動かす為だろ
0725名無しさん@お腹いっぱい。2016/07/26(火) 00:46:07.98
GTK+はLinux以外で動かすのは難しいから標準になられても困るよ
WindowsでもMacでもGTK+版が標準になればxwidgetが標準に成り得るかもしれんが
0726名無しさん@お腹いっぱい。2016/07/26(火) 07:51:46.99
そんなにOLEが羨ましかったのか
0727名無しさん@お腹いっぱい。2016/07/26(火) 08:22:15.90
oleとは全然違うでしょ
あっちはもっとややこしい
0728名無しさん@お腹いっぱい。2016/07/26(火) 20:19:11.38
>>716
括弧の対応を取るのは最低限のものは標準でも入ってた。lisp.elにある
キーにバインドされてないから自分で設定する必要があったり
必ず括弧の上にカーソルがないと駄目だったり使い勝手はちょっと微妙だけど標準という安心感はある
0729名無しさん@お腹いっぱい。2016/07/27(水) 21:23:53.85
>>721
頑張ればいける
http://i.imgur.com/y6krlHi.png
0730名無しさん@お腹いっぱい。2016/07/27(水) 22:17:55.16
25って今年の6月だか7月って言ってたような
0731名無しさん@お腹いっぱい。2016/07/28(木) 01:40:36.52
人柱が立ってから 25 入れる
0732名無しさん@お腹いっぱい。2016/07/28(木) 01:49:57.44
RC1でたんだしもうすぐだべ、
0733名無しさん@お腹いっぱい。2016/07/28(木) 03:19:55.33
[~/.emacs.d/init.el]
; ロードパスの設定
(setq load-path (append (list
(expand-file-name "~/.emacs.d/init.el")
(expand-file-name "~/.emacs.d/site-lisp" ")
)
load-path))
0734名無しさん@お腹いっぱい。2016/07/28(木) 11:53:10.23
>>733
ロードパスにファイルを指定しても意味無くないか?
0735名無しさん@お腹いっぱい。2016/07/28(木) 18:40:59.82
そもそもなぜ貼ったんだろう
0736名無しさん@お腹いっぱい。2016/07/28(木) 23:24:26.63
特定の文字列を強調したいのですが、いい書き方ありませんか?

(defface my1-keyword-face '((t :foreground "DeepSkyBlue2"))
"face for 正誤入力")
(defface my2-keyword-face '((t :foreground "OrangeRed1"))
"face for 正誤入力")
(defface my3-keyword-face '((t :foreground "orange1"))
"face for 正誤入力")
(font-lock-add-keywords 'text-mode
'(("0" . 'my1-keyword-face)
("2" . 'my2-keyword-face)
("4" . 'my3-keyword-face)))
0737名無しさん@お腹いっぱい。2016/07/29(金) 01:46:54.94
>>733
一体何がしたいのか
0738名無しさん@お腹いっぱい。2016/07/30(土) 13:15:12.86
initchart.el (https://github.com/yuttie/initchart) 試していたところ、
recentfのスタートアップ時、高々25要素のファイル名リストをload-fileで読み込むのに、
100ミリ秒近くもかかっているんですけど、これって欠陥なんでしょうか?

試しに、local-variableコメントを付加しない、バイトコンパイルあり、load-fileの代わりに
requireを使うバージョンのrecentfに書き換えたら、5ミリ秒くらいになったのですが。
0739名無しさん@お腹いっぱい。2016/07/30(土) 14:50:13.91
>>738
バイトコンパイルするしないで10倍以上違うこともあり得る
あと最適化するときは一つずつやって計測しないと何で速くなったか分からんだろ
0740名無しさん@お腹いっぱい。2016/07/30(土) 16:12:13.54
recentf は tramp とのからみだったかで死ぬほど遅くなる的な記事を昔どっかで見たことあるな
0741名無しさん@お腹いっぱい。2016/07/30(土) 16:12:23.34
>>739
おっしゃる通りです。数字ちゃんと取って貼った方が良かったですね。

25個のファイル名リストをsetqするelispを、各手段で読み込んだ実行時間
- load el (lvあり) 97.316182 ms
- load el (lvなし) 3.016255 ms
- require elc 2.263857 ms
- load elc 0.690197 ms

※ lv = local-variableコメント
※ elcファイルはバイトコンパイルの段階でlv情報が捨てられている

どうも local-variableコですメントのロードがかなり時間を食うみたい。
バイトコンパイルの効果は、1/4くらいと案外大きい。
requireは、パス探索が必要な分のロスが生じる。

問題はこのrecentf、わざわざいらないcoding情報を付加するためだけに
local-variableコメントなんか使っているんですよね・・・。

バイトコンパイルまで面倒見てくれる dump-variable-to-file なる関数が
標準であると良いんだけどなあ。
0742名無しさん@お腹いっぱい。2016/07/30(土) 16:56:09.89
>>719
*scratch*でmapcを使ってみたけどlexical-letとlexical-binding: tのletは同じ結果になった

emacs-version "24.5.1"
(require 'cl-lib) cl-lib

(setq lexical-binding nil) nil
(let ((count 4)) (mapc (let ((count 8)) (lambda (x) (print (incf count)))) '(a b c)))
5

6

7
(a b c)

(setq lexical-binding nil) nil
(let ((count 4)) (mapc (lexical-let ((count 8)) (lambda (x) (print (incf count)))) '(a b c)))
9

10

11
(a b c)

(setq lexical-binding t) t
(let ((count 4)) (mapc (let ((count 8)) (lambda (x) (print (incf count)))) '(a b c)))
9

10

11
(a b c)
0743名無しさん@お腹いっぱい。2016/07/30(土) 17:14:27.17
>>741 超訂正
load-fileでもキャッシュが大きく有効するらしいので影響しないように取り直し
local-variableは関係なくて、load-fileの性能に問題ありなのか?

- load el (lvあり) 100 ms
- load el (lvなし) 98 ms
- load elc 92 ms
- require elc 2.4 ms
0744名無しさん@お腹いっぱい。2016/07/30(土) 19:21:46.77
>>742
lexical-let はファイル先頭に書いた時だけ有効なんでなかったっけ
0745名無しさん@お腹いっぱい。2016/07/31(日) 19:33:57.56
>>744
lexical-let は (require 'cl) で使えるようになる。
ファイルの先頭に書くのは -*- lexical-binding: t -*- で、lexical-binding が non-nil ならそのバッファがレキシカルスコープになる
0746名無しさん@お腹いっぱい。2016/07/31(日) 20:22:46.05
lexical-letはもはや要らない子なんだからもう忘れろ
0747名無しさん@お腹いっぱい。2016/08/05(金) 18:21:39.44
dired でファイル名を変更せずにディレクトリ
位置だけを移動させる方法を教えてください。
自分の理解の範囲では、
マークして R で移動させる方法で、
元と同じファイル名をタイプすればいいというところまではわかるのですが、
毎回ファイル名を入れなおすのが(特にファイル名が長い場合など)手間で
間違いも多いので、「同じファイル名でそのまま移動させる」方法があれば
教えてください。

環境は以下の通りです。

$ cat /proc/version
Linux version 3.13.0-91-generic (buildd@lgw01-21) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #138-Ubuntu SMP Fri Jun 24 17:00:34 UTC 2016
$ emacs --version
GNU Emacs 24.3.1
Copyright (C) 2013 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
0748名無しさん@お腹いっぱい。2016/08/05(金) 18:50:57.36
>>747
Rで移動先のディレクトリ名を入れてやれば良い
0749名無しさん@お腹いっぱい。2016/08/05(金) 19:54:34.81
以下のようなフォーマットの index 付きの文字列を

`index文字'`space'`文字列'`space'`index文字'`space'`文字列'`space'`index文字'`space'`文字列'...

その index を区切り文字として分割して、結果を index 付きのリストとして変換したいんだけど
何かいい方法はないだろうか?とりあえず以下で実現はできた

(setq msg "1 ほげ 2 ふが 3 ほげほげ 4 ふがふが") ;; 元のインデックス付き文字列
(setq lst) ;; 出力用変数

(let ((i 0) idx)
(dolist (str (split-string msg " " t))
(if (= (% i 2) 0)
(setq idx str)
(setq lst (append lst (list (format "%s %s" idx str)))))
(setq i (1+ i))))
lst ;; -> ("1 ほげ" "2 ふが" "3 ほげほげ" "4 ふがふが")
0750名無しさん@お腹いっぱい。2016/08/05(金) 20:03:05.93
俺はC-x m lで登録してあるお気に入りのフォルダーのリストに
移動してそこからファイルを選んでるけれど、これより効率な
やり方ないだろうな。これまでemacsが2回もクラッシュしただよ。
編集中だったものが全てパア。ウインドーズだからだろうな。
0751名無しさん@お腹いっぱい。2016/08/07(日) 03:16:58.33
たしかに recentf は引っ掛かる
0752名無しさん@お腹いっぱい。2016/08/07(日) 10:27:31.92
>>749
cl-loop 使うとか

(require 'cl)

(setq msg "1 ほげ 2 ふが 3 ほげほげ 4 ふがふが")
(loop for (x y) on (split-string msg " " t) by #'cddr collect (concat x " " y))
0753>>7492016/08/07(日) 11:48:00.43
>>752
Common Lisp の loop マクロ難しそうで敬遠してたんですが
こんなにシンプルに >>749 の問題を解決できるんですね
勉強になりました。ありがとう。
0754名無しさん@お腹いっぱい。2016/08/07(日) 22:34:54.25
>>750
Windows は IME patch が不安定だったので、俺は Google IME + mozc.el にした。
ファイル開いたりバッファ切り替えたりは Helm でやってる。
セーブの件は auto-save-buffers でも試したら。好きなひとは一定数いるようだよ。
0755名無しさん@お腹いっぱい。2016/08/07(日) 22:40:30.93
おまえら電卓は何つかってる?
calc, calculator, scratch buffer で elisp?
calc はとっつきにくいが勉強すれば便利なのだろうか?
0756名無しさん@お腹いっぱい。2016/08/07(日) 23:31:23.77
次のように設定してすべてのバッファでcompany-modeが有効になる場合でも、
wl-draft-modeでは自動的に有効にならず、
company-mode-onを個別にhookで実行したりする必要があります。

(add-hook 'after-init-hook 'global-company-mode)

globalな設定がwl-draft-modeだけで有効にならないのはどうしてでしょうか?
0757名無しさん@お腹いっぱい。2016/08/07(日) 23:47:32.60
>>755
*scratch*でなくM-:でRPN
07587572016/08/07(日) 23:50:47.75
RPNでなくPNか、失礼
0759名無しさん@お腹いっぱい。2016/08/08(月) 01:14:56.22
>>755
簡単な計算は M-:
桁がでかくなる計算は calc ラッパーを M-: でたたいてる
0760名無しさん@お腹いっぱい。2016/08/08(月) 02:16:34.24
>>755
calc使ってる
途中の計算の履歴が使えるのも便利
0761名無しさん@お腹いっぱい。2016/08/08(月) 10:51:58.67
>>755
bc
0762名無しさん@お腹いっぱい。2016/08/10(水) 11:30:38.78
同じCalcでも
http://www.isthe.com/chongo/src/calc/
の方が便利だと思う
数式処理ならSympy or Maxima
EmacsのcalcはOrgモードではお世話になること多いけど
~
0763名無しさん@お腹いっぱい。2016/08/11(木) 15:30:53.83
run-schemeでgosh -iかimaixmaかなー
0764名無しさん@お腹いっぱい。2016/08/15(月) 08:36:37.61
melpaにつながらないの僕だけ?
0765名無しさん@お腹いっぱい。2016/08/15(月) 08:47:46.35
あ、うちもだ
0766名無しさん@お腹いっぱい。2016/08/15(月) 08:57:16.85
ぐぬぬ、待つしかないか
0767名無しさん@お腹いっぱい。2016/08/15(月) 19:40:35.95
melpaは誰が金だしてんだ?
0768名無しさん@お腹いっぱい。2016/08/15(月) 19:48:43.48
パッケージに署名がないのでやられるだろうな。
0769名無しさん@お腹いっぱい。2016/08/16(火) 00:52:10.07
elispは何でも出来るからな
ウィルス仕込まれてもウィルスチェックソフトが*.elの中まで見るわけないし
復旧しても直ぐにインスコ/アップデートせずに少し様子見た方がいいぞ
0770名無しさん@お腹いっぱい。2016/08/16(火) 02:09:54.42
なにそれ怖い
0771名無しさん@お腹いっぱい。2016/08/16(火) 09:18:45.44
彼女できるウィルスまだー?
0772名無しさん@お腹いっぱい。2016/08/16(火) 16:49:51.99
@melpa_emacsの8/14のツイートより
Melpa is down for server upgrade. Back soon! Sorry for the inconvenience.
単にサーバーをいじっただけだな。もう復旧してる
0773名無しさん@お腹いっぱい。2016/08/18(木) 01:54:18.08
つか毎日melpaにつないで何してんだ
0774名無しさん@お腹いっぱい。2016/08/19(金) 14:25:24.06
毎日melpaに繋いでアクセス数を増やす簡単なお仕事です
0775名無しさん@お腹いっぱい。2016/08/25(木) 22:29:04.79
Emacs は programming hipster の間で人気上昇中
http://www.warski.org/blog/2016/08/why-i-started-learning-emacs-in-2016/
0776名無しさん@お腹いっぱい。2016/08/27(土) 01:23:24.18
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa

これをtable-captureで読み込む場合


Column delimiter regexp:
Row delimiter regexp:
Justify:
Minimum cell width:

それぞれどのように設定すればよいでしょうか。
0777名無しさん@お腹いっぱい。2016/08/27(土) 01:53:11.63
少しくらい自己流で考えて来いや
0778名無しさん@お腹いっぱい。2016/08/27(土) 04:24:19.45
>>776
ヘッダのカラム数(5)とデータ部分のカラム数(6)が合ってないな
0779名無しさん@お腹いっぱい。2016/08/30(火) 19:32:31.03
>>776
Rにirisとしてデータがはいってた気がする
Rでやったらどうだ?
各種処理や可視化もやりやすいぞ
0780名無しさん@お腹いっぱい。2016/08/31(水) 00:37:03.33

http://akisute3.hatenablog.com/entry/2014/01/14/012717
0781名無しさん@お腹いっぱい。2016/08/31(水) 01:31:28.32
776
split-string
string-to-number
0782名無しさん@お腹いっぱい。2016/09/02(金) 02:58:43.00
>>778
合ってなくても出来るじゃん
(table-capture (point-min) (point-max) " " "\n" 'center 12)

というか、table-capture って初めて使ったけど100行程度でも凄い遅くなるのね
0783名無しさん@お腹いっぱい。2016/09/02(金) 03:21:58.58
できるけどヘッダがずれるよ
0784名無しさん@お腹いっぱい。2016/09/10(土) 01:38:51.61
過疎すぎて笑えない
0785名無しさん@お腹いっぱい。2016/09/10(土) 14:10:48.27
googleカレンダーとまともに連携するelキボンヌ
0786名無しさん@お腹いっぱい。2016/09/10(土) 17:00:20.98
標準コマンド置き換えelispリストほしい ^p^
0787名無しさん@お腹いっぱい。2016/09/12(月) 18:10:43.45
iserachでヒットしたやつ一覧できるやつでシンプルなの教えて★
0788名無しさん@お腹いっぱい。2016/09/12(月) 19:01:09.95
helm swoop?
0789名無しさん@お腹いっぱい。2016/09/12(月) 19:14:37.13
>>787
https://www.emacswiki.org/emacs/OccurFromIsearch
0790名無しさん@お腹いっぱい。2016/09/12(月) 19:56:29.97
>>789
ベリーありがとう ^^
0791名無しさん@お腹いっぱい。2016/09/12(月) 22:21:27.99
>>789
いままでoccurしらなかった。すごく便利じゃんか・・・!ほんとすごい
0792名無しさん@お腹いっぱい。2016/09/13(火) 04:38:57.94
occur とかは
(define-key occur-mode-map (kbd "C-c") 'hoge)
としとけば C-c で hoge が呼ばれますが

imenu-list だと
(define-key imenu-list-major-mode-map (kbd "C-c") 'hoge)
としても C-c の後に入力待ちになっちゃいます
imenu-list でも C-c 一発で hoge したい時はどうすればよいでしょうか?
0793名無しさん@お腹いっぱい。2016/09/13(火) 09:19:27.52
そういう用途に C-c を使わない方がいい
0794名無しさん@お腹いっぱい。2016/09/13(火) 19:52:21.76
TRAMP速くする方法ある?
0795名無しさん@お腹いっぱい。2016/09/13(火) 22:01:00.34
>>794
ファイル転送が遅いのであれば、tramp-method に scp を使うと早くなる。
0796名無しさん@お腹いっぱい。2016/09/13(火) 22:08:34.11
需要あるかな。
BUW の emacs から Windows の Google日本語入力を使う方法。
https://www49.atwiki.jp/ntemacs/pages/61.html
■ このスレッドは過去ログ倉庫に格納されています