Хобрук: Ваш путь к мастерству в программировании

Почему мой emacs лает (шум в конце файла)?

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

Каждый раз, когда я нажимаю конец буфера в emacs и нажимаю C-n, emacs лает, как собака. Я думаю, что лай, вероятно, является пользовательским звуковым файлом, созданным где-то для замены звука колокольчика, который есть по умолчанию. Однако я не знаю, где находится звуковой файл или настройки конфигурации.

Вот единственный файл конфигурации, который у меня есть:

init.el

;; Added by Package.el.  This must come before configurations of
;; installed packages.  Don't delete this line.  If you don't want it,
;; just comment it out by adding a semicolon to the start of the line.
;; You may delete these explanatory comments.
(package-initialize)

(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(gdb-many-windows t)
 '(gdb-show-main t)
 '(inhibit-startup-screen t)
 '(package-selected-packages '(slime nasm-mode org-roam zig-mode)))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

;; INIT.EL

;; Maximize the window on startup
(add-to-list 'default-frame-alist '(fullscreen . maximized))

;; Turn off backups
(setq make-backup-files nil)

;; Auto revert changed buffers
(global-auto-revert-mode 1)

;; source: http://steve.yegge.googlepages.com/my-dot-emacs-file
(defun rename-file-and-buffer (new-name)
  "Renames both current buffer and file it's visiting to NEW-NAME."
  (interactive "sNew name: ")
  (let ((name (buffer-name))
        (filename (buffer-file-name)))
    (if (not filename)
        (message "Buffer '%s' is not visiting a file!" name)
      (if (get-buffer new-name)
          (message "A buffer named '%s' already exists!" new-name)
        (progn
          (rename-file filename new-name 1)
          (rename-buffer new-name)
          (set-visited-file-name new-name)
          (set-buffer-modified-p nil))))))

;; source: https://stackoverflow.com/questions/38672928/how-to-set-emacs-up-for-assembly-programming-and-fix-indentation
(defun my-asm-mode-hook ()
  ;; you can use `comment-dwim' (M-;) for this kind of behaviour anyway
  (local-unset-key (vector asm-comment-char))
  ;; (local-unset-key "<return>") ; doesn't work. "RET" in a terminal.  http://emacs.stackexchange.com/questions/13286/how-can-i-stop-the-enter-key-from-triggering-a-completion-in-company-mode
  (electric-indent-local-mode)  ; toggle off
;  (setq tab-width 4)
  (setq indent-tabs-mode nil)
  ;; asm-mode sets it locally to nil, to "stay closer to the old TAB behaviour".
  ;; (setq tab-always-indent (default-value 'tab-always-indent))

  (defun asm-calculate-indentation ()
  (or
   ;; Flush labels to the left margin.
;   (and (looking-at "\\(\\.\\|\\sw\\|\\s_\\)+:") 0)
   (and (looking-at "[.@_[:word:]]+:") 0)
   ;; Same thing for `;;;' comments.
   (and (looking-at "\\s<\\s<\\s<") 0)
   ;; %if nasm macro stuff goes to the left margin
   (and (looking-at "%") 0)
   (and (looking-at "c?global\\|section\\|default\\|align\\|INIT_..X") 0)
   ;; Simple `;' comments go to the comment-column
   ;(and (looking-at "\\s<\\(\\S<\\|\\'\\)") comment-column)
   ;; The rest goes at column 4
   (or 4)))
  )

(add-hook 'asm-mode-hook #'my-asm-mode-hook)

(setq inferior-lisp-program "sbcl")

(windmove-default-keybindings)

(add-hook 'c-mode-hook #'display-fill-column-indicator-mode)

У меня два вопроса по этой проблеме:

  1. Как отключить эту функцию?
  2. Где emacs хранит конфигурацию для этого, если не в init.el?
03.03.2021

  • Смешной. Проверьте ring-bell-function. Возможно (setq visible-bell t). 03.03.2021
  • Если вы работаете под X, то xset b off отключит звонок - везде. И если вы работаете в какой-то среде рабочего стола, возможно, для нее есть приложение настроек, где вы можете управлять настройками звука. Я делаю все три: эти два и предложение в предыдущем комментарии :-) 04.03.2021
  • Разделите файл инициализации пополам, чтобы найти виновника. Очень быстро - это бинарный поиск. 04.03.2021
  • Во-первых, запустите emacs -Q и emacs -q и выясните, используется ли один и тот же звук в любом из этих случаев. Если нет, то это определенно вызвано вашей собственной конфигурацией Emacs. 05.03.2021

Ответы:


1

Скорее всего звук установлен где-то в вашей ОС по умолчанию.

Вот отличный ресурс для дальнейшей настройки того, срабатывает ли будильник и как: https://www.emacswiki.org/emacs/AlarmBell

Чтобы полностью отключить его: (setq ring-bell-function 'ignore)

04.03.2021
  • Да, оказывается, это было в разделе «Настройки Ubuntu» > «Внешний вид» > «Звук». Спасибо! 17.03.2021
  • Новые материалы

    Пожалуй, лучший пост, который я читал за последнее время.
    Пожалуй, лучший пост, который я читал за последнее время. Мне за 30, и я могу относиться к большей части истории. Действительно отличные идеи, которые помогли мне снова сосредоточиться на..

    100 дней кода машинного обучения — День 097
    Подведение итогов дня 096 В дни 095 и 096 мы говорили о том, как мы слышим звук в пространстве: время интерауральной задержки, передаточная функция, связанная с головой, а также мы говорили..

    Какова ваша «история данных»?
    Представление концепций продуктов для данных и машинного обучения заинтересованным сторонам и руководству Все любят данные. Все любят говорить, как будто понимают данные. Всем нравится..

    Все, что вам нужно знать о «Внимании» и «Трансформерах» — Углубленное понимание — Часть 2
    Внимание, Самостоятельное внимание, Многоголовое внимание, Маскированное многоголовое внимание, Трансформаторы, BERT и GPT В предыдущем рассказе я объяснил, что такое механизм внимания, а также..

    Расставание с локальным хранилищем
    Что такое локальное хранилище Локальное хранилище — это механизм, который позволяет веб-приложениям хранить данные на стороне клиента. Это часть API веб-хранилища, которое также включает в себя..

    CycleGAN: как машинное обучение обучает непарному преобразованию изображения в изображение
    Недавно я прочитал статью CycleGAN ( ссылка ), которая показалась мне очень интересной, потому что модели CycleGAN обладают невероятной способностью точно преобразовывать изображения во что-то, чем..

    «Изучение передовых технологий: подробный обзор последних инноваций в области технологий…
    Технологии постоянно развиваются, и последние инновации в технологической отрасли могут изменить наш образ жизни и работы так, как мы никогда не считали возможным. В этой статье подробно..