Pull to refresh

Допиливание Emacs для нетбуков

Reading time2 min
Views1.9K
Здравствуй %username%!
Недавно начал использовать Emacs. Мне очень нравится за скорость и простоту. После покупки нетбука столкнулся с тем, что Emacs под Windows не влазит в его 1024x600 когда он запускается, и приходится каждый раз менять размен окна и его двигать. Как решение написал маленькую функцию, которая восстанавливает размер окна при старте. Думаю, это может быть полезно не только пользователям нетбуков.

Как такое сделать


Файл restore-window-on-startrup.el
(defun restore-saved-window-size()
  (unless (load "~/.emacs.d/whsettings" t nil t)
    (setq saved-window-size '(80 30)))
  (nconc default-frame-alist `((width . ,(car saved-window-size))
			       (height . ,(cadr saved-window-size)))))

(restore-saved-window-size)

(defun save-window-size-if-changed (&optional unused)
  (let ((original-window-size  `(,(frame-width) ,(frame-height))))
    (unless (equal original-window-size saved-window-size)
      (with-temp-buffer
        (setq saved-window-size original-window-size) 
        (insert (concat "(setq saved-window-size '"
                        (prin1-to-string saved-window-size) ")"))
        (write-file "~/.emacs.d/whsettings")))))

(add-hook 'window-size-change-functions 'save-window-size-if-changed)


Чтобы все заработало, в файл .emacs следует дописать строчку (load "restore-window-on-startrup.el")

Как это работает


Для новичков emacs (коим и себя считаю) объясню как это все работает:
Последняя строчка добавляет вызов save-window-size-if-changed в список функций перехвата изменения окна. Эта функция сравнивает новый размер окна с теми что уже были сохранены и если они отличаются, то записывает в файл ~/.emacs.d/whsettings вот где-то такую конструкцию, с новыми размерами окна: (setq saved-window-size '(100 30)).
Функция restore-saved-window-size, которая вызывается прямо после своего объявления загружает этот файл (если его нету, заполняет сохраненные размеры хардкодом 80x30) и устанавливает размеры окна.

Для пользователей Windows: каталог "~", в котором лежит .emacs и директория .emacs.d это обычно папка вида C:\Documents and Settings\%Username%. Ещё, обязательно прочитать про другие специфические настройки в этом топике.
Tags:
Hubs:
+5
Comments6

Articles

Change theme settings