Да, это похоже. Оба представления будут вызывать конструктор Thread(Runnable runnable)
.
Более поздний код в вашем вопросе
() -> { //implement }
представляет собой лямбда-представление анонимного класса в предыдущем коде:
new Runnable() {
@Override
public void run() {
//implement
}
}
Поскольку вам не нравятся базовые функции desktop.el, добавьте немного elisp:
(defvar my-desktop-session-dir
(concat (getenv "HOME") "/.emacs.d/desktop-sessions/")
"*Directory to save desktop sessions in")
(defvar my-desktop-session-name-hist nil
"Desktop session name history")
(defun my-desktop-save (&optional name)
"Save desktop with a name."
(interactive)
(unless name
(setq name (my-desktop-get-session-name "Save session as: ")))
(make-directory (concat my-desktop-session-dir name) t)
(desktop-save (concat my-desktop-session-dir name) t))
(defun my-desktop-read (&optional name)
"Read desktop with a name."
(interactive)
(unless name
(setq name (my-desktop-get-session-name "Load session: ")))
(desktop-read (concat my-desktop-session-dir name)))
(defun my-desktop-get-session-name (prompt)
(completing-read prompt (and (file-exists-p my-desktop-session-dir)
(directory-files my-desktop-session-dir))
nil nil nil my-desktop-session-name-hist))
EDIT :
Получите несколько голосов, поэтому добавьте тонкости, например, завершение -читать и историю
Уже ответили:
Подробное объяснение ваших требований позволит нам предложить более конкретное решение для вас.
Edit
Режим рабочего стола позволяет вам иметь более одного сеанса - сохраненные рабочие столы имеют не имя , а каталог.
Из главы Сохранение сеансов Emacs :
Вы можете сохранить текущий рабочий стол и перезагрузить один сохраненный в другом каталоге набрав
Mx desktop-change-dir.
Кроме того, переменная desktop-path
позволяет вам определить список каталогов для поиска сохраненных рабочих столов.
Edit 2
Фрагмент кода Elisp, отправленный scottfrazer , позволяет вам дать имя вашей сессии, поскольку в фоновом режиме он переводит имя в правильное имя каталога для режима рабочего стола.