如何制作"包" Emacs专栏#39; ELPA列表包装屏幕更广泛?

时间:2015-02-07 19:18:46

标签: emacs elpa

当我在Emacs 24上运行list-packages时,我会看到如下所示的屏幕:

ELPA

问题在于许多包装'名称比包列长。如何使这个列更宽,以便我可以看到完整的包名?

5 个答案:

答案 0 :(得分:2)

也许有一个更优雅的解决方案,但我想出了这个。您可以使用以下代码定义列的宽度,并根据需要更改变量package-menu-column-width。然后,您需要将它包含在您的init文件中(在(require 'package)之后)。它来自package.el文件,它定义了表格的格式。请参阅代码中的第一条注释,您需要修改列的宽度。您可以以类似的方式继续其他列。

;; <<<< here you have to adapt the number to your needs >>>>
(defcustom package-menu-column-width 18
  "Width of the package column."
  :type 'number
  :group 'package)

(define-derived-mode package-menu-mode tabulated-list-mode "Package Menu"
  "Major mode for browsing a list of packages.
Letters do not insert themselves; instead, they are commands.
\\<package-menu-mode-map>
\\{package-menu-mode-map}"
  (setq tabulated-list-format
        `[("Package" ,package-menu-column-width package-menu--name-predicate)
          ("Version" 12 nil)
          ("Status"  10 package-menu--status-predicate)
          ,@(if (cdr package-archives)
                '(("Archive" 10 package-menu--archive-predicate)))
          ("Description" 0 nil)])
  (setq tabulated-list-padding 2)
  (setq tabulated-list-sort-key (cons "Status" nil))
  (add-hook 'tabulated-list-revert-hook 'package-menu--refresh nil t)
  (tabulated-list-init-header))

答案 1 :(得分:0)

http://www.github.com/purcell/emacs.d存储库在lisp / init-elpa.el安装文件中包含以下内容,看起来它可以解决您的问题。

(require-package 'cl-lib)
(require 'cl-lib)

(defun sanityinc/set-tabulated-list-column-width (col-name width)
  "Set any column with name COL-NAME to the given WIDTH."
  (cl-loop for column across tabulated-list-format
           when (string= col-name (car column))
           do (setf (elt column 1) width)))

(defun sanityinc/maybe-widen-package-menu-columns ()
  "Widen some columns of the package menu table to avoid truncation."
  (when (boundp 'tabulated-list-format)
    (sanityinc/set-tabulated-list-column-width "Version" 13)
    (let ((longest-archive-name (apply 'max (mapcar 'length (mapcar 'car package-archives)))))
      (sanityinc/set-tabulated-list-column-width "Archive" longest-archive-name))))

(add-hook 'package-menu-mode-hook 'sanityinc/maybe-widen-package-menu-columns)

答案 2 :(得分:0)

我确实知道这是一个老问题,但我希望我的回答可能有用。 (顺便说一句,我已经使用Windows 8.1上运行的emacs 26.1和程序包管理器1.1.0进行了检查)

让我们找到“ package.el”文件-在我的系统中,该文件位于文件夹中:

d:\Program Files2\emacs\share\emacs\26.1\lisp\emacs-lisp\

在您的emacs中打开它...找到一段类似于以下代码的代码: (在我的系统中,这些是“ package.el”文件的2553..2559行)

(setq tabulated-list-format
    `[("Package" 18 package-menu--name-predicate)
      ("Version" 13 nil)
      ("Status"  10 package-menu--status-predicate)
      ,@(if (cdr package-archives)
            '(("Archive" 13 package-menu--archive-predicate)))
      ("Description" 0 nil)])                                 

如您所见,这里是包管理器列的宽度定义。 根据需要更改适当的列的宽度... (就我而言,18-> 25、13-> 15、10-> 10、13-> 15就足够了。)

“字节编译”此文件(例如,在“ Emacs-Lisp”菜单中选择此选项) 您应该会收到以下消息:

  

“写\ package.elc”

重新启动Emacs

Voila!

PS:当然,这不是一个优雅的解决方案,只是暂时的解决方案。它仅在下一次Emacs更新之前有效(当然,您可以在emacs更新之后重复此过程...)

答案 3 :(得分:0)

上面Tim X给出的答案与我想的最接近-但是,该函数在设置相关列宽之前会计算“归档”列中最大项目的长度。为了使“包装”列的大小适合其中的最大项目,我发现以下内容对我有用:

(require 'cl-lib)
(defun godeater/set-tabulated-list-column-width (col-name width)
  "Set any column with the name COL-NAME to the given WIDTH."
  (cl-loop for column across tabulated-list-format
       when (string= col-name (car column))
       do (setf (elt column 1) width)))

(defun godeater/maybe-widen-package-menu-columns ()
  "Widen some columns of the package menu table to avoid truncation."
  (when (boundp 'tabulated-list-format)
    (godeater/set-tabulated-list-column-width "Version" 13 )
    (let ((longest-package-name (apply 'max (mapcar 'length (mapcar 'symbol-name (mapcar 'car package-archive-contents))))))
      (godeater/set-tabulated-list-column-width "Package" longest-package-name))))

(add-hook 'package-menu-mode-hook 'godeater/maybe-widen-package-menu-columns)

答案 4 :(得分:0)

这是我的看法。它添加了一个return Scaffold( appBar: AppBar( title: Padding( padding: EdgeInsets.symmetric( vertical: 10, ), child: Image.asset(kLogoImage, height: AppBar().preferredSize.height * 0.6), ), ... 钩子(类似于Purcell解决方案),并且比其他解决方案更简洁地修改了package-menu-mode。它也扩大了“存档”列,因为我讨厌看到tabulated-list-format而不是melpa-s...。 (是的,该列带有省略号。)我并不在意一些动态计算列宽的函数,因为它不会经常更改,并且几乎每个包名称都将小于或等于它。< / p>

melpa-stable