;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Logger.el ; ; usage: M-x logger-open ; ; Functions ; - 自動的に log-YY_MM_DD-hogehgoe.log ; というファイルを作り、開く ; ファイルを作るときに"hogehoge"部分を入力する。 ; - ファイルを開いた時、 ; logger-text-prefix ; logger-text-suffix ; で宣言してある文字列が自動的に挿入される。 ; - 人名補完 ; - 補完した時に、Timestampもつく ; ex.) ; o M-tabって打つと、 ; osamu[8:55] > ; って補完される。 ; .logger.el ; の中の(setq logger-group-member-alist) ; で補完リストを作成し、登録。 ; ; TODO ; - 人名補完 ; - 複数補完候補があるときに、mini-bufferにその候補を出す ; - 日本語人名の補完がうまく動かない ; - groupをlogger-text-prefixで使用可能にする。 ; ;; Default Settings (setq logger-text-prefix "参加者: \n") (setq logger-text-suffix "Agenda\n\n - \n -\n - \n") (setq logger-directory "./") (setq logger-fill-key "\C-t") (defun logger-open () "*create log-file and open it." (interactive) (load "~/.logger.el" 'noerror 'nomessage) ;; groupを入力させ、fileを作り、bufferをopenする。 (logger-open-file) ) (defun logger-open-file () "*create log-file" (setq logger-group (read-string "What group do you want to log? ")) (find-file (format "%s/log-%s-%s.log" logger-directory (format-time-string "%Y_%m_%d") logger-group)) (insert (format-time-string "%Y/%m/%d \n")) (insert logger-text-prefix) (insert "-------------------------------------------------\n") (insert logger-text-suffix) ;; text-modeに (text-mode) ;; key-mapの変更 (global-set-key logger-fill-key 'logger-fill-member-name) ) (defun logger-fill-member-name () "Auto-fill member name and insert timestamp" (interactive) (setq logger-fill-beginning-point (point)) ;; (save-excursion (skip-chars-backward "^ \t\n") ;; 先頭からポイントまでの文字列を取得 (setq logger-fill-strings (buffer-substring logger-fill-beginning-point (point))) ;; (message logger-fill-strings) (setq logger-fill-result (try-completion logger-fill-strings logger-group-member-alist)) (cond ((eq logger-fill-result t) ;; 補完可 (skip-chars-forward "A-Za-z") (insert (format "\[%s\] > " (format-time-string "%02H:%02M")))) ((eq logger-fill-result nil) ;; 補完不可 (skip-chars-forward "A-Za-z")) ((string-equal logger-fill-strings logger-fill-result) (skip-chars-forward "A-Za-z") ;;候補一覧を表示 ;(logger-print-complete-list (all-completions logger-fill-strings ; logger-group-member-alist)) ; (all-completions logger-fill-strings logger-group-member-alist)) ) (t (delete-region logger-fill-beginning-point (point)) (insert logger-fill-result) (logger-fill-member-name) ;; insert " > " ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; test emacs-lisp ; don't laugh it! ; ;(defun logger-print-complete-list (list-arg) ; (cond ; ((eq list-arg nil) ) ; (t ; (logger-print-complete-list (cdr list-arg)) ; (concat logger-incomplete-string (car list-arg)) ; (concat logger-incomplete-string " ") ;; (insert (car list-arg)) ;))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Last UpdatedのTimeStampを変えるようにする。 ;; (require 'time-stamp) ;; (add-hook 'write-file-hooks 'time-stamp) ;; (setq time-stamp-active t) ;; (setq time-stamp-line-limit 10) ;; ファイルの先頭から10行以内を探す ;; (setq time-stamp-start "last updated : ") ;; (setq time-stamp-format "%04y/%02m/%02d") ;; (setq time-stamp-end " \\|$")