From c60d01933ea2c2193fbfa6180545dccf6d245fdc Mon Sep 17 00:00:00 2001 From: Marat Date: Sun, 27 Oct 2024 00:29:18 +0600 Subject: [PATCH] update --- .../files/config/nvim/lua/some/packer.lua | 36 +- .../config/nvim/lua/some/packer_setting.lua | 5 +- roles/dots/files/home/.bashrc | 4 +- roles/dots/files/home/.emacs.d/config.org | 451 +++++++++++------- .../dots/files/home/.emacs.d/lan/python-cf.el | 1 - .../files/home/.emacs.d/lan/python-cf.org | 10 +- roles/dots/files/home/.xinitrc | 11 +- roles/dots/files/home/bin/easy_http.py | 3 +- roles/dots/files/home/bin/firefox_profiles.sh | 4 +- roles/dots/files/home/bin/rofi | 4 +- 10 files changed, 336 insertions(+), 193 deletions(-) diff --git a/roles/dots/files/config/nvim/lua/some/packer.lua b/roles/dots/files/config/nvim/lua/some/packer.lua index 6301983..2fb61fe 100755 --- a/roles/dots/files/config/nvim/lua/some/packer.lua +++ b/roles/dots/files/config/nvim/lua/some/packer.lua @@ -21,6 +21,7 @@ return require('packer').startup(function(use) use 'chriskempson/vim-tomorrow-theme' use 'maxmx03/solarized.nvim' use 'antonk52/lake.nvim' + use 'cocopon/iceberg.vim' -- auto save use 'pocco81/auto-save.nvim' @@ -66,21 +67,40 @@ return require('packer').startup(function(use) use 'dense-analysis/ale' -- lsp + -- use { + -- 'VonHeikemen/lsp-zero.nvim', + -- branch = 'v3.x', + -- requires = { + -- {'williamboman/mason.nvim'}, + -- {'williamboman/mason-lspconfig.nvim'}, + + -- {'neovim/nvim-lspconfig'}, + -- {'hrsh7th/nvim-cmp'}, + -- {'hrsh7th/cmp-nvim-lsp'}, + -- {'L3MON4D3/LuaSnip'}, + -- } + -- } + -- snippet + -- use 'honza/vim-snippets' use { 'VonHeikemen/lsp-zero.nvim', - branch = 'v3.x', requires = { + -- LSP Support + {'neovim/nvim-lspconfig'}, {'williamboman/mason.nvim'}, {'williamboman/mason-lspconfig.nvim'}, - {'neovim/nvim-lspconfig'}, + -- Autocompletion {'hrsh7th/nvim-cmp'}, {'hrsh7th/cmp-nvim-lsp'}, - {'L3MON4D3/LuaSnip'}, + {'hrsh7th/cmp-buffer'}, + {'hrsh7th/cmp-path'}, + {'saadparwaiz1/cmp_luasnip'}, -- интеграция с LuaSnip + {'hrsh7th/cmp-nvim-lua'}, + + -- Snippets + {'L3MON4D3/LuaSnip'}, -- сам LuaSnip + {'rafamadriz/friendly-snippets'}, -- набор готовых сниппетов } - } - -- snippet - use 'honza/vim-snippets' + } end) - - diff --git a/roles/dots/files/config/nvim/lua/some/packer_setting.lua b/roles/dots/files/config/nvim/lua/some/packer_setting.lua index 5400176..6a49863 100755 --- a/roles/dots/files/config/nvim/lua/some/packer_setting.lua +++ b/roles/dots/files/config/nvim/lua/some/packer_setting.lua @@ -11,7 +11,9 @@ vim.g.everforest_background = 'hard' -- vim.cmd('colorscheme doom-one') -- vim.cmd('colorscheme dracula-soft') -- vim.cmd('colorscheme solarized') +-- vim.cmd('colorscheme gruvbox') vim.cmd('colorscheme gruvbox') +-- vim.cmd('colorscheme iceberg') -- vim.cmd('colorscheme lake') -- vim.cmd('highlight Normal guibg=#000000 ctermbg=black') vim.api.nvim_set_hl(0, 'CursorLine', { underline = true }) @@ -148,12 +150,11 @@ cmp.setup({ formatting = cmp_format, }) - -- to learn how to use mason.nvim -- read this: https://github.com/VonHeikemen/lsp-zero.nvim/blob/v3.x/doc/md/guide/integrate-with-mason-nvim.md require('mason').setup({}) require('mason-lspconfig').setup({ - ensure_installed = {}, + ensure_installed = { 'pyright', 'gopls' }, handlers = { function(server_name) require('lspconfig')[server_name].setup({}) diff --git a/roles/dots/files/home/.bashrc b/roles/dots/files/home/.bashrc index caf5dff..3d69252 100644 --- a/roles/dots/files/home/.bashrc +++ b/roles/dots/files/home/.bashrc @@ -13,7 +13,8 @@ alias grep='grep --color=auto' echo "" # PS1="[\w] ($(git branch 2>/dev/null | grep '^*' | colrm 1 2)) \n-> " -PS1='[\w]$(git rev-parse --is-inside-work-tree &>/dev/null && echo " ($(git branch 2>/dev/null | grep '\''^\*'\'' | colrm 1 2))") \n-> ' +# PS1='[\w]$(git rev-parse --is-inside-work-tree &>/dev/null && echo " ($(git branch 2>/dev/null | grep '\''^\*'\'' | colrm 1 2))") \n-> ' +PS1='\w$(git rev-parse --is-inside-work-tree &>/dev/null && echo " ($(git branch 2>/dev/null | grep '\''^\*'\'' | colrm 1 2))") $ ' export VISUAL=nvim export EDITOR="$VISUAL" @@ -79,6 +80,7 @@ bind '"jk":"\e"' alias v='nvim' alias s='exa -al --color=always --group-directories-first' alias c='clear' +alias e='exit' # pyenv alias en='source ../../env/bin/activate' diff --git a/roles/dots/files/home/.emacs.d/config.org b/roles/dots/files/home/.emacs.d/config.org index 7e39e7e..31fe8ae 100644 --- a/roles/dots/files/home/.emacs.d/config.org +++ b/roles/dots/files/home/.emacs.d/config.org @@ -8,7 +8,6 @@ - [[#main-packages][main packages]] - [[#general-keybindings][General keybindings]] - [[#evil-mode][Evil Mode]] - - [[#pojectile][pojectile]] - [[#ivy][Ivy]] - [[#counsel][Counsel]] - [[#dired][dired]] @@ -17,14 +16,11 @@ - [[#perspective][perspective]] - [[#anzu][anzu]] - [[#doom-modeline][doom-modeline]] - - [[#perfect-margin][Perfect margin]] - [[#neotree][NeoTree]] - - [[#latex-pdf][Latex (pdf)]] -- [[#keybinds][KeyBinds]] - - [[#file][file]] - - [[#marks--org-tangle][marks / org tangle]] + - [[#file-copy-file-open-file-in-dired][file (copy file, open file in dired)]] + - [[#bm-marks--org-tangle][bm-marks / org tangle]] + - [[#project--projectile][project / projectile]] - [[#buffer--bookmarks--harpoon][buffer & bookmarks & harpoon]] - - [[#project][project]] - [[#sudo-edit--code-sudo-editsplitperfect-marginjson][Sudo Edit & code (sudo edit/split/perfect margin/json)]] - [[#magit][Magit]] - [[#org-settings][ORG settings]] @@ -49,14 +45,14 @@ - [[#evil-snipe][evil-snipe]] - [[#org-chckbox-hl][org chckbox hl]] - [[#hl-todo][hl-todo]] -- [[#music][Music]] +- [[#programs][Programs]] - [[#emms][emms]] + - [[#latex-pdf][Latex (pdf)]] - [[#scripts][scripts]] - [[#add-projectile-project][add projectile project]] - [[#rest][REST]] - [[#insert-some-text][insert some text]] - [[#open-terminal][open terminal]] -- [[#tood][TOOD]] * auto install packages #+begin_src emacs-lisp @@ -238,15 +234,6 @@ https://github.com/emacs-evil/evil "l l" 'evil-scroll-line-to-center) #+end_src -** pojectile -#+begin_src emacs-lisp -(use-package projectile - :ensure t - :init - (projectile-mode +1) - :config - (setq projectile-completion-system 'ivy)) -#+end_src ** Ivy *** Setup @@ -273,8 +260,6 @@ https://github.com/emacs-evil/evil (package-refresh-contents) (package-install 'counsel)) -;; (setq counsel-fzf-cmd "find . -type f -not -path '*/.*' 2>&1 | grep -v 'Permission denied' | fzf -f '%s'") -;; (setq counsel-fzf-cmd "find . -type f -not -path '*/.*' 2>&1 | grep -v 'Permission denied' | grep -v './env/' | fzf -f '%s'") (setq counsel-fzf-cmd (concat "find . -type f -not -path '*/.*' 2>&1 | " @@ -301,15 +286,28 @@ https://github.com/emacs-evil/evil ** dired *** setup +(setq dired-listing-switches "-alXGh --group-directories-first": + Определяет параметры, которые передаются команде ls для отображения содержимого директорий. + -a: Показывает все файлы, включая скрытые (начинающиеся с точки). + -l: Выводит в длинном формате, показывая дополнительные детали (размер, дата, права и т.д.). + -X: Сортирует файлы по расширению. + -G: Отключает цвета в выводе (если они поддерживаются). + -h: Показывает размеры в человекочитаемом формате (например, 1K, 234M). + --group-directories-first: Сначала отображает директории, затем файлы. +(setq dired-recursive-copies 'always): + Устанавливает режим рекурсивного копирования для dired на "всегда", что означает, что при копировании директорий все их содержимое будет скопировано рекурсивно. +(setq dired-recursive-deletes 'top): + Определяет поведение для рекурсивного удаления. Установлено на "top", что означает, что при удалении директории будет предложено удалить её содержимое (файлы и поддиректории) перед удалением самой директории. +(setq global-auto-revert-non-file-buffers t): + Включает автоматическое обновление (рефреш) буферов, не относящихся к файлам, например, таких как dired, если они изменяются на диске. Это помогает поддерживать актуальность отображаемой информации. +(setq auto-revert-verbose nil): + Отключает вывод сообщений о том, что буфер был обновлен. Это может уменьшить количество сообщений в минибуфере. +(setq dired-dwim-target t): + Включает "do what I mean" (DWIM) поведение для установки целевого пути. Это значит, что при использовании команды dired для перемещения или копирования файлов, Emacs попытается автоматически угадать, куда вы хотите переместить файлы, основываясь на контексте. +(setq wdired-allow-to-change-permissions t): + Разрешает изменять права доступа на файлы и директории в режиме wdired, который позволяет редактировать файлы в dired в текстовом режиме. #+begin_src emacs-lisp (require 'dired) - -(defun dired-open-file-in-new-tab () - "Open the current file in dired in a new tab." - (interactive) - (tab-new) - (dired-find-file)) - (setq dired-listing-switches "-alXGh --group-directories-first" dired-recursive-copies 'always dired-recursive-deletes 'top @@ -320,8 +318,6 @@ https://github.com/emacs-evil/evil #+end_src - - *** открыть файл в вертикально разделенном экране #+begin_src emacs-lisp (defun dired-open-split-horizontal () @@ -345,7 +341,30 @@ https://github.com/emacs-evil/evil (evil-define-key 'normal dired-mode-map (kbd "h") 'dired-up-directory) #+end_src -*** копировать текущий путь + + +*** dired subtree +#+begin_src emacs-lisp +(require 'dired-subtree) + +(evil-define-key 'normal dired-mode-map (kbd "i") 'dired-subtree-insert) +(evil-define-key 'normal dired-mode-map (kbd "r") 'dired-subtree-remove) + +#+end_src + +*** открыть pcmanfm +#+begin_src emacs-lisp +(defun dired-open-pcmanfm () + "Open the current directory in Dired with PCManFM." + (interactive) + (let ((current-dir (dired-current-directory))) + (start-process "nautilus" nil "nautilus" current-dir))) + +(define-key dired-mode-map (kbd "C-c o") 'dired-open-pcmanfm) + +#+end_src + +*** функция для копирования текущего пути #+begin_src emacs-lisp (defun copy-current-file-path-to-clipboard () "Copy the current buffer file name to the clipboard." @@ -358,29 +377,7 @@ https://github.com/emacs-evil/evil (message "Copied buffer file name '%s' to the clipboard." filename)))) #+end_src -*** dired subtree -#+begin_src emacs-lisp -(require 'dired-subtree) - -(evil-define-key 'normal dired-mode-map (kbd "i") 'dired-subtree-insert) -(evil-define-key 'normal dired-mode-map (kbd "r") 'dired-subtree-remove) -(evil-define-key 'normal dired-mode-map (kbd "o") 'dired-open-file-in-new-tab) - -#+end_src - -*** открыть pcmanfm -#+begin_src emacs-lisp -(defun dired-open-pcmanfm () - "Open the current directory in Dired with PCManFM." - (interactive) - (let ((current-dir (dired-current-directory))) - (start-process "pcmanfm" nil "pcmanfm" current-dir))) - -(define-key dired-mode-map (kbd "C-c o") 'dired-open-pcmanfm) - -#+end_src - -*** dired hot keys +*** KeyBind #+begin_src emacs-lisp (spc-leader "d" '(:ignore t :wk "dired") @@ -406,24 +403,28 @@ https://github.com/emacs-evil/evil (use-package openwith :ensure t :config + (openwith-mode t) + ;; :defer t + ) -(openwith-mode t) -(setq openwith-associations - (list (list (openwith-make-extension-regexp '("pdf" "djvu")) - "atril" '(file)) - (list (openwith-make-extension-regexp '("flac" "mp3" "wav")) - "vlc" '(file)) - (list (openwith-make-extension-regexp '("bmp" "jpeg" "jpg" "png")) - "vimiv" '(file)) - (list (openwith-make-extension-regexp '("mpv" "mkv" "mp4")) - "mpv" '(file)) - (list (openwith-make-extension-regexp '("doc" "docx" "odt")) - "libreoffice" '("--writer" file)) - (list (openwith-make-extension-regexp '("ods" "xls" "xlsx")) - "libreoffice" '("--calc" file)) - (list (openwith-make-extension-regexp '("odp" "pps" "ppt" "pptx")) - "libreoffice" '("--impress" file)) - ))) +(defun activate-openwith() + (setq openwith-associations + (list (list (openwith-make-extension-regexp '("pdf" "djvu")) + "atril" '(file)) + ;; (list (openwith-make-extension-regexp '("flac" "mp3" "wav")) + ;; "vlc" '(file)) + (list (openwith-make-extension-regexp '("bmp" "jpeg" "jpg" "png")) + "vimiv" '(file)) + (list (openwith-make-extension-regexp '("mpv" "mkv" "mp4")) + "mpv" '(file)) + (list (openwith-make-extension-regexp '("doc" "docx" "odt")) + "libreoffice" '("--writer" file)) + (list (openwith-make-extension-regexp '("ods" "xls" "xlsx")) + "libreoffice" '("--calc" file)) + (list (openwith-make-extension-regexp '("odp" "pps" "ppt" "pptx")) + "libreoffice" '("--impress" file)) + )) +) ;; Отключить автоматическое открытие изображений в Emacs (setq auto-mode-alist (rassq-delete-all 'image-mode auto-mode-alist)) @@ -436,6 +437,8 @@ https://github.com/emacs-evil/evil ;; Добавляем хук для отключения openwith-mode в org-mode (add-hook 'org-mode-hook 'disable-openwith-in-org-mode) +;; Добавляем хук для активации openwith-mode в dired-mode +(add-hook 'dired-mode-hook 'activate-openwith) #+end_src @@ -486,6 +489,7 @@ https://github.com/emacs-evil/evil #+end_src ** anzu +улучшенный интерфейс для поиска и замены текста #+begin_src emacs-lisp (use-package anzu :ensure t @@ -507,15 +511,12 @@ https://github.com/emacs-evil/evil (doom-modeline-mode 1) #+end_src -** Perfect margin -#+begin_src emacs-lisp -(setq perfect-margin-visible-width 150) -#+end_src ** NeoTree *** Setup #+begin_src emacs-lisp (use-package neotree + :init :ensure t :bind ("" . neotree-toggle) :config @@ -523,16 +524,15 @@ https://github.com/emacs-evil/evil (setq-default neo-smart-open t) ;; Вертикальное расположение окна neotree (setq neo-window-position 'left) + + ;; Активация пакетов + (use-package all-the-icons :ensure t) + (setq neo-theme (if (display-graphic-p) 'icons 'arrow)) + (setq neo-window-fixed-size nil) + (setq neo-smart-open t) + (setq neo-window-width 50) ) -;; Активация пакетов -(use-package all-the-icons :ensure t) -(setq neo-theme (if (display-graphic-p) 'icons 'arrow)) -(setq neo-window-fixed-size nil) -(setq neo-smart-open t) -(setq neo-window-width 50) - - (add-hook 'neotree-mode-hook (lambda () (define-key evil-normal-state-local-map (kbd "q") 'neotree-hide) @@ -549,28 +549,7 @@ https://github.com/emacs-evil/evil ) #+end_src -** Latex (pdf) -#+begin_src emacs-lisp -(setq org-latex-pdf-process - '("xelatex -interaction nonstopmode %f" - "xelatex -interaction nonstopmode %f")) - - -#+end_src - -устанавливать такой header для потдержки русского языка -#+begin_quote -#+LATEX_HEADER: \usepackage{fontspec} -#+LATEX_HEADER: \setmainfont{Noto Sans} - -\begin{quote} -\textbf{-} Привет! Как дела? \\ -\textbf{-} Всё хорошо, спасибо! А у тебя? -\end{quote} -#+end_quote - -* KeyBinds -** file +** file (copy file, open file in dired) #+begin_src emacs-lisp (defun open-current-directory-in-dired () "Open the current directory of the current file in Dired. @@ -587,7 +566,7 @@ If a Dired buffer is already opened, navigate to that buffer." "f o" '(open-current-directory-in-dired :wk "open in dired")) #+end_src -** marks / org tangle +** bm-marks / org tangle #+begin_src emacs-lisp (spc-leader "m" '(:ignore t :wk "marks") @@ -609,45 +588,18 @@ If a Dired buffer is already opened, navigate to that buffer." '(bm-face ((t (:background "yellow" :foreground "black" :weight bold))))) #+end_src -** buffer & bookmarks & harpoon +** project / projectile +*** setup projectile #+begin_src emacs-lisp -(spc-leader - ;; buffer - "b" '(:ignore t :wk "buffer") - "b i" '(ibuffer :wk "Switch ibuffer") - "b b" '(projectile-switch-to-buffer :wk "Switch buffer") - "b k" '(kill-this-buffer :wk "Kill this buffer") - ;; bookmark - "b s" '(bookmark-set :wk "set bookmarks") - "b d" '(bookmark-delete :wk "delete bookmarks") - "b l" '(list-bookmarks :wk "list bookmarks") - "b j" '(bookmark-jump :wk "list jump") - "b a" '(bookmark-set :wk "bookmarks set") - "b r" '(revert-buffer :wk "Reload buffer")) - -(spc-leader - "TAB" '(:ignore t :wk "?") - "TAB TAB" '(comment-line :wk "comment line") -) - -(spc-leader - "h" '(:ignore t :wk "help & harpoon") - "h a" '(harpoon-add-file :wk "add to harpoon") - "h c" '(harpoon-clear :wk "harboon clear") - "h l" '(harpoon-toggle-quick-menu :wk "toggle menu") - "h m" '(harpoon-quick-menu-hydra :wk "quick menu") - - "h 1" '(harpoon-go-to-1 :wk "1") - "h 2" '(harpoon-go-to-2 :wk "2") - "h 3" '(harpoon-go-to-3 :wk "3") - "h 4" '(harpoon-go-to-4 :wk "4") - "h 5" '(harpoon-go-to-5 :wk "5") - - "h d" '(harpoon-delete-item :wk "delete item") -) +(use-package projectile + :ensure t + :init + (projectile-mode +1) + :config + (setq projectile-completion-system 'ivy)) #+end_src -** project +*** KeyBind add and switch project #+begin_src emacs-lisp (defun projectile/open-and-switch-project (directory) @@ -682,7 +634,61 @@ hot keys #+end_src +** buffer & bookmarks & harpoon +#+begin_src emacs-lisp +(spc-leader + ;; buffer + "b" '(:ignore t :wk "buffer") + "b i" '(ibuffer :wk "Switch ibuffer") + "b b" '(projectile-switch-to-buffer :wk "Switch buffer") + + "b k" '(:ignore t :wk "kill buffer") + "b k t" '(kill-this-buffer :wk "Kill this buffer") + "b k k" '(kill-buffer :wk "Kill buffer in imenu") + + ;; bookmark + "b s" '(bookmark-set :wk "set bookmarks") + "b d" '(bookmark-delete :wk "delete bookmarks") + "b l" '(list-bookmarks :wk "list bookmarks") + "b j" '(bookmark-jump :wk "list jump") + "b a" '(bookmark-set :wk "bookmarks set") + "b r" '(revert-buffer :wk "Reload buffer")) + +(spc-leader + ) + +(spc-leader + "TAB" '(:ignore t :wk "?") + "TAB TAB" '(comment-line :wk "comment line") +) + +(spc-leader + "h" '(:ignore t :wk "help & harpoon") + "h a" '(harpoon-add-file :wk "add to harpoon") + "h c" '(harpoon-clear :wk "harboon clear") + "h l" '(harpoon-toggle-quick-menu :wk "toggle menu") + "h m" '(harpoon-quick-menu-hydra :wk "quick menu") + + "h 1" '(harpoon-go-to-1 :wk "1") + "h 2" '(harpoon-go-to-2 :wk "2") + "h 3" '(harpoon-go-to-3 :wk "3") + "h 4" '(harpoon-go-to-4 :wk "4") + "h 5" '(harpoon-go-to-5 :wk "5") + + "h d" '(harpoon-delete-item :wk "delete item") +) +#+end_src + + + ** Sudo Edit & code (sudo edit/split/perfect margin/json) +*** Perfect margin settings +#+begin_src emacs-lisp +;; (setq perfect-margin-visible-width 150) +(setq perfect-margin-visible-width 200) +#+end_src + +*** KeyBind #+begin_src emacs-lisp (require 'sudo-edit) (spc-leader @@ -747,6 +753,7 @@ hot keys "o r" '(org-reset-checkbox-state-subtree :wk "reset checkboxs") "o g" '(org-agenda :wk "org agenda") "o m" '(eval-buffer :wk "eval buffer") + "o k" '(org-ctrl-c-minus :wk "eval buffer") "h RET" '(org-meta-return :wk "org return (insert lists))") ) @@ -855,22 +862,25 @@ hot keys '(line-number-current-line ((t (:foreground "white"))))) ; Цвет текущей строки ;; '(line-number ((t (:foreground "black")))) ; Цвет отображения номера строки ;; '(line-number-current-line ((t (:foreground "black"))))) ; Цвет текущей строки +;; (load-theme 'doom-1337 t) ;; (load-theme 'doom-nord t) ;; (load-theme 'doom-nord-aurora t) ;; (load-theme 'doom-nord-light t) ;; (load-theme 'doom-one-light t) ;; (load-theme 'doom-gruvbox-light t) -(load-theme 'doom-gruvbox t) +;; (load-theme 'doom-gruvbox t) ;; (load-theme 'doom-ayu-dark t) ;; (load-theme 'doom-dracula t) ;; (load-theme 'doom-tomorrow-night t) +;; (load-theme 'doom-henna t) ;; (load-theme 'doom-one t) ;; (load-theme 'doom-opera t) -;; (load-theme 'doom-monokai-pro t) +(load-theme 'doom-monokai-pro t) ;; (load-theme 'doom-spacegrey t) ;; (load-theme 'doom-tokyo-night t) ;; (load-theme 'doom-xcode t) ;; (load-theme 'doom-solarized-light t) +;; (load-theme 'doom-solarized-dark t) ;; (add-to-list 'custom-theme-load-path "~/.emacs.d/everforest-theme") ;; (load-theme 'everforest-hard-dark t) @@ -878,8 +888,17 @@ hot keys ;; (add-to-list 'custom-theme-load-path "~/.emacs.d/atom-one-dark-theme") ;; (load-theme 'atom-one-dark t) +;; (add-to-list 'custom-theme-load-path "~/.emacs.d/iceberg-theme.el") +;; (load-theme 'iceberg t) + + ;; (set-frame-parameter nil 'alpha-background 100) -(set-frame-parameter nil 'alpha-background 92) +;; (set-frame-parameter nil 'alpha-background 92) + +(let ((al 100)) ;; Прозрачность % + (set-frame-parameter (selected-frame) 'alpha `(,al . ,al)) ;; Прозрачность для текущего фрейма + (add-to-list 'default-frame-alist `(alpha . (,al . ,al)))) ;; Прозрачность для всех новых фреймов + #+end_src ** diff @@ -900,19 +919,28 @@ hot keys ; Firacode Nerd Font ; JetBrainsMonoNL Nerd Font + +(defun set-small-font-wayland () + (interactive) + (set-face-attribute 'default nil + :font "JetBrainsMonoNL Nerd Font" + :height 110 + :weight 'medium)) + (defun set-small-font () (interactive) (set-face-attribute 'default nil - :font "Firacode Nerd Font" + :font "JetBrainsMonoNL Nerd Font" :height 120 :weight 'medium)) (defun set-big-font () (interactive) (set-face-attribute 'default nil - :font "Firacode Nerd Font" + :font "JetBrainsMonoNL Nerd Font" :height 150 :weight 'medium)) +;; (set-small-font-wayland) (set-small-font) ;; (set-big-font) (spc-leader @@ -977,13 +1005,31 @@ names, e.g. #0000ff is displayed in white with a blue background. ** Nyan-mode #+begin_src emacs-lisp -(require 'nyan-mode) -(nyan-mode +1) -;; (nyan-toggle-wavy-trail) -;; (nyan-start-animation) - -(setq nyan-wavy-trail t) -(setq nyan-animate-nyancat t) +(use-package nyan-mode + :ensure t + :init + :config + (setq nyan-wavy-trail t) + (setq nyan-animate-nyancat t) + (nyan-mode 1)) ;; Включить анимацию +;; (require 'nyan-mode) +;; (nyan-mode +1) +;; +;; (defun my-nyan-cat-settings () +;; "Set Nyan Cat settings for new frames." +;; (setq nyan-animate-nyancat t) +;; (setq nyan-wavy-trail t) +;; ) +;; +;; ;; Применение настроек к уже открытому фрейму +;; (my-nyan-cat-settings) +;; +;; ;; Применение настроек для новых фреймов +;; (add-hook 'after-make-frame-functions +;; (lambda (frame) +;; (my-nyan-cat-settings) +;; (select-frame frame) +;; )) #+end_src ** evil-snipe @@ -1012,10 +1058,21 @@ names, e.g. #0000ff is displayed in white with a blue background. ;(global-hl-todo-mode +1) #+end_src -* Music +* Programs ** emms #+begin_src emacs-lisp +;; Функция для отображения только названия треков в плейлисте +(defun my-emms-track-simple-description (track) + "Return a simple description of the TRACK with only the title." + (let ((name (emms-track-get track 'info-title))) + (if name + name + (emms-track-simple-description track)))) + + (use-package emms + :init + (setq emms-track-description-function 'my-emms-track-simple-description) :ensure t :config (require 'emms-setup) @@ -1033,14 +1090,78 @@ names, e.g. #0000ff is displayed in white with a blue background. :config (emms-playing-time 1)) - ;; Горячие клавиши для управления - (global-set-key (kbd "C-c e p") 'emms) - (global-set-key (kbd "C-c e n") 'emms-next) - (global-set-key (kbd "C-c e P") 'emms-previous) - (global-set-key (kbd "C-c e s") 'emms-stop) - (global-set-key (kbd "C-c e SPC") 'emms-pause)) + (with-eval-after-load 'emms + (define-key emms-playlist-mode-map (kbd "l") 'emms-seek-forward) + (define-key emms-playlist-mode-map (kbd "h") 'emms-seek-backward) + (define-key emms-playlist-mode-map (kbd "r") 'emms-repeat) + (define-key emms-playlist-mode-map (kbd "o") 'emms-pause) + (define-key emms-playlist-mode-map (kbd "C-c k") 'emms-playlist-clear) + + (define-key emms-playlist-mode-map (kbd "j") 'next-line) + (define-key emms-playlist-mode-map (kbd "k") 'previous-line) + + (define-key emms-playlist-mode-map (kbd "C-u") 'scroll-down-command) + (define-key emms-playlist-mode-map (kbd "C-d") 'scroll-up-command) + ) +) + +;; Включаем Evil mode в плейлисте EMMS +(add-hook 'emms-playlist-mode-hook 'evil-normalize-keymaps) + +(spc-leader + "e" '(:ignore t :wk "music") + "e d" '(emms-add-dired :wk "add dired tree to playlist") + "e t" '(emms-add-directory-tree :wk "dir tree to playlist") + "e r" '(emms :wk "start") + "e o" '(emms-toggle-repeat-track :wk "start") + "e s" '(emms-pause :wk "stop") + "e k" '(emms-next :wk "next") + "e j" '(emms-previous :wk "previous") + ;; "e w" '(emms :wk "save playlist") + "e i" '(emms-seek-forward :wk "seek-forward 10s") + "e u" '(emms-seek-backward :wk "seek-backward 10s") +) #+end_src +** Latex (pdf) +чтобы экспорт работал кректно надо установить pygments +=pip install pygments= но для arch linux =sudo pacman -S python-pygments= + +#+begin_src emacs-lisp +(setq org-latex-pdf-process + '("xelatex -interaction nonstopmode %f" + "xelatex -interaction nonstopmode %f")) + + +;; (setq org-latex-compiler "xelatex") ; или "lualatex" +;; (setq org-latex-pdf-process +;; '("xelatex -shell-escape -interaction nonstopmode -output-directory %o %f" +;; "xelatex -shell-escape -interaction nonstopmode -output-directory %o %f" +;; "xelatex -shell-escape -interaction nonstopmode -output-directory %o %f")) +#+end_src + +#+begin_src emacs-lisp +;; ;; Использовать minted для подсветки синтаксиса при экспорте в PDF через LaTeX +;; (setq org-latex-listings 'minted) + +;; ;; Добавить настройки minted в preamble +;; (setq org-latex-packages-alist '(("" "minted"))) + +;; ;; Настроить процесс компиляции для использования -shell-escape, необходимого для работы minted +;; (setq org-latex-pdf-process +;; '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" +;; "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" +;; "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")) +#+end_src + +*** Cheat sheet +**** дефолтный header +#+begin_quote +#+LATEX_HEADER: \hypersetup{colorlinks=true, linkcolor=black} ;; убрать красную подсветку из ссылок +#+LATEX_HEADER: \usepackage{fontspec} ;; подтержка русского языка +#+LATEX_HEADER: \setmainfont{Noto Sans} ;; шрифт +#+end_quote + * scripts ** add projectile project @@ -1126,13 +1247,3 @@ names, e.g. #0000ff is displayed in white with a blue background. "t t" '(open-term :wk "terminal") ) #+end_src - -* TOOD -1. сохронять файл при смене буфера -2. горячие клавиши для изменения размера окон -3. найти альтернативу format all -4. более быстрый python lsp -5. copilot -6. найти более подходящий спсоб работы со шрифтами и добавить горячие клавиши для управления размерами шрифтов -7. org mod upgrade -8. протестить дерево сохранений diff --git a/roles/dots/files/home/.emacs.d/lan/python-cf.el b/roles/dots/files/home/.emacs.d/lan/python-cf.el index 6abf4d2..703216a 100644 --- a/roles/dots/files/home/.emacs.d/lan/python-cf.el +++ b/roles/dots/files/home/.emacs.d/lan/python-cf.el @@ -1,5 +1,4 @@ (require 'use-package) -(message "hello from python mode") (add-hook 'python-mode-hook #'tree-sitter-mode +1) (add-hook 'python-mode-hook #'tree-sitter-hl-mode +1) diff --git a/roles/dots/files/home/.emacs.d/lan/python-cf.org b/roles/dots/files/home/.emacs.d/lan/python-cf.org index 01b66dc..aaf0b4a 100644 --- a/roles/dots/files/home/.emacs.d/lan/python-cf.org +++ b/roles/dots/files/home/.emacs.d/lan/python-cf.org @@ -1,8 +1,7 @@ * python -**