From 25ba3e086805d71e2c0071548f5d98cc462d7986 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Fri, 5 Feb 2021 21:02:58 +0100 Subject: [PATCH] clinspect: Auto-compute column width. --- .emacs.d/lisp/package-cl-inspect-mode.el | 26 +++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/.emacs.d/lisp/package-cl-inspect-mode.el b/.emacs.d/lisp/package-cl-inspect-mode.el index 423d2bc7..21019be5 100644 --- a/.emacs.d/lisp/package-cl-inspect-mode.el +++ b/.emacs.d/lisp/package-cl-inspect-mode.el @@ -5,11 +5,27 @@ (require 'cl-lib) -(defun clinspect--tabulated-list-format (header _data) - ;; TODO: Use data to compute the column size. - (apply #'vector (mapcar (lambda (column) - (list column 12 t . nil)) - header))) +(defvar clinspect-column-max-width 40) + +(defun clinspect--tabulated-list-format (header entries) + (apply #'vector (mapcar (lambda (index) + (let ((column (nth index header))) + (list column + (min clinspect-column-max-width + (max (length column) + (apply #'max (mapcar + (lambda (entry) + (length (prin1-to-string + (nth index entry)))) + entries)))) + t + ;; (if (numberp (nth index (car data))) + ;; (lambda (a b) + ;; (< (nth index a) + ;; (nth index b))) + ;; t) + ))) + (number-sequence 0 (1- (length header)))))) (define-derived-mode clinspect-mode tabulated-list-mode "Clinspect" "Mode to inspect Common Lisp sequences."