X-Git-Url: http://christophe.rhodes.io/gitweb/?p=squeeze-el.git;a=blobdiff_plain;f=squeeze.el;fp=squeeze.el;h=18586145f8a92d4f5fdc5246275c2a866ac90e57;hp=1e34449f76861986fee4ab9ca0ca31686188cb59;hb=66deea724bf232b683d6371a6c9fd102a6369a29;hpb=c25024a3a63e4e6bf71f882d2e8697c831dd3a91 diff --git a/squeeze.el b/squeeze.el index 1e34449..1858614 100644 --- a/squeeze.el +++ b/squeeze.el @@ -39,15 +39,20 @@ (defvar squeeze-control-inhibit-display nil) -(defun squeeze-update-state (string) - (let (done-something) - (dolist (line (split-string string "\n")) - (when (squeeze-update-state-from-line line) - (setq done-something t))) - (when done-something - (unless squeeze-control-inhibit-display - (squeeze-control-display-players)))) - string) +(lexical-let ((buffer "")) + (defun squeeze-update-state (string) + (if (cl-position ?\n string) + (let (done-something) + (setq string (concat buffer string)) + (dolist (line (split-string string "\n")) + (when (squeeze-update-state-from-line line) + (setq done-something t))) + (when done-something + (unless squeeze-control-inhibit-display + (squeeze-control-display-players))) + (setq buffer "")) + (setq buffer (concat buffer string))) + string)) (defconst squeeze-player-line-regexp "^\\(\\(?:[0-9a-f]\\{2\\}%3A\\)\\{5\\}[0-9a-f]\\{2\\}\\) ")