;;; ztree-util.el --- Auxiliary utilities for the ztree package -*- lexical-binding: t; -*- ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. ;; ;; Author: Alexey Veretennikov ;; ;; Created: 2013-11-11 ;; ;; Keywords: files tools ;; URL: https://github.com/fourier/ztree ;; Compatibility: GNU Emacs 24.x ;; ;; This file is part of GNU Emacs. ;; ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . ;; ;;; Commentary: ;;; Code: (defun ztree-find (where which) "Find element of the list WHERE matching predicate WHICH." (catch 'found (dolist (elt where) (when (funcall which elt) (throw 'found elt))) nil)) (defun ztree-filter (condp lst) "Filter out elements not satisfying predicate CONDP in the list LST. Taken from http://www.emacswiki.org/emacs/ElispCookbook#toc39" (delq nil (mapcar (lambda (x) (and (funcall condp x) x)) lst))) (defun ztree-printable-string (string) "Strip newline character from file names, like `Icon\n'. Argument STRING string to process.'." (replace-regexp-in-string "\n" "" string)) (defun ztree-file-short-name (file) "By given FILE name return base file/directory name. Taken from http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg01238.html" (let* ((dir (directory-file-name file)) (simple-dir (file-name-nondirectory dir))) ;; check if the root directory (if (string= "" simple-dir) dir (ztree-printable-string simple-dir)))) (defun ztree-car-atom (value) "Return VALUE if value is an atom, otherwise (car value) or nil. Used since `car-safe' returns nil for atoms" (if (atom value) value (car value))) (defun ztree-insert-with-face (text face) "Insert TEXT with the FACE provided." (let ((start (point))) (insert text) (put-text-property start (point) 'face face))) (defun ztree-untrampify-filename (file) "Return FILE as the local file name." (or (file-remote-p file 'localname) file)) (defun ztree-quotify-string (str) "Surround STR with quotes." (concat "\"" str "\"")) (defun ztree-same-host-p (file1 file2) "Return t if FILE1 and FILE2 are on the same host." (let ((file1-remote (file-remote-p file1)) (file2-remote (file-remote-p file2))) (string-equal file1-remote file2-remote))) (provide 'ztree-util) ;;; ztree-util.el ends here