怎么像 vscode 一样调用 staticcheck 静态检查警告 这是我的配置文件
;; 打开配置文件
(defun open-init-file()
(interactive)
(find-file "~/.emacs.d/init.el"))
(setq inhibit-startup-message t) ; 禁用 启动消息
(setq initial-frame-alist '((width . 140) (height . 50))) ; 设置初始大小
(setq default-frame-alist '((width . 140) (height . 50))) ; 设置默认大小
(setq-default tab-width 4)
(defalias 'yes-or-no-p 'y-or-n-p)
(scroll-bar-mode -1) ; 禁用 滚动条模式
(tool-bar-mode -1) ; 禁用 工具栏模式
(tooltip-mode -1) ; 禁用 工具提示模式
(menu-bar-mode -1) ; 禁用 菜单栏模式
(global-display-line-numbers-mode 1) ; 启用 显示行号模式
;; (load-theme 'tango-dark) ; 加载主题
(global-set-key (kbd "<f12>") 'open-init-file) ; 打开配置文件
(global-set-key (kbd "C-c R") 'restart-emacs) ; 重启emacs
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize) ; 初始化包
(unless package-archive-contents
(package-refresh-contents)) ; 刷新包
(unless (package-installed-p 'use-package)
(package-install 'use-package)) ; 安装 use-package
(require 'use-package)
(setq use-package-always-ensure t) ; 确保所有包可用
;; ivy 分为三个包:ivy、swiper和counsel; 通过安装counsel,另外两个将作为依赖项引入。
(use-package counsel
:init
(setq ivy-height '10)
(setq ivy-use-virtual-buffers t)
(setq ivy-count-format "(%d/%d)")
:bind
("C-s" . swiper-isearch)
("M-x" . counsel-M-x)
("C-x C-f" . counsel-find-file)
("M-y" . counsel-yank-pop)
("C-x b" . ivy-switch-buffer)
:config
(ivy-mode 1))
;; 在弹出窗口中显示可用的按键绑定
(use-package which-key
:config (which-key-mode 1))
;; ivy 界面更加友好。
(use-package ivy-rich
:config (ivy-rich-mode 1))
;; 快速切换窗口
(use-package ace-window
:bind ("C-x o" . ace-window))
;; 轻松管理和浏览 Emacs 中的项目
(use-package projectile
:bind-keymap
("s-p" . projectile-command-map)
:config (projectile-mode 1))
;; Emacs 中的 Git 瓷器
(use-package magit)
;; Emacs 的另一个片段扩展
(use-package yasnippet)
;; Go 编程语言的主要模式
(use-package go-mode
:hook (go-mode . lsp-deferred)
(go-mode . yas-minor-mode))
;; LSP模式
(use-package lsp-mode
:commands (lsp lsp-deferred)
:init
(setq lsp-keymap-prefix "s-l")
:bind
("C-c f e" . 'flymake-goto-next-error) ; 转到下一个诊断错误
("C-c f d" . 'flymake-show-project-diagnostics) ; 显示当前项目的 Flymake 诊断列表
:hook
(lsp-mode . lsp-enable-which-key-integration)
(before-save . lsp-format-buffer))
;; 模块化文本补全框架
(use-package company
:after lsp-mode
:config
(setq company-idle-delay 0)
(setq company-minimum-prefix-length 1)
:hook (prog-mode . company-mode))
(use-package lsp-ui
:config
(setq lsp-ui-sideline-show-diagnostics t) ; 在副线中显示诊断消息
(setq lsp-ui-sideline-show-hover t) ; 在边线显示悬停消息
(setq lsp-ui-sideline-show-code-actions t) ; 在副线中显示代码操作
(setq lsp-ui-sideline-delay 3) ; 显示边线之前等待的秒数
:hook (lsp-mode . lsp-ui-mode))
(use-package lsp-ivy)
(use-package dashboard
:init
(dashboard-setup-startup-hook)
:config
(setq dashboard-items '((recents . 5) (projects . 5)))
:bind ("<f5>" . dashboard-open))
;; 跳转到可见文本中的任意位置并快速选择文本
(use-package avy
:bind
("C-;" . 'avy-goto-char)
("C-'" . 'avy-goto-char-2)
("M-g f" . 'avy-goto-line)
("M-g w" . 'avy-goto-word-1)
("M-g e" . 'avy-goto-word-0)
("C-c C-j" . 'avy-resume))
;; 使用 posframe 来显示 Ivy(ivy 显示在屏幕中间)
(use-package ivy-posframe
:config
(setq ivy-posframe-display-functions-alist '((t . ivy-posframe-display-at-window-center)))
(ivy-posframe-mode 1))
;; 一系列非常有用的扩展
(use-package crux
:bind
("C-j" . crux-top-join-line) ; 连接行
("C-k" . crux-kill-whole-line) ; 首先杀死行尾,然后杀死整行
("<S-return>" . crux-smart-open-line-above) ; 在当前行上方插入一个空行并正确缩进
("<C-return>" . crux-smart-open-line) ; 插入一个空行并正确缩进
("C-c d" . crux-duplicate-current-line-or-region) ; 复制当前行(或区域)
("C-c M-d" . crux-duplicate-and-comment-current-line-or-region) ; 复制并注释当前行(或区域)
)