2012-03-28 15 views
21

emacs 24では、色のテーマが適用される順序が重要です。これはM-x color-theme-selectを行うと明らかです。あなたが覚えている順序色のテーマを変更するEmacs 24 - order matter

誰もがこの問題について洞察していますか?

私は、再起動することなく、次のカラーテーマを切り替えできるようにしたいと思います:

  1. solarized光
  2. solarized-暗い
  3. zenburn
  4. railscasts

を私はemacsのためのcss-resetと同等のものが必要だと思います。

(setq evil-default-cursor t) 

これは、関連する問題である:Switching between color themes in Emacs (< v.24)非常に貴重です もう一つのヒントは、あなたが悪を使用する場合は、この行を必要とするか、または他のカーソルが暗いテーマの恐ろしいである、黒のままということです。私はEmacs 24.0を使用しています。私はこの質問を投稿しています。なぜなら、24.1以前の回避策や24.1が十分に安定しているとアドバイスを探しているからです。

+0

emacs 24.0? 'M-x display-about-screen'または' M-x emacs-version' – kindahero

答えて

17

Emacs 24でさえ、古い(そして維持されていない)カラーテーマのパッケージを使用しているようです。 Emacs 24にはカラーテーマのインフラストラクチャが組み込まれています(zenburnsolarizedなどのテーマが移植されています)。 defthemeとお友達の詳細については、hereをご覧ください。

Тоは、色テーマに関するあなたの特定の質問に答えます。テーマは、通常、以前のテーマが微調整されている可能性があり、問題を引き起こす可能性があるすべての顔を定義しません。テーマ間のデフォルトのテーマに移動すると、おそらくCSSのリセットと同じように考えることができます。

+0

スイッチ間のデフォルトテーマに移動するにはどうしたらいいですか? ありがとう!私がエルパを使用している場合、私はカラーテーマをインストールしないことを確認する必要がありますか?ところで、私はゼンバーンが大好きですが、私は日中にもう少しコントラストが必要なときにはレールスクエアカラーを持っていたいと思います。ソラマイズされたカスタマイズされた.Xリソースに関する意見はありますか? – justingordon

+3

「カラーテーマ」に依存したテーマをインストールしたと思います。マーマレードには多くのテーマがあります。 Emacs 24 - 'M-x disable-theme'(あなたが記述した問題がそこに存在するかどうかは分かりませんが)。私は 'color-theme'をしばらく使っていないので、私はあなたにそれについてお手伝いできません。私は個人的に '.Xresources'(色テーマ用)をカスタマイズしません。なぜあなたはそうしたいのですか? –

+0

私はここの推奨事項を.Xresources:http://ethanschoonover.com/solarizedに入れました。私はemacsの色テーマを使用することと少し矛盾するかもしれないと思います。 – justingordon

3

他の人が言っていたように、テーマのEmacs 24バージョンに切り替えてください。これを使用すると、disable-themeでテーマを元に戻すことができます。 load-themeに渡したのと同じ議論をして、空白のスレートに戻ってください。次に、新しいテーマを読み込みます。

+0

いいえ、あなた*** ***カスタムテーマ*を取り消すことはできません。ほとんどの場合、*カラー*テーマを元に戻して、以前のテーマ以外の表示に戻すことができます。カスタムテーマの「無効化」は、別のテーマにのみ関連しています。 – Drew

4

emacsが新しいテーマに切り替える前に、現在のテーマを無効にする関数を書きました。

次のスニペットをあなたのinit.elに貼り付け、M-x l0ad-themeを使用することができます。

https://github.com/maruks/.emacs.d

;; color themes 
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes") 

(setq current-t43m3 nil) 

(defun enab-theme (theme) 
    (if current-t43m3 (disable-theme current-t43m3)) 
    (setq current-t43m3 theme) 
    (load-theme theme t)) 

(defun disab-current-theme() 
    (if current-t43m3 (disable-theme current-t43m3)) 
    (setq current-t43m3 nil)) 

(global-set-key (kbd "C-c ltwo") '(lambda() (interactive) (enab-theme 'wombat))) 

