Changeset 3ec75a9 in dotfiles


Ignore:
Timestamp:
Sep 17, 2023, 3:21:53 PM (16 months ago)
Author:
Mikhail Kirillov <w96k@…>
Branches:
master
Children:
8676811
Parents:
864b0b5
Message:

Add exwm and clean config

File:
1 edited

Legend:

Unmodified
Added
Removed
  • emacs/.emacs.d/.emacs-config.org

    r864b0b5 r3ec75a9  
    254254#+end_src
    255255
     256** EXWM
     257
     258#+begin_src emacs-lisp :tangle init.el
     259  (require 'exwm)
     260  (require 'exwm-config)
     261  (exwm-config-example)
     262#+end_src
     263
     264
    256265** Редакируем GUI
    257266Удаляем ненужные бары, меняем шрифт и модлайн. Использую дефолтный для
     
    261270делает его использование крайне неприятным.
    262271
    263 #+begin_src emacs-lisp :tangle early-init.el
     272#+begin_src emacs-lisp :tangle nil
    264273  ;; Change mode-line-modes to show only major mode
    265274  (defvar mode-line-major-mode
     
    440449    ;; Configuration stored in another directory,
    441450    ;; so I need to move files .emacs.d manually
    442     (rename-file (concat config-dotfiles-path "early-init.el") config-path t)
     451    ;; (rename-file (concat config-dotfiles-path "early-init.el") config-path t)
    443452    (rename-file (concat config-dotfiles-path "init.el") config-path t))
    444  
     453
    445454  (defun config-load ()
    446455    (interactive)
     
    450459
    451460* Внешний вид
    452 Я использую по большей части стандартную тему имакса и стараюсь не менять стандартное поведение.
    453 ** Назначение шрифтов
    454 А также отступа между строк
    455 #+BEGIN_SRC emacs-lisp :tangle nil
    456   ;;; Set font
    457   (setq-default line-spacing 0)
    458 
    459   (set-language-environment "UTF-8")
    460   (set-default-coding-systems 'utf-8-unix)
    461 
    462   (add-to-list 'default-frame-alist
    463              '(font . "Jetbrains Mono-14"))
    464 
    465   (setq mouse-wheel-progressive-speed nil)
    466 #+END_SRC
    467461
    468462** Отображение номера строк и пробелов
     
    475469    (kbd "<f6>") 'whitespace-mode)
    476470#+END_SRC
    477 
    478 ** Скроллинг
    479 Помечает на время часть старого буфера при скроллинге.
    480 #+BEGIN_SRC emacs-lisp :tangle nil
    481   (when (package-loaded? "on-screen")
    482     (on-screen-global-mode t))
    483 
    484   (customize-set-variable 'fast-but-imprecise-scrolling t)
    485   (customize-set-variable 'scroll-conservatively 101)
    486   (customize-set-variable 'scroll-margin 0)
    487   (customize-set-variable 'scroll-preserve-screen-position t)
    488 #+END_SRC
    489 ** Объединение эхо зоны и модлайна
    490 #+begin_src emacs-lisp :tangle nil
    491   (when (package-loaded? "mini-modeline")
    492     (setq mini-modeline-r-format
    493           '("%e"
    494             mode-line-front-space
    495 
    496             mode-line-mule-info
    497             mode-line-client
    498             mode-line-modified
    499             mode-line-remote
    500 
    501             mode-line-frame-identification
    502             ;;long-path
    503             ;; mode-line-buffer-identification
    504             mode-line-misc-info
    505 
    506             mode-line-frame-identification
    507             mode-line-major-mode
    508 
    509             mode-line-frame-identification
    510             vc-mode
    511             mode-line-frame-identification
    512 
    513             mode-line-position))
    514 
    515     (setq mini-modeline-display-gui-line nil)
    516     (mini-modeline-mode))
    517 #+end_src
    518 
    519 ** Отображать полный путь в header line
    520 #+begin_src emacs-lisp :tangle nil
    521   (defun with-face (str &rest face-plist)
    522     (propertize str 'face face-plist))
    523 
    524   (defun sl/make-header ()
    525     ""
    526     (let* ((sl/full-header (abbreviate-file-name buffer-file-name))
    527            (sl/header (file-name-directory sl/full-header))
    528            (sl/drop-str "[...]"))
    529       (if (> (length sl/full-header)
    530              (window-body-width))
    531           (if (> (length sl/header)
    532                  (window-body-width))
    533               (progn
    534                 (concat (with-face sl/drop-str
    535                                    :background "blue"
    536                                    :weight 'bold
    537                                    )
    538                         (with-face (substring sl/header
    539                                               (+ (- (length sl/header)
    540                                                     (window-body-width))
    541                                                  (length sl/drop-str))
    542                                               (length sl/header))
    543                                    ;; :background "red"
    544                                    :weight 'bold
    545                                    )))
    546             (concat (with-face sl/header
    547                                ;; :background "red"
    548                                :foreground "#8fb28f"
    549                                :weight 'bold
    550                                )))
    551         (concat (with-face sl/header
    552                            ;; :background "green"
    553                            ;; :foreground "black"
    554                            :weight 'bold
    555                            :foreground "#8fb28f"
    556                            )
    557                 (with-face (file-name-nondirectory buffer-file-name)
    558                            :weight 'bold
    559                            ;; :background "red"
    560                            )))))
    561 
    562   (defun sl/display-header ()
    563     (setq header-line-format
    564           '("" ;; invocation-name
    565             (:eval (if (buffer-file-name)
    566                        (sl/make-header)
    567                      "%b")))))
    568 
    569   (add-hook 'buffer-list-update-hook
    570             'sl/display-header)
    571 #+end_src
    572471
    573472* Редактирование
     
    599498
    600499*** Flycheck
    601 #+BEGIN_SRC emacs-lisp :tangle init.el
     500#+BEGIN_SRC emacs-lisp :tangle nil
    602501  ;; (require 'psalm)
    603502
     
    648547** Дерево imenu
    649548#+begin_src emacs-lisp :tangle init.el
    650   (when (package-loaded? "imenu-list")
    651     (setq imenu-list-focus-after-activation nil
    652           imenu-list-auto-resize nil
    653           imenu-list-mode-line-format '()
    654           imenu-list-size 0.4)
    655     (global-set-key (kbd "C-x C-d") #'imenu-list-smart-toggle))
     549    ;; (when (package-loaded? "imenu-list")
     550      (setq imenu-list-focus-after-activation nil
     551            imenu-list-auto-resize nil
     552            imenu-list-mode-line-format '()
     553            imenu-list-size 0.4)
     554      (global-set-key (kbd "C-x C-d") #'imenu-list-smart-toggle)
     555  ;; )
    656556#+end_src
    657557
     
    692592
    693593  (package-loaded? "git-timemachine")
    694 #+END_SRC
    695    
    696 *** Пометки о модифицированных строках
    697 Если строка добавлена, удалена или отредактирована относительно
    698 текущего git проекта, то строка помечается зеленым, красным или
    699 желтым цветом соответственно.
    700 
    701 #+BEGIN_SRC emacs-lisp :tangle nil
    702   ;;; Show added & removed git lines
    703   (when (package-loaded? "git-gutter")
    704     (progn
    705       (global-set-key (kbd "<f9>") 'git-gutter-mode)
    706 
    707       (setq git-gutter-window-width 1)
    708 
    709       (with-eval-after-load "git-gutter"
    710         '(set-face-background 'git-gutter:added "#99cc99")
    711         '(set-face-background 'git-gutter:deleted "#f2777a")
    712         '(set-face-background 'git-gutter:modified "#ffcc66")
    713         '(set-face-background 'git-gutter:unchanged "#f6f5f4"))
    714 
    715       (custom-set-variables
    716        '(git-gutter:modified-sign " ")
    717        '(git-gutter:unchanged-sign " ")
    718        '(git-gutter:added-sign " ")
    719        '(git-gutter:deleted-sign " "))))
    720594#+END_SRC
    721595
     
    804678** Дополнение
    805679** Дебаггер
    806 #+begin_src emacs-lisp :tangle init.el
     680#+begin_src emacs-lisp :tangle nil
    807681  (when (package-loaded? "realgud")
    808682    (load "~/.emacs.d/site-lisp/realgud-xdebug/realgud-xdebug.el"))
    809683#+end_src
    810684
    811 #+begin_src emacs-lisp :tangle init.el
     685#+begin_src emacs-lisp :tangle nil
    812686  (when (package-loaded? "geben")
    813687    (setq geben-dbgp-default-port 9003))
     
    816690*** Автодополнение кода и документация
    817691По большей части я использую дефолтный Completion Buffer и Corfu
    818 #+begin_src elisp :tangle init.el
     692#+begin_src elisp :tangle nil
    819693  (when (package-loaded? "corfu")
    820694    (progn
     
    850724#+end_src
    851725*** Модификация дефолта
    852 #+BEGIN_SRC emacs-lisp :tangle init.el
     726#+BEGIN_SRC emacs-lisp :tangle nil
    853727  (setq completion-styles '(basic partial-completion substring flex emacs22)
    854728        completion-ignore-case t
     
    860734  (setq aggressive-completion-delay 0.5)
    861735  (aggressive-completion-mode t)
    862 #+END_SRC
    863 *** HELM (не используется)
    864 #+BEGIN_SRC emacs-lisp :results nil :tangle nil
    865   (load "helm-autoloads")
    866 
    867   (setq helm-completion-style 'emacs
    868         helm-no-header t)
    869 
    870   (global-set-key (kbd "M-x")     #'helm-M-x)
    871   (global-set-key (kbd "C-x r b") #'helm-filtered-bookmarks)
    872   (global-set-key (kbd "C-x C-f") #'helm-find-files)
    873   (global-set-key (kbd "C-x C-b") #'helm-buffers-list)
    874   (global-set-key (kbd "C-s")     #'helm-occur)
    875   (global-set-key (kbd "M-y")     #'helm-show-kill-ring)
    876   (global-set-key (kbd "C-x b")   #'helm-mini)
    877 
    878   (define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action)
    879   (define-key helm-map (kbd "C-i")   'helm-execute-persistent-action)
    880   (define-key helm-map (kbd "C-z")   'helm-select-action)
    881   (define-key minibuffer-local-map (kbd "C-c C-l") 'helm-minibuffer-history)
    882 
    883   (setq helm-display-header-line          nil
    884         helm-split-window-in-side-p       t
    885         helm-echo-input-in-header-line    t
    886         helm-display-source-at-screen-top nil
    887         helm-autoresize-max-height        50
    888         helm-autoresize-min-height        5)
    889 
    890   (helm-adaptive-mode)
    891   (helm-autoresize-mode 1)
    892 
    893   (add-hook 'eshell-mode-hook
    894             (lambda ()
    895               (eshell-cmpl-initialize)
    896               (define-key eshell-mode-map (kbd "C-c C-l")  'helm-eshell-history)
    897               (define-key eshell-mode-map [remap eshell-pcomplete] 'helm-esh-pcomplete)
    898               (define-key eshell-mode-map (kbd "M-p") 'helm-eshell-history)))
    899 
    900   (add-hook 'eshell-mode-hook
    901             (lambda ()
    902               (define-key eshell-mode-map
    903                 (kbd "M-p")
    904                 'helm-eshell-history)))
    905 
    906   (defun pcomplete/sudo ()
    907     (let ((prec (pcomplete-arg 'last -1)))
    908       (cond ((string= "sudo" prec)
    909              (while (pcomplete-here*
    910                      (funcall pcomplete-command-completion-function)
    911                      (pcomplete-arg 'last) t))))))
    912 
    913   (helm-mode 1)
    914 
    915736#+END_SRC
    916737** Полнотекстовый поиск
     
    946767
    947768** Клиент LSP
    948 #+begin_src emacs-lisp :tangle init.el
     769#+begin_src emacs-lisp :tangle nil
    949770  (with-eval-after-load 'eglot
    950771    (add-to-list 'eglot-server-programs '((php-mode phps-mode) . ("~/projects/phpactor/bin/phpactor" "language-server" "-vvv")))
     
    967788
    968789** Линтеры
    969 #+begin_src emacs-lisp :tangle init.el
     790#+begin_src emacs-lisp :tangle nil
    970791  (defun my-php-mode-setup ()
    971792    "My PHP-mode hook."
     
    1055876
    1056877** Быстрый запуск программы
    1057 #+begin_src emacs-lisp
     878#+begin_src emacs-lisp :tangle init.el
    1058879  (when (package-loaded? "quickrun")
    1059880    (define-key global-map (kbd "C-c C-c") 'quickrun))
     
    1064885** Common Lisp
    1065886*** REPL
    1066 #+BEGIN_SRC emacs-lisp :tangle init.el
     887#+BEGIN_SRC emacs-lisp :tangle nil
    1067888  (load "sly-autoloads")
    1068889
     
    1074895
    1075896** Erlang
    1076 #+BEGIN_SRC emacs-lisp :taemngle nil
     897#+BEGIN_SRC emacs-lisp :tangle nil
    1077898  (load "erlang-autoloads")
    1078899#+END_SRC
     
    1094915** Python
    1095916*** Автодополнение и линт
    1096 #+BEGIN_SRC emacs-lisp :tangle init.el
     917#+BEGIN_SRC emacs-lisp :tangle nil
    1097918  (when (package-loaded? "anaconda-mode")
    1098919    (progn
     
    1124945Необходимо скачать и распаковать мануал PHP (в формате html) в
    1125946директорию ~~/.emacs.d/php-manual/~.
    1126 #+begin_src emacs-lisp :tangle init.el
     947#+begin_src emacs-lisp :tangle nil
    1127948  ;; (add-to-list 'load-path "~/.emacs.d/site-lisp/realgud-xdebug/")
    1128949  ;; (require 'realgud-xdebug)
     
    14501271* Коммуникации
    14511272** Telega
    1452 #+BEGIN_SRC emacs-lisp :tangle nil
     1273#+BEGIN_SRC emacs-lisp :tangle init.el
    14531274  (when (package-loaded? "telega")
    14541275    (setq telega-filter-custom-show-folders t
     
    14971318
    14981319*** Автодополнение в echo при M-x и других командах
    1499 #+begin_src emacs-lisp :tangle nil
     1320#+begin_src emacs-lisp :tangle init.el
    15001321  (icomplete-mode 1)
    15011322#+end_src
     
    15721393
    15731394*** Меню
    1574 По неизвестным причинам навигация в меню при помощи биндов Emacs
    1575 не работает
    1576 #+BEGIN_SRC emacs-lisp :tangle init.el
    1577   ;; GTK menu doesn't allow emacs-style navigation
    1578   (define-key global-map (kbd "<f10>") 'tmm-menubar)
    1579 #+END_SRC
    1580 
    15811395*** Сохранять временные файлы не в той же директории
    15821396#+BEGIN_SRC emacs-lisp :tangle init.el
     
    16371451
    16381452** Браузер
    1639 #+begin_src emacs-lisp :tangle init.el
     1453#+begin_src emacs-lisp :tangle nil
    16401454  (setq browse-url-browser-function #'eww-browse-url)
    16411455
     
    16901504#+end_src
    16911505
    1692 ** Vim
    1693 #+begin_src emacs-lisp :tangle init.el
    1694   (add-to-list 'auto-mode-alist '("\\.vim\\(rc\\)?\\'" . vimrc-mode))
    1695 #+end_src
    16961506** Direnv
    16971507#+BEGIN_SRC emacs-lisp :tangle nil
     
    17671577
    17681578** Длинные строки
    1769 #+begin_src emacs-lisp :tangle init.el
     1579#+begin_src emacs-lisp :tangle nil
    17701580  ;; Better support for files with long lines
    17711581  (setq-default bidi-paragraph-direction 'left-to-right)
Note: See TracChangeset for help on using the changeset viewer.