From 32f960186ab2a2bfe7de66b6a7d659882b065c90 2013-05-07 02:07:29 From: Sergey Pashinin Date: 2013-05-07 02:07:29 Subject: [PATCH] dired serialize in special buffers (could not restore remote dirs) --- diff --git a/src/workgroups-misc.el b/src/workgroups-misc.el new file mode 100644 index 0000000000000000000000000000000000000000..54c5f5ca3ab1b85a581d9be3ff05546caa9c2243 --- /dev/null +++ b/src/workgroups-misc.el @@ -0,0 +1,15 @@ +(defun wg-string/starts-with (s arg) + "returns non-nil if string S starts with ARG. Else nil." + (cond ((>= (length s) (length arg)) + (string-equal (substring s 0 (length arg)) arg)) + (t nil))) + +(defun wg-is-file-remote (filename) + "Return t if filename starts with \"/ssh:\" or \"/sudo:\"" + (interactive) + (or (wg-string/starts-with filename "/ssh:") + (wg-string/starts-with filename "/sudo:"))) + +;; (wg-is-file-remote "/sudo:/etc/myfile") + +(provide 'workgroups-misc) diff --git a/src/workgroups-specialbufs.el b/src/workgroups-specialbufs.el index 83a0a5246af76c420fff4adc5b2fe7f95473c469..8c4cd1f3c2577801518d5930394122a1e6ee5257 100644 --- a/src/workgroups-specialbufs.el +++ b/src/workgroups-specialbufs.el @@ -5,6 +5,25 @@ ;; (require 'dflet) +(require 'workgroups-misc) + +;; Dired + +(defun wg-deserialize-dired-buffer (buf) + "Deserialize Dired buffer." + (wg-dbind (this-function params) (wg-buf-special-data buf) + (let ((dir (car params))) + (if (file-exists-p dir) + (dired dir)) + (current-buffer)))) + +(defun wg-serialize-dired-buffer (buffer) + "Serialize Dired buffer." + (with-current-buffer buffer + (when (eq major-mode 'dired-mode) + (list 'wg-deserialize-dired-buffer + (wg-take-until-unreadable (list (or (buffer-file-name) default-directory))) + )))) ;; Info buffer serdes diff --git a/src/workgroups-variables.el b/src/workgroups-variables.el index 2704997087b2124e042668027f02b160bebdf155..26215c1754fe68d4b1d0ec25e0d1e20b6482f306 100644 --- a/src/workgroups-variables.el +++ b/src/workgroups-variables.el @@ -200,6 +200,7 @@ it to `major-mode'." (defcustom wg-special-buffer-serdes-functions '(wg-serialize-Info-buffer + wg-serialize-dired-buffer wg-serialize-org-agenda-buffer wg-serialize-help-buffer wg-serialize-ielm-buffer