help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SOLVED] Re: [QUESTION] How to use :filter in `make-process'?


From: stardiviner
Subject: [SOLVED] Re: [QUESTION] How to use :filter in `make-process'?
Date: Wed, 04 Mar 2020 00:18:26 +0800
User-agent: mu4e 1.3.8; emacs 27.0.50

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


Thanks Joost.

After reading the Info manual (even though the Info manual is not very 
friendly.)

I have following source code example which works great.

#+begin_src emacs-lisp
(shell-command "touch /tmp/tail.log")

(let ((proc (make-process
             :name "*tail log*"
             :command (list "tail" "-f" "/tmp/tail.log")
             :filter (lambda (proc output)
                       (message "append log captured")
                       (let ((p (get-process "*tail log*")))
                         (when (buffer-live-p (process-buffer p))
                           (with-current-buffer (process-buffer p)
                             (let ((moving (= (point) (process-mark proc))))
                               (save-excursion
                                 ;; Insert the text, advancing the process 
marker.
                                 (goto-char (process-mark proc))
                                 (insert output)
                                 (set-marker (process-mark proc) (point)))
                               (if moving (goto-char (process-mark proc))))))))
             :sentinel (lambda (proc event)
                         (message "done!"))
             :buffer "*tail log*")))
  (display-buffer "*tail log*"))
#+end_src

#+RESULTS[<2020-03-04 00:15:51> 9c0b6b462a594bd21b9d5579bd9a9254a3279e62]:
: #<window 183 on *info elisp*>

Then execute following command to append content into the log file:

#+begin_src sh
for N in {0..10}; do
  echo $N >> /tmp/tail.log
done
#+end_src


- -- 
[ stardiviner ]
       I try to make every word tell the meaning what I want to express.

       Blog: https://stardiviner.github.io/
       IRC(freenode): stardiviner, Matrix: stardiviner
       GPG: F09F650D7D674819892591401B5DF1C95AE89AC3
      
-----BEGIN PGP SIGNATURE-----

iQFIBAEBCAAyFiEE8J9lDX1nSBmJJZFAG13xyVromsMFAl5eg1IUHG51bWJjaGls
ZEBnbWFpbC5jb20ACgkQG13xyVromsOaCgf+P+aEoz8powv4LhelGuypm71n2AVK
Kmx4wNu967+Uz5pCSpKAhFhRp1ZLIOVypQ1lkpoJD/40kK/vr2GCdKAfX4XSUbqb
aIasFL6xOZE+4V9fw7BJQAqz9T5deFv46scjXsAvaUAMquP8qAd1X6EMEx2PrQ9t
u0NCqTNY4Emob1bkMtDUyfjCYZ1wno+c6mxrpyUTk0AiRLLKA/mqv7p5HdhYZQq5
vsr8Yeg/SwLPoZSQpvXorvhO3chlB1/JL7R65P+cvv+56uaEsWh/PzHRK2FCLzWA
6wI9nGsW05mKzddoNPdU2ZiNuPcwvXPFrHliRyNCR8tHtBvieKEBLqVyzA==
=Pwf1
-----END PGP SIGNATURE-----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]