又是新的一年,又来开个帖子,祝各位坛友2026年马到成功,马上有钱!AI时代玩Emacs玩出新高度!
19 个赞
祝各位emacser和各位大佬马年大发,万事顺遂!!!
2 个赞
心想事成,万事如愿。
2 个赞
吾闻良骥老始成,此马数年人更惊。 新的一年新的一岁,祝大家马到成功事业有成。
3 个赞
祝 Emacs 和 Emacs 大佬们在新的一年里更加闪耀!
2 个赞
新春快乐,码上有喜事!!!
2 个赞
新年快乐!
2 个赞
新年快乐
2 个赞
新春快乐!马上有Emacs!
2 个赞
新春快乐呀!
2 个赞
新年快乐!
2 个赞
新年快乐!
代码
(defface chunlian-face '((t :background "red" :foreground "yellow" :weight bold :height 2.0)) "春联样式。")
(defvar chunlian-right "组合键里乾坤大")
(defvar chunlian-left "缓冲区中日月长")
(defvar chunlian-top "皆可定制")
(defvar-local chunlian--overlays nil)
(defun chunlian--setup-display ()
"设置春联的显示。"
(setq header-line-format
(list (propertize " " 'display `(space :align-to (- center ,(string-width chunlian-top))))
(propertize chunlian-top 'face 'chunlian-face)))
(set-window-margins (selected-window) 4 4)
(save-excursion
(goto-char (point-min))
(let ((len (min (length chunlian-left) (length chunlian-right))))
(dotimes (i len)
(let* ((start (line-beginning-position))
(end (line-end-position))
(ov-l (make-overlay start start))
(ov-r (make-overlay start start))
(char-l (substring chunlian-left i (1+ i)))
(char-r (substring chunlian-right i (1+ i))))
(overlay-put ov-l 'before-string
(propertize " " 'display
`((margin left-margin)
,(propertize char-l 'face 'chunlian-face))))
(overlay-put ov-r 'after-string
(propertize " " 'display
`((margin right-margin)
,(propertize char-r 'face 'chunlian-face))))
(push ov-l chunlian--overlays)
(push ov-r chunlian--overlays)
;; 移动到下一行,如果行数不足则插入新行
(if (< (line-number-at-pos) len)
(if (zerop (forward-line 1))
nil
(insert "\n"))))))))
(defun chunlian--clear-display ()
"清除春联显示。"
(setq header-line-format nil)
(set-window-margins (selected-window) 0 0)
(mapc #'delete-overlay chunlian--overlays)
(setq chunlian--overlays nil))
;;;###autoload
(define-minor-mode chunlian-mode
"一个简单的 Minor Mode,用于在 buffer 两侧显示春联。"
:lighter " 🧧"
(if chunlian-mode
(chunlian--setup-display)
(chunlian--clear-display)))
(provide 'chunlian-mode)
本来还有个手写的版本的,不过过年回来远程没配置好,索性直接用 AI 糊了一个。
明年说不定能用 Canvas API 在 Emacs 里放烟花(
17 个赞
新年快乐~
1 个赞
新年快乐,祝Emacs越来越好!
1 个赞


