term タグ別の記事一覧

テンキーレスミニキーボード「Razer BlackWidow V3 Mini」を使ってみた

 以前から目をつけていたRazerのワイヤレステンキーレスキーボード「BlackWidow V3 Mini HyperSpeed」のグリーンスイッチ・日本語配列モデルだけがなぜか安く販売されていたので買ってみました。数週間使ってみたので簡単なレビューです。

 ちなみに私のキーボード環境ですが、昨年Razerのテンキーレスキーボード「Huntsman Mini」を導入し(昨年のブログ記事)、仕事用キーボードとしてはこのHuntsman Mini、私的作業用キーボードとしてはApple純正のMagic Keyboardという体制でした。Magic Keyboardのキー配置は自分的に理想的な配置であり、キータッチもそこまで悪くはないため今まで特に変える理由はなかったのですが、最近私的作業用メインマシンをiMacからWindowsのデスクトップPCに切り替えた関係でキーボードを探していたタイミングでこの値下げを見つけてしまい、渡りに船と買ってしまったという流れです。

 ちなみにMagic KeyboardはWindowsでもBluetoothキーボードとして利用できるのですが、一部のキーボードを有効に利用するためには別途Windowsにツール等をインストールして設定する必要があるのと、このキーボードはiMacの付属品でiMacを処分(売却)する際に一緒に手放す必要があるため、せっかくなので別のキーボードを買おうかなと思っていた状況でした。

Razer BlackWidow V3 Mini HyperSpeedパッケージとキーボード本体

コンパクトではあるもののキー配列や筐体などで気になるポイントあり

 このBlackWidow V3 Mini HyperSpeedですが、特徴としてはテンキーレスのコンパクトサイズながら矢印キーやdelete/page up/page down/insertキーを備えている点と、無線接続が可能な点が挙げられます。コンパクトキーボードには矢印キーは不要という向きもあるのですが、個人的にはあると非常に便利だと思っています。特にmacOS環境ではデフォルトでEmacs風ショートカットキーのCtrl+f/b/p/nでカーソル移動は可能ですが、ChromeやElectronベースのアプリではこのショートカットキーが使えないことがあり、矢印キーが必須になるシーンがあります。しかし、前述のRazer Hantsman Miniでは独自の修飾キー(「fn」キー)と別のj/k/l/iキー同時押しで矢印キー入力となるのですが、これが使いにくい! fnキーが微妙に押しにくい場所にあるうえに、私の脳にはj/k/l/iキーを矢印キーとして使う文化はインストールされていないため、どうしても操作時にワンテンポ考える時間が発生してしまいます(せめてh/j/k/lのvi風ならまだ良かったのですが)。BlackWidow V3 Mini HyperSpeedは矢印キー搭載ということで、この問題が完全に解決されています。

 一方で、これらのキーを追加したうえでコンパクトな筐体にするため、一部のキー配列が圧縮されているのは残念なところです。具体的には、キーボードの左Ctrlキーおよび左Altキー、左Shiftキーの幅が若干小さくなっており、その分その段のほかのキーが左側に寄っています。個人的にはそこまで気になるレベルではないのですが、神経質な人は気になるかもしれません。また、左AltキーがWindowsキーよりも小さくなっているのですが、個人的にはWindowsキーよりもAltキーのほうが多用するため、幅を小さくするならWindowsキーのほうを小さくして欲しかったところです。

Razer BlackWidow V3 Mini HyperSpeedとRazer Huntsman Mini

 ちなみに、このキー配列問題は日本語配列バージョンのみの問題のようで、RazerのWebサイトに掲載されている製品写真を見る限り、英語配列バージョンでは右Shiftキー、右altキー、右Ctrlキーが短くなりアプリケーションキーが削除されている以外はキー配列の差異はないように見えます。

 BackspaceキーやEnterキーの右側にキーがあるのも最初は戸惑いました。特にBackspaceキーは ホームポジションから手を動かさないと押せないキーなので、Deleteキーとの押し間違いが発生しやすくなっています。5mmほどでよいので、この列には隙間があれば良かったのではと思います。

