Программирование

Настройка Emacs с Skewer mode для конкретного браузера

Решение проблем с настройкой luakit в Skewer mode. Почему настройки браузера игнорируются и как это исправить.

4 ответа 1 просмотр

Как правильно настроить Emacs с Skewer mode для использования конкретного браузера (например, luakit) вместо браузера по умолчанию при выполнении JavaScript REPL? Почему Skewer mode игнорирует настройки браузера в init.el файле, несмотря на корректную конфигурацию browse-url-generic-program и browse-url-browser-function?

Чтобы настроить Emacs с Skewer mode для использования конкретного браузера, такого как luakit, необходимо правильно сконфигурировать механизмы browse-url в вашем init.el файле. Проблема с игнорированием настроек браузера может возникать из-за порядка загрузки конфигурации или особенностей реализации Skewer mode.


Содержание


Основные принципы работы Skewer mode

Skewer mode — это мощное расширение для Emacs, которое позволяет выполнять JavaScript код прямо в браузере через REPL. Когда вы запускаете run-skewer, Skewer mode использует стандартный механизм Emacs browse-url для открытия браузера, который затем подключается к вашему Emacs экземпляру.

Важно понимать, что Skewer mode не содержит встроенных настроек для выбора браузера. Вместо этого он полагается на стандартные переменные Emacs, такие как browse-url-generic-program и browse-url-browser-function. Это означает, что если у вас возникают проблемы с выбором браузера, скорее всего, проблема заключается не в самом Skewer mode, а в конфигурации browse-url.

Почему это важно? Потому что многие пользователи, столкнувшись с проблемой, пытаются искать специфические настройки в Skewer mode, в то время как решение лежит в стандартных механизмах Emacs. Разработчик Skewer mode Christopher Wellons (skeeto) сознательно выбрал этот подход, чтобы полагаться на существующую и хорошо протестированную инфраструктуру Emacs.


Конфигурация браузера в Emacs

Для настройки конкретного браузера в Emacs необходимо правильно сконфигурировать переменные browse-url. Если вы хотите использовать luakit, ваш init.el файл должен содержать следующие настройки:

elisp
;; Установка пути к luakit
(setq browse-url-generic-program "/usr/bin/luakit")

