SKYRIMのPapyrus記述にEmacsを使おうという変な人へ

おねーさんです。
2chでEmacsのことぼやいてたついでに、導入方法メモしときます。
SkyrimのCreation Kit(以下CK)でPapyrus書く人はあんまりいないっぽいので誰に役立つかよくわかんないですけど。
CKじたいはとても難しくて、話題を追っかけて咀嚼するにも青息吐息です。

前説:
あたしゃ単に「Emacs使えるとカッコよさそう」というだけの理由でEmacs使ってるだけのヘタレにわか三流マーさんなので、あんま詳しいこときかれてもわかんないす。
カッコいいというかカッコだらけでした本当にありがとうございました。
こっちの界隈はいろいろ詳しいハッカーさんたくさんいる世界なので、あちこちググっていい感じになっていただければ幸いでございます。
あたしに訊かれてもわかんないからな。
あたしに訊かれてもわかんないからな。
大事なことなので二回いいました。
まあなんだ使うだけならLispわかんなくても使えます。
CommonLispの本とか買いましたが、なにこれつまんねっつうて放置してます。あたしLisp書けません。ErlangもHaskellも書けません。なんとか生きてます。
はい。

最初:
これが

完成図:

こんな絵になります。スクリプトの内容は見なかったことにして欲しい。まだあたしはハローワールドレベルです。
色味に関しては好みあると思うので、.emacsをそれぞれでいじってもらえればいいんでないかなと思います。
色分けされて見えるだけで、だいぶ読みやすくて捗ります。コーディングそのものは捗ってないです。

準備1:
ではまずダウンロード。

http://alpha.gnu.org/gnu/emacs/pretest/windows/
ここから、
2012年3月1日時点では
emacs-24.0.94-bin-i386.zip
というのを落とします。emacs-xx.x.xx-bin-i386.zipとあるなかで一番数字の大きいのを選べばいい。
Bethethdaの案内に「emacs24以降使え」ってあるから探し回りました。このページ、わかりにくいとこにあるのでブクマ推奨。
適当にインストールしてください。

準備1:
環境変数のPATHに

;C:\Program Files\Steam\steamapps\common\skyrim\Papyrus Compiler;

これを追加。区切りがセミコロンなのご注意。でもこれは私の環境の話なので、スチームさんが入ってるパスが人によって違うとかだったら適宜変えてください。みんな同じなのかどうなのかもよく知らないんですが。
もういっこ、環境変数のHOMEに

C:\home

これを追加。HOMEない人がほとんどでしょうから、新規でキーつくって追加します。これらをユーザー環境変数とシステム環境変数のどっちに入れればいいのかとかはよくわかんないので、システム環境変数に入れておきましょう。
理由はそれっぽいからです。
PATHのほうはすでにいろいろはいってるとおもいますが、消したりしないで、末尾にセミコロンくっつけてつなげる感じで。間違うと面倒な事になるので、メモ帳にコピーして貼り付けるとかするといいですね。

準備2:
フォルダ構成を整える必要があります。これは単純。
Cドライブ直下に、homeと掘り、
その下に「.emacs.d」ドットイーマックスドットディーというフォルダを掘ります。
インストーラが掘ってくれたりするのかなあ。そこまで親切ではなかった気はします。
こんな構成にします。

赤い線のとこがだいじ。

重要度の高い構成物は以下のとおり。あとは使う人によってなんかいろいろ違うみたい。

C:\
    home\
        .emacs
        .emacs.d\
            site-lisp\
                papyrus-mode.el
                flyspell-1.7o.el

#flyspellがいるかどうかはちょっと自信ない。いらなかった気もする。
flyspellは、
http://www-sop.inria.fr/members/Manuel.Serrano/flyspell/flyspell-1.7o.el
ここにあります。

末尾に\がついてるのはフォルダです。.emacsというのはファイル名。C直下にhomeとフォルダほったら、コマンドライン(DOS窓)から

こうです。あんまスマートじゃないけどまあこれでなんとかなってる。空っぽのファイルができるので、そこに下の内容をコピペするというわけです。

.emacsを書き換える:
あたしの.emacs適当な書き方しててカオスなので、まんま使ってご迷惑かけたらすみません、ほかの言語関連とかの余計な部分を省いた版をはっつけておきます。コピペでいいです。とおもいます。
これの編集はメモ帳で十分です。
—- ココカラ —-

; -*- Mode: Emacs-Lisp ; Coding: cp932 -*-

