daemonfreaks.com

Twitter.vim for win32

posted by jun-g at Tue, 19 Aug 2008 01:10 JST

Twitter.vimがWindowsで動かないよ~、っていうのは前から知ってたのですが、day_yamashitaさんがハマってたので、拙作wassr.vimを参考にWindows上でも動くように修正してみました。日本語まわりもダメダメだったので、合わせて修正してあります。

ダウンロードはこちらからどうぞ。→twitter.vim

Wassr.vim: Update to 0.2.1

posted by jun-g at Sun, 20 Jul 2008 02:35 JST

色々立て込んでいて間が開いてしまいましたが、少し機能を追加したので0.2.1としてリリースします。ダウンロードはこちらからどうぞ。→ wassr.vim-0.2.1

以下変更点。

  • バッファ上に表示された発言に対して返信する :WassrReply を追加。
  • バッファ上に表示された発言に対して「イイネ!」を付ける :WassrFavAdd を追加。
  • バッファ上に表示された発言に対して「イイネ!」を外す :WassrFavDel を追加。
  • 「@id」を含まない返信の場合、返信先の「@id」を発言の末尾に付与するようにした。

今回追加した :WassrReply と :WassrFavAdd と :WassrFavDel は、バッファ上に表示されたタイムラインのカーソルがある行の発言に対する操作となります。

以下、全然減らないTODO。

  • タイムラインの自動読込
  • 新着メッセージのハイライト
  • TODOの追加・更新・削除
  • その他のAPIが扱えるように
  • IM風の操作機能

現在、法事の為に高知(妻の実家)に帰省中。AirH"だと自宅サーバにログインしての作業が辛いです。

Wassr.vim: Update to 0.2.0

posted by jun-g at Mon, 14 Jul 2008 23:50 JST

今日もWassr.vimを更新。ダウンロードはこちらからどうぞ。→ wassr.vim-0.2.0

以下変更点。

  • Wassrを操作する部分コードを大幅に書き直した。
  • タイムラインを再取得した場合、前回取得分に追記して表示するようにした。
  • secondlifeのタイムラインを取得できるようにした。
  • 中途半端なTODO取得機能を削除。

以下、残りのTODO。

  • タイムラインの自動読込
  • 新着メッセージのハイライト
  • TODOの追加・更新・削除
  • その他のAPIが扱えるように

vimの操作が難しい…。

Wassr.vim: Update to 0.1.3

posted by jun-g at Sat, 12 Jul 2008 01:06 JST

主にwin32環境向けのバグ修正です。ダウンロードはこちらからどうぞ。→ wassr.vim-0.1.3

以下変更点。

  • タイムライン取得時にエンコードできない文字が含まれていた場合にエラーが出ないようにした。
  • wassr.pyを、win32環境なら${HOME}/vimfiles/pluginから、それ以外なら${HOME}/.vim/pluginから読み込むようにした。
  • vim起動時に、.vimrcにwassrのidとpasswordの設定がなくてもエラーにならないようにした。

以下、残りのTODO。

  • コード書き直し
  • タイムラインの自動読込
  • 新着メッセージのハイライト(@kfuruhataからの要望)
  • TODOの追加・更新・削除
  • その他のAPIが扱えるように

休日前の夜なのに一滴もお酒飲んでません。奇跡。

Wassr.vim: Update to 0.1.2

posted by jun-g at Fri, 11 Jul 2008 02:22 JST

今日も少しだけがんばってみました。ダウンロードはこちらからどうぞ。→ wassr.vim-0.1.2

以下変更点。

  • タイムライン再取得時、追記せずに一度バッファをクリアするようにした。これで読み込む度に最新の投稿が常に一番上の行に表示されるようになった。
  • 出力エンコーディングをutf-8決め打ちにせず設定から取得するようにした。
  • simplejsonを使わないようにした。

同僚の@kfuruhataが実際に使ってみて意見をくれるので非常に助かっています。ありがとう!

残りのやりたい事は以下のとおり。

  • タイムラインの自動読込
  • TODOの追加・更新・削除ができるように
  • その他APIが扱えるように

本日は休肝日でした。しかし休肝日を設けてから普段の飲酒量が倍ぐらいに増えたので、あんまり意味ないかも…。

Wassr.vim ちょっとだけ改良

posted by jun-g at Thu, 10 Jul 2008 01:43 JST

ちょっとだけ改良した。ダウンロードはこちらからどうぞ。→ wassr.vim-0.1.1

以下変更点。

  • タイムライン取得時に投稿者のuser_login_idも表示するようにした。
  • TODOリストを取得できるようにした。

後、やりたいなと思っている事は以下のとおり。

  • タイムライン再取得時に新規投稿だけをバッファに追加するように
  • simplejsonを使わず、Pythonの標準ライブラリだけで処理するように
  • TODOの追加・更新・削除ができるように
  • その他APIが扱えるように

今日は(も?)既にへべれけなので、簡単な変更だけやりましたよ、という事で…。

Wassr.vim つくった

posted by jun-g at Wed, 09 Jul 2008 00:41 JST

職場だとおおっぴらにWassrを見ることができないので、VimでWassrを見たり投稿したりするプラグインを作った→ wassr.vim

といっても、twitter.vimをコピーして、ちょろっと中身を書き換えただけ。

PyBlosxom用vim plugin - pyblosxom.vim

posted by jun-g at Mon, 23 Apr 2007 21:59 JST

~/.vimrc がごちゃごちゃしてきたので、以前書いたPyBlosxom用のvimスクリプトを整理してvim pluginにしてみた。

ダウンロード

こちらからどうぞ

インストール

