のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:126,368,270人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレEmacs Part 43

    emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    901 : 名無しさん@お腹 - 2013/11/28(木) 21:43:45.34 (+47,+29,+0)
    微笑ましい
    902 : 名無しさん@お腹 - 2013/11/29(金) 05:31:41.64 (-4,-30,-39)
    evil使ってるとforward-sexpが行末で止まってしまうんですが、これはevil-move-cursor-backをnilにする以外では避けようがないんですかね
    903 : 名無しさん@お腹 - 2013/11/30(土) 02:53:35.49 (+2,-28,-17)
    >>902
    それ、evil 関係なくない?

    うちでは、普通に動いてるっぽいけど。
    904 : 名無しさん@お腹 - 2013/11/30(土) 09:09:31.90 (+7,-30,-77)
    anything-c-moccor-occur-by-moccorを
    あらかじめキーワードを指定した状態で呼び出したいです。
    ミニバッファに
    patter:キーワード
    ↑キーワードがすでに打ち込まれた状態でキーバインドから呼び出したいのですが、
    わかる方いらっしゃいますか?
    905 : 名無しさん@お腹 - 2013/11/30(土) 09:50:04.68 (+13,-30,-18)
    >>904
    これかな。
    (anything-c-moccur-occur-by-moccur-base "キーワード")
    906 : 名無しさん@お腹 - 2013/11/30(土) 10:56:30.83 (+21,-8,+0)
    >>905
    実行できました。
    ありがとうございます!!
    907 : 名無しさん@お腹 - 2013/11/30(土) 14:51:51.78 (+0,-30,-211)
    >>903
    あんまりEmacsに慣れてないからよくわかんないんだけど

    ・閉じ括弧でC-M-f(forward-sexp)を呼ぶと、モード・位置関係なく Scan error: "Containing expression ends prematurely" と出てカーソルは移動しない
    ・それ以外の場合はEmacsモードでは普通に動作する
    ・evilのnormalステートだとカーソルが行の最後の要素の一番後ろの文字の上に乗った状態で引っかかる。閉じ括弧じゃないならエラーメッセージは出ないけどやっぱり動かない
    ・evil-move-cursor-backをnilにするか、行末にスペースがあるとちゃんと次の要素に飛んでくれる

    っていう状態です
    誰か助けて

    ちなみに
    GNU Emacs 24.3.1 (i386-mingw-nt6.0.6002)で
    evilのバージョンは1.0.8です
    908 : 名無しさん@お腹 - 2013/11/30(土) 14:55:22.09 (+0,-27,-12)
    vimに移るかevilを捨てるか選んで
    909 : 名無しさん@お腹 - 2013/11/30(土) 17:21:04.87 (+3,-29,-22)
    evilのメリットってctrlを使わないでカーソル移動ができることなのかな
    そうだとするならばモード移動の切り替えも面倒な気がするけれど
    慣れてしまったせいかemacsのctrl+n, ctrl+pの方がモードを気にせず楽だと思うけれどね
    910 : 名無しさん@お腹 - 2013/11/30(土) 17:47:39.09 (+32,-30,-160)
    >>907 は、 cursor 位置の emacs と、vi 系の違いを理解していない。と思う。

    試しに、forward-sexp を、evil の insert state や emacs state で、やってみ。

    normal mode のbox cursor と、 emacs での box cursor の位置の解釈の仕方が、
    違うんだ。

    行末での cursor 位置の違いを emacs state と normal state で
    見比べてみると、一個ずれてるのに気づくと思うけど。

    ちなみに、エラーメッセージの意味は、閉じカッコの手前で forward に進もうとするから、進めねーよ(意訳)ってことだろう?

    対策としては、advice とか使って、ちょっと、手を加えるとかになるんじゃないんかな。

    おれは、insert state で使ってすましてる。
    911 : 名無しさん@お腹 - 2013/11/30(土) 19:15:09.87 (+60,+25,-15)
    変更されているバッファを一度にすべて保存するコマンドはありますか?
    今はemacs終了時に変更されているバッファを保存するかどうか聞かれるのでyを何度も押しています
    912 : 名無しさん@お腹 - 2013/11/30(土) 19:19:09.40 (+36,-30,-75)
    >>911
    save-some-buffers に universal-argument を付けて実行。
    C-u C-x s かな。

    buffer-save-without-query を t にしておけば C-x s で問答無用で保存してくれるようになる。
    そのかわり終了時にも聞かれなくなるかもしれない。
    913 : 名無しさん@お腹 - 2013/11/30(土) 21:16:51.36 (+46,+18,+3)
    >>912
    ありがとうございます
    914 : 名無しさん@お腹 - 2013/11/30(土) 23:10:44.15 (+67,+29,-82)
    >>910
    ほんとだ、insertステートだと問題なく動く
    多分、normalステートだと行末の改行にカーソルが乗らずに一文字戻るって仕様なんだね
    理屈は分かったから後はこっちで色々いじってみるよ
    どうもありがとう
    915 : 名無しさん@お腹 - 2013/12/01(日) 13:14:05.85 (-1,-29,-38)
    smart-compile とか flymake とか quickrun ってなんか上手に統合出来そうな気もするんだけど
    すでにそういうパッケージってあったりするんだろうか
    916 : 名無しさん@お腹 - 2013/12/03(火) 12:17:55.72 (+57,+29,-15)
    そう思うなら自分で探してみたらいーんじゃないでしょうかね
    917 : 名無しさん@お腹 - 2013/12/04(水) 08:41:44.37 (+3,-30,-71)
    (interactive "s表示用テキスト : ")

    ミニバッファ側
    表示用テキスト : 「」

    「」に初期値を入れておきたいのですが、やりかたが見つからず。
    C-x C-fのようなかんじです。
    よろしくおねがいします。
    918 : 名無しさん@お腹 - 2013/12/04(水) 11:28:06.67 (+7,-30,-109)
    それこそその find-file を見てみりゃわかると思うけど
    単に自前でプロンプト出す関数を使ってるだけの話だね。

    (defun with-default-input (text)
    (interactive (list (read-input "Text: " "hello, world")))
    (message "Input text: %s" text))
    919 : 名無しさん@お腹 - 2013/12/05(木) 00:14:15.27 (-1,-29,-20)
    >>918
    ありがとうございます。
    できました。
    lisp全体にですが理解が浅いので助かります。
    read-inputってはじめて知りましたw
    920 : 名無しさん@お腹 - 2013/12/05(木) 02:34:57.31 (-1,-29,-12)
    popup-select-windowの表示方法でバッファ一覧を確認できないのでしょうか?
    http://d.hatena.ne.jp/khiker/20100924/popup_select_window のスクリーンショットが一番わかりやすいです。
    921 : 名無しさん@お腹 - 2013/12/05(木) 11:05:36.28 (+57,+29,-18)
    説明読んだがどういう動きするのかよくわからなかった・・・
    3つ以上に分割してる時に選んだ先のウィンドウをわかりやすく表示するってこと?
    922 : 名無しさん@お腹 - 2013/12/05(木) 12:40:22.02 (+3,-30,-267)
    使ったらすぐ分かった。ウィンドウが 3つ以上の時に popup で選択先を選べて
    かつ選ぶウィンドウをわかりやすく色付けするって拡張だったのか。

    バッファ選択の場合、iswitchb なんかだと↓付けることで
    現在選ぼうとしてるバッファがリアルタイムで表示されてちょっとはわかりやすくなるんじゃないかな
    popup.el で表示させたいんだったら自分でなんか書かないとだめじゃないかね。

    (require 'cl-lib)

    (defadvice iswitchb-exhibit
    (after ad-iswitchb-exhibit-with-display-buffer activate)
    "選択しているバッファをウィンドウに表示する."
    (when (and (eq iswitchb-method iswitchb-default-method)
    iswitchb-matches)
    (let ((iswitchb-method 'samewindow)
    (selected (get-buffer-window
    (cl-find-if-not 'minibufferp (buffer-list)))))
    (when selected
    (select-window selected)
    (iswitchb-visit-buffer
    (get-buffer (car iswitchb-matches)))
    (select-window (minibuffer-window))))
    ))
    923 : 名無しさん@お腹 - 2013/12/05(木) 12:56:33.94 (+9,-30,-130)
    popupで表示して選ぶだけならこれでいける
    (switch-to-buffer
    (popup-menu* (mapcar
    (lambda (b) (popup-make-item (buffer-name b) :value b))
    (cl-remove-if (lambda (b)
    (string-match "^ " (buffer-name b)))
    (buffer-list)
    ))))
    924 : 名無しさん@お腹 - 2013/12/05(木) 13:03:36.67 (+4,-30,-86)
    >>923
    delq はもっと使われていい。

    (switch-to-buffer
    (popup-menu*
    (delq nil (mapcar
    (lambda (buf)
    (unless (string-match "^ " (buffer-name buf))
    (popup-make-item (buffer-name b) :value buf)))
    (buffer-list)))))
    925 : 名無しさん@お腹 - 2013/12/05(木) 16:29:41.76 (-2,-30,-61)
    smartrep.elでenterキーにコマンドを割り当てたいです
    keyboard-quitを割り当てたいのですが("<enter>" . 'keyboard-quit)と書いても何も起きませんでした
    926 : 名無しさん@お腹 - 2013/12/05(木) 19:46:43.05 (+17,-29,-1)
    <return> じゃないの?
    927 : 名無しさん@お腹 - 2013/12/05(木) 22:33:13.02 (+51,+26,+1)
    >>926
    そうでした...
    928 : 名無しさん@お腹 - 2013/12/06(金) 01:23:33.45 (+57,+29,-7)
    えんたあああああああああああああああああああいああああああああああああ!!!!


    魔がさした。反省はしてない
    929 : 名無しさん@お腹 - 2013/12/06(金) 09:23:32.56 (-11,-29,-1)
    entire?
    930 : 名無しさん@お腹 - 2013/12/06(金) 10:10:44.44 (+56,+28,-18)
    しかしキーボードにはEnterって書いてあるのに、Returnキーとはこれいかに
    昔の名残か
    931 : 名無しさん@お腹 - 2013/12/06(金) 13:36:03.15 (+57,+29,-57)
    enterは電算端末
    returnはタイプライター、パンチカードの名残り
    押すとキャリッジがリターンしたから
    932 : 名無しさん@お腹 - 2013/12/06(金) 14:47:30.59 (+55,+27,-23)
    元々はリターンキーだったろ。エンターなんて最近。PC-98もリターンキーだったろ?
    933 : 名無しさん@お腹 - 2013/12/06(金) 15:11:35.54 (+66,+29,-22)
    大昔から「入力」「送信」なんて表記もあったよ
    934 : 名無しさん@お腹 - 2013/12/06(金) 17:15:48.23 (+15,-16,-2)
    >>933
    キーボードに?
    935 : 名無しさん@お腹 - 2013/12/06(金) 18:04:31.55 (+57,+29,-20)
    送信キーは何かで見たな。
    大学の図書館にあった検索端末だったかな。
    936 : 名無しさん@お腹 - 2013/12/06(金) 18:43:51.63 (-1,-29,-23)
    Macのjisキーボードには
    enter / return両方刻印されてるな。
    937 : 名無しさん@お腹 - 2013/12/06(金) 22:53:20.42 (-1,-29,-9)
    compile について質問です。
    エラーが発生するまで *compilation* ウィンドウを開かない方法はないでしょうか?
    938 : 名無しさん@お腹 - 2013/12/06(金) 23:14:15.73 (+59,+29,+0)
    http://yohshiy.blog.fc2.com/blog-entry-132.html
    ここにそれっぽい事が書いてある
    939 : 名無しさん@お腹 - 2013/12/06(金) 23:38:05.74 (+17,-30,-209)
    >>938
    ありがとうございます。正常なら開かないのではなく正常なら閉じる、しかなさそうな感じですね。
    gcc とかだとコンパイルエラーでも終了時のステータスが 0 だったので face で判断するのを書いてみました。

    (add-hook 'compilation-finish-functions
    (lambda (buffer msg)
    (unless (with-current-buffer buffer
    (let ((cur (point-min)) found)
    (while (and cur (not found))
    (setq found
    (let ((face (get-text-property cur 'face)))
    (memq 'compilation-error
    (if (listp face)
    face
    (cons face nil)))))
    (setq cur (next-property-change cur)))
    found))
    (when (get-buffer-window buffer)
    (delete-window (get-buffer-window buffer))))))
    940 : 名無しさん@お腹 - 2013/12/07(土) 00:31:47.18 (+5,-30,-113)
    >>939
    compilation-messageの方使うともうちょい短くなるな。
    (add-hook 'compilation-finish-functions
    (lambda (buffer msg)
    (when (and (not (with-current-buffer buffer
    (text-property-not-all (point-min) (point-max)
    'compilation-message nil)))
    (get-buffer-window buffer))
    (delete-window (get-buffer-window buffer)))))
    941 : 名無しさん@お腹 - 2013/12/07(土) 12:33:27.07 (+0,-30,-275)
    compilation buffer を最初から表示させないのを作ってみた。エラーの時だけ表示される。

    font-lock のとこもうちょっとなんとかならんのかしら。
    エラーが起きたかどうかをテキストプロパティから判別してるんだけど、
    font-lock が遅延評価かなんかしてるせいか display-buffer しないとプロパティが設定されない。
    fontify-buffer は font-lock-mode だと機能してくれなくて 一旦 font-lock-mode 解除とか間抜けなことするはめに。

    (defadvice compilation-start (around compile-silently activate)
    "コンパイル時にバッファを表示しない."
    (cl-letf (((symbol-function 'display-buffer) 'ignore))
    ad-do-it))

    ;; コンパイルエラー時のみ *compilation* バッファ表示
    (add-hook 'compilation-finish-functions
    (lambda (buffer msg)
    (with-current-buffer buffer
    (font-lock-mode -1)
    (font-lock-fontify-buffer)
    (font-lock-mode 1)
    (when
    (text-property-not-all (point-min) (point-max)
    'compilation-message nil)
    (display-buffer buffer))))
    )
    942 : 名無しさん@お腹 - 2013/12/07(土) 12:56:08.08 (+57,+29,-4)
    きたねーコード貼るな
    日記にでも書いてろ
    943 : 名無しさん@お腹 - 2013/12/07(土) 12:56:19.26 (-1,-29,-6)
    なにも表示させたくないならflymakeとかも検討してみたら?
    944 : 名無しさん@お腹 - 2013/12/07(土) 14:06:43.00 (+64,+29,-19)
    emacs 上でテストを書く時にサポートしてくれるようなパッケージってありますでしょうか?
    具体的には本体とテストを簡単に行き来出来るようなパッケージを探しています。
    945 : 名無しさん@お腹 - 2013/12/07(土) 17:25:01.89 (+52,+29,+1)
    そんなものありません
    946 : 名無しさん@お腹 - 2013/12/07(土) 22:57:48.90 (+11,-30,-41)
    >>944
    `ff-find-other-file' を使えば出来る気がする。
    そう思ってググったらCofeeScript用の設定例が見つかった。
    http://github.com/yasuyk/coffee-fof/blob/master/coffee-fof.el
    947 : 名無しさん@お腹 - 2013/12/08(日) 09:04:29.88 (+3,-30,-311)
    direx でディレクトリを先に表示するようなのを書いた

    (defadvice direx:node-children (around sort-files activate)
    "direx でディレクトリを最初に表示する."
    (let ((org-directory-files (symbol-function 'directory-files)))
    (cl-letf (((symbol-function 'directory-files)
    (lambda (directory &optional full match nosort)
    (if nosort
    (funcall org-directory-files directory full match nosort)
    (sort (funcall org-directory-files directory full match)
    (lambda (a b)
    (let ((dir-a (file-directory-p a))
    (dir-b (file-directory-p b)))
    (if (eq dir-a dir-b)
    (string-lessp a b)
    (if dir-a t)))))))))
    ad-do-it)))
    948 : 名無しさん@お腹 - 2013/12/08(日) 10:37:49.54 (+3,-30,-139)
    設定ファイル内で、
    コンパイル時にライブラリが存在してるかどうかチェックして require したり
    実行ファイルが存在するかチェックして設定したり、なんてのがよくありますが、
    Cのプリプロセッサみたいにコンパイル時にチェックを済ませてしまうことって出来ないんでしょうか?

    (if (executable-find "ruby") (setq hoge "aaa"))
    みたいなのがあった場合、コンパイル時に executable-find を実行、if の条件判断までやってしまって
    ruby がない場合は elc ファイル内になにも残らず、存在する場合は setq だけ残したいです。
    949 : 名無しさん@お腹 - 2013/12/08(日) 11:03:21.40 (+4,-30,-48)
    マクロを使え
    (defmacro if-on-compile (cond &rest form)
    (when cond `(progn ,@form)))
    950 : 名無しさん@お腹 - 2013/12/08(日) 11:17:07.24 (+3,-30,-70)
    common lispなら
    (if #.(executable-find "ruby") (setq hoge "aaa"))
    でいけると思う。
    emacs lispでも#.は使えるみたいだけど狙った結果になるかわからん
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について