2014年3月5日水曜日

meditにZen-Codingを導入した時の覚書

Zen-Coding Tool 4 MEditを導入したが動かず、ごまかしつつ利用していたが気が向いたので解決策を模索.

とりあえず解決できたもののまとめ.

  • ツールメニューに表示されない.
  • 日本語が混ざると機能しない.
  • {%::zen-caret::%}を消したい(応急処置).

メニューに表示されない場合

ファイルの種類が原因の場合

デフォルトの状態ではHTML、CSSファイルを編集している時のみ表示されるように設定されているので、現在編集中のファイルの種類を確認.
ドキュメント>言語>マークアップ>HTML(またはその他>CSS)?

他にもファイルを増やしたい場合は、tools/フォルダ内のファイルの先頭にある「langs=html,css」の後方に追加.
例えばXMLを追加する場合は「langs=html,css,xml」とする.

ファイルタイプによらず表示させたい場合はlangs=html,cssを消す.

インストール位置が原因の場合

※ver1.2.0では修正されています。

説明にもマニュアルにも$HOME/.local/share/medit-1/tools/へと書いてあるが、$HOME/.local/share/medit/tools/へインストールしたら表示された.

消費時間:2時間弱

対策

toolsフォルダを$HOME/.local/share/medit/フォルダへ移動.

$HOME/.local/share/medit/tools/
$HOME/.local/share/medit-1/tools-module/

両方meditフォルダへ移動させたい場合は、toolsフォルダ内のすべてのファイルの「os.environ['HOME']+'/.local/share/medit-1/tools-module」を「os.environ['HOME']+'/.local/share/medit/tools-module」に書き換えれば機能すると思われる.

日本語が混ざると機能しない

日本語?全角文字?が混ざると文字数のカウントが期待通りにならないことで発生.
全角文字を1文字としてカウントさせれば機能する.

変更箇所

tools-module/zen_editor.pyの144行目に.decode('utf-8')を追加.

Before:

  def get_content(self):
    """
    Returns editor's content
    @return: str
    """
    return self.context.get_text()

After:

  def get_content(self):
    """
    Returns editor's content
    @return: str
    """
    return self.context.get_text().decode('utf-8')

消費時間:半日

{%::zen-caret::%}を消したい

tools-module/zencoding/zen_core.pyの34行目を以下のように変えると表示されなくなる.

#caret_placeholder = '{%::zen-caret::%}'
caret_placeholder = ''

この状態でいろいろ変換してみたが特に問題なし、

{文字列}処理が入っていないので何とかならないかと眺めてみたけど、全くわからない.