@@ -191,111 +191,75 @@ DISPLAY-START: `integer', e.g. 3820"
( use-package dashboard
:delight ( dashboard-mode " Db " ) ;; "\u01F153
:config
( require 'linum ) ;; TODO: (delete after dashboard fixed it) bc/ dashboard.el sets (linum-mode -1) in `dashboar d-mode '
;; because we use `use-package' include `use-package-statistics' if computed
( defun my-dashboard-init-info ( )
( l et ( ( package-count 0 ) ( time ( emacs-init-time ) ) )
( when ( bound-and-true-p package-alist )
( setq package-count ( length package-activated-list ) ) )
( when ( boundp 'straight--profile-cache )
( setq package-count ( + ( hash-table-size straight--profile-cache ) package-count ) ) )
;; added case
( when use-package-compute-statistics
( setq package-count ( + ( hash-table-size use-package-statistics ) package-count ) ) )
( if ( zerop package-count )
( format " Emacs started in %s " time )
( format " %d packages loaded in %s " package-count time ) ) ) )
( setq dashboard-init-info ( my-dashboard-init-info ) )
;; overwrite bc/ to recompute `dashboard-init-info' on refresh
( defun dashboard-insert-init-info ( )
" Insert init info when `dashboard-set-init-info' is t. "
( when dashboard-set-init-info
( setq dashboard-init-info ( my-dashboard-init-info ) ) ;; ADDED
( dashboard-center-line dashboard-init-info )
( insert ( propertize dashboard-init-info 'face 'font-lock-comment-face ) ) ) )
" Init info with packages loaded and init time. "
( setq dashboard-startup-banner 'logo )
;; see `dashboad-widget '
( setq dashboard-page-separator " \n \f \n " )
( setq dashboard-set-heading-icons t )
( s etq dashboard-set-file-icons t )
( setq dashboard-set-navigator t )
( setq dashboard-page-separator " \n \f \n " ) ;; \f requires page-break-lines-mode
;; ( setq dashboard-navigator-buttons ;; Format: "(icon title help action face prefix suffix)"
;; (list (list ;; line1
;; ;; "☆" "Star" "Show stars" (lambda (&rest _) (show-stars)) warning "[" "]" )
;; (list "?" "" "?/h" (lambda (&rest _) (describe-mode)) nil "<" ">") ;;#'show-help
;; )) )
( require 'all-the-icons )
( defun dashboard-navigator-buttons-func ( )
;; Format: "(icon title help action face prefix suffix)"
` (
;; line: custom views
( ( " " " Custom Views: " " custom views " nil default " " " " )
( , ( all-the-icons-fileicon " elisp " :height 1.0 :v-adjust -0.1 )
" ELisp " " my-view-elisp " ( lambda ( &rest _ ) ( my-tab-view-elisp ) ) )
( , ( all-the-icons-alltheicon " python " :height 1.0 :v-adjust 0.0 )
" Python " " my-view-python " ( lambda ( &rest _ ) ( my-tab-view-python ) ) )
( , ( all-the-icons-allthe icon " script " :height 1.0 :v-adjust 0.0 )
" Shell " " my-view-shell " ( lambda ( &rest _ ) ( my-tab-view-shell ) ) )
( , ( all-the-icons-octicon " file-media " :height 1.0 :v-adjust 0.0 )
" Gnuplot " " my-view-gnuplot " ( lambda ( &rest _ ) ( my-tab-view-gnuplot ) ) )
( , ( all-the-icons-octicon " file-pdf " :height 1.0 :v-adjust 0.0 )
" Org PDF " " my-view-org-pdf " ( lambda ( &rest _ ) ( my-tab-view-org-pdf ) ) ) )
;; line: major modes 1st
( ( " " " Major Modes: " " major modes " nil default " " " " )
( " " " Deft " " deft " ( lambda ( &rest _ ) ( deft ) ) )
( " " " ESh ell " " eshell-mode " ( lambda ( &rest _ ) ( eshell ) ) )
( " " " Magit " " magit " ( lambda ( &rest _ ) ( magit ) ) )
( , ( all-the-icons-octicon " mail " :height 1.0 :v-adjust 0. 0 )
" Mu4e " " mu4e " ( lambda ( &rest _ ) ( mu4e ) ) )
( , ( all-the-icons-octicon " mail " :height 1.0 :v-adjust 0.0 )
" Notmuch " " notmuch " ( lambda ( &rest _ ) ( notmuch ) ) )
( " " " Org-Brain " " org-brain-visualize " ( lambda ( &rest _ ) ( call-interactively 'org-brain-visualize ) ) ) )
;; line: major modes 2nd
( ( " " " Org-Drill " " org-drill " ( lambda ( &rest _ ) ( org-drill ) ) )
( " " " Powershell " " powershell " ( lambda ( &rest _ ) ( powershell ) ) )
( " " " Shell " " shell " ( lambda ( &rest _ ) ( shell ) ) )
( " " " Treemacs " " treemacs " ( lambda ( &rest _ ) ( treemacs ) ) ) )
;; last line
( ;; "☆" "Star" "Show stars" (lambda (&rest _) (show-stars)) warning "[" "]")
( , ( all-the-icons-material " help_outline " :height 1.1 :v-adjust -0.15 ) ;; all-the-icons-octicon "question"
" Help " " ?/h " ( lambda ( &rest _ ) ( describe-mode ) ) nil ) ;; #'show-help
( , ( all-the-icons-material " refresh " :height 1.1 :v-adjust -0.15 ) ;; all-the-icons-octicon "sync"
" Restart " " restart-emacs " ( lambda ( &rest _ ) ( restart-emacs ) ) nil ) ) ) )
( setq dashboard-navigator-buttons ( dashboard-navigator-buttons-func ) )
( setq dashboard-items ' ( ( recents . 10 )
( setq dashboard-startup-banner 'logo )
( setq dashboard-navigator-buttons
;; list of lines having list of elements
;; element: (icon title help action face prefix suffix )
` ( ;; 1st line custom views
( ( " " " Custom Views: " " custom views " nil default " " " " )
( , ( all-the-icons-fileicon " elisp " :height 1.0 :v-adjust -0.1 ) " ELisp " " my-view-elisp " ( lambda ( &rest _ ) ( my-tab-view-elisp ) ) )
( , ( all-the-icons-alltheicon " python " :height 1.0 :v-adjust 0.0 ) " Python " " my-view-python " ( lambda ( &rest _ ) ( my-tab-view-python ) ) )
( , ( all-the-icons-alltheicon " script " :height 1.0 :v-adjust 0.0 ) " Shell " " my-view-shell " ( lambda ( &rest _ ) ( my-tab-view-shell ) ) )
( , ( all-the-icons-octicon " file-media " :height 1.0 :v-adjust 0.0 ) " Gnuplot " " my-view-gnuplot " ( lambda ( &rest _ ) ( my-tab-view-gnuplot ) ) )
( , ( all-the-icons-octicon " file-pdf " :height 1.0 :v-adjust 0.0 ) " Org PDF " " my-view-org-pdf " ( lambda ( &rest _ ) ( my-tab-view-org-pdf ) ) ) )
;; 2nd line major modes 1st part
( ( " " " Major Modes: " " major modes " nil default " " " " )
( " " " Deft " " deft " ( lambda ( &rest _ ) ( deft ) ) )
( " " " EShell " " eshell-mode " ( lambda ( &rest _ ) ( eshell ) ) )
( " " " Magit " " magit " ( lambda ( &rest _ ) ( magit ) ) )
( , ( all-the-icons-oct icon " mail " :height 1.0 :v-adjust 0.0 ) " Mu4e " " mu4e " ( lambda ( &rest _ ) ( mu4e ) ) )
( , ( all-the-icons-octicon " mail " :height 1.0 :v-adjust 0.0 ) " Notmuch " " notmuch " ( lambda ( &rest _ ) ( notmuch ) ) )
( " " " Org-Brain " " org-brain-visualize " ( lambda ( &rest _ ) ( call-interactively 'org-brain-visualize ) ) ) )
;; 3rd line major modes 2nd part
( ( " " " Org-Drill " " org-drill " ( lambda ( &rest _ ) ( org-drill ) ) )
( " " " Powershell " " powershell " ( lambda ( &rest _ ) ( powershell ) ) )
( " " " Shell " " shell " ( lambda ( &rest _ ) ( shell ) ) )
( " " " Treemacs " " treemacs " ( lambda ( &rest _ ) ( treemacs ) ) ) )
;; 4th line infos
( ( , ( all-the-icons-material " help_outline " :height 1.1 :v-adjust -0.15 ) " H elp " " ?/h " ( lambda ( &rest _ ) ( d escribe-mode ) ) nil )
( , ( all-the-icons-material " refresh " :height 1.1 :v-adjust -0.15 ) " Restart " " restart-emacs " ( lambda ( &rest _ ) ( restart-emacs ) ) nil ) ) ) )
( setq dashboard-items ' ( ( recents . 1 0)
( bookmarks . 5 )
;;(projects . 5)
;;( agenda . 5 )
( registers . 5 ) ) )
;; (projects . 5)
( agenda . 5 )
( registers . 5 )
( custom . 5 ) ) )
( setq dashboard-item-shortcuts
' ( ( recents . " r " )
( bookmarks . " m " )
( projects . " p " )
( agenda . " a " )
( registers . " e " )
( custom . " b " ) ) )
;; because we use `use-package' include `use-package-statistics' if
;; computed
( setq dashboard-init-info
( lambda ( )
( let ( ( package-count 0 ) ( time ( emacs-init-time ) ) )
( when ( bound-and-true-p package-alist )
( setq package-count ( length package-activated-list ) ) )
( when ( boundp 'straight--profile-cache )
( setq package-count ( + ( hash-table-count straight--profile-cache ) package-count ) ) )
( when ( fboundp 'elpaca--queued )
( setq package-count ( length ( elpaca--queued ) ) ) )
;; added case
( when use-package-compute-statistics
( setq package-count ( + ( hash-table-size use-package-statistics ) package-count ) ) )
( if ( zerop package-count )
( format " Emacs started in %s " time )
( format " %d packages loaded in %s " package-count time ) ) ) ) )
;; `clean-buffer-list'
( defun my-buffer-name-list ( &optional special internal )
" If SPECIAL non-nil then include special buffers.
If INTERNAL non-nil then include internal buffers. "
( let ( ( b-list ( mapcar ( function buffer-name ) ( buffer-list ) ) )
new-list head )
( while b-list
( setq head ( car b-list ) )
( when ( or internal ;; check if no space is in the fron
( not ( string= " " ( substring head 0 1 ) ) ) )
( when ( or special ;; check if no star are in the front and back
( and ( not ( string= " * " ( substring head 0 1 ) ) )
( not ( string= " * " ( cl-subseq head -1 ) ) ) ) )
( push head new-list ) ) )
( setq b-list ( cdr b-list ) ) )
( nreverse new-list ) ) )
( defun my-buffer-name-list-special ( )
" List special buffers. "
( let ( ( b-list ( mapcar ( function buffer-name ) ( buffer-list ) ) )
new-list head )
( while b-list
( setq head ( car b-list ) )
( when ( and ( string= " * " ( substring head 0 1 ) )
( string= " * " ( cl-subseq head -1 ) ) )
( push head new-list ) )
( setq b-list ( cdr b-list ) ) )
( nreverse new-list ) ) )
;; overwrite with addition parameter to supress the logic to insert
;; a pre-defined heading icon. This is used to include own icon.
( defun dashboard-insert-heading ( heading &optional shortcut suppress-icon )
;; custom section
;; overwrite to supress an inserted whitespace if a pre-defined
;; heading is not found. This is used to include own icon, e.g. in
;; front of executing `dashboard-insert-section'.
( defun dashboard-insert-heading ( heading &optional shortcut )
" Insert a widget HEADING in dashboard buffer, adding SHORTCUT if provided. "
( when ( and ( display-graphic-p ) dashboard-set-heading-icons )
;; Try loading `all-the-icons'
@@ -303,7 +267,6 @@ If INTERNAL non-nil then include internal buffers."
( require 'all-the-icons nil 'noerror ) )
( error " Package `all-the-icons' isn't installed " ) )
( unless suppress-icon ;; ADDED
( insert ( cond
( ( string-equal heading " Recent Files: " )
( all-the-icons-octicon ( cdr ( assoc 'recents dashboard-heading-icons ) )
@@ -321,8 +284,8 @@ If INTERNAL non-nil then include internal buffers."
( ( string-equal heading " Projects: " )
( all-the-icons-octicon ( cdr ( assoc 'projects dashboard-heading-icons ) )
:height 1.2 :v-adjust 0.0 :face 'dashboard-heading ) )
( t " " ) ) )
) ;; ADDED
;; (t " "))) ;; REMOVED
( t " " ) ) ) ;; ADDED
( insert " " ) )
( insert ( propertize heading 'face 'dashboard-heading ) )
@@ -337,52 +300,57 @@ If INTERNAL non-nil then include internal buffers."
( overlay-put ov 'display ( or ( cdr ( assoc heading dashboard-item-names ) ) heading ) )
( overlay-put ov 'face 'dashboard-heading ) )
( when shortcut ( insert ( format " (%s) " shortcut ) ) ) )
;; overwrite to supress the logic to insert a pre-defined heading
;; icon. This is used to include own ic on.
( defmacro my-dashboard-insert-section ( section-name list list-size shortcut action &rest widget-params )
" Add a section with SECTION-NAME and LIST of LIST-SIZE items to the dashboard.
SHORTCUT is the keyboard shortcut used to access th e section .
ACTION is theaction taken when the user activates the widget button.
WIDGET-PARAMS are passed to the \" widget-create \" function. "
` ( progn
( dashboard-insert-heading , section-name
( if ( and , list , shortcut dashboard-show-shortcuts ) , shortcut )
t ) ;; ADDED for the overwritten version, see above
( if , list
( when ( and ( dashboard-insert-section-list
, section-name
( dashboard-subseq , list , list-size )
, action
,@ widget-params )
, shortcut )
( dashboard-insert-shortcut , shortcut , section-name ) )
( insert ( propertize " \n --- No items --- " 'face 'dashboard-no-items-face ) ) ) ) )
( defun dashboard-insert-buffers ( list-size )
;;; define functions for the secti on
;; `clean-buffer-list'
( defun my-buffer-name-list ( &optional special internal )
" If SPECIAL non-nil then includ e sp ecial buffers .
If INTERNAL non-nil then include internal buffers. "
( let ( ( b-list ( mapcar ( function buffer-name ) ( buffer-list ) ) )
new-list head )
( while b-list
( setq head ( car b-list ) )
( when ( or internal ;; check if no space is in the fron
( not ( string= " " ( substring head 0 1 ) ) ) )
( when ( or special ;; check if no star are in the front and back
( and ( not ( string= " * " ( substring head 0 1 ) ) )
( not ( string= " * " ( cl-subseq head -1 ) ) ) ) )
( push head new-list ) ) )
( setq b-list ( cdr b-list ) ) )
( nreverse new-list ) ) )
( defun my-buffer-name-list-special-only ( )
" List only special buffers *...*. "
( let ( ( b-list ( mapcar ( function buffer-name ) ( buffer-list ) ) )
new-list head )
( while b-list
( setq head ( car b-list ) )
( when ( and ( string= " * " ( substring head 0 1 ) )
( string= " * " ( cl-subseq head -1 ) ) )
( push head new-list ) )
( setq b-list ( cdr b-list ) ) )
( nreverse new-list ) ) )
;;; define section function
( defun dashboard-insert-custom ( list-size )
" Add the list of LIST-SIZE items from buffers list.
Example `dashboard-insert-recent' .
See also `dashboard-insert-section' for the sequence of elements. "
;; insert icon
( when ( display-graphic-p )
( insert ( all-the-icons-octicon
" versions "
:height 1.2 :v-adjust 0.0 :face 'dashboard-heading ) ) )
( my- dashboard-insert-section
( dashboard-insert-section
" Special Buffers: "
;;(my-buffer-name-list)
( my-buffer-name-list-special )
( my-buffer-name-list-special-only ) ;; (my-buffer-name-list t )
list-size
" b "
` ( lambda ( &rest ignore ) ( switch-to-buffer , el ) )
'custom
( dashboard-get-shortcut 'custom )
` ( lambda ( &rest _ ) ( switch-to-buffer , el ) )
( abbreviate-file-name el ) ) )
( add-to-list 'dashboard-item-generators ' ( buffers . dashboard-insert-buffers ) t )
;; see below add-to-list to dashboard-items
( add-to-list 'dashboard-items ' ( buffers . 5 ) t )
;; (add-to-list 'dashboard-items '(custom) t)
;; needs package ‘ all-the-icons’
( setq dashboard-set-heading-icons t )
( setq dashboard-set-file-icons t )
( add-to-list 'dashboard-item-generators ' ( custom . dashboard-insert-custom ) )
;; activate `dashboard'
( dashboard-setup-startup-hook ) )
( use-package indent-guide