use-package怎么加载github中的包

rt。

看了官方文档,没有。只能自己git clone下来吗?

use-package 是用来管理配置的,不负责包的安装。

你可以用 straight.elBorg 等来安装。我个人用的 Borg。

或者手动 Clone。

好吧。。。 spacemacs是只预装了package.el吗?

不懂 spacemacs。不过你刚开始用的话怎么不用 Doom,这个更流行。doom 是用 straight.el 的。

使用straight.el

例如,你要安装format-all,使用如下代码:

(use-package format-all
  :straight (:host github :repo "lassik/emacs-format-all-the-code"))

前提是你安装了straight.el并且:

;; install use-package
(straight-use-package 'use-package)

安装straight.el简单极了,前提是你网络不错:

;; ensure that straight.el is installed
(defvar bootstrap-version)
(let ((bootstrap-file
       (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
      (bootstrap-version 5))
  (unless (file-exists-p bootstrap-file)
    (with-current-buffer
        (url-retrieve-synchronously
	 "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
         'silent 'inhibit-cookies)
      (goto-char (point-max))
      (eval-print-last-sexp)))
  (load bootstrap-file nil 'nomessage))

可以去试试: radian-software/straight.el: :four_leaf_clover: Next-generation, purely functional package manager for the Emacs hacker. (github.com)

@tiancaijb 请看这里

按照这样 spacemacs/packages.el at 201d22bcc975bd5f4cf459a27c1c42922179f4e2 · syl20bnr/spacemacs · GitHub 的格式放到 dotspacemacs-additional-packages

1 个赞

如果你用的是 spacemacs 可以这样:

dotspacemacs-additional-packages '(evil-replace-with-register
                                  ef-themes
                                  (copilot :location (recipe
                                                      :fetcher github
                                                      :repo "zerolfx/copilot.el"
                                                      :files ("*.el" "dist"))))

安利个 quelpa ,可以和 use-package 整合。

以 lsp-bridge 为例:

  (use-package lsp-bridge
    :defer t
    :quelpa (lsp-bridge :fetcher github :repo "manateelazycat/lsp-bridge" :branch "master" :files ("*"))
    :init
    (global-lsp-bridge-mode)
    :config
    (setq acm-fetch-candidate-doc-delay 1
	  acm-enable-doc nil
	  acm-snippet-insert-index 0)
    :general
    (general-define-key
     :keymaps 'acm-mode-map
     [remap evil-complete-next] 'acm-select-next
     [remap evil-complete-previous] 'acm-select-prev
     [remap yas-expand] 'acm-complete
     "<return>" 'private/lsp-return
     "<escape>" 'acm-hide)
    (common-leader
      "." 'lsp-bridge-find-def
      "," 'lsp-bridge-return-from-def))
1 个赞

一直没有仔细比较过,quelpa和straight各有什么优劣势?

straight 的 README 里面有比较

简单来说:quelpa 是对 package.el 的补充,能从各种来源下载包并编译到 elpa 文件夹中;而 straight 不依赖 package.el ,仅支持 git 这一种下载方式,提供各种方便的命名管理插件。

1 个赞

straight 看起来更灵活,但实际使用中更慢,会下载一堆无关的东西,慢而且空间占用还大。你遇到这个情况吗?

straight 会下载源代码再编译,占用的确相对来说比较大,可以通过设置来改善你提到的问题:


(setq straight-vc-git-default-clone-depth 1)

(straight-use-package '(org :type built-in)) ;; 使用 emacs 自带的包

PS: raxod502 文档中的 README 有点繁杂了,对于初次使用者不太友好。

这个只能轻微改善,代码还是两份,不相关的图片文档还是会被下载啊,有办法避免吗?这个是我的痛点。

没有办法解决,我理解 straight 这种方式相当于本地编译,不知道其他道友有没有奇招去绕过?

我之前使用 straight 的时候,占用较大是其中的一个痛点,后来又遇到其他的小问题,我就没用 straight 了。

我目前的方式是 利用 GitHub action 自建专用 elpa-mirror 以满足自己的需求 ,其中项目地址更改为 GitHub - ymfsing/emacs-packages: Emacs packages I'm using (我不知道为什么无法修改那个主题的内容了)。

PS: 目前有点偏离了,最好拉出做新的主题。

我的理解是,straight更适合包开发者,本地有有一份代码和一份编译好的包。但是这样的话跟cask比也没多大优势,可能是我使用不多吧。目前看quelpa或者直接submodule更满足大多数人。个人必须倾向于使用melpa方式,所以用package.el,有需要可能会上quelpa,暂时就不考虑straight了。