松尾です。

b21fce6e486d1ff16929ddd15d42675ebd11d158
でtimeline表示の部分更新を導入したため�...@での表示が
更新されなくなっていた問題に対処しました。

http://github.com/cvmat/twittering-mode/tree/auto-redisplay

にcommitしてあります。色々試していただけると助かります。


新しい timer 変数 twittering-timer-for-redisplaying を
用意して、この timer で定期的に関数
twittering-redisplay-status-on-buffer が呼び出される
仕組みになっています。

twittering-redisplay-status-on-buffer は *twittering*
buffer 内の 'need-to-be-updated property がnon-nilの値を
持つ部分を探して更新します。
更新時には need-to-be-updated property の値をLISPの
関数呼び出しのS式と思って解釈し、その結果の文字列で
該当箇所を置き換えています。

icon 取得を非同期にしておき、定期 redisplay 時に取得済み
かどうかを判断して描画するようにすれば icon の非同期更新
にも利用できると思います。


現状、ひとつよく分からない点があって、
「scroll-modeにしておき、*twittering* bufferをC-x b等で
  非表示にした状況」で放置しておいて、
再び *twittering* buffer に戻るとカーソル位置のstatusが
元々のものとは違うものになっている場合があります。

*twittering* buffer を表示している場合にはこの現象は
起こらないようです。
また、 windows.el で window-configuration を保持した
まま非表示にしている場合も起こらないようです。

ある twittering-timer-for-redisplaying が起動している
ときに twittering-timer が起動すると何か問題があるのかも
しれません。実際、現状は以下のようになってますが、

(defun twittering-redisplay-status-on-buffer (&optional buffer)
  (let ((buffer (or buffer (twittering-buffer)))
        (deactivate-mark deactivate-mark))
    (with-current-buffer buffer
      (save-excursion
        (twittering-for-each-property-region
         'need-to-be-updated
         (lambda (beg end value)
           (let* ((func (car value))
                  (args (cdr value))
                  (updated-str (apply func args))
                  (buffer-read-only nil))
             (delete-region beg end)
             (goto-char beg)
             (insert updated-str)))
         buffer)))))

これのbuffer-read-onlyを束縛する場所をずらして

(defun twittering-redisplay-status-on-buffer (&optional buffer)
  (let ((buffer (or buffer (twittering-buffer)))
        (deactivate-mark deactivate-mark))
    (with-current-buffer buffer
      (setq buffer-read-only nil)
      (save-excursion
        (twittering-for-each-property-region
         'need-to-be-updated
         (lambda (beg end value)
           (let* ((func (car value))
                  (args (cdr value))
                  (updated-str (apply func args)))
             (delete-region beg end)
             (goto-char beg)
             (insert updated-str)))
         buffer))
      (setq buffer-read-only t))))

とすると時折 read-only 関連の警告が表示されます。

---
松尾 直志 <t...@mymail.twin.jp>

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
twmode-users mailing list
twmode-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/twmode-users

メールによる返信