It's not hard to extend emacs

当有多个标签页打开时,关闭firefox会被询问“是否真的关闭多个标签页”;使用gnome-terminal也是一样,于是我就想,能不能让emacs在有多个frame存在的时候也询问类似的问题。写出来之后发现,还真简单:

(defun multiple-frames-kill-emacs-query-function ()
  "Ask before exiting Emacs if it has more than one frames."
  (let ((frames (length (frame-list))))
    (if (= frames 1)
	t
      (let ((msg (format "%d frames exist; exit anyway? " frames)))
	(yes-or-no-p msg)))))

(add-to-list 'kill-emacs-query-functions
	     'multiple-frames-kill-emacs-query-function)

实现了这个功能后就想,emacs有没有会话保存、恢复功能呢?找了找,发现已经有了,就是desktop-save,尽管不是emacs里面的所有东西都能保存(比如gnus就不行),但是打开的文件都没问题。

最近尝试着写了一些emacs lisp代码,自我感觉是件挺好的事情,只有不断地实践,才能学好一门语言。

The Myths of Innovation

昨天新闻联播里面播放了很多两会委员讨论创新,让我想起了一系列IBM关于创新的广告,最新一部是这样的:

A:参加了一个关于创新的会议
B:都讨论什么?
A:创新的会议当然是讨论创新了!
B:讨论怎么执行了吗?
A:没有……
B:太糟了!

然后屏幕上打出四个大字:

停止空谈

接着又打出四个大字:

开始行动

创新为什么总是停留在空谈阶段?

  1. 能够改变大多数人的生活工作习惯,才叫创新,这需要深入生活、深入群众。
  2. 为少数特权阶层服务,再多的花样也不叫创新。
  3. 绝大多数人都希望成为特权阶层,而成为特权阶层最有效的方式就是伺候好当下的特权阶层,从而脱离生活、脱离群众,从此眼里只有领导一人。
  4. 这样形成的特权阶层整体脱离生活、脱离群众。
  5. 实现创新需要很大的人力物力,这正是深入生活、深入群众的人所缺乏的。
  6. 特权阶层具有实现创新的物质条件,却无法接受来自对立面的东西。而且创新往往会挑战特权阶层的既得利益。
  7. 特权阶层与创新者的利益冲突越大,实现创新的可能性越低。

当然我的这些观点也是脱离创新本身来讨论创新,要想真的理解创新,推荐阅读《The Myths of Innovation》。