• 締切済み

emacsのカスタマイズ

emacsのカスタマイズで質問です。 cモードになったとき(できれば他の全てのモードでも)、フリーにタブを入力したいのですが、どのようにカスタマイズすれば良いのでしょう? いろいろ調べてみて、 (setq c-auto-newline nil) とか、 (setq c-tab-always-indent nil) としてもダメです。 ついでに、タブ幅を4にしたとき、 (setq-default tab-width 4) (setq-default tab-always-indent t) タブは4桁になるのですが、タブキーを押すと2タブ入ってしまいます。 どうしても、1タブキーで8桁進めたいようです。 これを1タブキーでタブ1つが入って、4桁であって欲しいのですが、どうすれば良いでしょう? よろしくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

すみません, ・タブの削除で行削除になる ・double で宣言した時にタブが揃わない って, それぞれどのような現象なのでしょうか? ちょっと想像がつきかねるのですが....

okazaki0ko
質問者

補足

例で示します。 > ・タブの削除で行削除になる 1:→ i = 10; 2:→ ■ 3:→ while ( i ) { というプログラムがあったとして、2行目にタブが1つ入っていて、カーソルが■の位置にあるとします。 このとき、BSキーでタブを削除すると普通のエディタなら 1:→ i = 10; 2:■ 3:→ while ( i ) { となりますが、emacsでは、 1:→ i = 10;■ 2:→ while ( i ) { となってしまいます。 > ・double で宣言した時にタブが揃わない これは、 1:→ int i, 2:→   j; 3:→ double x, 4:→   y; 4行目のように、変数xとyのタブが揃わない現象のことです。

  • dev_null
  • ベストアンサー率67% (37/55)
回答No.2

どのような style でコードを書いてるか分かりませんが 個人的には c-mode で気になりませんよ 一掃のこと c-mode 自体を止めてしまってはどうでしょうか? (setq auto-mode-alist (append '(("\\.c$" . text-mode) ("\\.cc$" . text-mode) ) auto-mode-alist))

okazaki0ko
質問者

お礼

cモードが便利で、普通の状況では十分に満足しています。 ただ、今回は、UNIXの社内研修の講師をすることになりまして、エディタの紹介でemacsを使おうと思いました。 しかし、研修で使うには、「素直な」エディタの方が都合良く、質問させていただいた次第です。 > 一掃のこと c-mode 自体を止めてしまってはどうでしょうか? cモードを止めると、キーワードの色つけもなくなりますよね? わがままですが、それはそれで不便で・・・。

  • dev_null
  • ベストアンサー率67% (37/55)
回答No.1

> cモードになったとき(できれば他の全てのモードでも)、フリーにタブを入力したいのですが、 > どのようにカスタマイズすれば良いのでしょう? この設定は、試したことがありません C-q TAB あるいは C-q C-i とかで代用するとか.. > これを1タブキーでタブ1つが入って、4桁であって欲しいのですが、どうすれば良いでしょう? 下のような設定でいけると思うのですがどうでしょうか。 (add-hook 'c-mode-common-hook '(lambda () (setq indent-tabs-mode t) (setq c-basic-offset 4) ))

okazaki0ko
質問者

お礼

回答ありがとうございます。 後半の > (add-hook 'c-mode-common-hook > '(lambda () > (setq indent-tabs-mode t) > (setq c-basic-offset 4) > )) に関しましては、すでに設定済みでした。 結果的には1タブで4桁で良いのですが、マイクロソフトにも負けない「小さな親切、余計なお世話」な、タブの削除で行削除になってしまったり、doubleで宣言した時にタブが揃わなかったりと散々です。 他の設定で、この「小さな親切、余計なお世話」を解除できないでしょうか? 後半は、C-q TAB で確かに動作しました。 が、タブキーを1回押す動作とこれとでは手の動きが全然違いすぎて・・・。

関連するQ&A

  • emacs lisp

    OS:ubuntu feisty fawn app:emacs-snapshot (emacs23) アンチエイリアスフォントのためにemacs23を使用しております。 実行したのは以下のとおり。 sudo apt-get install emacs-snapshot emacs-snapshot-el .emacs.el (autoload 'c++-mode "cc-mode" nil t) (add-hook 'c-mode-common-hook (lambda () (setq c-set-style "linux") c-basic-offset 4)) (setq auto-mode-alist (append '(("\\.cpp$" . c++-mode)auto-mode-alist)) cc-modeのバージョンは5.28です。 この設定を施したにもかかわらず、Syntax highlightが動いてくれません。(強調表示) どなたかご教授願えませんでしょうか? よろしくお願いします。

  • emacsのタブ

    emacsのCソースモードで、"{"の次の行が自動インデントされますが、ブランク2つ分となります。 8タブにしたいのですが、方法を知らないでしょうか。 あと、カスタマイズに詳しいサイトがあれば教えてください。

  • .emacsの編集について

    windowsでGNU Emacsを使い始めた初心者です。 .emacsを編集してemacsをカスタマイズしようと思い,.emacsが保存されていたCドライブの中のAPPData/Roamingというフォルダに入りました。予定通り.emacsファイルがあったのでそのファイルに命令を追加したのですがemacsに反映されずに困っています。なにか間違っているのでしょうか?教えてください。ちなみにファイルの中身は以下のように記述されています。 /*Textモードとauto-fillモードを自動的に有効にする*/ (setq default-major-mode'text-mode) (add-Hook 'Texy-mode-hook 'turn-on-auto-fill) /*言語設定*/ (set-language-environment"japanese" ) /*フォントの設定*/ (create-fontset-from-request "private-fontset" '((width . 25) (height . 16) (fixed . t) (italic . nil)) '((family . "MS ゴシック") (family . "Courier New"))) /*色に関する設定*/ (setq default-frame-alist (append (list '(font . "private-fontset")) default-frame-alist)) (if window-system (progn (set-face-foreground 'font-lock-comment-face "MediumSeaGreen") (set-face-foreground 'font-lock-string-face "purple") (set-face-foreground 'font-lock-keyword-face "blue") (set-face-foreground 'font-lock-function-name-face "blue") (set-face-bold-p 'font-lock-function-name-face t) (set-face-foreground 'font-lock-variable-name-face "black") (set-face-foreground 'font-lock-type-face "LightSeaGreen") (set-face-foreground 'font-lock-builtin-face "purple") (set-face-foreground 'font-lock-constant-face "black") (set-face-foreground 'font-lock-warning-face "blue") (set-face-bold-p 'font-lock-warning-face nil) (set-background-color "black") ) ;対応する括弧を表示する (show-paren-mode t)

  • emacsの設定

    「.c」の拡張子をもつファイルのモードをc-modeにする.emacsの設定 (setq auto-mode-alist (cons '("\\.c$" . c-mode) auto-mode-alist)) のcons の意味がよくわからなくて困っています。 あと、cons 'の  'マークがなぜ必要なのかわかりません。 調べてもなかなかcons の意味が単体で出てこなくて困っているので、誰か教えてください。お願いします。

  • xyzzyでのインクリメンタルサーチが有効にならない。

    xyzzyでのインクリメンタルサーチが有効にならない。 kamuycikapです。 <問題> ;;インクリメンタルサーチ (require "isearch") ;; すべて選択 (global-set-key #\M-a 'selection-whole-buffer) ;\C-aの代わりに\M-a 上記の2つだけが設定有効になりません。 アウトラインやRubyモード等、他の指定は有効になっている様子なのですが、な ぜか上記の2つだけが設定反映されません。 識者の方のアドバイスをお願い致します。 ★環境  Windows7 ★xyzzyバージョン  0.2.2.235 ★インストールパス  D:\Download\soft\Windows\xyzzy\ ★XYZZYHOME  D:\Download\soft\Windows\xyzzy\ .xyzzyを記載します。 --ここから ;;;インクリメンタルサーチ (require "isearch") ;;Rubyモード設定 ;(load-library "Gates");Gates が好きならファイルの先頭に (load-library "ruby-mode") (push '("\\.rb$" . ruby-mode) *auto-mode-alist*) ; インデント量を変える。nilの時はタブを挿入 (setq *ruby-indent-column* 2) ;;タブの気持ちで半角スペース (defun insert-space-like-tab () (interactive) (let ((tab (tab-columns (selected-buffer)))) (insert " " (- tab (mod (current-column) tab))))) (global-set-key #\C-2 'insert-space-like-tab) ;;問い合わせ方置き換え(Emacs風) (global-set-key #\M-% 'query-replace) ;;動的補完をEmacsと同じにしてしまおう (require "dabbrev") (global-set-key #\M-/ 'dabbrev-expand) ;;アンドゥもEmacsと同じにしてしまおう (global-set-key #\C-/ 'undo) ;;Grepマッチ文字列の赤色太字表示 (setq *grep-highlight-match* '(:bold t :foreground 1)) ;;引用符に>を利用する (setq *quotation-prefix* ">") ;;アウトラインプロセッサ機能を有効に (require "color") (require "win-window") (require "buf2html") (require "treeview/setup") (require "outline-tree/outline-tree") ;; すべて選択 (global-set-key #\M-a 'selection-whole-buffer) ;\C-aの代わりに\M-a

  • Emacs-Lispでの正規表現について

    例えば、以下のようなS式を評価した場合、"11" "12" "13"がヒットすると思います。 (search-forward "1[123]" nil t) しかし、私の環境では"11"や"12"ではなく"1[123]"にヒットしてしまいます。 [ ]や?等のメタキャラクターが機能していないようなのですが、どうすればメタキャラクターを有効化できるのでしょうか? ご教授宜しくお願い致します。 環境 OS:CentOS6.0 Emacs23.1.1 Lisp-interactionモードのscratchバッファに以下の様に書いて、C-jで評価しています。 (search-forward "1[123]" nil t) 12

  • emacsの自動改行+インデントについて

    linuxでC言語を勉強しています。 emacsをいろいろなサイトを参考にしていじっているのですが、 (add-hook 'c-mode-common-hook ____________'(lambda () _________________(c-toggle-auto-hungry-state 1) )) で自動改行+インデントをしています。 しかし、これだと for(i=0;i<10;i++) ___{ _______... ___} というふうになってしまいます。どうも私はそれが気に食いません。 できれば、 for(i=0;i<10;i++){ ____... } となってほしいのです。 ただし、";"、"{"、"}"を入力した後には改行+インデントしてほしいです。 一度、 (define-key c-mode-base-map ";" 'newline-and-indent) としてみたのですが、これだと、;が表示されずに改行、インデントされてしまい失敗でした。 elispについて詳しく知らないので教えてください。

  • emacsのメール送信について

    【質問】 Emacs M-x mail でメール送信ができません. どうか解決方法をご教授いただきたく存じます. 【環境】 OS: Mac OS 10.5 EMACS: Carbon Emacs 22.3 【現象】 M-x mailを打ち,以下の内容をタイプ ----------------------------- From: xxx <***@***.ac.jp> To: ***@***.ac.jp Subject: test7 --text follows this line-- test7 ----------------------------- ctrl+cを2回で送信. Emacsのmessageには以下のように記載されております. 一見送信できているのかのように見えるのですが, いくら待てどもメールが送信先に届きません. ----------------------------- Carbon Emacs Package (2009) For information about GNU Emacs and the GNU system, type C-h C-a. Loading sendmail... Loading regexp-opt...done Loading sendmail...done Sending... Loading mailclient...done Loading browse-url...done Sending...done Loading url-parse...done Loading url-methods...done Making completion list... [2 times] ------------------------------- .emacsには以下の設定がされております. ------------------------------- ;;For window configuration (if window-system (progn (setq initial-frame-alist '((width . 80) (height . 50) (top . 0) (left . 600))) )) ;;For font configuration (if (eq window-system 'mac) (require 'carbon-font)) (fixed-width-set-fontset "hiramaru" 18) ;;For mail configuration (setq user-mail-address "***@***.ac.jp") ------------------------------------------- その他の現象としましては以下になります. + M-x rmail でメールの受信を確認することは可能 + ターミナル上で mail ***@***.xxx.xx としてメールを送信することは可能 ですのでネットワークの問題ではないと考えております. 以上,どうかよろしくお願いいたします.

  • Emacs-Lispモードで、式が返す値を全て表示

    こんにちは。 Emacsは、Gnu Emacs for Windows 23.4 を使っています。 Emacs-Lispモードで、バッファに記述されている式を評価した時、その式が返す値が、ミニバッファに出力されます。 ところが、式が返す値が長すぎると、途中までしか表示されません。 例えば自分の環境だと、 (symbol-value 'load-path) という式を評価すると、ミニバッファには (nil "~" "~/My_Lisp_Programs" "c:/Emacs_for_Windows/emacs-23.4" "C:/Emacs_for_Windows/emacs-23.4/site-lisp" "C:/Emacs_for_Windows/emacs-23.4/../site-lisp" "C:/Emacs_for_Windows/emacs-23.4/lisp" "c:/Emacs_for_Windows/emacs-23.4/lisp/url" "c:/Emacs_for_Windows/emacs-23.4/lisp/textmodes" "c:/Emacs_for_Windows/emacs-23.4/lisp/progmodes" "c:/Emacs_for_Windows/emacs-23.4/lisp/play" "c:/Emacs_for_Windows/emacs-23.4/lisp/org" ...) という文字列が出力され、...以降が表示されません。 どうすれば、Emacs-Lispモードで、式が返す値を全て表示する事ができるのでしょうか? 何か御存じの方がいらっしゃれば、是非、情報を提供して頂きたく思います。 では、よろしくお願い致します。

  • Emacs Lisp: consセルと引用符?

    お世話になります。 Emacs Lispについて勉強しています 今は、リスト、consセルについて勉強しています。 以下、拙い質問になるかと思いますが、よろしくお願いします。 Lisp Interactionモードのバッファに、 '(1 2 3) というリストを書いて行末でC-jを押下すると (1 2 3) という式を返します。 しかし、 (1 2 3) という式を書いて行末でC-jを押下すると Debugger entered--Lisp error: (invalid-function 1) というエラーになります。 これは、1が関数、2と3が引数として評価されるからですね。 さて、リストではなく「consセル」を作るとします。 (1 . 2) と書いてC-jを押下すると、やはり Debugger entered--Lisp error: (invalid-function 1) というエラーになります。 '(1 . 2) であれば (1 . 2) と、正しくconsセルが出来ます。 '(1 . nil) であれば (1) というリストを返します。 これは、cdr部がnilであるconsセルはリストになるからですね。 では、3と、「1とnilからなるリスト」のconsセルを作って、結果的に(3 1)というリストにしようとします。 '(3 . '(1 . nil)) この場合は、予想に反して (3 quote (1)) となります。 '(3 . (1 . nil)) であれば、 (3 1) となります。一方、 (3 . (1 . nil)) とすると、 Debugger entered--Lisp error: (invalid-function 3) となります。 まとめると、 3と、「1とnilからなるリスト」のconsセルを作って、結果的に(3 1)というリストにしようとした場合は、 '(3 . (1 . nil)) のように外側のconsセルはクォートし、内側のconsセルはクォートしない、ということになりますね。 このクォートの振る舞いの違いはなぜでしょうか。 よろしくお願いします。