diff options
| author | Thierry Volpiatto | 2013-02-28 09:51:03 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2013-02-28 09:51:03 -0500 |
| commit | bd0dd7554e28c2145201ff82cf1da89270b8c510 (patch) | |
| tree | ce6c821ee7972b3e712414d284d93b9185b4e66d | |
| parent | 71e41a46ca40e44fcfed93d51026571e4887302c (diff) | |
| download | emacs-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/ChangeLog | 8 | ||||
| -rw-r--r-- | lisp/net/net-utils.el | 46 |
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 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-02-28 Glenn Morris <rgm@gnu.org> | 9 | 2013-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 | ||