(global-set-key (kbd "C-c ltze") '(lambda() (interactive) (enab-theme 'zenburn))) 

(global-set-key (kbd "C-c ltsd") '(lambda() (interactive) (enab-theme 'solarized-dark))) 

(global-set-key (kbd "C-c ltsl") '(lambda() (interactive) (enab-theme 'solarized-light))) 

(global-set-key (kbd "C-c ltne") '(lambda() (interactive) (enab-theme 'tomorrow-night-eighties))) 

(global-set-key (kbd "C-c ltni") '(lambda() (interactive) (enab-theme 'tomorrow-night))) 

(global-set-key (kbd "C-c ltnb") '(lambda() (interactive) (enab-theme 'tomorrow-night-bright))) 

(global-set-key (kbd "C-c ltto") '(lambda() (interactive) (enab-theme 'tomorrow))) 

(global-set-key (kbd "C-c ltta") '(lambda() (interactive) (enab-theme 'tango))) 

(global-set-key (kbd "C-c ltdb") '(lambda() (interactive) (enab-theme 'deeper-blue))) 

(global-set-key (kbd "C-c ltdi") '(lambda() (interactive) (enab-theme 'dichromacy))) 

(global-set-key (kbd "C-c dct") '(lambda() (interactive) (disab-current-theme))) 

(defun l0ad-theme (name) 
    (interactive 
    (list 
    (intern (completing-read "Load custom theme: " 
       (mapcar 'symbol-name (custom-available-themes)))))) 
    (enab-theme name)) 

(setq d3fault-theme (getenv "EMACS_DEFAULT_THEME")) 

(when d3fault-theme 
    (enab-theme (intern d3fault-theme))) 
9

自動的にロードする前に新しいものを現在のテーマを無効にするには、あなたはまた、アドバイスを使用することができます:あなたの.emacs/init.elに以下のコードを挿入

(defadvice load-theme 
    (before theme-dont-propagate activate) 
    (mapcar #'disable-theme custom-enabled-themes)) 
5

、 をCtにバインドして、指定した順序でテーマの固定リストを循環させました。これはEmacs 24と互換性があります。

;;;;; Theme ;;;;; 
;; Cycle through this set of themes 
(setq my-themes '(solarized-light solarized-dark zenburn railscast)) 

(setq my-cur-theme nil) 
(defun cycle-my-theme() 
    "Cycle through a list of themes, my-themes" 
    (interactive) 
    (when my-cur-theme 
    (disable-theme my-cur-theme) 
    (setq my-themes (append my-themes (list my-cur-theme)))) 
    (setq my-cur-theme (pop my-themes)) 
    (load-theme my-cur-theme t)) 

;; Switch to the first theme in the list above 
(cycle-my-theme) 

;; Bind this to C-t 
(global-set-key (kbd "C-t") 'cycle-my-theme) 
+0

何(kb "C-t")ですか?なぜその代わりに(kbd "C-t")?申し訳ありません、ちょうどタイプミスですか? – ericx

+0

これはタイプミスではありませんでしたが、この場合、(kbd "C-t")と同じように使用することができます。私は 'kb'マクロを持っている理由は、一度に複数のキーバインドを行うための別のコードがあるからです。 '(dolist(pair"( "" Ck "kill-whole-line"( "Cz" undo)...)私が独自の 'kb'マクロではなく 'kbd'を使用した場合、 '(defun kb(k)(read-kbd-マクロk)) '、' kbd 'は関数ではなくマクロであると不平を言っています。ありがとう! –

2

することはできこれらのライブラリのいずれかを使用して、カスタムやカラーテーマの中でサイクル:

  • Do Re Miは、doremi-custom-themes+doremi-color-themes+コマンド。これにはdoremi-cmd.elが必要です。

  • Icicles、マルチコマンドicicle-custom-themeおよびicicle-color-theme。つららで

あなたも間のサイクルにテーマのセットを絞り込むことができ、あなたはさまざまな方法(すなわち、サイクルの順序を変更)で、それを並べ替えることができますコマンド。

関連する問題