アーカイブを展開すると、pyblosxom.pyとpyblosxom.vimが出てくるので、それらを~/.vim/pluginに入れてインストール完了。

他に必要なもの

  • config.py … PyBlosxomの設定ファイル。
  • py-mixi … mixi日記に投稿する際に必要。(無くてもOK)

~/.vimrcの設定

~/.vimrcに以下の設定が必要。

  • g:pbconfigfile … config.pyファイルのパス
  • g:pbftpserver … FTPサーバ名
  • g:pbftpuser … FTPユーザー
  • g:pbftppassword … FTPパスワード
  • g:pbworkdir … ローカルの作業ディレクトリ
  • g:pbremotedir … アップロード先のディレクトリ
  • g:pbpingservers … 更新PINGを送信するPingサーバ
  • g:pbmixiid … mixiにログインするメールアドレス
  • g:pbmixipassword … mixiのパスワード

~/.vimrcには以下のように書けば良い。

:let g:pbconfigfile = "/home/jun-g/pyblosxom/config.py"
:let g:pbftpserver = "daemonfreaks.com"
:let g:pbftpuser = "user"
:let g:pbftppassword = "password"
:let g:pbworkdir = "/tmp"
:let g:pbremotedir = "/pyblosxom/entries"
:let g:pbmixiid = "mixi@loginid.com"
:let g:pbmixipassword = "mixipassword"
:let g:pbpingservers = "['http://pingoo.jp/ping/', 'http://api.my.yahoo.co.jp/RPC2', 'http://blogsearch.google.co.jp/ping/RPC2']"

使い方

  • 新規エントリ作成 -> 新しいエントリ(バッファ)にテンプレートを表示

    :PBCreateEntry
  • エントリのアップロード -> 現在編集中のエントリ(バッファ)を保存してアップロード

    :PBUploadEntry
  • トラックバック送信 -> 現在編集中のエントリから指定したURLへトラックバックを送信

    :PBTrackback [trackback url]
  • 更新PING送信

    :PBSendUpdatePing
  • 日記の抜粋をmixi日記に投稿 -> 現在編集中のエントリの抜粋を投稿

    :PBPost2Mixi

備考・ToDoなど

  • トラックバックで送信する本文は、エントリの先頭行に「...」を加えた文字列。
  • mixi日記に投稿する日記の抜粋は、エントリの先頭行に「...」を加えた文字列とエントリのURL。
  • Windows版vimには未対応。
  • カテゴリ(サブディレクトリ)には対応していない。なぜなら自分が使っていないから。次のバージョンで対応予定。
  • 更新PING送信機能は、以前どなたかのBlogで見かけたコードをほぼそのまま使用している。
  • mixi日記投稿機能は、以前実装したものを外部の関数として書き直したもの。

ご意見、ご要望、バグレポート、パッチなどなど、お待ちしています。

vimでpyblosxomのエントリを書いてアップロードするvimスクリプトをpythonで書いた

posted by jun-g at Mon, 09 Oct 2006 22:53 JST

pyblosxomは、テキストファイルにエントリを書いてFTPでサーバにアップロードする、という仕組みになっている。プラグインで拡張する事でMetaWeblogAPIを使ったり投稿画面を付けたりする事ができるみたいやけどまだ全然試せていなくて、エディタでエントリを書いてアップする、という作業がかなり面倒に感じていた。

そんな時、「pythonを使ってvimからGoogleカレンダーに予定を投げる (ueBLOG)」というエントリを読んで、ちょうどエディタはvimを使ってるし、「Pyblosxom用エントリファイルのFTP送信」を読んで「Emacs便利でいいなー」とか思ってたので、vimでエントリを書いてそのままアップロードできるスクリプトをpythonで書いてみた。

python << EOF

FTP_SERV = "your.ftp.server"
FTP_USER = "ftpuser"
FTP_PASS = "ftppasswd"
LOCAL_DIR = "/path/to/localdir"
REMOTE_DIR = "/path/to/remotedir"

import vim
import datetime
from os import path
from ftplib  import FTP

def createEntry():
    fileName = path.join(LOCAL_DIR, _createFileName())
    vim.command("new %s" % fileName)
    vim.command("set fileencoding=utf-8")
    cb = vim.current.buffer
    cb[0] = "title"
    cb.append("#tags hoge,fuga")
    cb.append("body")
    vim.command("w")

def uploadEntry():
    cb = vim.current.buffer
    if cb.name == None:
        fileName = _createFileName()
        fullName = path.join(LOCAL_DIR, fileName)
        vim.command("saveas %s" % fullName)
    else:
        fileName = path.basename(cb.name)
        fullName = cb.name
        vim.command("w")
    f = open("%s" % fullName, "r")
    ftp = FTP(FTP_SERV, FTP_USER, FTP_PASS)
    ftp.cwd(REMOTE_DIR)
    ftp.storlines("STOR %s" % fileName, f)
    ftp.close()
    f.close()

def _createFileName():
    return "%s.txt" % datetime.datetime.now().strftime("%Y%m%d%H%M")

EOF

これを.vimrcに書いといて、vim上で

:py createEntry()

とすると

title
#tags hoge,futa
body

という空のエントリを新規バッファを開きつつ「LOCAL_DIR」で指定したディレクトリ内に保存する。ファイル名は現在日時を「YYYYMMDDHHMI.txt」として自動生成。二行目の「#tags〜」はtagsプラグインを使っているので。

でもってエントリをつらつら書いたら、

:py uploadEntry()

でアップロード。僕はエントリのカテゴリ分けをしていないので、カテゴリ指定は無し。

vimは全然使いこなせてないので、おかしな事してるところがあるかもしれないけど、これだけでかなり便利になった。vimももっと勉強しないとな。