aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Volpiatto2013-02-28 09:51:03 -0500
committerStefan Monnier2013-02-28 09:51:03 -0500
commitbd0dd7554e28c2145201ff82cf1da89270b8c510 (patch)
treece6c821ee7972b3e712414d284d93b9185b4e66d
parent71e41a46ca40e44fcfed93d51026571e4887302c (diff)
downloademacs-bd0dd7554e28c2145201ff82cf1da89270b8c510.tar.gz
emacs-bd0dd7554e28c2145201ff82cf1da89270b8c510.zip
* lisp/net/net-utils.el (net-utils--revert-function): New fun.
(net-utils-mode): Use it. (net-utils--revert-cmd): New var. (net-utils-run-simple): Set it, and remove bogus interactive spec. (traceroute): Use net-utils-run-simple. Fixes: debbugs:13831
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/net/net-utils.el46
2 files changed, 40 insertions, 14 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 5c19dd26489..75fc2e77a0c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
12013-02-28 Thierry Volpiatto <thierry.volpiatto@gmail.com>
2
3 * net/net-utils.el (net-utils--revert-function): New fun (bug#13831).
4 (net-utils-mode): Use it.
5 (net-utils--revert-cmd): New var.
6 (net-utils-run-simple): Set it, and remove bogus interactive spec.
7 (traceroute): Use net-utils-run-simple.
8
12013-02-28 Glenn Morris <rgm@gnu.org> 92013-02-28 Glenn Morris <rgm@gnu.org>
2 10
3 * textmodes/paragraphs.el (mark-paragraph): Doc fix. 11 * textmodes/paragraphs.el (mark-paragraph): Doc fix.
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index 28fd5c67ff8..cc28bab733f 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -285,7 +285,8 @@ This variable is only used if the variable
285(define-derived-mode net-utils-mode special-mode "NetworkUtil" 285(define-derived-mode net-utils-mode special-mode "NetworkUtil"
286 "Major mode for interacting with an external network utility." 286 "Major mode for interacting with an external network utility."
287 (set (make-local-variable 'font-lock-defaults) 287 (set (make-local-variable 'font-lock-defaults)
288 '((net-utils-font-lock-keywords)))) 288 '((net-utils-font-lock-keywords)))
289 (setq-local revert-buffer-function #'net-utils--revert-function))
289 290
290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 291;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
291;; Utility functions 292;; Utility functions
@@ -354,20 +355,38 @@ This variable is only used if the variable
354;; General network utilities (diagnostic) 355;; General network utilities (diagnostic)
355;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 356;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
356 357
357(defun net-utils-run-simple (buffer-name program-name args) 358;; Todo: This data could be saved in a bookmark.
359(defvar net-utils--revert-cmd nil)
360
361(defun net-utils-run-simple (buffer program-name args)
358 "Run a network utility for diagnostic output only." 362 "Run a network utility for diagnostic output only."
359 (interactive) 363 (with-current-buffer (if (stringp buffer) (get-buffer-create buffer) buffer)
360 (when (get-buffer buffer-name) 364 (let ((proc (get-buffer-process (current-buffer))))
361 (kill-buffer buffer-name)) 365 (when proc
362 (get-buffer-create buffer-name) 366 (set-process-filter proc nil)
363 (with-current-buffer buffer-name 367 (delete-process proc)))
368 (let ((inhibit-read-only t))
369 (erase-buffer))
364 (net-utils-mode) 370 (net-utils-mode)
371 (setq-local net-utils--revert-cmd
372 `(net-utils-run-simple ,(current-buffer) ,program-name ,args))
365 (set-process-filter 373 (set-process-filter
366 (apply 'start-process (format "%s" program-name) 374 (apply 'start-process program-name
367 buffer-name program-name args) 375 (current-buffer) program-name args)
368 'net-utils-remove-ctrl-m-filter) 376 'net-utils-remove-ctrl-m-filter)
369 (goto-char (point-min))) 377 (goto-char (point-min))
370 (display-buffer buffer-name)) 378 (display-buffer (current-buffer))))
379
380(defun net-utils--revert-function (&optional ignore-auto noconfirm)
381 (message "Reverting `%s'..." (buffer-name))
382 (apply (car net-utils--revert-cmd) (cdr net-utils--revert-cmd))
383 (let ((proc (get-buffer-process (current-buffer))))
384 (when proc
385 (set-process-sentinel
386 proc
387 (lambda (process event)
388 (when (string= event "finished\n")
389 (message "Reverting `%s' done" (process-buffer process))))))))
371 390
372;;;###autoload 391;;;###autoload
373(defun ifconfig () 392(defun ifconfig ()
@@ -428,9 +447,8 @@ This variable is only used if the variable
428 (if traceroute-program-options 447 (if traceroute-program-options
429 (append traceroute-program-options (list target)) 448 (append traceroute-program-options (list target))
430 (list target)))) 449 (list target))))
431 (net-utils-run-program 450 (net-utils-run-simple
432 (concat "Traceroute" " " target) 451 (concat "Traceroute" " " target)
433 (concat "** Traceroute ** " traceroute-program " ** " target)
434 traceroute-program 452 traceroute-program
435 options))) 453 options)))
436 454