ワイヤレスは便利、代償として大きく重くなった?

 もう1つの特徴であるワイヤレス接続ですが、地味に便利です。自分の場合作業スペースを作るためにキーボードを動かしたりすることがよくあるのですが、その際にケーブルを意識しなくて良いのが素晴らしいです。ただ、通常の使用時に気になることはないのですが、バッテリー内蔵のためかキーボード本体の質量はサイズの割に重めに感じられます。

 ワイヤレス接続はBluetooth接続だけでなく、付属する専用USBドングルによる接続の2種類が選択可能ですが、Bluetooth接続の場合はスリープ時にキーボード操作での復帰ができなかったり、キーボード側がスリープした際にそこからの復帰に若干タイムラグが発生するため、一般的なデスクトップPCで使用するのであればUSBドングルの利用がおすすめです。

 バッテリ駆動時間に関しては、現状まったく不満がないレベルです。LEDをオフにしての利用ですが、数週間は充電なしで動作する感じです。

 一方、BlackWidowシリーズの共通のデザインを踏襲しているためと思われますが、筐体下側に若干無駄な出っ張りがあるのが個人的には残念に思われました。この部分は斜めに切り落とされているデザインになっているため、片手で筐体上下を握るように持つ際に持ちにくさがあります。

Razerおなじみの高いカスタマイズ性はやはり便利

 BlackWidow V3 Mini HyperSpeedはHuntsman Miniと同様、「Razer Central」という設定ツールを使ってキー配置やLEDの点灯パターンを柔軟に設定可能です。Aキーの左側にCtrlキーを配置するのも簡単な操作で設定可能です。デフォルトではキーボード最上段にある1キー左側のキーは半角/全角(e/j)キーになっていますが、これをEscキーにするのも簡単です。

 また、キースイッチはメカニカルキーボードや自作キーボード界隈でおなじみのCherryスイッチ互換になっているため、キーキャップをCherryスイッチ互換のものに差し替えることが可能です。自分は誤操作を防ぐために右側のDelete/Page up/Page down/Insertキーのキャップを背の低いものに差し替え、またfnキーも分かりやすくするために白い汎用キーキャップに差し替えています。

数少ない「コンパクトかつワイヤレス接続対応」キーボードの有力な選択肢

 このように若干の不満点はありますが、そもそもコンパクトかつワイヤレスなキーボードは選択肢が少なく、そのなかでこのBlackWidow V3 Mini HyperSpeedはかなり有力な選択肢の1つと言えます。コンパクトさや軽量さではHuntsman Miniに軍配が上がりますが、ワイヤレスであることを重視したり、矢印キーがどうしても必要で、前述したキー配置が許容できるのであればBlackWidow V3 Mini HyperSpeedはおすすめできるキーボードだと思います。

蛇足:理想のワイヤレスコンパクトキーボード探しの道のりはまだまだ続く

 「これがHHKB Lite 2」「Razer Huntsman Mini」「Razer BlackWidow V3 Mini HyperSpeed」「全部同じじゃないですか!」という感じでこち亀コラ画像を作れそうな勢いですが、同じに見えないコンパクトキーボードも持っていたりします。Appleのやつとか、MSのやつとか。

歴代キーボード3機種

MSのコンパクトキーボード

 とはいえどれも100%満足しているわけではなく、まだまだ新製品が出たら買ってしまう可能性があります。自作すれば良いという話もありますが、ワイヤレスはバッテリーの関係で自作が面倒くさいのですよね……。

テンキーレスミニキーボード「Razer HUNTSMAN MINI」をmacOSで使う

 長年仕事用キーボードとしてHappy Hacking Keyboard(HHKB)Lite 2を使っていたのですが、だいぶタッチが渋くなっていること、そしてこの製品がすでに廃盤になっていることから将来的なmacOSサポートが期待できない点を考慮して、代替品としてRazerのHUNTSMAN MINIという製品を導入してみました。テンキーレスのコンパクトサイズキーボードの選択肢はあまり多くはないのですが、HUNTSMAN MINIでは日本語配列モデルも提供されており、かつキー配列的にも素直な感じです。macOSのでは英数キーとかなキーで日本語入力のON/OFFを切り替えるため、スペースバーが長かったりすると違和感を感じるのですが、本製品はスペースバーの幅がAppleの純正キーボードとほぼ同じなのが決め手でした。

