Кроссплатформенный Emacs Script - PullRequest
1 голос
/ 19 февраля 2010

Я пытаюсь закодировать скрипт Emacs, который должен манипулировать буфером обмена (просто получая последнюю запись и манипулируя ею как строкой). Проблема в том, что я работаю на Linux (дома) и Windows (на работе). В Windows я должен использовать функцию (w32-get-clipboard-data), в то время как Linux использует (x-get-clipboard) для той же цели (и каждая ОС услужливо выдает ошибку, когда вы используете эквивалентную функцию других).

Я действительно не хочу хранить два отдельных файла с одинаковым определением режима; есть ли способ проверить через elisp, какая ОС Emacs в настоящее время работает, чтобы я мог использовать соответствующую функцию?

PS. Да, разумное решение - «Прекратить использование Windows на работе», и я работаю над этим, но мне нужно с этим мириться, по крайней мере, месяц или два.

Ответы [ 2 ]

5 голосов
/ 19 февраля 2010

Вы можете проверить, связаны ли функции (если они существуют), используя fboundp. Тогда, если вы хотите стать действительно умным, вы можете создать свой собственный псевдоним, который указывает на правильный. Например:

(defalias 'my-get-clipboard-data                                                                                                                                                                                                   
  (cond ((fboundp 'w32-get-clipboard-data) 'w32-get-clipboard-data)                                                                                                                                                                
        ((fboundp 'x-get-clipboard) 'x-get-clipboard)                                                                                                                                                                              
        (t nil)))
3 голосов
/ 19 февраля 2010

См. Переменную system-type.

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