File: README.ja.markdown

package info (click to toggle)
e2wm 1.4-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 332 kB
  • sloc: lisp: 3,949; sh: 36; makefile: 29
file content (228 lines) | stat: -rw-r--r-- 8,213 bytes parent folder | download | duplicates (6)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# E2WM : Equilibrium Emacs Window Managaer

## 概要

Emacsのウインドウマネージャーです。ポップアップウインドウの出現場所や、
ウインドウの分割などをあらかじめ設定しておいた方法で表示されるように管
理します。

ウインドウの管理だけでなく、作業上便利な付加機能が付いています。

### バッファ履歴管理

編集対象のバッファについては履歴を管理していますので、行ったり来たりする
編集が多少楽になると思います。

### パースペクティブ

作業シーンによって分割表示方法を切り替えることができます。この分割表示方法
をEclipseにならってパースペクティブと呼んでいます。デフォルトでは、以下の
ものを用意しています。

- code:  中央に1つのコードを表示してがっつり読み書きする
- two:   左右2分割してコードの比較や参照をする
- htwo   上下2分割してコードの比較や参照をする
- doc:   長いコードやドキュメントをfollow-modeで読む
- dashboard: たまに見たい、使いたいバッファを集めて置いておく
- array: 開いているバッファを全部表示して全体を眺めたり、視覚的に探したりする

パースペクティブはユーザー側で自由に増やしたり拡張したりできます。自分
の好みにカスタマイズすると、自分でウインドウを分割するような作業がほと
んど必要無くなります。

### プラグインによる拡張

Eclipseの「ビュー」のような、機能を持ったウインドウを増やすことができます。
ここではプラグインと呼んでいます。デフォルトでは以下のようなプラグイン
を用意しています。

- 編集中バッファのディレクトリ内のファイル一覧を表示
- バッファ履歴一覧を表示
- Imenuでアウトラインの表示・移動、現在地の表示
- topコマンドの出力を表示、一定時間おきに更新
- 時計の表示

プラグインも自由に増やしたり設定することができます。


## インストール

必要なもの、環境

