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 branches found
No related tags found
No related merge requests found
......@@ -110,12 +110,7 @@
(require 'editor)
(require 'completion)
(require 'prog-common)
(require 'prog-c-cpp)
(require 'prog-python)
(require 'prog-lisp)
(require 'prog-rust)
(require 'prog-verilog)
(require 'programming)
(require 'init-org)
(require 'apps)
(require 'keybinds)
......
......@@ -14,8 +14,7 @@
;;; youdao-dict
(use-package youdao-dictionary
:ensure t
:config
(push '("*Youdao Dictionary*" :dedicated t :position bottom :stick nil :noselect nil :height 0.4) popwin:special-display-config))
:config)
;;; Magit for git
(use-package magit
......@@ -35,19 +34,6 @@
:config
(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
(use-package rime
:ensure t
......@@ -63,24 +49,6 @@
(copy-file (concat user-emacs-directory "lisp/templates/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
(use-package docker
: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:
;; This file is not a part of Emacs
;;
;;; Code:
;;;
;;; Language server protocol
(defvar lsp-company-backends
'(:separate company-capf company-yasnippet))
(defvar python/pyvenv-modes nil)
(use-package lsp-mode
:ensure t
:init
......@@ -36,14 +37,6 @@
:remote? t
: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))
(use-package lsp-ui
......@@ -103,14 +96,109 @@
:defer t
:hook (prog-mode . flycheck-mode)
:init
(push '("^\\*Flycheck.+\\*$"
:regexp t
:dedicated t
:position bottom
:stick t
:noselect t)
popwin:special-display-config)
:config)
(provide 'prog-common)
;;; prog-common.el ends here
;;; C/C++
(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