Emacs から TFS を使う tfs.el

Emacs から TFS(Team Foundation Server) を使えるようにする tfs.el の紹介です。

Emacs 上から全部の作業ができるという程のものではないのですが、 Visual Studio の補助として使うとちょっと便利かなと思います。

ダウンロード

以下のサイトなどからダウンロードしてください。 ダウンロード

インストール、設定

まず、ダウンロードした tfs.el をパスの通ったフォルダーに置きます。

次に .emacs.el に設定を追加します。
(require 'tfs)
(global-set-key  "\C-xvo" 'tfs/checkout)
(global-set-key  "\C-xvi" 'tfs/checkin)
(global-set-key  "\C-xvp" 'tfs/properties)
(global-set-key  "\C-xvr" 'tfs/rename)
(global-set-key  "\C-xvg" 'tfs/get)
(global-set-key  "\C-xvh" 'tfs/history)
(global-set-key  "\C-xvu" 'tfs/undo)
(global-set-key  "\C-xvd" 'tfs/diff)
(global-set-key  "\C-xv-" 'tfs/delete)
(global-set-key  "\C-xv+" 'tfs/add)
(global-set-key  "\C-xvs" 'tfs/status)
(global-set-key  "\C-xva" 'tfs/annotate)
(global-set-key  "\C-xvw" 'tfs/workitem)

;; tf, tfpt のパス設定 (Visual Studio 2010 用)
(setq tfs/tf-exe  "c:\\Program Files\\Microsoft Visual Studio 10.0\\common7\\ide\\tf.exe")
(setq tfs/tfpt-exe  "c:\\Program Files\\Microsoft Team Foundation Server 2010 Power Tools\\TFPT.EXE")

;; ログイン設定 (指定しない)
(setq tfs/login "")
例として私の環境での設定をあげてみました。 キー設定のあたりはそのままでかまわないのですが、以下の 2 つは環境に合わせて変更をする必要があります。
  • tf.exe のパス
  • ログイン

tf.exe のパスの設定

TFS のコマンドラインツール tf.exe のパスを指定します。
上記は Visual Studio 2010 のインストール先をデフォルトのものから変更しなかった場合の設定です。 Visual Studio 2008 の場合にはデフォルトのインストール先であれば、 省略することもできます。

tfpt.exe のパスは annotate, workitem のコマンドを使わないのであれば、 設定する必要はありません。
私も使ってないのですが、サンプルとして書いてみました。

ログイン設定

上記の例はログインの指定を省略する場合のものです。
ユーザーやパスワードを指定する場合には以下のような記述を行います。
(setq tfs/login "/login:domain\\userid,password")
;; -or-
(setq tfs/login (getenv "TFSLOGIN"))
tfs/login の変数が tf.exe 実行時にオプションとして渡されます。 私の環境ではなぜか指定しない方がうまくいったので、省略しました。

うまく動かない場合には以下のようなコマンドなどで tf.exe がちゃんと動作するか確認してみてください。
> tf.exe properties ファイル名

使い方

基本的に Emacs でファイルを開いて、 そのファイルに対してコマンドを実行するという使い方になります。

以下の表にキーと Visual Studio の対応するメニュー項目をまとめてみました。
キー コマンド 対応するメニュー項目
C-x v o checkout 編集用にチェックアウト
C-x v i checkin チェックイン
C-x v p properties
C-x v r rename
C-x v g get 最新バージョンの取得
C-x v h history (履歴)
C-x v u undo 保留中の変更を元に戻す
C-x v d diff (最新バージョンとの相違)
C-x v - delete
C-x v + add
C-x v s status
C-x v a annotate
C-x v w workitem
各コマンドの詳しい説明は tf.exe のコマンドの説明を見てください。

コマンドはいろいろありますが、私の場合は最初の 2 つ チェックアウト(C-xvo)チェックイン(C-xvi) しか使っていません。

がっつり編集する場合は私も VS でプロジェクトごとチェックアウト、チェックインしています。 しかし、ファイルを眺めていて、ちょこっと直したいと思う場合もあります。 そういった時にはいちいち VS から操作して、開き直してといったことをする必要がなくなるので、 このコマンドが重宝しています。
スポンサーサイト



 

TypeScript 用 Emacs モード

前に TypeScript のインストール方法 を紹介しました。 その際、 TypeScript の Emacs 用モードはリリースが停止されていたため、 インストール方法を書いていませんでした。
リリースが再開されたようなので、今回は TypeScript ファイルを Emacs で編集するためのモード (TypeScript.el)のインストール方法について説明します。

TypeScript mode

ダウンロード

以下のサイトに公開されています。 typescript_support_for_emacs.zip をダウンロードします。
TypeScript Download

インストール

取得した圧縮ファイルを展開し、 TypeScript.el をパス(load-path)の通ったフォルダーに置きます。

~/emacs.d/init.el に設定を記述します。
最小限必要なのは次の記述です。
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))
(autoload 'typescript-mode "TypeScript" "Major mode for editing typescript." t)
あと、 M-x byte-compile-file で TypeScript.el をバイトコンパイルしておくと、 多少読み込みが速くなります。

TypeScript 用として特に新しくキーが割り当てられているものはありませんが、 C++ や Java と同じ cc-mode を基に作られているので、 だいたい同じ機能が使えます。

コンパイル

エラーメッセージ形式の登録

以前にも書きましたが、 M-x compile によるコンパイルをするためには、 次の記述も init.el に書いておきます。
(require 'compile)
(setq compilation-error-regexp-alist
      (append
       '(;; d:/h...ript/sample.ts (13,175):
         ("^\\(.*\\) (\\([0-9]+\\),[0-9]+):" 1 2))
       compilation-error-regexp-alist))

デフォルトコマンドの改良

コンパイル時のコマンドをちょっと改良する方法も紹介します。
以下の記述を init.el に追加して下さい。
(defun typescript-mode-init ()
  (set (make-local-variable 'compile-command)
       (format "tsc -sourcemap %s"
               (file-name-nondirectory (buffer-file-name)))))
(add-hook 'typescript-mode-hook 'typescript-mode-init)
引数にファイルを指定したものがデフォルトになり、値もバッファで独立するようになります。 例えばファイル名が hello.ts の場合、デフォルトは次のコマンドです。
tsc -sourcemap hello.ts
パスやオプションを変えたい場合は format に渡している文字列を変更して下さい。

出力バッファの自動クローズの停止

tsc はちゃんとエラー時には正常終了と違った終了ステータスで終わるため、 コンパイル後に出力バッファを自動的に閉じる方法が使えます。
 

Emacs における矩形領域のコピペ系編集機能

Emacs では矩形領域で切り取り、貼り付けといったことが可能です。 これは結構コーディングなどに便利なので、今回はこの矩形領域の編集機能について紹介したいと思います。
ちなみに MS Word や Visual Studio では Alt + ドラッグで矩形領域を指定できます。

基本機能

基本は矩形で切り取って、貼り付けます。
キー コマンド 機能
C-x r k kill-rectangle 切り取り
C-x r y yank-rectangle 貼り付け

emacs_rect_cut.png
切り取り
emacs_rect_cutted.png
貼り付け
emacs_rect_yank.png

ちなみに VS などと違い、矩形領域で切り取った内容はクリップボード(kill-ring)とは別に記録されます。

その他の矩形処理

切り取り、貼り付け以外にも次のような機能があります。
キー コマンド 機能
C-x r d delete-rectangle 削除(保存しないので、貼り付けはできない)
C-x r c clear-rectangle クリア(空白への置換)
C-x r o open-rectangle 指定領域分の空白を挿入
C-x r t string-rectangle 指定文字への置換
C-x r N rectangle-number-lines ナンバリングする

クリア( C-x r c ) :
emacs_rect_clear_pre.png emacs_rect_clear.png


空白の挿入( C-x r o ) :
emacs_rect_clear_pre.png emacs_rect_open.png


置換( C-x r t ) :
emacs_rect_string_pre.png emacs_rect_string.png
領域内を "|" で置換


ナンバリング( C-x r N ) :
emacs_rect_num_pre.png emacs_rect_num.png

矩形でのコピー

"あれ、コピー忘れてない?" と思った人もいるかもしれません。しかし、忘れたわけではなく、この矩形領域の処理では切り取りはあるのに、なぜかコピーがありません。 理由はよくわかりませんが、切り取った後、Undo すれば、コピーと同じではあります。

読み取り専用バッファー

ただ、そのままだと読み取り専用バッファーでは切り取りができません。 kill-read-only-ok 変数を t(真) に設定すると、読み取り専用の場合にはコピーをするようになります。

変数の設定は M-x customize-option kill-read-only-okCustomizeで設定するか、以下の記述を ~/.emacs.d/init.el に追加して下さい。
(setq kill-read-only-ok t)

矩形のコピー関数の自作

前節の方法でも構わないのですが、 いちいち Undo するのも面倒なので、矩形でのコピーコマンドを自作してみました。

以下の記述を ~/.emacs.d/init.el に追加すると C-x r e で矩形のコピーができるようになります。
(defun my-kill-rectangle-ring-save (start end)
  "Copy the region-rectangle and save it as the last killed one."
  (interactive "r")
  (setq killed-rectangle (extract-rectangle start end))
  (deactivate-mark)
  (message "Copy rectangle region"))
(define-key ctl-x-r-map "e" 'my-kill-rectangle-ring-save)

追記 2013-11-29
レジスターに登録するのであれば、そのままでも矩形のコピーは可能です。


 
このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
31位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
5位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

08月 | 2023年09月 | 10月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。