update packages and add valign
This commit is contained in:
15
lisp/dashboard/banners/logo-256color.ans
Normal file
15
lisp/dashboard/banners/logo-256color.ans
Normal file
@@ -0,0 +1,15 @@
|
||||
[38;5;97m▁▂▃▄▄▄▄▃▂▁[0m
|
||||
[38;5;97m ▃▅[48;5;97m▆ [0m[38;5;97m▇▆▃[0m
|
||||
[38;5;97m▁▅[48;5;97m[38;5;61m [38;5;97m [38;5;140m [38;5;231m▁▂▃▄▄▂[38;5;103m [38;5;97m [38;5;61m [0m[38;5;97m▅▁[0m
|
||||
[38;5;236m [38;5;97m▄[48;5;97m[38;5;61m [38;5;97m [38;5;97m [38;5;103m [48;5;231m[38;5;97m▇▆▆▄╸[38;5;231m [48;5;97m▊[38;5;97m [38;5;61m [0m[38;5;97m▄[0m
|
||||
[38;5;97m[7m▘[27m[38;5;97m[48;5;97m [38;5;97m [38;5;231m▅▆[48;5;231m▆[48;5;254m▇[48;5;231m[38;5;231m [38;5;231m▁[38;5;97m▁▂▂▂▃▃[48;5;97m[38;5;231m▘[38;5;97m [0m[38;5;97m[7m▝[27m[0m
|
||||
[38;5;97m▐[48;5;97m [48;5;231m▅▁[38;5;231m [48;5;103m[38;5;255m▂[48;5;97m[38;5;252m [38;5;97m [0m[38;5;97m▊[0m
|
||||
[38;5;97m[7m▎[27m[48;5;97m [38;5;97m [48;5;231m[38;5;97m▆▄▂[38;5;231m▁[48;5;97m[38;5;231m▆▄▂ [38;5;97m█[0m
|
||||
[38;5;97m[7m▉[27m[48;5;97m[38;5;97m [38;5;255m [38;5;231m▂▄▅▆▆[48;5;254m▆[48;5;231m[38;5;231m [38;5;231m▁[38;5;97m▂▃[48;5;97m[38;5;231m╴[38;5;97m [0m[38;5;97m▎[0m
|
||||
[48;5;97m [38;5;231m ▅[48;5;231m▇[48;5;231m [38;5;231m [38;5;97m▂▄▆[48;5;97m[38;5;255m [38;5;97m [38;5;61m [0m[38;5;97m▎[0m
|
||||
[38;5;97m▐[48;5;97m [38;5;231m▝[48;5;231m[38;5;231m [38;5;231m [48;5;97m▌[38;5;146m [38;5;97m [0m[38;5;97m[7m▗[27m[0m
|
||||
[38;5;97m[7m▖[27m[48;5;97m [48;5;231m▇▄▂[38;5;231m▂[38;5;231m [48;5;231m[38;5;231m▆[48;5;97m▆▆▅▅▅▅▅▅▄▃▖[38;5;97m [0m[38;5;97m[7m▗[27m[0m
|
||||
[38;5;97m[7m▂[27m[48;5;97m [38;5;253m [48;5;231m[38;5;97m▇▆▆▆▄━[38;5;146m⎻[38;5;231m▁[38;5;97m▁▃▅[48;5;97m[38;5;231m [38;5;97m [0m[38;5;97m[7m▗[27m[0m
|
||||
[38;5;97m[7m▅▁[27m[48;5;97m [38;5;254m─[38;5;231m─[48;5;231m[38;5;97m▅▅▅▆▇[48;5;97m[38;5;254m [38;5;97m [38;5;97m [0m[38;5;97m[7m▁▅[27m[0m
|
||||
[38;5;97m[7m▆▃▂[27m[48;5;97m [0m[38;5;97m[7m▂▃▅[27m[0m
|
||||
[38;5;97m[7m▇▅▄▃▃▃▃▃▃▄▅▇[27m[0m
|
||||
14
lisp/dashboard/banners/logo-braille.txt
Normal file
14
lisp/dashboard/banners/logo-braille.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣤⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⡀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⠿⠟⠛⠛⠉⠉⠛⢿⣿⣿⣿⣷⣄⠀⠀⠀⠀
|
||||
⠀⠀⢀⣼⣿⣿⣿⣿⣿⡿⠿⠿⠿⠟⠛⠛⠛⠃⠀⠀⢈⣿⣿⣿⣿⣿⣧⡀⠀⠀
|
||||
⠀⠀⣾⣿⣿⣿⣿⣿⠁⠀⠀⠀⢀⣀⣤⣤⣤⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀
|
||||
⠀⣸⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀
|
||||
⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠷⠦⠤⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀
|
||||
⠀⣿⣿⣿⣿⣿⠿⠋⠁⠀⠀⠀⢀⣀⣤⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀
|
||||
⠀⢻⣿⣿⣿⡏⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀
|
||||
⠀⠈⢿⣿⣿⣿⣤⣀⠀⠀⠈⠙⠛⠛⠛⠿⠿⠿⠿⠿⠿⠿⣿⣿⣿⣿⣿⣿⠃⠀
|
||||
⠀⠀⠈⢿⣿⣿⣿⣿⣿⣶⣶⣤⣤⣤⣤⣤⠤⠄⠀⠀⢀⣠⣼⣿⣿⣿⡿⠃⠀⠀
|
||||
⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣟⣛⣩⣭⣤⣤⣴⣶⣶⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠀⠀⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠛⠿⠿⠿⠟⠛⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
15
lisp/dashboard/banners/logo-truecolor.ans
Normal file
15
lisp/dashboard/banners/logo-truecolor.ans
Normal file
@@ -0,0 +1,15 @@
|
||||
[38;2;143;133;191m▁[38;2;132;128;194m▁[38;2;134;127;191m▂[38;2;132;124;189m▂[38;2;131;125;192m▁[38;2;147;135;192m▁[0m
|
||||
[38;2;135;132;197m▁▃▅▇[48;2;131;128;196m[38;2;131;129;197m▅[48;2;131;129;197m[38;2;131;128;196m▄▄[48;2;130;127;195m[38;2;129;124;194m▃[48;2;129;125;194m[38;2;128;122;193m▄[48;2;129;123;193m[38;2;128;120;191m▄[48;2;128;121;192m[38;2;127;118;190m▄[48;2;129;120;190m[38;2;0;0;0m [0m[38;2;132;121;190m▇[38;2;130;118;188m▅[38;2;134;120;188m▃[0m
|
||||
[38;2;130;128;196m▂▆[48;2;131;129;197m[38;2;130;128;196m▘[38;2;131;129;197m [38;2;131;128;196m ▃[48;2;130;127;196m[38;2;129;124;194m▃[48;2;130;125;194m[38;2;0;0;0m [48;2;129;123;193m[38;2;201;199;226m▁[48;2;129;123;192m[38;2;229;228;241m▂[48;2;130;122;192m[38;2;239;238;246m▃[38;2;242;241;247m▄[38;2;253;252;253m▄[38;2;250;250;252m▄[38;2;246;245;249m▂[48;2;127;112;186m[38;2;0;0;0m [48;2;123;107;184m[38;2;123;105;182m▃[48;2;124;106;182m[38;2;0;0;0m [0m[38;2;125;105;181m▅[0m
|
||||
[38;2;131;129;197m[7m▘[27m[48;2;131;129;197m[38;2;131;129;196m▘[38;2;131;128;197m [38;2;130;127;196m▗[48;2;130;128;196m[38;2;129;125;194m▃[48;2;130;126;195m[38;2;129;123;193m▃[48;2;128;123;193m[38;2;151;145;201m▁[48;2;127;120;192m[38;2;179;174;214m▁[48;2;130;122;192m[38;2;200;197;225m▁[38;2;229;226;239m▁[38;2;246;246;249m▁[38;2;235;234;243m▂[38;2;251;250;252m▂[48;2;234;233;243m[38;2;146;134;195m╸[48;2;255;255;255m[38;2;255;254;255m╴[38;2;254;254;254m [48;2;123;104;181m[38;2;223;219;236m▊[48;2;122;102;181m[38;2;120;99;180m▄[48;2;121;100;180m[38;2;119;97;179m▅[48;2;120;98;179m[38;2;119;95;178m▄[48;2;119;96;178m[38;2;118;93;176m▄[0m[38;2;118;93;176m▅[0m
|
||||
[38;2;131;129;197m▗[48;2;131;129;197m[38;2;0;0;0m [48;2;131;129;197m[38;2;131;128;196m▂[38;2;130;126;195m▄[48;2;130;127;195m[38;2;129;124;194m▅[48;2;134;129;196m[38;2;0;0;0m [48;2;146;141;201m[38;2;242;241;248m▆[48;2;254;254;254m[38;2;255;255;255m▄▅▆━[48;2;255;255;255m[38;2;254;254;254m▄▅[48;2;252;252;253m[38;2;141;127;192m▃[48;2;250;249;252m[38;2;129;112;185m▃[48;2;248;247;250m[38;2;124;105;181m▃[48;2;243;242;248m[38;2;121;100;180m▃[48;2;241;239;246m[38;2;124;103;181m▄[48;2;119;96;178m[38;2;118;94;177m ▄[48;2;118;94;177m[38;2;117;92;175m▄[48;2;118;92;176m[38;2;117;90;174m▄[48;2;117;90;175m[38;2;116;88;173m▄[48;2;116;89;174m[38;2;116;86;172m▅[0m[38;2;116;86;172m[7m▝[27m[0m
|
||||
[38;2;133;129;195m[7m▘[27m[48;2;130;127;196m[38;2;129;124;194m▄[48;2;129;125;194m[38;2;128;122;193m▄[48;2;129;123;193m[38;2;128;120;192m▄[48;2;128;121;192m[38;2;127;118;190m▄[48;2;129;121;192m[38;2;127;117;190m▇[48;2;218;216;235m▅[48;2;255;255;255m[38;2;254;254;254m▄▁[48;2;254;254;254m[38;2;255;255;255m▌[48;2;127;110;185m[38;2;234;232;243m▂[48;2;127;110;185m[38;2;0;0;0m [48;2;123;105;182m[38;2;122;103;181m▄[48;2;122;103;181m[38;2;121;100;180m▄[48;2;121;101;180m[38;2;120;98;179m▄[48;2;120;99;180m[38;2;119;96;178m▅[48;2;119;97;179m[38;2;118;94;177m▄[48;2;119;95;177m[38;2;118;92;176m▄[48;2;118;93;176m[38;2;117;90;175m▄[48;2;117;91;175m[38;2;116;88;173m▄[48;2;117;89;174m[38;2;116;86;172m▄[48;2;116;87;173m[38;2;115;84;171m▄[48;2;115;85;171m[38;2;114;82;170m▄[48;2;115;83;170m[38;2;114;81;169m▄[48;2;114;81;169m[38;2;113;78;167m▄[0m[38;2;113;78;167m[7m▝[27m[0m
|
||||
[38;2;129;123;193m[7m▊[27m[48;2;129;123;193m[38;2;128;121;192m▄[48;2;128;121;192m[38;2;127;119;190m▃[48;2;128;120;191m[38;2;127;117;190m▅[48;2;127;118;190m[38;2;126;115;188m▄[48;2;126;116;189m[38;2;125;113;187m▄[48;2;126;114;188m[38;2;125;111;186m▅[48;2;125;112;186m[38;2;124;109;185m▅[48;2;124;108;184m[38;2;0;0;0m [48;2;201;196;224m[38;2;124;108;183m▆[48;2;233;231;242m[38;2;125;107;182m▄[48;2;239;237;246m[38;2;124;104;182m▂[48;2;244;243;248m[38;2;157;141;198m▁[48;2;127;110;185m[38;2;246;245;249m▆[48;2;117;91;175m[38;2;247;246;250m▄[48;2;117;91;175m[38;2;243;241;247m▂[48;2;117;91;175m[38;2;0;0;0m [48;2;117;91;175m[38;2;116;87;173m▁[48;2;117;90;174m▅[48;2;116;87;173m[38;2;115;85;171m▃[48;2;115;85;171m[38;2;114;82;170m▃[48;2;115;84;171m[38;2;114;81;169m▅[48;2;114;82;169m[38;2;113;79;168m▄[48;2;113;80;168m[38;2;112;77;166m▄[48;2;113;78;167m[38;2;112;75;165m▄[48;2;112;76;166m[38;2;112;73;164m▄[48;2;112;74;165m[38;2;113;72;165m▄[0m[38;2;113;72;165m▎[0m
|
||||
[38;2;127;118;190m[7m▌[27m[48;2;127;118;190m[38;2;126;115;188m▄[48;2;126;116;189m[38;2;125;113;187m▄[48;2;126;114;188m[38;2;125;111;186m▄[48;2;125;112;187m[38;2;124;109;185m▄[48;2;124;110;185m[38;2;123;108;184m▄[38;2;211;207;230m▁[38;2;242;241;247m▃[38;2;253;252;253m▄[48;2;128;110;184m[38;2;247;246;250m▆[48;2;254;254;254m[38;2;255;255;255m▄▅━━[48;2;255;255;255m[38;2;254;254;254m▄[48;2;239;237;245m[38;2;116;87;172m▂[48;2;233;229;241m[38;2;116;86;172m▃[48;2;115;84;170m[38;2;205;196;223m▘[48;2;115;84;170m[38;2;0;0;0m [48;2;114;82;170m[38;2;113;79;168m▄[48;2;114;80;168m[38;2;113;77;167m▄[48;2;113;78;167m[38;2;112;75;165m▃[48;2;112;77;166m[38;2;112;74;165m▅[48;2;112;74;165m[38;2;112;72;165m▄[48;2;112;72;165m[38;2;115;70;167m▂[48;2;114;71;166m[38;2;117;69;168m▃[48;2;116;69;168m[38;2;120;68;170m▂[0m[38;2;120;68;170m▌[0m
|
||||
[38;2;125;112;186m[7m▊[27m[48;2;125;112;186m[38;2;124;109;185m▃[48;2;125;111;186m[38;2;124;108;184m▅[48;2;124;109;185m[38;2;123;106;183m▅[48;2;124;107;183m[38;2;203;197;225m▗[48;2;254;254;254m[38;2;255;255;255m▗▆[48;2;255;255;255m [38;2;254;254;254m▃[48;2;240;237;245m[38;2;130;106;182m▃[48;2;224;219;236m[38;2;119;93;176m▅[48;2;209;202;226m[38;2;119;92;175m▇[48;2;117;88;173m[38;2;0;0;0m [48;2;116;87;172m[38;2;115;84;171m▅[48;2;115;84;171m[38;2;114;82;169m▃[48;2;115;83;170m[38;2;114;80;168m▅[48;2;114;81;169m[38;2;113;78;167m▅[48;2;113;79;167m[38;2;112;76;166m▄[48;2;113;77;167m[38;2;112;74;165m▅[48;2;112;75;165m[38;2;112;73;164m▅[48;2;112;73;164m[38;2;114;71;166m▃[48;2;114;71;165m[38;2;117;69;168m▂[48;2;116;70;167m[38;2;119;68;169m▃[48;2;117;69;168m[38;2;121;67;171m▄[48;2;120;68;171m[38;2;124;66;173m▃[48;2;123;66;173m[38;2;127;64;175m▃[0m[38;2;127;64;175m▎[0m
|
||||
[38;2;127;110;183m[7m▖[27m[48;2;123;105;182m[38;2;122;102;180m▃[48;2;122;103;181m[38;2;121;100;180m▄[38;2;242;241;246m▝[48;2;255;255;255m[38;2;254;254;254m▃[38;2;255;255;255m [48;2;254;254;255m▊[48;2;146;125;190m[38;2;222;216;234m▌[48;2;122;96;176m[38;2;0;0;0m [48;2;116;86;172m[38;2;113;81;170m▁[48;2;115;85;171m[38;2;114;82;170m▃[48;2;115;83;170m[38;2;114;81;169m▄[48;2;114;81;169m[38;2;113;78;167m▄[48;2;113;79;168m[38;2;112;76;166m▃[48;2;112;77;166m[38;2;112;74;165m▃[48;2;112;76;166m[38;2;112;73;164m▅[48;2;112;72;165m[38;2;0;0;0m [48;2;113;72;165m[38;2;116;70;168m▂[48;2;114;71;166m[38;2;118;69;169m▄[48;2;117;69;168m[38;2;121;67;171m▃[48;2;120;68;170m[38;2;124;66;173m▂[48;2;122;67;172m[38;2;127;65;174m▃[48;2;125;66;173m[38;2;129;64;176m▄[48;2;128;64;175m[38;2;131;63;177m▅[0m[38;2;131;63;177m[7m▗[27m[0m
|
||||
[48;2;119;97;179m [38;2;118;94;177m▃[48;2;119;96;178m[38;2;118;93;176m▅[48;2;119;96;178m[38;2;0;0;0m [48;2;226;221;237m[38;2;118;91;175m▄[48;2;248;247;250m[38;2;128;102;179m▃[48;2;255;255;255m[38;2;254;254;254m▄▃[48;2;254;254;254m[38;2;255;255;255m▆▄[48;2;142;117;185m[38;2;253;252;253m▆[48;2;254;254;254m[38;2;255;255;255m▃[48;2;115;79;168m[38;2;245;244;248m▆[48;2;113;76;166m[38;2;243;240;247m▆[48;2;112;73;164m[38;2;241;239;246m▆[38;2;253;252;253m▅[38;2;252;251;253m▅[48;2;126;66;174m[38;2;249;247;250m▅[48;2;126;66;174m[38;2;248;246;250m▄[48;2;126;66;174m[38;2;204;183;222m▖[48;2;127;65;175m[38;2;131;63;177m▄[48;2;131;63;177m[38;2;134;61;179m▃[48;2;133;62;178m[38;2;136;60;181m▄[0m[38;2;137;63;181m[7m▗[27m[0m
|
||||
[38;2;117;90;174m[7m▂[27m[48;2;117;90;174m[38;2;116;88;172m▄[48;2;116;88;173m[38;2;115;85;171m▄[48;2;116;86;172m[38;2;115;83;170m▄[48;2;115;84;171m[38;2;114;82;169m▄[48;2;114;82;169m[38;2;113;80;168m▄[48;2;115;81;169m[38;2;0;0;0m [48;2;211;203;226m[38;2;114;78;167m▇[48;2;210;201;225m▆[48;2;226;220;235m▆[38;2;210;201;225m[48;2;114;78;167m▁[48;2;114;78;167m[38;2;232;227;239m▃[48;2;114;78;167m[38;2;239;235;244m▄[48;2;239;235;244m[38;2;114;78;167m⎺[48;2;245;243;248m[38;2;142;90;183m▁[48;2;247;244;249m[38;2;136;75;180m▂[48;2;239;233;244m[38;2;133;65;178m▃[48;2;234;225;241m[38;2;136;68;180m▅[48;2;139;69;182m[38;2;0;0;0m [48;2;134;61;180m[38;2;138;59;182m▄[48;2;139;59;182m[38;2;0;0;0m [0m[38;2;139;59;182m[7m▂[27m[0m
|
||||
[38;2;117;85;170m[7m▂[27m[48;2;117;85;170m[38;2;0;0;0m [48;2;113;79;168m[38;2;112;76;166m▅[48;2;112;76;166m[38;2;0;0;0m [48;2;117;81;168m[38;2;186;171;208m⎻[48;2;181;163;207m[38;2;118;77;168m▅[48;2;217;209;229m[38;2;117;72;168m▅[48;2;221;212;232m[38;2;117;67;169m▅[48;2;236;232;242m[38;2;122;71;172m▆[48;2;245;243;247m[38;2;129;77;176m▇[48;2;202;186;219m[38;2;126;66;174m▇[48;2;129;67;176m[38;2;0;0;0m [48;2;132;63;177m[38;2;128;62;175m▘[48;2;132;62;178m[38;2;135;60;180m▃[48;2;134;61;179m[38;2;137;59;182m▃[48;2;137;60;181m[38;2;140;58;183m▃[48;2;143;63;185m[38;2;0;0;0m [0m[38;2;143;63;185m[7m▂[27m[0m[38;2;143;63;185m[7m▆[27m[0m
|
||||
[38;2;117;85;170m[7m▅[27m[38;2;112;76;166m[7m▃[27m[38;2;112;76;166m[7m▁[27m[38;2;119;70;169m[7m▁[27m[48;2;120;68;170m[38;2;124;66;173m▗[48;2;123;66;172m[38;2;128;65;175m▂[48;2;125;65;173m[38;2;129;63;176m▄[48;2;128;64;175m[38;2;131;63;177m▅[48;2;131;63;177m[38;2;135;61;180m▃[48;2;134;61;179m[38;2;137;59;181m▃[0m[38;2;137;60;181m[7m▁[27m[38;2;134;61;179m[7m▁[27m[38;2;134;61;179m[7m▃[27m[38;2;134;61;179m[7m▅[27m[0m
|
||||
[38;2;136;77;179m[7m▇▇▇▇[27m[0m
|
||||
@@ -1,10 +1,10 @@
|
||||
;; -*- no-byte-compile: t; lexical-binding: nil -*-
|
||||
(define-package "dashboard" "20250708.57"
|
||||
(define-package "dashboard" "20260402.436"
|
||||
"A startup screen extracted from Spacemacs."
|
||||
'((emacs "27.1"))
|
||||
:url "https://github.com/emacs-dashboard/emacs-dashboard"
|
||||
:commit "8c2cf0cfde4f5dac8c477f755380fffef6824108"
|
||||
:revdesc "8c2cf0cfde4f"
|
||||
:url "https://github.com/emacs-dashboard/dashboard"
|
||||
:commit "176d641a55543bda1f0c7506fb954702350c1857"
|
||||
:revdesc "176d641a5554"
|
||||
:keywords '("startup" "screen" "tools" "dashboard")
|
||||
:authors '(("Rakan Al-Hneiti" . "rakan.alhneiti@gmail.com"))
|
||||
:maintainers '(("Jen-Chieh" . "jcs090218@gmail.com")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;;; dashboard-widgets.el --- A startup screen extracted from Spacemacs -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (c) 2016-2025 emacs-dashboard maintainers
|
||||
;; Copyright (c) 2016-2026 emacs-dashboard maintainers
|
||||
|
||||
;; This file is not part of GNU Emacs.
|
||||
;;
|
||||
@@ -27,6 +27,7 @@
|
||||
(declare-function all-the-icons-icon-for-file "ext:all-the-icons.el")
|
||||
(declare-function all-the-icons-fileicon "ext:data-fileicons.el")
|
||||
(declare-function all-the-icons-octicon "ext:data-octicons.el")
|
||||
(declare-function ansi-color-apply-on-region "ext:ansi-color.el")
|
||||
(declare-function nerd-icons-icon-for-dir "ext:nerd-icons.el")
|
||||
(declare-function nerd-icons-icon-for-file "ext:nerd-icons.el")
|
||||
(declare-function nerd-icons-sucicon "ext:nerd-icons.el")
|
||||
@@ -35,6 +36,8 @@
|
||||
(declare-function bookmark-get-filename "ext:bookmark.el")
|
||||
(declare-function bookmark-all-names "ext:bookmark.el")
|
||||
(declare-function calendar-date-compare "ext:calendar.el")
|
||||
(declare-function dashboard-cycle-section-forward "ext:dashboard.el")
|
||||
(declare-function dashboard-cycle-section-backward "ext:dashboard.el")
|
||||
(declare-function projectile-cleanup-known-projects "ext:projectile.el")
|
||||
(declare-function projectile-load-known-projects "ext:projectile.el")
|
||||
(declare-function projectile-mode "ext:projectile.el")
|
||||
@@ -62,6 +65,8 @@
|
||||
(declare-function org-time-string-to-time "ext:org.el")
|
||||
(declare-function org-today "ext:org.el")
|
||||
(declare-function recentf-cleanup "ext:recentf.el")
|
||||
(declare-function ansi-color-apply-on-region "ext:ansi-color")
|
||||
(defvar dashboard-mode-map)
|
||||
(defvar org-level-faces)
|
||||
(defvar org-agenda-new-buffers)
|
||||
(defvar org-agenda-prefix-format)
|
||||
@@ -251,6 +256,18 @@ nerd-icons or (all-the-icons-faicon \"newspaper-o\") using all-the-icons."
|
||||
(concat dashboard-banners-directory "emacs.png")
|
||||
"Emacs banner image.")
|
||||
|
||||
(defconst dashboard-banner-logo-ansi-256color
|
||||
(concat dashboard-banners-directory "logo-256color.ans")
|
||||
"Emacs banner image.")
|
||||
|
||||
(defconst dashboard-banner-logo-ansi-truecolor
|
||||
(concat dashboard-banners-directory "logo-truecolor.ans")
|
||||
"Emacs banner image.")
|
||||
|
||||
(defconst dashboard-banner-logo-braille
|
||||
(concat dashboard-banners-directory "logo-braille.txt")
|
||||
"Emacs banner image.")
|
||||
|
||||
(defconst dashboard-banner-logo-png
|
||||
(concat dashboard-banners-directory "logo.png")
|
||||
"Emacs banner image.")
|
||||
@@ -261,7 +278,7 @@ nerd-icons or (all-the-icons-faicon \"newspaper-o\") using all-the-icons."
|
||||
:group 'dashboard)
|
||||
|
||||
(defcustom dashboard-banner-ascii "EMACS"
|
||||
"String to be shown in place of the startup banner
|
||||
"String to be shown in place of the startup banner.
|
||||
if `dashboard-startup-banner' is set to `ascii'."
|
||||
:type 'string
|
||||
:group 'dashboard)
|
||||
@@ -409,6 +426,29 @@ It can be a string or a string list for display random icons."
|
||||
Value can be
|
||||
- \\='official displays the official Emacs logo.
|
||||
- \\='logo displays an alternative Emacs logo.
|
||||
The logo can be displayed as a PNG image, or
|
||||
using unicode braille, depending on if Emacs is
|
||||
running as a GUI or in no-window mode.
|
||||
Assumes that the installed font includes braille.
|
||||
- \\='ascii: displays the logo using ASCII characters.
|
||||
- \\='logo-ansi-truecolor displays the logo using 24 bit
|
||||
ANSI color escape sequences, or using unicode braille,
|
||||
depending on what your device supports.
|
||||
Assumes that the installed font includes braille.
|
||||
Assumes the installed font includes block characters,
|
||||
without adding gaps around the edges of the cell.
|
||||
See Terminal Image Viewer README for more information:
|
||||
https://github.com/stefanhaustein/TerminalImageViewer
|
||||
- \\='logo-ansi-256color displays the logo using 256 color
|
||||
ANSI color escape sequences, or using unicode braille,
|
||||
depending on what your device supports.
|
||||
Assumes that the installed font includes braille.
|
||||
Assumes the installed font includes block characters,
|
||||
without adding gaps around the edges of the cell.
|
||||
See Terminal Image Viewer README for more information:
|
||||
https://github.com/stefanhaustein/TerminalImageViewer
|
||||
- \\='logo-braille displays the logo using unicode braille.
|
||||
Assumes that the installed font includes braille.
|
||||
- an integer which displays one of the text banners.
|
||||
- a string that specifies the path of an custom banner
|
||||
supported files types are gif/image/text/xbm.
|
||||
@@ -416,9 +456,12 @@ Value can be
|
||||
and other path of a text file to use if image isn't supported.
|
||||
- a list that can display an random banner, supported values are:
|
||||
string (filepath), \\='official, \\='logo and integers."
|
||||
:type '(choice (const :tag "official" official)
|
||||
(const :tag "logo" logo)
|
||||
(const :tag "ascii" ascii)
|
||||
:type '(choice (const :tag "official" official)
|
||||
(const :tag "logo" logo)
|
||||
(const :tag "ascii" ascii)
|
||||
(const :tag "logo-ansi-truecolor" logo-ansi-truecolor)
|
||||
(const :tag "logo-ansi-256color" logo-ansi-256color)
|
||||
(const :tag "logo-braille" logo-braille)
|
||||
(integer :tag "index of a text banner")
|
||||
(string :tag "path to an image or text banner")
|
||||
(cons :tag "image and text banner"
|
||||
@@ -426,9 +469,12 @@ Value can be
|
||||
(string :tag "text banner path"))
|
||||
(repeat :tag "random banners"
|
||||
(choice (string :tag "a path to an image or text banner")
|
||||
(const :tag "official" official)
|
||||
(const :tag "logo" logo)
|
||||
(const :tag "ascii" ascii)
|
||||
(const :tag "official" official)
|
||||
(const :tag "logo" logo)
|
||||
(const :tag "ascii" ascii)
|
||||
(const :tag "logo-ansi-truecolor" logo-ansi-truecolor)
|
||||
(const :tag "logo-ansi-256color" logo-ansi-256color)
|
||||
(const :tag "logo-braille" logo-braille)
|
||||
(integer :tag "index of a text banner"))))
|
||||
:group 'dashboard)
|
||||
|
||||
@@ -589,7 +635,7 @@ Set to nil for unbounded."
|
||||
;; TODO: Use function `string-pixel-width' after 29.1
|
||||
(defun dashboard-string-pixel-width (str)
|
||||
"Return the width of STR in pixels."
|
||||
(if (fboundp #'string-pixel-width)
|
||||
(if (fboundp 'string-pixel-width)
|
||||
(string-pixel-width str)
|
||||
(require 'shr)
|
||||
(shr-string-pixel-width str)))
|
||||
@@ -623,9 +669,7 @@ Set to nil for unbounded."
|
||||
search-label
|
||||
&optional no-next-line)
|
||||
"Insert a shortcut SHORTCUT-CHAR for a given SEARCH-LABEL.
|
||||
|
||||
SHORTCUT-ID is the section identifier.
|
||||
|
||||
Optionally, provide NO-NEXT-LINE to move the cursor forward a line."
|
||||
(let* (;; Ensure punctuation and upper case in search string is not
|
||||
;; used to construct the `defun'
|
||||
@@ -633,17 +677,25 @@ Optionally, provide NO-NEXT-LINE to move the cursor forward a line."
|
||||
;; remove symbol quote
|
||||
(sym (intern (replace-regexp-in-string "'" "" (format "dashboard-jump-to-%s" shortcut-id)))))
|
||||
`(progn
|
||||
(eval-when-compile (defvar dashboard-mode-map))
|
||||
(defun ,sym nil
|
||||
,(concat "Jump to " name ".
|
||||
This code is dynamically generated in `dashboard-insert-shortcut'.")
|
||||
(interactive)
|
||||
(unless (search-forward ,search-label (point-max) t)
|
||||
(search-backward ,search-label (point-min) t))
|
||||
,@(unless no-next-line '((forward-line 1)))
|
||||
(back-to-indentation))
|
||||
(interactive)
|
||||
(unless (search-forward ,search-label (point-max) t)
|
||||
(search-backward ,search-label (point-min) t))
|
||||
,@(unless no-next-line '((forward-line 1)))
|
||||
(back-to-indentation))
|
||||
(eval-after-load 'dashboard
|
||||
(define-key dashboard-mode-map ,shortcut-char ',sym)))))
|
||||
(dashboard--define-shorcut-key-binding ,shortcut-id ,shortcut-char)))))
|
||||
|
||||
(defun dashboard--define-shorcut-key-binding (section keybinding)
|
||||
"Set `cycle-section's function for SECTION to KEYBINDING.
|
||||
in `dashboard-mode-map'."
|
||||
(define-key dashboard-mode-map (kbd keybinding)
|
||||
(dashboard-cycle-section-forward section))
|
||||
(define-key dashboard-mode-map
|
||||
(kbd (upcase keybinding))
|
||||
(dashboard-cycle-section-backward section)))
|
||||
|
||||
(defun dashboard-append (msg &optional _messagebuf)
|
||||
"Append MSG to dashboard buffer.
|
||||
@@ -735,7 +787,17 @@ When called with TIMES return a function that insert TIMES number of newlines."
|
||||
('logo
|
||||
(append (when (image-type-available-p 'png)
|
||||
(list :image dashboard-banner-logo-png))
|
||||
(list :text (dashboard-get-banner-path 1))))
|
||||
(list :text dashboard-banner-logo-braille)))
|
||||
('logo-ansi-truecolor
|
||||
(append (when (>= (display-color-cells) (expt 2 24))
|
||||
(list :text dashboard-banner-logo-ansi-truecolor))
|
||||
(list :text dashboard-banner-logo-braille)))
|
||||
('logo-ansi-256color
|
||||
(append (when (>= (display-color-cells) 256)
|
||||
(list :text dashboard-banner-logo-ansi-256color))
|
||||
(list :text dashboard-banner-logo-braille)))
|
||||
('logo-braille
|
||||
(append (list :text dashboard-banner-logo-braille)))
|
||||
('ascii
|
||||
(append (list :text dashboard-banner-ascii)))
|
||||
((pred integerp)
|
||||
@@ -809,6 +871,10 @@ Argument IMAGE-PATH path to the image."
|
||||
(if (file-exists-p txt)
|
||||
(insert-file-contents txt)
|
||||
(insert txt)))
|
||||
;; escape sequences will throw off text-width, must be done before
|
||||
(when (member txt (list dashboard-banner-logo-ansi-256color
|
||||
dashboard-banner-logo-ansi-truecolor))
|
||||
(ansi-color-apply-on-region start (point-max)))
|
||||
(put-text-property start (point-max) 'face 'dashboard-text-banner)
|
||||
(setq text-width (dashboard--find-max-width start (point-max)))
|
||||
(goto-char (point-max)))
|
||||
@@ -955,33 +1021,39 @@ Return a space if icon is not found."
|
||||
;;; Section list
|
||||
|
||||
(defmacro dashboard-insert-section-list (section-name list action &rest rest)
|
||||
"Insert into SECTION-NAME a LIST of items, expanding ACTION and passing REST
|
||||
to widget creation."
|
||||
"Insert into SECTION-NAME a LIST of items, expanding ACTION.
|
||||
REST is for widget creation."
|
||||
`(when (car ,list)
|
||||
(mapc
|
||||
(lambda (el)
|
||||
(let ((tag ,@rest))
|
||||
(let* ((tag ,@rest)
|
||||
(item tag))
|
||||
(insert "\n")
|
||||
(insert (spaces-string (or standard-indent tab-width 4)))
|
||||
|
||||
(when (and (dashboard-display-icons-p)
|
||||
dashboard-set-file-icons)
|
||||
(let* ((path (car (last (split-string ,@rest " - "))))
|
||||
(icon (if (and (not (file-remote-p path))
|
||||
(file-directory-p path))
|
||||
(dashboard-icon-for-dir path
|
||||
:height dashboard-icon-file-height
|
||||
:v-adjust dashboard-icon-file-v-adjust)
|
||||
(cond
|
||||
((or (string-equal ,section-name "Agenda for today:")
|
||||
(string-equal ,section-name "Agenda for the coming week:"))
|
||||
dashboard-agenda-item-icon)
|
||||
((file-remote-p path)
|
||||
dashboard-remote-path-icon)
|
||||
(t (dashboard-icon-for-file (file-name-nondirectory path)
|
||||
:height dashboard-icon-file-height
|
||||
:v-adjust dashboard-icon-file-v-adjust))))))
|
||||
(setq tag (concat icon " " ,@rest))))
|
||||
(let* ((path (get-text-property 0 'dashboard-path item))
|
||||
(icon (cond
|
||||
((or (string-equal ,section-name "Agenda for today:")
|
||||
(string-equal ,section-name "Agenda for the coming week:"))
|
||||
dashboard-agenda-item-icon)
|
||||
((and (stringp path)
|
||||
(file-remote-p path))
|
||||
dashboard-remote-path-icon)
|
||||
((and (stringp path)
|
||||
(file-directory-p path))
|
||||
(dashboard-icon-for-dir
|
||||
path
|
||||
:height dashboard-icon-file-height
|
||||
:v-adjust dashboard-icon-file-v-adjust))
|
||||
((stringp path)
|
||||
(dashboard-icon-for-file
|
||||
(file-name-nondirectory path)
|
||||
:height dashboard-icon-file-height
|
||||
:v-adjust dashboard-icon-file-v-adjust))
|
||||
(t ""))))
|
||||
(setq tag (concat icon " " item))))
|
||||
|
||||
(widget-create 'item
|
||||
:tag tag
|
||||
@@ -992,7 +1064,6 @@ to widget creation."
|
||||
:button-suffix ""
|
||||
:format "%[%t%]")))
|
||||
,list)))
|
||||
|
||||
;;
|
||||
;;; Footer
|
||||
|
||||
@@ -1198,6 +1269,26 @@ to widget creation."
|
||||
(defvar dashboard--recentf-cache-item-format nil
|
||||
"Cache to record the new generated align format.")
|
||||
|
||||
(defun dashboard-recentf--propertize-item (el)
|
||||
"Format EL from `dashboard-recentf-alist' and attach its real path."
|
||||
(let* ((file (dashboard-expand-path-alist el dashboard-recentf-alist))
|
||||
(filename (dashboard-f-filename file))
|
||||
(path (dashboard-extract-key-path-alist el dashboard-recentf-alist))
|
||||
(display
|
||||
(cl-case dashboard-recentf-show-base
|
||||
(`align
|
||||
(unless dashboard--recentf-cache-item-format
|
||||
(let* ((len-align (dashboard--align-length-by-type 'recents))
|
||||
(new-fmt (dashboard--generate-align-format
|
||||
dashboard-recentf-item-format len-align)))
|
||||
(setq dashboard--recentf-cache-item-format new-fmt)))
|
||||
(format dashboard--recentf-cache-item-format filename path))
|
||||
(`nil path)
|
||||
(t (format dashboard-recentf-item-format filename path)))))
|
||||
(if file
|
||||
(propertize display 'dashboard-path file)
|
||||
display)))
|
||||
|
||||
(defun dashboard-insert-recents (list-size)
|
||||
"Add the list of LIST-SIZE items from recently edited files."
|
||||
(setq dashboard--recentf-cache-item-format nil)
|
||||
@@ -1212,20 +1303,9 @@ to widget creation."
|
||||
'recents
|
||||
(dashboard-get-shortcut 'recents)
|
||||
`(lambda (&rest _)
|
||||
(find-file-existing (dashboard-expand-path-alist ,el dashboard-recentf-alist)))
|
||||
(let* ((file (dashboard-expand-path-alist el dashboard-recentf-alist))
|
||||
(filename (dashboard-f-filename file))
|
||||
(path (dashboard-extract-key-path-alist el dashboard-recentf-alist)))
|
||||
(cl-case dashboard-recentf-show-base
|
||||
(`align
|
||||
(unless dashboard--recentf-cache-item-format
|
||||
(let* ((len-align (dashboard--align-length-by-type 'recents))
|
||||
(new-fmt (dashboard--generate-align-format
|
||||
dashboard-recentf-item-format len-align)))
|
||||
(setq dashboard--recentf-cache-item-format new-fmt)))
|
||||
(format dashboard--recentf-cache-item-format filename path))
|
||||
(`nil path)
|
||||
(t (format dashboard-recentf-item-format filename path))))))
|
||||
(find-file-existing
|
||||
(dashboard-expand-path-alist ,el dashboard-recentf-alist)))
|
||||
(dashboard-recentf--propertize-item el)))
|
||||
|
||||
;;
|
||||
;;; Bookmarks
|
||||
@@ -1246,6 +1326,31 @@ to widget creation."
|
||||
(defvar dashboard--bookmarks-cache-item-format nil
|
||||
"Cache to record the new generated align format.")
|
||||
|
||||
(defun dashboard-bookmarks--format-name-and-path (filename short-path)
|
||||
"Format FILENAME and SHORT-PATH according to `dashboard-bookmarks-show-base'.
|
||||
Populate cache if needed."
|
||||
(cl-case dashboard-bookmarks-show-base
|
||||
(`align
|
||||
(unless dashboard--bookmarks-cache-item-format
|
||||
(let* ((len-align (dashboard--align-length-by-type 'bookmarks))
|
||||
(new-fmt (dashboard--generate-align-format
|
||||
dashboard-bookmarks-item-format len-align)))
|
||||
(setq dashboard--bookmarks-cache-item-format new-fmt)))
|
||||
(format dashboard--bookmarks-cache-item-format filename short-path))
|
||||
(`nil short-path)
|
||||
(t (format dashboard-bookmarks-item-format filename short-path))))
|
||||
|
||||
(defun dashboard-bookmarks--propertize-name-and-path (bookmark)
|
||||
"Format BOOKMARK before insertion.
|
||||
Get path and name from bookmark and add `dashboard-bookmarks-name' to properties"
|
||||
(if-let* ((path (bookmark-get-filename bookmark))
|
||||
(short-path (dashboard-shorten-path path 'bookmarks)))
|
||||
(propertize (dashboard-bookmarks--format-name-and-path
|
||||
bookmark short-path)
|
||||
'dashboard-bookmarks-name bookmark
|
||||
'dashboard-path path)
|
||||
bookmark))
|
||||
|
||||
(defun dashboard-insert-bookmarks (list-size)
|
||||
"Add the list of LIST-SIZE items of bookmarks."
|
||||
(require 'bookmark)
|
||||
@@ -1256,20 +1361,7 @@ to widget creation."
|
||||
'bookmarks
|
||||
(dashboard-get-shortcut 'bookmarks)
|
||||
`(lambda (&rest _) (bookmark-jump ,el))
|
||||
(if-let* ((filename el)
|
||||
(path (bookmark-get-filename el))
|
||||
(path-shorten (dashboard-shorten-path path 'bookmarks)))
|
||||
(cl-case dashboard-bookmarks-show-base
|
||||
(`align
|
||||
(unless dashboard--bookmarks-cache-item-format
|
||||
(let* ((len-align (dashboard--align-length-by-type 'bookmarks))
|
||||
(new-fmt (dashboard--generate-align-format
|
||||
dashboard-bookmarks-item-format len-align)))
|
||||
(setq dashboard--bookmarks-cache-item-format new-fmt)))
|
||||
(format dashboard--bookmarks-cache-item-format filename path-shorten))
|
||||
(`nil path-shorten)
|
||||
(t (format dashboard-bookmarks-item-format filename path-shorten)))
|
||||
el)))
|
||||
(dashboard-bookmarks--propertize-name-and-path el)))
|
||||
|
||||
;;
|
||||
;;; Projects
|
||||
@@ -1318,16 +1410,21 @@ be called with the root directory of the project to switch to."
|
||||
(let* ((file (dashboard-expand-path-alist el dashboard-projects-alist))
|
||||
(filename (dashboard-f-base file))
|
||||
(path (dashboard-extract-key-path-alist el dashboard-projects-alist)))
|
||||
(cl-case dashboard-projects-show-base
|
||||
(`align
|
||||
(unless dashboard--projects-cache-item-format
|
||||
(let* ((len-align (dashboard--align-length-by-type 'projects))
|
||||
(new-fmt (dashboard--generate-align-format
|
||||
dashboard-projects-item-format len-align)))
|
||||
(setq dashboard--projects-cache-item-format new-fmt)))
|
||||
(format dashboard--projects-cache-item-format filename path))
|
||||
(`nil path)
|
||||
(t (format dashboard-projects-item-format filename path))))))
|
||||
(let ((display
|
||||
(cl-case dashboard-projects-show-base
|
||||
(`align
|
||||
(unless dashboard--projects-cache-item-format
|
||||
(let* ((len-align (dashboard--align-length-by-type
|
||||
'projects))
|
||||
(new-fmt (dashboard--generate-align-format
|
||||
dashboard-projects-item-format len-align)))
|
||||
(setq dashboard--projects-cache-item-format new-fmt)))
|
||||
(format dashboard--projects-cache-item-format filename path))
|
||||
(`nil path)
|
||||
(t (format dashboard-projects-item-format filename path)))))
|
||||
(if file
|
||||
(propertize display 'dashboard-path file)
|
||||
display)))))
|
||||
|
||||
(defun dashboard-projects-backend-load-projects ()
|
||||
"Depending on `dashboard-projects-backend' load corresponding backend.
|
||||
@@ -1344,8 +1441,8 @@ Return function that returns a list of projects."
|
||||
(when dashboard-remove-missing-entry
|
||||
(dashboard-mute-apply
|
||||
(ignore-errors
|
||||
(dashboard-funcall-fboundp #'project-forget-zombie-projects))))
|
||||
(project-known-project-roots))
|
||||
(dashboard-funcall-fboundp 'project-forget-zombie-projects))))
|
||||
(dashboard-funcall-fboundp 'project-known-project-roots))
|
||||
(t
|
||||
(display-warning '(dashboard)
|
||||
"Invalid value for `dashboard-projects-backend'"
|
||||
@@ -1358,11 +1455,7 @@ over custom backends."
|
||||
(or dashboard-projects-switch-function
|
||||
(cl-case dashboard-projects-backend
|
||||
(`projectile 'projectile-switch-project-by-name)
|
||||
(`project-el
|
||||
(lambda (project)
|
||||
"This function is used to switch to `PROJECT'."
|
||||
(let ((default-directory project))
|
||||
(project-find-file))))
|
||||
(`project-el 'project-switch-project)
|
||||
(t
|
||||
(display-warning '(dashboard)
|
||||
"Invalid value for `dashboard-projects-backend'"
|
||||
@@ -1419,13 +1512,21 @@ each agenda entry."
|
||||
|
||||
(defcustom dashboard-agenda-tags-format 'identity
|
||||
"Function to format the org agenda tags.
|
||||
Any custom function would receives the tags from `org-get-tags'"
|
||||
Any custom function would receives the local tags from `org-get-tags'"
|
||||
:type '(choice
|
||||
(const :tag "Show tags" identity)
|
||||
(const :tag "Hide tags" ignore)
|
||||
(function :tag "Custom function"))
|
||||
:group 'dashboard)
|
||||
|
||||
(defcustom dashboard-agenda-tags-scope 'local
|
||||
"Scope when getting agenda tags for headline using `org-get-tags'."
|
||||
:type '(choice
|
||||
(const :tag "No tags" nil)
|
||||
(const :tag "Local tags (default)" local)
|
||||
(const :tag "Inherited tags" inherited))
|
||||
:group 'dashboard)
|
||||
|
||||
(defun dashboard-agenda-entry-format ()
|
||||
"Format agenda entry to show it on dashboard.
|
||||
|
||||
@@ -1481,9 +1582,14 @@ If not height is found on FACE or `dashboard-items-face' use `default'."
|
||||
(format-time-string dashboard-agenda-time-string-format time)))
|
||||
|
||||
(defun dashboard-agenda--formatted-tags ()
|
||||
"Apply `dashboard-agenda-tags-format' to org-element tags."
|
||||
"Apply `dashboard-agenda-tags-format' to the list of local `org-get-tags'."
|
||||
(when dashboard-agenda-tags-format
|
||||
(funcall dashboard-agenda-tags-format (org-get-tags))))
|
||||
(let ((tags (pcase dashboard-agenda-tags-scope
|
||||
((pred null) nil)
|
||||
('local (org-get-tags (point) t))
|
||||
('inherited (org-get-tags))
|
||||
(_ (user-error "Wrong value for `dashboard-agenda-tags-scope'")))))
|
||||
(funcall dashboard-agenda-tags-format tags))))
|
||||
|
||||
(defun dashboard-due-date-for-agenda ()
|
||||
"Return due-date for agenda period."
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
;;; dashboard.el --- A startup screen extracted from Spacemacs -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (c) 2016-2025 emacs-dashboard maintainers
|
||||
;; Copyright (c) 2016-2026 emacs-dashboard maintainers
|
||||
;;
|
||||
;; Author : Rakan Al-Hneiti <rakan.alhneiti@gmail.com>
|
||||
;; Maintainer : Shen, Jen-Chieh <jcs090218@gmail.com>
|
||||
;; Ricardo Arredondo <ricardo.richo@gmail.com>
|
||||
;; URL : https://github.com/emacs-dashboard/emacs-dashboard
|
||||
;; URL : https://github.com/emacs-dashboard/dashboard
|
||||
;;
|
||||
;; This file is not part of GNU Emacs.
|
||||
;;
|
||||
;;; License: GPLv3
|
||||
;;
|
||||
;; Created: October 05, 2016
|
||||
;; Package-Version: 20250708.57
|
||||
;; Package-Revision: 8c2cf0cfde4f
|
||||
;; Package-Version: 20260402.436
|
||||
;; Package-Revision: 176d641a5554
|
||||
;; Keywords: startup, screen, tools, dashboard
|
||||
;; Package-Requires: ((emacs "27.1"))
|
||||
|
||||
@@ -32,8 +32,9 @@
|
||||
;;
|
||||
;;; Externals
|
||||
|
||||
(declare-function bookmark-get-filename "ext:bookmark.el")
|
||||
(declare-function bookmark-all-names "ext:bookmark.el")
|
||||
(declare-function bookmark-get-filename "ext:bookmark.el")
|
||||
(declare-function bookmark-delete "ext:bookmark.el")
|
||||
(declare-function dashboard-ls--dirs "ext:dashboard-ls.el")
|
||||
(declare-function dashboard-ls--files "ext:dashboard-ls.el")
|
||||
(declare-function page-break-lines-mode "ext:page-break-lines.el")
|
||||
@@ -50,7 +51,6 @@
|
||||
"Extensible startup screen."
|
||||
:group 'applications)
|
||||
|
||||
;; Custom splash screen
|
||||
(defvar dashboard-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map (kbd "C-p") #'dashboard-previous-line)
|
||||
@@ -273,32 +273,46 @@ example:
|
||||
(defun dashboard-cycle-section-forward (&optional section)
|
||||
"Cycle forward through the entries in SECTION.
|
||||
If SECTION is nil, cycle in the current section."
|
||||
(let ((target-section (or section (dashboard--current-section))))
|
||||
(if target-section
|
||||
(condition-case nil
|
||||
(progn
|
||||
(widget-forward 1)
|
||||
(unless (eq target-section (dashboard--current-section))
|
||||
(dashboard--goto-section target-section)))
|
||||
(widget-forward 1))
|
||||
(widget-forward 1))))
|
||||
(if section
|
||||
(lambda () "Cycle section forwards"
|
||||
(interactive)
|
||||
(widget-forward 1)
|
||||
(unless (eq section (ignore-errors (dashboard--current-section)))
|
||||
(dashboard--goto-section section)))
|
||||
(lambda ()
|
||||
(interactive) "Cycle current-section forwards"
|
||||
(if (widget-at (point))
|
||||
(let ((current-section (ignore-errors (dashboard--current-section))))
|
||||
(widget-forward 1)
|
||||
(unless (eq current-section (ignore-errors (dashboard--current-section)))
|
||||
(dashboard--goto-section current-section)))
|
||||
(widget-forward 1)))))
|
||||
|
||||
(defun dashboard-cycle-section-backward (&optional section)
|
||||
"Cycle backward through the entries in SECTION.
|
||||
If SECTION is nil, cycle in the current section."
|
||||
(let ((target-section (or section (dashboard--current-section))))
|
||||
(if target-section
|
||||
(condition-case nil
|
||||
(progn
|
||||
(widget-backward 1)
|
||||
(unless (eq target-section (dashboard--current-section))
|
||||
(progn
|
||||
(dashboard--goto-section target-section)
|
||||
(while (eq target-section (dashboard--current-section))
|
||||
(widget-forward 1))
|
||||
(widget-backward 1))))
|
||||
(widget-backward 1))
|
||||
(widget-backward 1))))
|
||||
(if section
|
||||
(lambda () "Cycle section backwards"
|
||||
(interactive)
|
||||
(widget-backward 1)
|
||||
(unless (eq section (ignore-errors (dashboard--current-section)))
|
||||
(dashboard--goto-section section)
|
||||
(while (eq section (ignore-errors (dashboard--current-section)))
|
||||
(widget-forward 1))
|
||||
(widget-backward 1)))
|
||||
(lambda () "Cycle current-section backwards"
|
||||
(interactive)
|
||||
(if (widget-at (point))
|
||||
(let ((current-section (ignore-errors (dashboard--current-section))))
|
||||
(widget-backward 1)
|
||||
(unless (eq current-section (ignore-errors (dashboard--current-section)))
|
||||
(dashboard--goto-section current-section)
|
||||
(unless (eq section (ignore-errors (dashboard--current-section)))
|
||||
(dashboard--goto-section section)
|
||||
(while (eq section (ignore-errors (dashboard--current-section)))
|
||||
(widget-forward 1))
|
||||
(widget-backward 1))))
|
||||
(widget-backward 1)))))
|
||||
|
||||
(defun dashboard-section-1 ()
|
||||
"Navigate to section 1." (interactive) (dashboard--goto-section-by-index 1))
|
||||
@@ -429,7 +443,9 @@ Optional argument ARGS adviced function arguments."
|
||||
|
||||
(defun dashboard-remove-item-bookmarks ()
|
||||
"Remove a bookmarks from `bookmark-alist'."
|
||||
(interactive)) ; TODO: ..
|
||||
(interactive)
|
||||
(let ((bookmark-name (get-text-property (point) 'dashboard-bookmarks-name)))
|
||||
(bookmark-delete bookmark-name)))
|
||||
|
||||
(defun dashboard-remove-item-agenda ()
|
||||
"Remove an agenda from `org-agenda-files'."
|
||||
@@ -526,7 +542,9 @@ See `dashboard-item-generators' for all items available."
|
||||
"Insert the list of widgets into the buffer, FORCE-REFRESH is optional."
|
||||
(interactive)
|
||||
(let ((inhibit-redisplay t)
|
||||
(recentf-is-on (recentf-enabled-p))
|
||||
(recentf-is-on (or (recentf-enabled-p)
|
||||
(and (assq 'recents dashboard-items)
|
||||
(dashboard-mute-apply (recentf-mode 1)))))
|
||||
(origial-recentf-list recentf-list)
|
||||
(dashboard-num-recents (or (cdr (assoc 'recents dashboard-items)) 0)))
|
||||
(when recentf-is-on
|
||||
|
||||
Reference in New Issue
Block a user