ロードパスに e2wm.el, window-layout.el を置き、以下のように呼び出し用の
コードを .emacsなどに追加してください。以下の例では、Altキーを押しなが
ら「+」を押すとウインドウの管理を開始します。終了する場合は「C-c ; C-q」
です。

    ;; 最小の e2wm 設定例
    (require 'e2wm)
    (global-set-key (kbd "M-+") 'e2wm:start-management)

※注意点

Window周りの関数をほとんど乗っ取っていますので、お使いの環境と相性が悪
いことがあるかもしれません。本気のバッファで使う前に、作業に支障が出な
いかどうかご確認をお願いします。

## 使い方

TODO...

### キーバインド

#### パースペクティブ共通

#### codeパースペクティブ

#### twoパースペクティブ

#### htwoパースペクティブ

#### docパースペクティブ

#### dashboardパースペクティブ

#### arrayパースペクティブ


### 簡易的なカスタマイズなど

TODO...

なお、設定のひな形を e2wm-config.el としておいていますので、参考にしてみ
てください。


### ウインドウ分割の詳細

### パースペクティブの作成

### プラグインの作成

### 略語、表記など

- `pst`                  : perspective
- `e2wm:c-`              : カスタマイズ変数
- `e2wm:$`               : 構造体定義

- `e2wm:history-`        : 履歴管理
- `e2wm:pst-`            : パースペクティブフレームワーク
- `e2wm:pstset-`         : パースペクティブセット
- `e2wm:ad-`             : アドバイス(switch-to-buffer, pop-to-bufferなど)
- `e2wm:plugin-`         : プラグインフレームワーク
- `e2wm:menu-`           : メニュー
- `e2wm:def-plugin-`     : プラグイン定義
- `e2wm:dp-`             : パースペクティブ定義
  + `e2wm:dp-code-`      :   code
  + `e2wm:dp-doc-`       :   doc
  + `e2wm:dp-two-`       :   two
  + `e2wm:dp-dashboard-` :   dashboard
  + `e2wm:dp-array-`     :   array


### 構造体

#### e2wm:$pst-class 構造体

この構造体でパースペクティブの定義を行う。

- **name** (_symbol_, 必須):
  このパースペクティブの名前。

- **extend** (_symbol_):
  このパースペクティブの継承元名。
  以下のものでこのクラスの定義が `nil` だったら継承元を呼ぶ。

- **init** (_function()_, 必須):
  このパースペクティブのコンストラクタ。
  返値として `wset` 構造体を返す。
  基本的に wset 構造体だけを返すようにして、レイアウトや
  必要なフックなどのセットアップが必要であれば下のstartで行う。
  init で使える dynamic bind 変数 : `prev-selected-buffer`。

- **title** (_string_, 必須):
  このパースペクティブのタイトル(人が読む用)。

- **main** (_symbol_):
  wlfのウインドウレイアウトのうち、デフォルトでフォーカスを当てるべき場所の名前。
  nilなら適当に選ぶ。

- **start** (_function(wm)_):
  レイアウトや必要なフックなどのセットアップを行う。引数:wm。
  この関数がnilなら何もしない。
  (leaveで一時中断して後で再度startが呼ばれることがある。)
  start で使える dynamic bind 変数 : `prev-selected-buffer`。

- **update** (_function(wm)_):
  wlfの各windowを更新する際に呼ばれる関数。引数:wm。
  この関数がnilなら何もしない。
  各Windowのプラグインの更新が行われる前に呼ばれる。
  ウインドウの構成の変更や履歴を戻ったりするたびに呼ばれる。

- **switch** (_function(buffer)_):
  `switch-to-buffer` を乗っ取る関数。引数:buffer。
  この関数がnilなら何もしない。返値でnilを返すと本来の動作、
  それ以外なら動作を乗っ取ったものとみなしてそのまま終了する。
  プラグインの更新などが必要であれば `e2wm:pst-update-windows` を呼ぶこと。

- **popup** (_function(buffer)_):
  `pop-to-buffer`, `special-display-func` を乗っ取る関数。引数:buffer。
  この関数がnilなら何もしない。返値でnilを返すと本来の動作、
  それ以外なら動作を乗っ取ったものとみなしてそのまま終了する。
  プラグインの更新などが必要であれば `e2wm:pst-update-windows` を呼ぶこと。

- **leave** (_function(wm)_):
  このパースペクティブを終了する際に呼ばれる関数。引数:wm。
  この関数がnilなら何もしない。

- **keymap** (_keymap_):
  このパースペクティブで有効にするキーマップのシンボル。nilだと何も設定しない。

- **save** (_function()_):
  `after-save-hook` で呼ばれる。
  選択されているパースペクティブだけ作用。nilだと何もしない。

関数を入れるスロットで継承元を呼ぶ場合は `(e2wm:$pst-class-super)`
(dynamic bind関数)を引数無しで呼ぶ。


#### e2wm:$pst(perspective) インスタンス構造体

- **name** :
  このパースペクティブの名前、シンボル
- **wm** :
  wlfレイアウトオブジェクト
- **type** :
  class オブジェクトへの参照


#### e2wm:$wcfg ウインドウ配置構造体

- **wcfg** :
  本来の `current-window-configuration` でとれるウインドウ配置オブジェクト
- **pst** :
  パースペクティブのインスタンスのコピー
- **count** :
  デバッグ用カウンタ


#### e2wm:$plugin構造体

- **name** :
  プラグインの symbol
- **title** :
  人が読む用のプラグインの名前
- **update** :
  プラグイン本体の関数


## ライセンスなど

License
  GPL v3

Repository
  http://github.com/kiwanami/emacs-window-manager

SAKURAI, Masashi
m.sakurai atmark kiwanami.net