Apple純正キーボードとHUNTSMAN MINIの比較

 HHKB Lite2と比較すると、サイズ的にはほぼ同じです。スペースキーが若干長く、また矢印キーがない点が大きな違いです。

HHKB Lite2とHUNTSMAN MINIの比較

 このキーボードは一般的なWindowsキーボードと同様、最上段の「1」キーの左には半角/全角キーがり、また「A」キーの左はCaps Lockキーがあるのですが、これらは純正のキー配列カスタマイズツールで変更可能で、かつ変更した内容はキーボード自体に保存されます。ただ、このカスタマイズツールは現状Windows版しか提供されていません。以前はmacOS版も提供されていたのですが、数年前にリリースされた最新バージョンからはmacOSのサポートが廃止されたようです。そのためキー配列のカスタマイズにはWindowsマシンが必要ですが、一度設定さえしてしまえば、Macでも特別なドライバなしで同じキー配列で利用可能です。

設定ツールRazer Synapse 3

 ただし、このカスタマイズツールではWindowsキーに関してはカスタマイズできず、また無変換キーや変換キーをmacOSで使われる英数キーやかなキーに割り当てることもできません。WindowsキーについてはmacOSではCommandキー、AltキーはOptionキーとして認識されるのですが、Apple純正キーボードではこれらがちょうど逆の位置にあります。これについてはmacOS側で入れ替えを行うことができるので、そちらで対応可能です。また、英数キーやかなキーが使えない問題は、無変換キーにCtrl+Shift+:、変換キーにCtrl+Shift+Jというショートカットキーを割り当てることで一般的には対応が可能です(参考資料:Macの日本語入力ソースを設定する/切り替える))。

macOSのキーボード設定

