From 45be1ad34a62fb3963a9694e8e6413d0e3d2637c Mon Sep 17 00:00:00 2001 From: Ted Zlatanov Date: Mon, 25 Apr 2011 21:46:23 -0500 Subject: [PATCH] Add epoch-view.el. * packages/epoch-view-0.0.1.el: New package. --- ChangeLog | 4 ++ packages/elpa.rss | 6 +++ packages/epoch-view-0.0.1.el | 99 ++++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 packages/epoch-view-0.0.1.el diff --git a/ChangeLog b/ChangeLog index 758ba04e3..04d021c0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2011-04-26 Teodor Zlatanov + + * packages/epoch-view-0.0.1.el: New package. + 2011-04-20 Stefan Monnier * packages/all-1.0.el: Change version. Address byte-compiler warnings. diff --git a/packages/elpa.rss b/packages/elpa.rss index 68706c1d9..5c75ed33c 100644 --- a/packages/elpa.rss +++ b/packages/elpa.rss @@ -5,6 +5,12 @@ en News for the Emacs Lisp Package Archive +epoch-view version 0.0.1 +http://elpa.gnu.org/packages/news.html +View Unix epoch timestamps as dates +Mon, 25 April 2011 20:10:00 -0500 + + load-dir version 0.0.2 http://elpa.gnu.org/packages/news.html Modularize your .emacs: autoload Lisp snippets diff --git a/packages/epoch-view-0.0.1.el b/packages/epoch-view-0.0.1.el new file mode 100644 index 000000000..46ed67c0c --- /dev/null +++ b/packages/epoch-view-0.0.1.el @@ -0,0 +1,99 @@ +;;; epoch-view.el --- minor mode to visualize epoch timestamps + +;; Copyright (C) 2010 +;; Free Software Foundation, Inc. + +;; Author: Ted Zlatanov +;; Keywords: data, timestamp, epoch, unix +;; Version: 0.0.1 + +;; 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: + +;; Use like any other minor mode. You'll see tooltips with dates +;; instead of Unix epoch times. This mode turns on font-lock and +;; leaves it on forever. You may or may not like that. + +;; TODO: instead of letting font-lock-mode manage the `display' +;; property, manage it ourselves so when multiple modes specify +;; `display' it won't get wiped out when this mode doesn't need it +;; anymore. + +;;; Code: + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;; User Variables: + +(defcustom epoch-view-time-format "%F %T" + "Format for time view. Same as `format-time-string'." + :type '(choice :tag "Time format" + (string :tag "Choose your own `format-time-string' format") + (const :tag "YYYY-MM-DD HH:MM:SS" "%F %T")) + :group 'epoch-view) + +(defvar epoch-view-font-lock-keywords + '(("\\<[0-9]\\{8,11\\}\\>" + (0 (epoch-view-render)))) + "Font-lock keywords of epoch timestamps.") + +(defun epoch-view-render () + "Render a epoch match." + (let ((text (match-string-no-properties 0))) + `(face font-lock-warning-face + display ,(epoch-view--render text)))) + +(defun epoch-view--render-time (text) + "Render the time portion of an epoch match from TEXT." + (format-time-string + epoch-view-time-format + (seconds-to-time (car (read-from-string (concat text ".0")))))) + +(defun epoch-view--render (text) + "Render a epoch match from a number in TEXT, ending with TEXT." + (format "[%s] %s" (epoch-view--render-time text) text)) + +(defun epoch-view-turn-on () + "Turn on epoch-view-mode." + (let ((props (make-local-variable 'font-lock-extra-managed-props))) + (add-to-list props 'display)) + + (font-lock-add-keywords nil epoch-view-font-lock-keywords)) + +(defun epoch-view-turn-off () + "Turn off epoch-view-mode." + (font-lock-remove-keywords + nil + `(,@epoch-view-font-lock-keywords))) + +;;;###autoload +(define-minor-mode + epoch-view-mode + "Visualize epoch (Unix) timestamps." + :lighter " EpochVw" + (progn + (if epoch-view-mode + (epoch-view-turn-on) + (epoch-view-turn-off)) + ;; Turn on font lock + (font-lock-mode 1))) + +(provide 'epoch-view) + +(run-hooks 'epoch-view-load-hook) + +;;; epoch-view.el ends here -- 2.39.2