;;; howm-mode.el --- Wiki-like note-taking tool
-;;; Copyright (C) 2002, 2003, 2004, 2005-2018
+;;; Copyright (C) 2002, 2003, 2004, 2005-2020
;;; HIRAOKA Kazuyuki <khi@users.osdn.me>
-;;; $Id: howm-mode.el,v 1.318 2012-12-29 08:57:18 hira Exp $
;;;
;;; This program is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;; This must be earlier than (require 'howm-common), because
;; howm-common needs cl, and (require 'cl) should be written in howm.el.
-(when (not (featurep 'howm-version))
+(when (not (featurep 'howm))
(message "Warning: Requiring howm-mode is obsolete. Require howm instead.")
;; (beep)
;; (sit-for 1)
(howm-defvar-risky howm-migemo-client nil
"Command name of migemo-client.
-Try (setq howm-migemo-client \"migemo-client\") for howm-migemo-*.")
+Example of cmigemo:
+ (setq howm-migemo-client '((type . cmigemo) (command . \"cmigemo\")))
+Example of migemo-client (obsolete):
+ (setq howm-migemo-client \"migemo-client\")
+See also `howm-migemo-client-option`")
(howm-defvar-risky howm-migemo-client-option nil
"List of option for migemo-client.
-e.g. (\"-H\" \"::1\")")
+Example of cmigemo:
+ (setq howm-migemo-client-option
+ '(\"-q\" \"-d\" \"/usr/share/cmigemo/utf-8/migemo-dict\"))
+Example of migemo-client (obsolete):
+ (setq howm-migemo-client-option '(\"-H\" \"::1\")
+See also `howm-migemo-client`")
;;; --- level 2 ---
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Definitions
-(easy-mmode-define-minor-mode howm-mode
+(define-minor-mode howm-mode
"With no argument, this command toggles the mode.
Non-null prefix argument turns on the mode.
Null prefix argument turns off the mode.
\\[howm-create-interactively] Create new file interactively (not recommended)
\\[howm-random-walk] Browse random entries automtically
"
- nil ;; default = off
- howm-lighter ;; mode-line
- (mapcar (lambda (entry)
- (let ((k (car entry))
- (f (cadr entry)))
- (cons (concat howm-prefix k) f)))
- howm-default-key-table)
- )
-
-;; emacs20's easy-mmode-define-minor-mode can't have body. sigh...
-(add-hook 'howm-mode-on-hook 'howm-initialize-buffer)
-(add-hook 'howm-mode-off-hook 'howm-restore-buffer)
+ :init-value nil ;; default = off
+ :lighter howm-lighter ;; mode-line
+ :keymap (mapcar (lambda (entry)
+ (let ((k (car entry))
+ (f (cadr entry)))
+ (cons (concat howm-prefix k) f)))
+ howm-default-key-table)
+ (if howm-mode
+ (howm-initialize-buffer)
+ (howm-restore-buffer)))
(defun howm-set-keymap ()
(mapc (lambda (entry)
(defun howm-migemo-get-pattern (roma type)
(when (and (null howm-migemo-client) (not howm-view-use-grep))
(require 'migemo))
- (if (and (featurep 'migemo) (string= type "emacs"))
- (howm-funcall-if-defined (migemo-get-pattern roma))
-;; (migemo-get-pattern roma)
- (car (howm-call-process (or howm-migemo-client "migemo-client")
- `(,@howm-migemo-client-option "-t" ,type ,roma)
- 0))))
-
-;; (defun howm-migemo-get-pattern (roma type)
-;; (when (and (null (howm-migemo-client)) (not howm-view-use-grep))
-;; (require 'migemo))
-;; (if (and (featurep 'migemo) (string= type "emacs"))
-;; (howm-funcall-if-defined (migemo-get-pattern roma))
-;; ;; (migemo-get-pattern roma)
-;; (car (howm-call-process (howm-migemo-client)
-;; `(,@(howm-migemo-client-option) "-t" ,type ,roma)
-;; 0))))
-
-;; (defun howm-migemo-client ()
-;; (if (stringp howm-migemo-client)
-;; howm-migemo-client
-;; (or (car howm-migemo-client) "migemo-client")))
-
-;; (defun howm-migemo-client-option ()
-;; (cdr-safe howm-migemo-client))
+ (cl-labels ((ref (key) (cdr (assoc key howm-migemo-client))))
+ (cond ((and (featurep 'migemo) (string= type "emacs"))
+ (howm-funcall-if-defined (migemo-get-pattern roma)))
+ ((or (null howm-migemo-client) (stringp howm-migemo-client))
+ (car (howm-call-process (or howm-migemo-client "migemo-client")
+ `(,@howm-migemo-client-option "-t" ,type ,roma)
+ 0)))
+ ((eq (ref 'type) 'cmigemo)
+ (car (howm-call-process (ref 'command)
+ `(,@howm-migemo-client-option
+ ,@(and (string= type "emacs") '("-e"))
+ "-w" ,roma))))
+ (t (error "Invalid howm-migemo-client: %s" howm-migemo-client)))))
(defun howm-normalize-oldp ()
howm-list-normalizer)
(funcall disp-f arg))))
rules))
-;; Use dynamic bindings dirtily!
(defun howm-template-title (arg)
(insert (cdr (assoc 'title arg))))
(defun howm-template-date (arg)