Как заполнить весь фрейм изображением?

#image #emacs #window

#изображение #emacs #окно

Вопрос:

Я создаю фрейм Emacs с (make-frame) и загружаю в него изображение. Когда я запускаю Emacs с -q опцией и запускаю свой скрипт, Emacs создает фрейм и заполняет весь фрейм изображением.

Однако, когда я запускаю это из своего обычного сеанса Emacs ( emacsclient ), Emacs вставляет 1 слева от изображения и создает столбец по всей высоте кадра слева от изображения:

Скриншот

Ниже приведен мой код для создания фрейма и вставки изображения:

 (defvar bckgimg "~/a.jpg" "Image used for desktop background")
(progn
    (setq backgr-frame
          (make-frame
           `((name . "background-frame")
             (width . ,(display-pixel-width))
             (height . ,(display-pixel-height))
             (undecorated . t)
             (fringe . nil)
             (below . t)
             (left-fringe . 0)
             (right-fringe . 0)
             (tool-bar-lines . 0)
             (menu-bar-lines . 0)
             (unsplittable . t)
             (mode-line . nil)
             (buffer-predicate . (lambda (x) nil))
             (internal-border-width . 0)
             (z-group . below)
             (visibility . nil)
             (skip-taskbar . t)
             (minibuffer . nil)
             (top . 0)
             (left . 0))))

    (with-selected-frame backgr-frame
            (toggle-frame-maximized)
            (lower-frame backgr-frame)
            (make-frame-visible backgr-frame)
            (with-output-to-temp-buffer "backgr"
                    (switch-to-buffer "backgr")
                    (setq mode-line-format nil)
                    (if (fboundp 'display-line-numbers-mode)
                                    (display-line-numbers-mode -1))
                    (if (fboundp 'linnum-mode)
                                    (linnum-mode -1))
                    (insert-image (create-image bckgimg
                                                'jpeg nil
                                                :width 3840)))))
  

Я просматриваю документы и ищу, но, похоже, не могу найти, как это исправить. Каким был бы код для отображения изображения без этого дополнительного столбца слева (зеленый на скриншоте)?

Комментарии:

1. Тег elisp предназначен не только для того, чтобы спросить, как сделать что-то, связанное с Emacs Lisp.

2. Извините, Дрю, я на самом деле не с вами. Для чего именно предназначен тег elisp, не определено, и я уверен, что он обозначает многие вещи. Я также уверен, что обращение за помощью по программированию elisp и Emacs API является ОДНОЙ из таких вещей, поэтому я совершенно уверен, что это должно быть помечено как emacs, так и elisp.

3. elisp Тег предназначен для вопросов конкретно о языке Emacs-Lisp, который является особым диалектом Lisp. Практически на каждый вопрос об использовании Emacs касается использования Elisp или на него можно ответить со ссылкой на код Elisp. Ваш вопрос о Emacs заключается в создании фрейма и вставке в него изображения. Ваш вопрос, естественно, включает код Elisp, как и ответы. Вопрос не о Elisp.

4. Если бы каждый вопрос Emacs, касающийся Elisp, был помечен тегом elisp , то тег был бы бессмысленным и бесполезным. Щелкните по тегу, чтобы увидеть, какие вопросы помечены им (и да, ваш вопрос не единственный, с которым он ошибочно помечен).

5. Кстати, возможно, вы захотите показать (например, ссылку на) созданное вами изображение и, возможно, изображение правильного внешнего вида, которое вы получаете с emacs -q и т.д. И изображение, на которое вы ссылаетесь, мне непонятно (FWIW) — похоже, оно не соответствует вашему описанию. Наконец, весь ли код, который вы включаете, необходим для воспроизведения проблемы? Если нет, то вы можете захотеть сократить его, чтобы помочь другим помочь вам.

Ответ №1:

Хорошо, я решил это с помощью кого-то из Reddit. Проблема была с номерами строк. У меня был включен режим глобального отображения номеров строк. Добавление

 (display-line-numbers-mode -1)
  

решает проблему. Я отредактировал приведенный выше код для правильного решения.