;;; ;;; Настройки Emacs по умолчанию для компьютеров вычислительной ;;; системы кафедры ИМО ПетрГУ. ;;; ;;; Михаил Крышень, 2018-2020. ;;; ;;; ;;; Почта ;;; ;; Default IMAP server settings (setq gnus-select-method '(nnimap "cs-mail" (nnimap-address "mail.cs.petrsu.ru") (nnimap-server-port 993) (nnimap-stream ssl))) ;; Default SMTP server settings (require 'smtpmail) (setq send-mail-function 'smtpmail-send-it) (setq message-send-mail-function 'smtpmail-send-it) (setq smtpmail-default-smtp-server "mail.cs.petrsu.ru") (setq smtpmail-smtp-server "mail.cs.petrsu.ru") (setq smtpmail-stream-type 'ssl) (setq smtpmail-smtp-service 465) ;;; ;;; Selectrum ;;; (selectrum-mode +1) (selectrum-prescient-mode +1) (prescient-persist-mode +1) (setq projectile-completion-system 'default) ;; Выключить эти подсказки, т. к. они не соответствуют поведению Selectrum. (setq extended-command-suggest-shorter nil) ;;; ;;; Лисп ;;; ;; Ввод λ в режиме racket. (add-hook 'racket-mode-hook (lambda () (define-key racket-mode-map "\C-c\\" 'racket-insert-lambda))) (add-hook 'racket-repl-mode-hook (lambda () (define-key racket-repl-mode-map "\C-c\\" 'racket-insert-lambda))) ;; racket-xp-mode (setq racket-xp-after-change-refresh-delay 2) (add-hook 'racket-xp-mode-hook (lambda () (remove-hook 'pre-redisplay-functions #'racket-xp-pre-redisplay t))) (add-hook 'racket-mode-hook #'racket-xp-mode) ;; ;; Включение paredit для различных режимов, работающих с кодом на ;; ;; языках семества Лисп. ;; (autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t) ;; (add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode) ;; (add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode) ;; (add-hook 'ielm-mode-hook #'enable-paredit-mode) ;; (add-hook 'lisp-mode-hook #'enable-paredit-mode) ;; (add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode) ;; (add-hook 'scheme-mode-hook #'enable-paredit-mode) ;; (add-hook 'geiser-repl-mode-hook #'enable-paredit-mode) ;; (add-hook 'clojure-mode-hook #'enable-paredit-mode) ;; (add-hook 'cider-repl-mode-hook #'enable-paredit-mode) ;; (add-hook 'racket-mode-hook #'enable-paredit-mode) ;; (add-hook 'racket-repl-mode-hook #'enable-paredit-mode) (require 'smartparens-config) (setq sp-highlight-wrap-overlay nil) (setq sp-highlight-pair-overlay nil) (setq sp-highlight-wrap-tag-overlay nil) ;; (sp-use-smartparens-bindings) (sp-use-paredit-bindings) (show-smartparens-global-mode +1) (add-hook 'emacs-lisp-mode-hook #'turn-on-smartparens-mode) (add-hook 'eval-expression-minibuffer-setup-hook #'turn-on-smartparens-mode) (add-hook 'ielm-mode-hook #'turn-on-smartparens-mode) (add-hook 'lisp-mode-hook #'turn-on-smartparens-mode) (add-hook 'lisp-interaction-mode-hook #'turn-on-smartparens-mode) (add-hook 'scheme-mode-hook #'turn-on-smartparens-mode) (add-hook 'geiser-repl-mode-hook #'turn-on-smartparens-mode) (add-hook 'clojure-mode-hook #'turn-on-smartparens-mode) (add-hook 'cider-repl-mode-hook #'turn-on-smartparens-mode) (add-hook 'racket-mode-hook #'turn-on-smartparens-mode) (add-hook 'racket-repl-mode-hook #'turn-on-smartparens-mode) ;;; ;;; Guix ;;; ;; Использовать актуальный Guix из профиля root, если у пользователя ;; нет своего. (let ((current-guix "/var/guix/profiles/per-user/root/current-guix")) (if (and (not (file-exists-p "~/.config/guix/current")) (file-exists-p current-guix)) (setq guix-load-path (concat current-guix "/share/guile/site/3.0") guix-load-compiled-path (concat current-guix "/lib/guile/3.0/site-ccache")))) ;;; ;;; Разное ;;; ;; Показывать соответствие скобок. ;; (show-paren-mode) ;; -- заменено на show-smartparens-global-mode ;; Автоматически перезагружать измененные файлы (например, после ;; использования indent). (global-auto-revert-mode) ;; Автоматически сохранять файлы при компиляции. (setq compilation-ask-about-save nil) ;; Enable C and Shell in Org Babel ;; (org-babel-do-load-languages ;; 'org-babel-load-languages ;; '((emacs-lisp . t) ;; (C . t) ;; (shell . t))) ;; Stroustrup style (variant of K&R) by default. (setq c-default-style '((java-mode . "java") (awk-mode . "awk") (other . "stroustrup"))) ;; GNU Assembler comments (setq asm-comment-char ?\#) ;; Use the many windows layout in GDB UI by default ;;(setq gdb-many-windows t) ;; Показывать исходный код сразу после запуска отладчика. (setq gdb-show-main t) ;; Включение режима автодополнений. (add-hook 'after-init-hook #'global-company-mode) ;; Не проверять Racket — тормозит. (setq flycheck-disabled-checkers '(racket)) ;; GCC без локализации сообщений. (setq flycheck-c/c++-gcc-executable (expand-file-name "gcc-en.sh" (file-name-directory load-file-name))) ;; Включить Flycheck для всего. (add-hook 'after-init-hook #'global-flycheck-mode) ;; Smart-mode-line — аккуратная реализация статусной строки. ;; Выключить замены путей (не всегда очевидные) в SML. (setq sml/replacer-regexp-list '()) (setq sml/no-confirm-load-theme t) (sml/setup) ;; Не показывать заставку, если открываем файл. ;; https://emacs.stackexchange.com/a/32910 (add-hook 'command-line-functions (lambda () (ignore (setq inhibit-startup-screen t)))) ;; Просматривать DVI с помощью evince (вместо xdvi). (setq tex-dvi-view-command "evince") ;; Использовать web-mode для PHP и др. (add-to-list 'auto-mode-alist '("\\.php\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))