今日のバカが征く

んー、この switch-c++-buffer って ff-find-other-file でいいんじゃないだろうか。承知の上?あ、いや対になるファイルが存在しない場合に新規バッファを作るところが違うのか。
しかし、やっぱり alist ってあまり知られてないよなぁ。ということで

(defun c++-paired-extension (basename extension)
  (if (string= "cpp" extension)
      (find-cpp-header basename)
    (cond ((string= "h" extension) "cpp")
          ((string= "hpp" extension) "cpp")
          ((string= "hh" extension) "cc")
          ((string= "cc" extension) "hh")
          ((string= "hxx" extension) "cxx")
          ((string= "cxx" extension) "hxx")
          ((string= "H" extension) "C")
          ((string= "C" extension) "H")
          (t nil))))

は以下のように書くのが better だと思うのです。

(defvar c++-paired-extension-alist
  '(("h" . "cpp")
    ("hpp" . "cpp")
    ("hh" . "cc")
    ("cc" . "hh")
    ("hxx" . "cxx")
    ("cxx" . "hxx")
    ("H" . "C")
    ("C" . "H")))
(defun c++-paired-extension (basename extension)
  (if (string= "cpp" extension)
      (find-cpp-header basename)
    (get-alist extension c++-paired-extension-alist)))

昔からのUNIXプログラマがやりがちなこと

80年代から UNIX を使っているひとにありがちなこと

ログインシェル

ログインシェルはなれ親しんでいる csh/tcsh

ページャ

less ではなく more を使う。

errno

#include <errno.h>

ではなく、

extern int errno;

とする。まぁ、昔は errno.h がなかったのだが、ISO C では errno はマクロでも構わないことになっている。実際、最近の環境では外部シンボルではなくマクロになっているのでコンパイルできなくなっていたりする。djb の cdb とか。

typedef

pid_t、uid_t なんかの typedef された型ではなく、直接 int として宣言してしまう。

X11

DISPLAY と xhost については理解しているが、xauth についてはよくわかっていない。