Skip to content
Snippets Groups Projects
Commit 906f6429 authored by Liu Miao's avatar Liu Miao
Browse files

use programming.el for program configuration

parent 845c71ce
No related merge requests found
...@@ -110,12 +110,7 @@ ...@@ -110,12 +110,7 @@
(require 'editor) (require 'editor)
(require 'completion) (require 'completion)
(require 'prog-common) (require 'programming)
(require 'prog-c-cpp)
(require 'prog-python)
(require 'prog-lisp)
(require 'prog-rust)
(require 'prog-verilog)
(require 'init-org) (require 'init-org)
(require 'apps) (require 'apps)
(require 'keybinds) (require 'keybinds)
......
...@@ -14,8 +14,7 @@ ...@@ -14,8 +14,7 @@
;;; youdao-dict ;;; youdao-dict
(use-package youdao-dictionary (use-package youdao-dictionary
:ensure t :ensure t
:config :config)
(push '("*Youdao Dictionary*" :dedicated t :position bottom :stick nil :noselect nil :height 0.4) popwin:special-display-config))
;;; Magit for git ;;; Magit for git
(use-package magit (use-package magit
...@@ -35,19 +34,6 @@ ...@@ -35,19 +34,6 @@
:config :config
(global-git-gutter-mode +1))) (global-git-gutter-mode +1)))
;;; Shell
(quelpa '(aweshell :fetcher github
:repo "manateelazycat/aweshell"
:files ("*")))
(use-package aweshell
:config
(with-eval-after-load "esh-opt"
(setq eshell-highlight-prompt nil
eshell-prompt-function 'epe-theme-lambda))
:custom
(aweshell-dedicated-window-height 20))
;;; Rime ;;; Rime
(use-package rime (use-package rime
:ensure t :ensure t
...@@ -63,24 +49,6 @@ ...@@ -63,24 +49,6 @@
(copy-file (concat user-emacs-directory "lisp/templates/user.yaml") (copy-file (concat user-emacs-directory "lisp/templates/user.yaml")
(concat user/rime-data-dir "user.yaml"))))))) (concat user/rime-data-dir "user.yaml")))))))
;;; EAF
(use-package eaf
:if user/enable-eaf
:init
(use-package epc :defer t :ensure t)
(use-package ctable :defer t :ensure t)
(use-package deferred :defer t :ensure t)
(quelpa '(eaf :fetcher github
:repo "manateelazycat/emacs-application-framework"
:files ("*")))
:custom
(eaf-browser-continue-where-left-off t)
:config
(eaf-setq eaf-browser-enable-adblocker "true")
(eaf-setq eaf-pdf-dark-mode "false")
(eaf-bind-key scroll_up "C-n" eaf-pdf-viewer-keybinding)
(eaf-bind-key scroll_down "C-p" eaf-pdf-viewer-keybinding))
;;; Docker ;;; Docker
(use-package docker (use-package docker
:ensure t) :ensure t)
......
;;; prog-asm.el --- Configuration for assembly code.
;;; Commentary:
;;; Code:
(use-package nasm-mode
:ensure t
:mode "\\.nasm\\'")
(provide 'prog-asm)
;;; prog-asm.el ends here
;;; Code:
;; (use-package ccls
;; :ensure t
;; :defer t)
(use-package clang-format
:ensure t
:defer t)
(use-package bison-mode
:ensure t
:mode (("\\.lex\\'" . flex-mode)
("\\.y\\'" . bison-mode)
("\\.grm\\'" . bison-mode)))
(provide 'prog-c-cpp)
;;; prog-c-cpp.el ends here
;; prog-haskell --- init-file for emacs haskell programming
;;; Commentary:
;;
;;; Code:
;;
(provide 'prog-haskell)
;;; prog-haskell ends here
;;; prog-lisp.el --- common configuration for lisp
;;
;;; Commentary:
;;
;;; Code:
;;; emacs-lisp
;; (use-package lispy-mode
;; :ensure lispy
;; :hook emacs-lisp-mode
;; :diminish lispy-mode)
(use-package ielm
:defer t)
(use-package debug
:defer t)
(use-package edebug
:ensure nil
:defer t)
(use-package emr
:ensure t)
;;; Scheme
(use-package geiser
:ensure t
:commands run-geiser)
;;; Haskell
(use-package haskell-mode
:ensure t
:mode "\\.hs\\'")
(provide 'prog-lisp)
;;; prog-lisp.el ends here
;;; prog-python.el --- Configuration for python.
;;; Commentary:
;;; Code:
(defvar python/pyvenv-modes nil)
(defun python/pyvenv-set-local-virtualenv ()
"Set pyvenv virtualenv from \".venv\" by looking in parent directories."
(interactive)
(let ((root-path (locate-dominating-file default-directory ".venv")))
(when root-path
(let ((file-path (expand-file-name ".venv" root-path)))
(cond ((file-directory-p file-path)
(pyvenv-activate file-path)
;; (setq pyvenv-activate file-path)
(message "Activated local virtualenv"))
(t (message ".venv is not a directory")))))))
(use-package python
:after flycheck
:mode (("\\.py\\'" . python-mode))
:custom
(python-indent-offset 4)
(flycheck-python-pycompile-executable "python3")
:config
(setq python-shell-interpreter "python3"))
(use-package lsp-pyright
:ensure t
:init (when (and *sys/linux* (executable-find "python3")
(setq lsp-pyright-python-executable-cmd "python3")))
:hook (python-mode . (lambda () (require 'lsp-pyright))))
(use-package yapfify
:ensure t
:hook (python-mode . yapf-mode))
(use-package pyvenv
:ensure t
:init
(add-hook 'python-mode-hook #'pyvenv-tracking-mode)
(add-to-list 'python/pyvenv-modes 'python-mode)
;; Set for auto active virtual env
(dolist (m python/pyvenv-modes)
(add-hook (intern (format "%s-hook" m))
'python/pyvenv-set-local-virtualenv())))
(provide 'prog-python)
;;; prog-python.el ends here
;;; prog-rust.el --- rust config
;;
;;; Commentary:
;;
;;; Code:
(use-package rustic
:ensure t
:mode ("\\.rs$" . rustic-mode)
:after (projectile)
:config
(add-to-list 'projectile-project-root-files "Cargo.toml")
(setq rustic-indent-method-chain t
rustic-babel-format-src-block nil)
(remove-hook 'rustic-mode-hook #'flycheck-mode)
(remove-hook 'rustic-mode-hook #'flycheck-mode-off)
;; HACK `rustic-lsp' sets up lsp-mode/eglot too early. We move it to
;; `rustic-mode-local-vars-hook' so file/dir local variables can be used
;; to reconfigure them.
(setq rustic-lsp-client 'lsp-mode))
(provide 'prog-rust)
;;; prog-rust.el ends here
;;; prog-verilog.el --- programming verilog configurations
;;; Commentary:
;;; Code:
(use-package verilog-mode
:ensure nil
:defer t
:mode ("\\.[ds]?va?h?\\'" . verilog-mode)
:config
(setq verilog-indent-level 3
verilog-indent-level-module 3
verilog-indent-level-declaration 3
verilog-indent-level-behavioral 3
verilog-indent-level-directive 1
verilog-case-indent 2
verilog-auto-newline t
verilog-auto-indent-on-newline t
verilog-tab-always-indent t
verilog-auto-endcomments t
verilog-minimum-comment-distance 40
verilog-indent-begin-after-if t
verilog-auto-lineup 'declarations
verilog-linter "my_lint_shell_command"
))
(provide 'prog-verilog)
;;; prog-verilog.el ends here
;; prog-lsp.el --- init-file for emacs language server protocol ;;; programming.el --- Emacs configuration for programming
;;
;;; Commentary: ;;; Commentary:
;; This file is not a part of Emacs
;; ;;
;;; Code: ;;; Code:
;;;
;;; Language server protocol ;;; Language server protocol
(defvar lsp-company-backends (defvar lsp-company-backends
'(:separate company-capf company-yasnippet)) '(:separate company-capf company-yasnippet))
(defvar python/pyvenv-modes nil)
(use-package lsp-mode (use-package lsp-mode
:ensure t :ensure t
:init :init
...@@ -36,14 +37,6 @@ ...@@ -36,14 +37,6 @@
:remote? t :remote? t
:server-id 'clangd-remote)) :server-id 'clangd-remote))
(push '("^\\*[Ll]sp.+\\*$"
:regexp t
:dedicated t
:position bottom
:stick t
:noselect t)
popwin:special-display-config)
:commands (lsp-install-server)) :commands (lsp-install-server))
(use-package lsp-ui (use-package lsp-ui
...@@ -103,14 +96,109 @@ ...@@ -103,14 +96,109 @@
:defer t :defer t
:hook (prog-mode . flycheck-mode) :hook (prog-mode . flycheck-mode)
:init :init
(push '("^\\*Flycheck.+\\*$"
:regexp t
:dedicated t
:position bottom
:stick t
:noselect t)
popwin:special-display-config)
:config) :config)
(provide 'prog-common) ;;; C/C++
;;; prog-common.el ends here (use-package clang-format
:ensure t
:defer t)
(use-package bison-mode
:ensure t
:mode (("\\.lex\\'" . flex-mode)
("\\.y\\'" . bison-mode)
("\\.grm\\'" . bison-mode)))
;;; Assembly
(use-package nasm-mode
:ensure t
:mode "\\.nasm\\'")
;;; Emacs Lisp
(use-package ielm
:defer t)
(use-package debug
:defer t)
(use-package edebug
:ensure nil
:defer t)
(use-package emr
:ensure t)
;;; Scheme
(use-package geiser
:ensure t
:commands run-geiser)
;;; Haskell
(use-package haskell-mode
:ensure t
:mode "\\.hs\\'")
;;; Python
(defun python/pyvenv-set-local-virtualenv ()
"Set pyvenv virtualenv from \".venv\" by looking in parent directories."
(interactive)
(let ((root-path (locate-dominating-file default-directory ".venv")))
(when root-path
(let ((file-path (expand-file-name ".venv" root-path)))
(cond ((file-directory-p file-path)
(pyvenv-activate file-path)
;; (setq pyvenv-activate file-path)
(message "Activated local virtualenv"))
(t (message ".venv is not a directory")))))))
(use-package python
:after flycheck
:mode (("\\.py\\'" . python-mode))
:custom
(python-indent-offset 4)
(flycheck-python-pycompile-executable "python3")
:config
(setq python-shell-interpreter "python3"))
(use-package lsp-pyright
:ensure t
:init (when (and *sys/linux* (executable-find "python3")
(setq lsp-pyright-python-executable-cmd "python3")))
:hook (python-mode . (lambda () (require 'lsp-pyright))))
(use-package yapfify
:ensure t
:hook (python-mode . yapf-mode))
(use-package pyvenv
:ensure t
:init
(add-hook 'python-mode-hook #'pyvenv-tracking-mode)
(add-to-list 'python/pyvenv-modes 'python-mode)
;; Set for auto active virtual env
(dolist (m python/pyvenv-modes)
(add-hook (intern (format "%s-hook" m))
'python/pyvenv-set-local-virtualenv())))
;;; Rust
(use-package rustic
:ensure t
:mode ("\\.rs$" . rustic-mode)
:after (projectile)
:config
(add-to-list 'projectile-project-root-files "Cargo.toml")
(setq rustic-indent-method-chain t
rustic-babel-format-src-block nil)
(remove-hook 'rustic-mode-hook #'flycheck-mode)
(remove-hook 'rustic-mode-hook #'flycheck-mode-off)
;; HACK `rustic-lsp' sets up lsp-mode/eglot too early. We move it to
;; `rustic-mode-local-vars-hook' so file/dir local variables can be used
;; to reconfigure them.
(setq rustic-lsp-client 'lsp-mode))
(provide 'programming)
;;; programming.el ends here
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment