From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alin Newsgroups: gmane.emacs.devel Subject: Re: Midnight Commander Quick View Date: Wed, 27 Aug 2014 09:33:47 +0300 Message-ID: <87egw2h25w.fsf@gmail.com> References: <87mwats3sb.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1409121276 23794 80.91.229.3 (27 Aug 2014 06:34:36 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 27 Aug 2014 06:34:36 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Aug 27 08:34:27 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XMWoN-0005di-BZ for ged-emacs-devel@m.gmane.org; Wed, 27 Aug 2014 08:34:27 +0200 Original-Received: from localhost ([::1]:57771 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XMWoM-0005Kc-LB for ged-emacs-devel@m.gmane.org; Wed, 27 Aug 2014 02:34:26 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:46566) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XMWnz-0005IC-6C for emacs-devel@gnu.org; Wed, 27 Aug 2014 02:34:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XMWnq-0000fR-4e for emacs-devel@gnu.org; Wed, 27 Aug 2014 02:34:03 -0400 Original-Received: from mail-wg0-x231.google.com ([2a00:1450:400c:c00::231]:57046) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XMWnp-0000eW-TB for emacs-devel@gnu.org; Wed, 27 Aug 2014 02:33:54 -0400 Original-Received: by mail-wg0-f49.google.com with SMTP id k14so15712573wgh.32 for ; Tue, 26 Aug 2014 23:33:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:references:cc:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=HeXfXcAPa3InhhKzxOMoABMfFp2/lifk9m/lKKx3axk=; b=ZFRKgpFiYVnHuHlEoDvzGYTfKE9wdknWJRLbakdeWUG4TKboL07a5h939tMdt/Hg+n u2TafJguvcQ3Q8LaBaZwWCMwZLf//ov7T1hrcs2wAIgyFVPgYakIv0zkbtCfIRRXgjOb GKpjCcCwTta+kLtEBG0xKAyBE38doxO2Y3CIQSbjUZJ54MIgPsKDmbYKyO19n1NGc17k ve27f3JuaMEEESUWSf+tpstSzizwkRWflEg+7xENhk4eTqEEVHxV4UiuX7eKNHl+91rM jsUdRCiu2rjokEFX7bPKjwV4zYTseNz7aeEJ6GiptL+ItkwxAf9OMC+kGZsbIjUCRmGy ktGA== X-Received: by 10.180.78.201 with SMTP id d9mr26709544wix.12.1409121232803; Tue, 26 Aug 2014 23:33:52 -0700 (PDT) Original-Received: from ThinkPad-T420 ([109.102.142.157]) by mx.google.com with ESMTPSA id ua8sm14408698wjc.7.2014.08.26.23.33.50 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Tue, 26 Aug 2014 23:33:51 -0700 (PDT) In-Reply-To: (Stefan Monnier's message of "Mon, 25 Aug 2014 10:38:42 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c00::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:173835 Archived-At: --=-=-= Content-Type: text/plain I extracted from my configuration files the code where I wrote quick view like in midnight commander , and here is a version `test.el` that I tested in `emacs -Q`. Put it in your load-path, and call `(load "test.el")`. In dired-mode, enter and quit `qv` qith C-c C-q. It is buffer-local everything, so if you pass in another directory it's no more active, unless you reactivate it. You will like it. Enjoy. --=-=-= Content-Type: application/emacs-lisp Content-Disposition: attachment; filename=test.el Content-Transfer-Encoding: quoted-printable Content-Description: Midnight Commander Quick View for dired. ;;; -*- lexical-binding:t -*- (require 'dired) (defun qv () (let ((config (current-window-configuration)) (dir-buffer (current-buffer)) (max-size 1e6) (qv-buffer) (qv-window)) (defvar keybinding (lambda (&optional arg) (interactive) (setq-local quick-view-object (qv)) (apply quick-view-object '(init)) (message "enter quick view"))) (defun get-key () keybinding) (defun update () (let ((f (dired-get-filename t t))) (when (and (stringp f) (file-regular-p f) (< (nth 7 (file-attributes f)) max-size)) (let ((auto-mode-alist) (buf (find-file-noselect f nil t))) (when (not (equal buf qv-buffer)) (and qv-buffer (not (equal (current-buffer) qv-buffer)) (kill-buffer qv-buffer)) (with-selected-window qv-window (switch-to-buffer buf))) (setq qv-buffer buf))))) (defun init () (delete-other-windows) (split-window-sensibly) (balance-windows) (setq qv-window (save-window-excursion (other-window 1) (selected-window))) (add-hook 'post-command-hook 'update 'at-the-end t) (define-key dired-mode-map [(control ?c) (control ?q)] (lambda (&optional arg) (interactive) (apply quick-view-object (list 'exit))))) (defun exit () (setq-local quick-view-object nil) (remove-hook 'post-command-hook 'update t) (define-key dired-mode-map [(control ?c) (control ?q)] keybinding ) (and qv-buffer (kill-buffer qv-buffer)) (set-window-configuration config) (message "exit qv")) (lambda (message) (apply message '())))) (define-key dired-mode-map [(control ?c) (control ?q)] (apply (qv) '(get-key))) --=-=-= Content-Type: text/plain -- No GNUs is bad news. --=-=-=--