 (defun buffer-string-no-properties ()
   (buffer-substring-no-properties (point-min) (point-max)))
 
+
+(defun filter (condp lst)
+  (delq nil
+        (mapcar (lambda (x) (and (funcall condp x) x)) lst)))
+(defun count-if (condp lst)
+  (length (filter condp lst)))
+
 (defun count-line-string (s)
   (if (= (length s) 0)
       0

                         (number-to-string (kasumi-orig-point (point))))
    ;; (kasumi-refresh (point-min) (point-min) 0)
  ))


(defun kasumi-surface ()
  (interactive)

  (take-nth-sub l n '()))
(defun string-join (lis sep)
  (mapconcat 'identity lis sep))
(defun string-rstrip (s)
  (replace-regexp-in-string "\\'[ \r\n\t]*" "" s))
(defun string-lstrip (s)
  (replace-regexp-in-string "[ \r\n\t]*\\'" "" s))
(defun string-strip (s)
  (string-lstrip (string-rstrip s)))


;; http://www.gnu.org/software/emacs/manual/html_node/elisp/Asynchronous-Processes.html#Asynchronous-Processes
(defun kasumi-start-shiranui (program)
