GNU bug report logs -
#13831
24.3.50; [PATCH] net-utils-mode have no revert-buffer function
Previous Next
Full log
Message #35 received at 13831 <at> debbugs.gnu.org (full text, mbox):
> Yes please, I only have a git repo of Emacs now.
> Here the patch modified again, tested with netstat.
> Let me know if you find something wrong.
Setting the process-filter to t seems odd, so I changed it to nil.
Also I renamed the new functions and vars to use a "net-utils--" prefix.
And I got rid of net-utils-mode-process. Finally, I removed the `g'
binding, since it's already provided by `special-mode-map'.
Oh, and now I see that the revert function uses a different code
(e.g. different process filter) than the original code. That's weird.
Why not call net-utils-run-simple from the revert function? Oh, right
because net-utils-run-simple kills its buffer first.
OK, can you test the patch below which changes net-utils-run-simple such
that it doesn't kill the buffer, thus making the revert function
much simpler?
> Many functions are actually using `net-utils-run-program' and will not
> have `revert-buffer' enabled, I corrected only `trace-route', but others
> could be modified, that can be done later, it will be easy.
Feel free do those conversions (tho I see that there's a difference in
that using net-utils-run-simple means that no header gets inserted; this
difference between net-utils-run-simple and net-utils-run-simple should
probably be eliminated by always inserting a standard header built from
program-name and args).
Stefan
=== modified file 'lisp/net/net-utils.el'
--- lisp/net/net-utils.el 2013-01-01 09:11:05 +0000
+++ lisp/net/net-utils.el 2013-02-28 04:45:02 +0000
@@ -285,7 +285,8 @@
(define-derived-mode net-utils-mode special-mode "NetworkUtil"
"Major mode for interacting with an external network utility."
(set (make-local-variable 'font-lock-defaults)
- '((net-utils-font-lock-keywords))))
+ '((net-utils-font-lock-keywords)))
+ (setq-local revert-buffer-function #'net-utils--revert-function))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Utility functions
@@ -354,20 +355,38 @@
;; General network utilities (diagnostic)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defun net-utils-run-simple (buffer-name program-name args)
+;; Todo: This data could be saved in a bookmark.
+(defvar net-utils--revert-cmd nil)
+
+(defun net-utils-run-simple (buffer program-name args)
"Run a network utility for diagnostic output only."
- (interactive)
- (when (get-buffer buffer-name)
- (kill-buffer buffer-name))
- (get-buffer-create buffer-name)
- (with-current-buffer buffer-name
+ (with-current-buffer (if (stringp buffer) (get-buffer-create buffer) buffer)
+ (let ((proc (get-buffer-process (current-buffer))))
+ (when proc
+ (set-process-filter proc nil)
+ (delete-process proc)))
+ (let ((inhibit-read-only t))
+ (erase-buffer))
(net-utils-mode)
+ (setq-local net-utils--revert-cmd
+ `(net-utils-run-simple ,(current-buffer) ,program-name ,args))
(set-process-filter
- (apply 'start-process (format "%s" program-name)
- buffer-name program-name args)
+ (apply 'start-process program-name
+ (current-buffer) program-name args)
'net-utils-remove-ctrl-m-filter)
- (goto-char (point-min)))
- (display-buffer buffer-name))
+ (goto-char (point-min))
+ (display-buffer (current-buffer))))
+
+(defun net-utils--revert-function (&optional ignore-auto noconfirm)
+ (message "Reverting `%s'..." (buffer-name))
+ (apply (car net-utils--revert-cmd) (cdr net-utils--revert-cmd))
+ (let ((proc (get-buffer-process (current-buffer))))
+ (when proc
+ (set-process-sentinel
+ proc
+ (lambda (process event)
+ (when (string= event "finished\n")
+ (message "Reverting `%s' done" (process-buffer process))))))))
;;;###autoload
(defun ifconfig ()
@@ -428,9 +447,8 @@
(if traceroute-program-options
(append traceroute-program-options (list target))
(list target))))
- (net-utils-run-program
+ (net-utils-run-simple
(concat "Traceroute" " " target)
- (concat "** Traceroute ** " traceroute-program " ** " target)
traceroute-program
options)))
This bug report was last modified 12 years and 69 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.