LINUX.ORG.RU

Прозрачные поля в Emacs

 ,


0

1

Здравствуйте!

У меня есть функция, которая сужает область ввода текста в Emacs Это очень удобно, потому что лист с текстом располагается по центру широкого экрана.

(defun fringe-toggle ()
  (interactive)
  (if (get 'fringe-toggle 'state)
      (progn
		(fringe-mode nil)
		(put 'fringe-toggle 'state nil))
    (progn 
		(fringe-mode (cons (/ (window-pixel-width) 6)
						   (/ (window-pixel-width) 6)	  
						   ))
		(put 'fringe-toggle 'state t))))

Возникла идея сделать полученные поля прозрачными. Такое возможно и как сделать если возможно?

Ответ на: комментарий от Zubok

Я задавал вопрос как сделать поля. Сейчас я задаю вопрос как сделать их прозрачными. Это разные вещи.

knigolaz
() автор топика
Ответ на: комментарий от knigolaz

Да то же самое. Если нужна прозрачность, то ставишь нужные margins. Скажем, левый и правый по пять. Но при этом у тебя fringes тоже сдвинутся на центр. Для того, чтобы их поставить по краям окна, надо вызвать set-window-fringes с последним параметром, установленным в t:

(set-window-fringes WINDOW LEFT-WIDTH &optional RIGHT-WIDTH OUTSIDE-MARGINS)

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от knigolaz

Где там про прозрачность? Функция которую я привел прекрасно работает, вопрос в оформлении.

Например, (set-face-attribute 'fringe nil :background nil)

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от knigolaz

Ты уточнил

сужает область ввода текста в Emacs Это очень удобно, потому что лист с текстом располагается по центру широкого экрана.

Встроенный auto-fill-mode это и делает. Можно произвольно задавать ширину ограничения по горизонтали, при этом цвет бекграунда не меняется.

Yorween
()
Ответ на: комментарий от Zubok

Я проверил это (set-face-attribute 'fringe nil :background nil) и понял где у нас точка недопонимания. Мне нужно чтобы сквозь поля просвечивал рабочий стол, как в scriviner. Я нашел вот такое:

 ;;(set-frame-parameter (selected-frame) 'alpha '(<active> . <inactive>))
 ;;(set-frame-parameter (selected-frame) 'alpha <both>)
 (set-frame-parameter (selected-frame) 'alpha '(85 . 50))
 (add-to-list 'default-frame-alist '(alpha . (85 . 50))) 
Возник вопрос можно ли это применить локально к полям. А ваши функции просто переносят текст по центру делая поля невидимыми, а не прозрачными.

knigolaz
() автор топика
Ответ на: комментарий от knigolaz

и понял где у нас точка недопонимания.

Из поста это никак не читается. Но сейчас более понятно, что имеется в виду.

Мне нужно чтобы сквозь поля просвечивал рабочий стол, как в scriviner.

Ума не приложу, что это и как это выглядит. Посмотрел первый попавшиеся скрины, но ничего не увидел.

Я нашел вот такое: (set-frame-parameter (selected-frame) 'alpha '(85 . 50))

Это сделает фрейм Emacs полностью прозрачным: и тескт, и фон. Сделать прозрачным только фон нельзя, по-моему.

Возник вопрос можно ли это применить локально к полям.

Нельзя.

Zubok ★★★★★
()

В данный момент это выглядит невозможным или почти невозможным.

Можно попробовать собрать emacs с неофициальным патчем https://github.com/wachikun/emacs_bgex , позволяющим использовать фоновое изображение для каждого отдельного буфера, и экспериментировать с ним, но это выглядит довольно сложной задачей.

raven_cler ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.