[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer functio
From: |
Stefan Monnier |
Subject: |
bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function |
Date: |
Wed, 27 Feb 2013 23:51:54 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
> 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)))
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Thierry Volpiatto, 2013/02/27
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Thierry Volpiatto, 2013/02/27
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Andreas Schwab, 2013/02/27
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Stefan Monnier, 2013/02/27
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Thierry Volpiatto, 2013/02/27
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Stefan Monnier, 2013/02/27
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Thierry Volpiatto, 2013/02/27
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function,
Stefan Monnier <=
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Thierry Volpiatto, 2013/02/28
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Stefan Monnier, 2013/02/28
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Thierry Volpiatto, 2013/02/28
- bug#13831: 24.3.50; [PATCH] net-utils-mode have no revert-buffer function, Stefan Monnier, 2013/02/28