Emacs, он работает на ноутбуке или на рабочем столе? - PullRequest
4 голосов
/ 06 апреля 2011

У меня есть настройки в моем .emacs, как это (display-battery-mode 1). Он отображает состояние моей батареи в строке режима. Это помогает мне, когда я на ноутбуке с полным экраном. Но это ужасно, когда я работаю на рабочем столе [N/A%][N/A C].

Так что я бы хотел включить его, только когда работаю на ноутбуке.

как
(if OnLaptop<br> (display-battery-mode 1))

Спасибо.

UPDATE: они оба работают под управлением Linux (Ubuntu)

Ответы [ 6 ]

5 голосов
/ 06 апреля 2011

Я бы использовал внутренние компоненты пакета battery, чтобы определить, была ли доступна информация о батарее. Этот фрагмент кода должен помочь вам:

(require 'battery)
(when (and battery-status-function
       (not (string-match-p "N/A" 
                (battery-format "%B"
                        (funcall battery-status-function)))))
  (display-battery-mode 1))
2 голосов
/ 06 апреля 2011

Я использую

;; If not on AC power line, then display battery status on the mode line
(and (require 'battery nil t)
     (functionp battery-status-function)
     (or (equal (cdr (assoc ?L (funcall battery-status-function))) "on-line")
         (display-battery-mode 1)))
0 голосов
/ 01 мая 2011

Я использую:

;; load these only if using GUI emacs 
(when (display-graphic-p)
0 голосов
/ 06 апреля 2011

Попробуй это.К сожалению, у меня нет не-ноутбуков, чтобы попробовать его: (

(require 'battery)
(setq have-battery-status-p
      (let ((perc-charged (assoc ?p (funcall battery-status-function))))
    (and perc-charged
         (not (zerop (string-to-number (cdr perc-charged)))))))
(if have-battery-status-p
    (display-battery-mode 1))

РЕДАКТИРОВАТЬ

Чтобы сломать его изнутри, (funcall battery-status-function) возвращает alist , для которого нам нужен элемент 'p' (как символ), так как он содержит процент оставшегося заряда батареи.

Таким образом, perc-charged будетчто-то вроде nil, если в списке состояния батареи нет элемента 'p', или (112 . "97"), если батарея заряжена на 97%, или (я предполагаю) (112 . "N/A"), если состояние батареи недоступно.

Наконец, если perc-charged не равно нулю и cdr этого значения не равно нулю при преобразовании в число (как "N / A" будет при использовании преобразования string-to-number), мы предполагаембатарея присутствует.

Я привел пример того, что теперь должно быть также полностью рабочим примером.

0 голосов
/ 06 апреля 2011

Я не могу придумать простой способ, но я думаю, что вы можете заглянуть в некоторые файлы в /proc и сделать обоснованное предположение.Если у вас есть один ноутбук и один рабочий стол для разграничения, должна быть некоторая подпись, которую вы можете создать с помощью процессора и т. Д.

0 голосов
/ 06 апреля 2011

Вы не сказали, в какой операционной системе они оба работают. Я бы предложил сделать что-то, связанное с именем хоста. Либо через функцию getenv (хотя не все дистрибутивы экспортируют HOSTNAME), либо через что-то вроде

(with-output-to-string
  (call-process "/bin/hostname" nil standard-output nil))

Если вы работаете в Unix, я бы подумал добавить что-то вроде "export LAPTOP = 1" в ваш .bashrc и проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...