Karabiner Elementsを導入する

 ひとまずはこの設定で利用していたのですが、なんとEmacsではCtrl+Shift+:やCtrl+Shift+Jというショートカットキーを使えない(Emacsのショートカットキーとして認識されてしまう)ことが判明。一応Emacs側で無理やりシステムイベントを発生させることで対応は可能ではあるのですが(参考資料:OSXにおけるIMEの変更 #10)、これは内部でコマンドを実行している関係で微妙に切り替えにタイムラグが発生するため、頻繁に入力モードの切り替えを行う使い方には向いていないと感じました。

 ということで、最終的にはmacOSでWindows向けキーボードを使う際の定番ツールであるKarabiner-Elementsを導入して無変換キーを英数キーに、変換キーをかなキーに割り当てることにしました。Karabiner-Elementsを使うとmacOS標準設定でのCommandキーとOptionキーの入れ替えが効かなくなるようなので、その設定もKarabiner-Elements側で行なっています。

Karabiner-Elementsの設定

 このように設定関係で紆余曲折はありますが、Razer HUNTSMAN MINIはキーボードとしての機能自体はよくできており、キータッチにも不満はありません。有線キーボードではありますが、お値段的にはHHKBと比べて1.5〜2万円ほどお安いので、キーボードに3万円近く出すのはちょっと……という方にはおすすめです。

Emacsでcmark-gfmを使ったGitHub互換Markdownプレビューを実現する

 最近Markdownで文章を書くことが増えているので色々と環境を整えたのですが、GitHubが独自に拡張した文法をサポートするMarkdownコンパイラのcmark-gfmとEmacsのmarkdown-modeを組み合わせようとしたら色々とハマったので対処方法をメモしておきます。

macOS環境でのcmark-gfmのビルドとインストール

 cmark-gfmのリポジトリではバイナリは提供されていないので、自前でビルドする必要があります。macOS環境(Xcode)でのビルドにはCMakeが必要となるので、まずこちらの準備を行います。CMakeは公式にmacOS向けのバイナリが提供されているので、dmgファイルもしくはtar.gzファイルをダウンロードしてその中身を/ApplicationsディレクトリにコピーすればOKです。cmakeコマンド自体はアプリケーションバンドル中のContents/binディレクトリ内に入っているので、適当にパスを通すなり直接フルパスで実行するなりします。

 cmark-gfmのビルドは次のような感じで実行します。

$ git clone https://github.com/github/cmark-gfm
$ cd cmark-gfm
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=~/local -DCMAKE_INSTALL_RPATH=$HOME/local/lib
$ make test
$ make install

 システムツール以外はできるだけ~/local以下にインストールしたい勢なので、cmake実行時に-DCMAKE_INSTALL_PREFIX=~/localを指定してインストール先をデフォルトの/usr/local/以下から変更しています。ただしこの場合、rpathの自動設定はしてくれないようなので、追加で-DCMAKE_INSTALL_RPATH=$HOME/local/libオプションでrpathを指定します。このオプションでは指定したパスを直接rpathとしてバイナリに書き込むので、~/表記は利用できないようです。このオプションを指定しないと、インストール後に次のようなエラーが出ます

$ cmark-gfm 
dyld: Library not loaded: @rpath/libcmark-gfm-extensions.0.29.0.gfm.0.dylib
  Referenced from: /Users/hylom/local/bin/cmark-gfm
  Reason: image not found
Abort trap: 6

 なぜかというと、cmark-gfmlibcmark-gfmlibcmark-gfm-extensionsと言った動的ライブラリを生成して使用するのですが、デフォルトではこれらのロードパスが@rpathを使って指定されている一方、上記の設定をしないとバイナリにrpathが書き込まれず、その結果これらライブラリのロードに失敗するためです。

$ otool -L cmark-gfm 
cmark-gfm:
	@rpath/libcmark-gfm-extensions.0.29.0.gfm.0.dylib (compatibility version 0.29.0, current version 0.29.0)
	@rpath/libcmark-gfm.0.29.0.gfm.0.dylib (compatibility version 0.29.0, current version 0.29.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)

markdown-modeのインストールと設定

 Emacsにmarkdown-modeをインストールすると、Markdown向けのシンタックスハイライトが利用できるようになったり、プレビュー関連のコマンドが利用できるようになったりして便利です。こちらはM-x package-list-packagesで簡単にインストールできます。

 markdown-modeではMarkdown形式ファイルのコンパイルに使用するコマンドをmarkdown-command変数で指定できます。これはおなじみcustomizeコマンドで簡単に設定できます。M-x customize実行後、markdownキーワードで設定パラメータを検索して変更しておきましょう。なお、GitHub向け拡張はエクステンションとして実装されているので、これらを利用するには-eオプションで明示的に有効にする必要があります。たとえば|を使ったテーブル表記を利用するには、cmark-gfm -e tableのようにオプション付きの値をmarkdown-commandパラメータに指定する必要があります

 また、cmark-gfmはUTF-8以外の文字コードに対応していないようです。なぜかUTF-8以外でエンコードされた日本語の場合、-e tableオプションを有効にしても|によるテーブル表記だけがピンポイントで無視されてハマりました。

 markdown-modemarkdown-commandで指定したコマンドを実行する際に、elispのcall-process-regionを使ってEmacsバッファの内容をコマンドに与えているので、.emacsに下記の内容を追加して、markdown-modeではUTF-8でバッファの入出力を行うよう指定します。

;; markdown-modeでmarkdownコマンドにUTF-8でテキストを渡す
(add-hook 'markdown-mode-hook (lambda () (set-buffer-process-coding-system 'utf-8-unix 'utf-8-unix)))

markdown-preview-modeを使う

markdown-preview-mode

 ついでにmarkdown-preview-modeを利用すると、こんな感じでリアルタイムでレンダリング結果をプレビューできてとても便利です。こちらもM-x package-list-packagesでインストールできます。

macOSの最近のEmacsで日本語フォントがいわゆる中華フォントになる問題の解決方法

Emacsをアップデートしたところ、日本語(というか漢字)がいわゆる「中華フォント」になってしまった。中華フォントといっても繁体字なので問題なく読めるのだが、たとえば「化」の3画目が4画目に対して突き抜ける感じになったりするので、文章を書くときに気が乗らない。解決方法を試行錯誤したところ、これはset-language-environment"Japanese"に設定するだけで簡単に解決した。

(set-language-environment "Japanese")

あとついでにフォント設定も微調整。

(create-fontset-from-ascii-font "menlo-14" nil "menlo14")
(set-fontset-font "fontset-menlo14" 'unicode "menlo-14" nil 'append)
(add-to-list 'default-frame-alist '(font . "fontset-menlo14"))

Emacs 27.1ではいつの間にか日本語変換時のちらつき問題も解決していた。素晴らしい。

Emacsのmagitで使用するgitバイナリのパスを指定する方法

 Xcodeと一緒にインストールしたgitコマンドをEmacsのmagitで使用すると、magitの各種処理がとても遅くなることは皆様ご存知かと思います。また、Xcodeを入れていない環境でmagitを使うと毎回Xcodeをインストールするか確認するダイアログが表示され非常に煩わしかったりします。

 この事象について背景を簡単に説明すると、最近のMacOS環境には/usr/bin/gitがデフォルトで存在するのですが、Xcodeをインストールしていない場合このファイルはただのstubで、実行するとXcodeのインストールを求めるダイアログを表示するという挙動になっています。また、Xcodeをインストールして、Xcode経由でgitをインストールすると、このgitが本物のgitのバイナリに差し替えられるのですが、このgitコマンドはAppleによってカスタマイズされているようで、起動が遅いという問題があります(多分EULAへの同意チェックとかそういうのが入っているっぽい)。そのため普段使いには/usr/local/bin以下に別途gitをインストールして使っている人も多いと思うのですが、magitはデフォルトでまず/usr/bin以下のgitを使う設定になっているので、その場合/usr/local/bin以下のgitが使われません。

 ということで、magitで/usr/local/bin以下のgitを使うようにするには、customize(M-x customize)でCustomize機能を呼び出し、「Exec Path」で検索→Exec Pathに/usr/local/binを追加、という手順で設定する必要があります。

 なお、「Magit Git Exectable」というcustomize項目もあるのですが、こちらを指定してもmagitではまずExec Pathで指定されたパスにgitコマンドを探しに行く模様です。そのため、Xcodeをインストールしていない環境で/usr/local/bin以下にgitをインストールし、Magit Git Executableで「/usr/local/bin/git」を指定した場合、gitに関連する操作をするたびにXcodeのインストールを求めるダイアログが表示される(そしてインストールせずにダイアログを消すと処理が正しく完了する)という面倒な感じになるのでご注意ください。

Mac OS X向けEmacs 25.1で日本語入力時にちらつく問題の原因

 Emacs for Mac OS Xで配布されているEmacsのMac OS X向けビルドでは、Emacs 24.4移行は標準でインラインでの日本語変換が可能になっている。これはEmacs 25.1でも同じだが、日本語入力時にカーソルがちらつく(1文字入力したり、変換するたびにカーソルが変換位置の先頭に一瞬移動してその後変換位置の最後に移動する)という現象が発生する。この問題はEmacs 24.5では発生していなかったので、24.5から25.1の間のどこかで混入したと思われる。そこで、EmacsのGitリポジトリをたどってこの問題がどこで発生するようになったのかを検証してみた。

 結論から言うと、9e77c1b7bcfd0807be7fe67daf73c2320e864309のコミットで問題が発生するようになっている。

 また、その1つ前のec10ba2792eef613caf47fff83e869d4bc177616のコミットでは問題は確認できなかった。

 問題のコミットで変更されているのはsrc/keyboard.cだったのがちょっと意外。てっきりMac OS X向けのコードであるns*.mあたりが原因だと思っていたのだが。おおむね問題の発生理由は想像できたのだが修正コードはもう少し周囲をチェックする必要があるのでまた今度。

 ちなみにこのコミットを見つけるために行った作業の流れだが、基本的にはいわゆる2分探索である。gitにはこの作業を自動で行うgit bisectコマンドがあるのだが、コンパイルしたバイナリに問題があるかどうかを自動で判別する手段がなかったのでビルド後にバイナリを実行して目視で問題が存在しているかをチェックしなければならなかったのが大変だった。

 (追記@5/21)パッチを作成して公開した。また、このパッチを利用せずとも(少なくともバージョン25.1および25.2では)この問題は以下のようにredisplay-dont-pause変数をnilに設定することで解決できることも発見した。

(setq redisplay-dont-pause nil)

 ただし、この変数はバージョン24.5でobsoleteとなっているので今後も利用できるかは分からない。また、Emacsのバグトラッカーに問題が報告されていたのでこれにコメントを入れておいた。

Mac OS X上でのEmacs 24設定(主にoptionキー周り)

 Mac OS XでATOKを使っていると、通常「¥」キーでは¥が入力される。しかし、Mac OS X(というかUTF-8)では¥と\は違う物として扱われる。そのため、色々と面倒くさいことが発生する。ことえりでは「¥」キーで\を入力する設定があるのだが、ATOKにはない。キーマップを書き換えて対応する、という方法もあるのだが、そういった方法は個人的に嫌いなので、Emacs側の設定で何とかすることにする。

 設定は以下の3点。

(setq mac-option-modifier nil)
(setq mac-command-modifier 'meta)
(global-set-key (kbd "C-M-¥") 'indent-region)

1行目でoptionキーをoptionキーとして認識させ、2行目でcommandキーをmetaキーとして認識させる。最後に、なぜかcontrol+command+option+¥がC-M-\として認識されないので、代わりにC-M-¥にindent-regionを割り当てる。

とりあえず、これでしばらくはしのげるかなと。

EmacsでC#(csharp-mode)を使う

 EmacsでC#コードをいじりたかったのでcsharp-modeを導入した。

 csharp-modeはGoogle Codeのcsharpmodeプロジェクトから入手可能。

 とりあえず現時点での最新版「csharp-mode-0.7.6.el」をダウンロードし、csharp-mode.elにリネームして~/.emacs.d/lisp/以下にコピーし、.emacs.elに下記を追加した。

;; C# mode
(require 'csharp-mode)
(setq auto-mode-alist
      (append '(("\\.cs$" . csharp-mode)) auto-mode-alist))

 ちなみに私の場合、.emacs.el中で下記のように~/.emacs.d/lispをロードパスに追加しているが、そうでない場合はsite-lispディレクトリなどロードパスに含まれている場所にcsharp-mode.elを置く必要がある。

;; add ~/.emacs.d/lisp to load-path
(add-to-list 'load-path "~/.emacs.d/lisp")

 最後にEmacs上でM-x byte-compile-fileを実行してcsharp-mode.elを指定してバイトコンパイルして完了。これでC#のコードが色付き(ハイライト)で表示されるようになる。

Emacs 23.2導入

 今までWindows環境での物書きにはNTEmacs JPプロジェクトがリリースしている<a href=https://sourceforge.jp/projects/ntemacsjp/releases/“>Emacs 22ベースのWindows向けバイナリを使っていたわけですが、最新安定版であるEmacs 23系ではマルチバイト文字の扱いを含めた色々な改善が加わっているとのことで、移行してみることに。

 NTEmacs JPプロジェクトではEmacs 23ベースのWindows向けバイナリをリリースしていないのですが、Gnupackというプロジェクトで日本語関連(というかIME)のパッチが適用されたEmacs 23.2のバイナリが公開されているので、そちらを利用。プロジェクトページはこちらNTEmacs 23.2はこちらからダウンロード可能。

 フォントなどの基本的な設定方法はEmacs 22系と同じ模様で、たとえばMSゴシックを使うには下記のような設定を.emacsに記述すればOK。

; 「msgochic」という名前で新たなフォントセットを定義
; 英字フォントとしてMS ゴシック、14ポイントを使用
(create-fontset-from-ascii-font
 "-outline-MS ゴシック-normal-r-normal-normal-14-*-*-*-*-*-iso8859-1"
 nil "msgochic")

; myfont-msgochicの日本語フォントとしてメイリオを使用
(set-fontset-font "fontset-msgochic"
                  'japanese-jisx0208
				  '("MS ゴシック" . "jisx0208-sjis"))

; myfont-msgochicのカタカナフォントとしてメイリオを使用
(set-fontset-font "fontset-msgochic"
                  'katakana-jisx0201
                  '("MS ゴシック" . "jisx0201-katakana"))

; 定義したフォントセットを登録
(add-to-list 'default-frame-alist
			 '(font . "fontset-msgochic"))

 あと、とりえあず様子見とのことでmule-ucs関係はすべて外してみましたが、今のところ問題は見られません。コピペで全角チルダ(~)が波ダッシュ(〜)になってしまう問題も解決されている模様。NTEmacs 22とは別のフォルダにインストールすることで共存も可能なので、ひとまずこれで様子見。

最近のemacs設定ファイル

 最近の.emacs。とりあえずバックアップ代わりにここで公開。

;; -*- coding: euc-jp -*-(custom-set-variables  ;; custom-set-variables was added by Custom.  ;; If you edit it by hand, you could mess it up, so be careful.  ;; Your init file should contain only one such instance.  ;; If there is more than one, they won't work right. '(c-default-style (quote ((c-mode . "k&r;") (c++-mode . "k&r;") (java-mode . "java") (awk-mode . "awk") (other . "gnu")))) '(case-fold-search t) '(current-language-environment "English") '(save-place t nil (saveplace)) '(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120))) '(tool-bar-mode nil nil (tool-bar)) '(transient-mark-mode t) '(uniquify-buffer-name-style (quote forward) nil (uniquify)))(custom-set-faces  ;; custom-set-faces was added by Custom.  ;; If you edit it by hand, you could mess it up, so be careful.  ;; Your init file should contain only one such instance.  ;; If there is more than one, they won't work right. );; .emacs.el;; 選択範囲の色を指定(set-face-background 'region "SkyBlue")(set-face-foreground 'region "black");; 起動時のウィンドウサイズ、色などを設定(if (boundp 'window-system)    (setq default-frame-alist          (append (list                   '(foreground-color . "black")  ; 文字色                   '(background-color . "white")  ; 背景色                   '(border-color     . "white")  ; ボーダー色                   '(mouse-color      . "black")  ; マウスカーソルの色                   '(cursor-color     . "black")  ; カーソルの色                   '(cursor-type      . box)      ; カーソルの形状                   '(top . 60) ; ウィンドウの表示位置(Y座標)                   '(left . 140) ; ウィンドウの表示位置(X座標)                   '(width . 50) ; ウィンドウの幅(文字数)                   '(height . 45) ; ウィンドウの高さ(文字数)                   )                  default-frame-alist)))(setq initial-frame-alist default-frame-alist )(global-set-key "\C-h" 'delete-backward-char)(prefer-coding-system 'utf-8-unix);;(autoload 'cperl-mode "cperl" "Perl editing mode." t)(require 'cperl-mode)(setq auto-mode-alist      (append '(("\\.pl$" . cperl-mode)		("\\.pm$" . cperl-mode)		("\\.mm$" . objc-mode)) auto-mode-alist));; Turn on tabs(setq indent-tabs-mode t)(setq-default indent-tabs-mode t);; Set the tab width(setq default-tab-width 4)(setq tab-width 4)(setq c-basic-indent 4);;python-mode(add-hook 'python-mode-hook	  '(lambda();;	     (setq indent-tabs-mode t)	     (setq indent-level 4)	     (setq python-indent 4)	     (setq tab-width 4)));;c-mode(add-hook 'c-mode-hook	  '(lambda()         (setq tab-width 4)         (setq indent-tabs-mode nil)         (setq c-basic-offset 4)));; キーワードのカラー表示を有効化;; 「t」の部分を「nil」にするとカラー表示をOffにできる(global-font-lock-mode t);; テキストエンコーディングとしてUTF-8を優先的に使用する;; 「utf-8」の部分を「cp932」とするとCP932(Windows用Shift JIS)優先となる(prefer-coding-system 'utf-8);; 起動時のメッセージを表示しない;;「t」を「nil」にするとメッセージが表示される(setq inhibit-startup-message t);; 選択範囲をハイライトする;;「t」を「nil」にするとハイライトなしに(setq-default transient-mark-mode t);;; 行番号・桁番号をモードラインに表示する・しない設定(line-number-mode t) ; 行番号。tなら表示、nilなら非表示(column-number-mode t) ; 桁番号。tなら表示、nilなら非表示;; 対応するカッコを色表示する(show-paren-mode 1);; オートセーブOff;; 「nil」を「t」にするとOnに(auto-save-mode nil);; バックアップファイルを作る;; 「nil」を「t」にするとバックアップファイルを作らない(setq backup-inhibited nil);; モードラインに現在時刻を表示する(display-time);; カレントディレクトリをホームディレクトリに設定;; ""内は任意のディレクトリを指定可能(cd "~/"); Emacsバージョン別の設定; for NTEmacs(if (string-match "Emacs 22" (emacs-version))	(progn; イタリックやボールドフォントを標準フォントから作成する(setq w32-enable-synthesized-fonts t); 使用するフォントを指定 for NTEmacs; 「myfont」という名前で新たなフォントセットを定義; 英字フォントとしてメイリオ、14ポイントを使用(create-fontset-from-ascii-font "-outline-メイリオ-normal-r-normal-normal-14-*-*-*-*-*-iso8859-1" nil "myfont"); myfontの日本語フォントとしてメイリオを使用; フォントサイズは英字のサイズに合わせる(set-fontset-font "fontset-myfont"                  'japanese-jisx0208				  '("メイリオ" . "jisx0208-sjis")); myfontのカタカナフォントとしてメイリオを使用; フォントサイズは英字のサイズに合わせる(set-fontset-font "fontset-myfont"                  'katakana-jisx0201                  '("メイリオ" . "jisx0201-katakana")); 定義したフォントセットを登録(setcdr (assoc 'font default-frame-alist) "fontset-myfont"); NTEmacsの設定ここまで	  ) t); for Meadow(if (string-match "Emacs 21" (emacs-version))	(progn; 日本語環境設定(set-language-environment "Japanese")(mw32-ime-initialize)(setq default-input-method "MW32-IME"); フォントセットを追加(w32-add-font     "Meiryo 14"     '((spec	((:char-spec ascii :height any)	 strict	 (w32-logfont "Meiryo" 0 -14 400 0 nil nil nil 0 1 3 0))	((:char-spec ascii :height any :weight bold)	 strict	 (w32-logfont "Meiryo" 0 -14 700 0 nil nil nil 0 1 3 0)	 ((spacing . -1)))	((:char-spec ascii :height any :slant italic)	 strict	 (w32-logfont "Meiryo" 0 -14 400 0   t nil nil 0 1 3 0))	((:char-spec ascii :height any :weight bold :slant italic)	 strict	 (w32-logfont "Meiryo" 0 -14 700 0   t nil nil 0 1 3 0)	 ((spacing . -1)))	((:char-spec japanese-jisx0208 :height any)	 strict	 (w32-logfont "Meiryo" 0 -14 400 0 nil nil nil 128 1 3 0))	((:char-spec japanese-jisx0208 :height any :weight bold)	 strict	 (w32-logfont "Meiryo" 0 -14 700 0 nil nil nil 128 1 3 0)	 ((spacing . -1)))	((:char-spec japanese-jisx0208 :height any :slant italic)	 strict	 (w32-logfont "Meiryo" 0 -14 400 0   t nil nil 128 1 3 0))	((:char-spec japanese-jisx0208 :height any :weight bold :slant italic)	 strict	 (w32-logfont "Meiryo" 0 -14 700 0   t nil nil 128 1 3 0)	 ((spacing . -1)))))); 起動時およびnew-frame時のフレーム(ウィンドウ)の設定。(add-to-list 'default-frame-alist '(font . "Meiryo 14")); IMEのフォントを設定(let ((logfont '(w32-logfont "Meiryo" 0 -14 400 0 nil nil nil 128 1 3 0)))  (modify-frame-parameters (selected-frame) (list (cons 'ime-font logfont)))  (add-to-list 'default-frame-alist (cons 'ime-font logfont))  ); Meadowの設定ここまで	  ) t)