複数のユーザー別にhowmディレクトリをDropboxディレクトリに設定するやり方

いきさつ

研究室用のEmacsと家用のEmacsの設定の違いを吸収するにはどうしたらいいか考えてたらauto-completeのプルダウンメニューにユーザー関係の変数が用意されてたのを発見した。用意されている変数があるのでよし使おうと思ったら作ってみたら出来た。

やり方

この設定はOSごとに変わっていて

Windows "C:/Users/ユーザー名/"
Linux "~/" (/home/ユーザー名/)

の場所にDropboxディレクトリを置いている場合で説明しています。

howmディレクトリの場所は (dropbox-directory)/"Documents/howm"の場所に作るとします。

(defvar run-cygwin (equal system-type 'cygwin))
(defvar run-meadow (featurep 'meadow))
(defvar run-nt     (equal system-type 'windows-nt))
(defvar run-ms-dos (equal system-type 'ms-dos))

;; Windowsかどうかの判定
(defvar run-windows
  (or run-cygwin 
      run-meadow 
      run-nt 
      run-ms-dos))

;; Linuxかどうかの判定
(defvar run-linux (eq system-type 'gnu/linux)

;; Dropboxディレクトリの設定
(defvar dropbox-directory 
        (cond 
           ((eq run-windows t) (concat "c:/Users/" user-login-name "/Dropbox"))
           ((eq run-linux t) "~/Dropbox")
           (t "これ以外にいってしまう場合は適宜設定する")))

;; howmディレクトリの設定
(setq howm-directory (concat dropbox-directory "/Document/howm/"))

これでhowmディレクトリをDropboxディレクトリに設定できました。

確認したい場合は*scratch*でC-jで評価や、C-x C-eで評価してください。

howm-directory ;=> "~/Dropbox"

OSの判定はなかなか便利なのでいれておいて損はない。他にもEmacsのバージョンの判定や、ターミナルかどうかの判定も作ることができる。↓に少しだけ変数・関数の説明を残しておきます。

関数・変数名 説明
user-login-name 現在ログインしてるユーザーの名前を返す。
defvar Emacsコンパイラプログラマに、これはユーザーがちゃんと定義した変数ですよってのを教える関数
system-type どのOSの、どの環境で動いているかを表す変数
window-system どのウィンドウシステムを使っているかを表す変数

OSなどの判定についての記事は参考リンクにあります。