;; Настройка функции выбора браузера
(setq browse-url-browser-function 'browse-url-generic)

Однако многие пользователи сталкиваются с тем, что эти настройки игнорируются. Почему это происходит? Есть несколько возможных причин:

  1. Порядок загрузки конфигурации: Если вы загружаете Skewer mode до того, как установите переменные browse-url, настройки могут быть переопределены.

  2. Переопределение другими пакетами: Некоторые другие пакеты могут изменять переменные browse-url после загрузки вашего init файла.

  3. Конфликты с системными настройками: Если у вас есть глобальные настройки браузера в системе, они могут конфликтовать с вашими настройками Emacs.

Согласно официальной документации GNU Emacs, переменные browse-url должны быть установлены в ранней стадии загрузки Emacs, чтобы они были доступны для всех зависимых пакетов, включая Skewer mode.


Проблемы с настройкой luakit и их решения

Luakit — это легкий браузер на основе WebKit, который часто используется в средах с ограниченными ресурсами. Однако его интеграция с Emacs может вызывать особые проблемы.

Проблема №1: Luakit может не работать правильно с browse-url из-за особенностей его командной строки. В этом случае может потребоваться создать обертку для luakit. Вот пример такой обертки:

bash
#!/bin/sh
# luakit-wrapper.sh
luakit --remote="open -new-window $1"

Затем добавьте в ваш init.el:

elisp
(setq browse-url-generic-program "/path/to/luakit-wrapper.sh")

Проблема №2: Skewer mode может игнорировать настройки browse-url из- того, что он использует внутреннюю функцию browse-url-default-browser, которая переопределяет ваши настройки. В этом случае можно попробовать принудительно установить браузер перед запуском Skewer mode.

На Emacs Wiki рекомендуется создавать собственную функцию выбора браузера:

elisp
(defun my-skewer-browser (url &optional new-window)
 "Открыть URL в luakit с поддержкой новой вкладки."
 (browse-url-generic url new-window))

(setq browse-url-browser-function 'my-skewer-browser)

Альтернативные методы настройки

Если стандартные методы не работают, можно рассмотреть альтернативные подходы к интеграции браузера с Emacs.

Метод №1: Использование shell-command для запуска браузера

elisp
(defun my-run-skewer-with-luakit ()
 "Запустить Skewer mode с использованием luakit."
 (interactive)
 (shell-command "luakit --remote=open-new-window localhost:8080")
 (run-skewer))

Метод №2: Создание специализированной функции для Skewer mode

elisp
(defun my-skewer-start ()
 "Запустить Skewer mode с принудительным использованием luakit."
 (let ((browse-url-browser-function 'browse-url-generic))
 (run-skewer)))

Метод №3: Использование переменной окружения

elisp
(setenv "BROWSER" "luakit")
(setq browse-url-browser-function 'browse-url-generic)

Эти методы могут быть полезны в тех случаях, когда стандартная конфигурация browse-url не работает должным образом. Однако стоит помнить, что такие обходные пути могут нарушать совместимость с другими пакетами, которые также используют browse-url.


Проверка и отладка конфигурации

Чтобы убедиться, что ваша конфигурация работает правильно, выполните следующие шаги:

  1. Проверка переменных: Добавьте в ваш init.el строки для вывода отладочной информации:
elisp
(message "browse-url-generic-program: %s" browse-url-generic-program)
(message "browse-url-browser-function: %s" browse-url-browser-function)
  1. Тестирование вручную: Запустите M-x browse-url и убедитесь, что открывается правильный браузер.

  2. Проверка порядка загрузки: Убедитесь, что настройки browse-url загружаются до того, как загружается Skewer mode.

  3. Использование describe-variable: Для проверки текущих значений переменных используйте M-x describe-variable.

Если после всех этих шагов проблема остается, возможно, стоит обратиться к GitHub репозиторию Skewer mode и проверить, нет ли похожих проблем у других пользователей.


Источники

  1. Skewer Mode GitHub Repository — Исходный код и документация по Skewer mode: https://github.com/skeeto/skewer-mode
  2. GNU Emacs Manual - Browse-URL — Официальная документация по механизму browse-url в Emacs: https://www.gnu.org/software/emacs/manual/html_node/emacs/Browse-URL.html
  3. Emacs Wiki - BrowseUrl — Сообщественная документация и решения проблем с browse-url: https://www.emacswiki.org/emacs/BrowseUrl

Заключение

Настройка Emacs с Skewer mode для использования конкретного браузера, такого как luakit, требует правильной конфигурации механизма browse-url. Проблемы с игнорированием настроек браузера обычно связаны с порядком загрузки конфигурации, переопределением переменных другими пакетами или особенностями работы самого браузера.

Основные решения включают:

  • Правильное размещение настроек browse-url-generic-program и browse-url-browser-function в init.el
  • Создание оберток для браузеров со специфической командной строкой
  • Разработка специализированных функций для выбора браузера
  • Использование альтернативных методов запуска браузера

Важно помнить, что Skewer mode сознательно использует стандартные механизмы Emacs для выбора браузера, поэтому решения лежат в области конфигурации Emacs, а не специфических настроек Skewer mode.

S

Skewer mode использует стандартный механизм Emacs browse-url для запуска браузера при выполнении команды run-skewer. В README проекта отсутствуют конкретные инструкции по настройке специфических браузеров, таких как luakit. Skewer mode не содержит встроенных настроек для выбора конкретного браузера, полагаясь на стандартные механизмы Emacs. Если настройки browse-url не применяются, проблема может быть связана с порядком загрузки конфигурации или спецификой работы browse-url в вашей системе.

В Emacs Wiki подробно описывается работа механизма browse-url, который используется Skewer mode для запуска браузера. Для настройки конкретного браузера, такого как luakit, необходимо правильно настроить переменные browse-url-generic-program и browse-url-browser-function в вашем init.el файле. Однако иногда Skewer mode может игнорировать эти настройки из-за особенностей реализации или порядка загрузки. В таких случаях рекомендуется проверить, что настройки применяются до загрузки Skewer mode, и рассмотреть возможность использования альтернативных методов, таких как создание собственной функции выбора браузера.

GNU Emacs Manual / Официальная документация

Официальная документация GNU Emacs объясняет, что browse-url является стандартным механизмом для открытия URL-адресов в браузере из Emacs. Skewer mode использует этот механизм для запуска браузера при выполнении JavaScript REPL. Если Skewer mode игнорирует настройки browse-url-generic-program и browse-url-browser-function, это может быть связано с тем, что эти переменные не были установлены до вызова функций Skewer mode. В документации рекомендуется устанавливать переменные браузера в ранней стадии загрузки Emacs, чтобы они были доступны для всех зависимых пакетов.

Авторы
Источники
GitHub / Хостинг кода
Хостинг кода
Документационная платформа
GNU Emacs Manual / Официальная документация
Официальная документация
Проверено модерацией
НейроОтветы
Модерация