;C-zでUndo
(global-set-key "\C-h" 'delete-backward-char)

;;;Undo bind(C-z)
(global-unset-key "\C-z")

(define-key global-map (kbd "C-z") 'undo)                 ; undo
;;;init
(require 'cl)

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

;;; elispがつまったディレクトリを指定しています。
(let ((default-directory "~/.emacs.d/site-lisp/"))
  (setq load-path (cons default-directory load-path))
  (normal-top-level-add-subdirs-to-load-path))

;;;install-elisp
(require 'install-elisp)
(setq install-elisp-repository-directory "~/.emacs.d/")

;;
;; encoding
;;______________________________________________________________________

(set-language-environment       "Japanese")
(prefer-coding-system           'utf-8-unix)
(setq                           default-buffer-file-coding-system 'utf-8)
;(set-buffer-file-coding-system  'utf-8)
;(set-terminal-coding-system     'utf-8)
;(set-keyboard-coding-system     'utf-8)
;(set-clipboard-coding-system    'utf-8)

;;スタートアップメッセージを表示しない
(setq inhibit-startup-message t)

;; 行番号表示
(global-linum-mode)
(setq linum-format "%4d")
;; スタートページ非表示
(setq inhibit-startup-message t)

;;;
;;; 表示系
;;;____________________________________________________________________

(set-foreground-color                                  "#CCCCCC") ; 文字色
(set-background-color                                  "#333333") ; 背景色
(set-cursor-color                                      "#FF0000") ; カーソル色
(set-face-background 'region                           "#222244") ; リージョン
(set-face-foreground 'modeline                         "#CCCCCC") ; モードライン文字
(set-face-background 'modeline                         "#333333") ; モードライン背景
(set-face-foreground 'mode-line-inactive               "#333333") ; モードライン文字(非アクティブ)
(set-face-background 'mode-line-inactive               "#CCCCCC") ; モードライン背景(非アクティブ)
(set-face-foreground 'font-lock-comment-delimiter-face "#888888") ; コメントデリミタ
(set-face-foreground 'font-lock-comment-face           "#888888") ; コメント
(set-face-foreground 'font-lock-string-face            "#7FFF7F") ; 文字列
(set-face-foreground 'font-lock-function-name-face     "#BF7FFF") ; 関数名
(set-face-foreground 'font-lock-keyword-face           "#FF7F7F") ; キーワード
(set-face-foreground 'font-lock-constant-face          "#FFBF7F") ; 定数(this, selfなども)
(set-face-foreground 'font-lock-variable-name-face     "#7F7FFF") ; 変数
(set-face-foreground 'font-lock-type-face              "#FFFF7F") ; クラス
(set-face-foreground 'fringe                           "#666666") ; fringe(折り返し記号などが出る部分)
(set-face-background 'fringe                           "#282828") ; fringe

(add-hook 'org-mode-hook
          '(lambda ()
             (set-face-foreground 'org-hide "#282828")))

(add-hook 'mmm-mode-hook
          '(lambda ()
             (set-face-background 'mmm-default-submode-face "#404040")))

(add-hook 'linum-mode-hook
          '(lambda ()
             (set-face-foreground 'linum "#666666")
             (set-face-background 'linum "#000000")))

;; タブ幅を変更
(setq-default tab-width 4)

;; インデントをスペースに統一
(setq indent-tabs-mode nil)

;;
;; highlight
;;______________________________________________________________________

;; hilight paren
(show-paren-mode t)

;; highlight reagion
(setq transient-mark-mode t)

;; ;; tab 全角スペース 改行前スペースを強調表示
(defface my-face-tab         '((t (:background "Yellow"))) nil :group 'my-faces)
(defface my-face-zenkaku-spc '((t (:background "LightBlue"))) nil :group 'my-faces)
(defface my-face-spc-at-eol  '((t (:foreground "Red" :underline t))) nil :group 'my-faces)
(defvar my-face-tab         'my-face-tab)
(defvar my-face-zenkaku-spc 'my-face-zenkaku-spc)
(defvar my-face-spc-at-eol  'my-face-spc-at-eol)
(defadvice font-lock-mode (before my-font-lock-mode ())
  (font-lock-add-keywords
   major-mode
   '(("\t" 0 my-face-tab append)
     (" " 0 my-face-zenkaku-spc append)
     ("[ \t]+$" 0 my-face-spc-at-eol append)
     )))
(ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode)
(ad-activate 'font-lock-mode)
;; settings for text file
(add-hook 'text-mode-hook
          '(lambda ()
             (progn
               (font-lock-mode t)
               (font-lock-fontify-buffer))))

;;_________________________________________________________________

;;; C-kで行ごと削除
(setq kill-whole-line t)

;;; *.~ とかのバックアップファイルを作らない
(setq make-backup-files nil)
;;; .#* とかのバックアップファイルを作らない
(setq auto-save-default nil)
;;; tool-bar非表示
(tool-bar-mode 0)

;; yes/no -> y/n
(fset 'yes-or-no-p 'y-or-n-p)

;;;
;;; FUNCTIONS
;;;____________________________________________________________


;;;全てのバッファを一気に閉じる
(defun kill-all-buffers ()
  (interactive)
  (loop for buffer being the buffers
     do (kill-buffer buffer)))

;;;
;;; papyrus-mode for SKYRIM
;;;____________________________________________________________

(require 'flymake)
(require 'papyrus-mode)
(require 'flyspell)

—- ココマデ —-
こういうしょうもない内容を晒すと、もう見てらんないとかで怒りが有頂天なEmacs屋さんがちゃんとしたのを公開してくれるのではないかという期待つきです。スレの誰か詳しい人が何とかしてくれるのではないかと思う!

papyrus-modeを拾ってくる:
http://www.creationkit.com/Emacs_Setup
ここのテキストをコピーして、
C:\home\.emacs.d\site-lispの下に置きます。

素のpapyrus-mode.elをいじったところ:
スペース4つのタブが好みなので、33行目をこうしてます。

(defvar papyrus-tab-width nil)

これを

(defvar papyrus-tab-width 4)

こう。
タブはタブ文字がいいんだという方はそのままで大丈夫。私の環境だとタブ文字は目に痛い色で光るのでスペースにしてます。Python書いてるとトラブル多いのでというのが主な理由です。

準備出来ましたね。

Emacsの起動:
大抵の人は、もちろんバージョンの違いというのはあると思いますが、
C:\Program Files\emacs-24.0.94\bin
このへんに実行ファイルがあってー
runemacs.exe
こいつです。こいつをクイック起動バーとかそういうかっこいいとこにショートカットつくってあげればよいわけです。
えんじょい。

なんかいろいろダメだったらすいまえん。
書いてみると本当に、emacsは導入がめんどくさい。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です