From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alin Soare Newsgroups: gmane.emacs.devel Subject: Midnight Commander Quick View Date: Mon, 25 Aug 2014 05:26:28 +0300 Message-ID: <87mwats3sb.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1408933640 2829 80.91.229.3 (25 Aug 2014 02:27:20 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 25 Aug 2014 02:27:20 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Aug 25 04:27:13 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 1XLk00-0005sH-Ou for ged-emacs-devel@m.gmane.org; Mon, 25 Aug 2014 04:27:12 +0200 Original-Received: from localhost ([::1]:45894 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XLjzw-0005Yo-Af for ged-emacs-devel@m.gmane.org; Sun, 24 Aug 2014 22:27:08 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48219) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XLjzk-0005Xh-Rw for emacs-devel@gnu.org; Sun, 24 Aug 2014 22:27:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XLjzb-0001IR-RK for emacs-devel@gnu.org; Sun, 24 Aug 2014 22:26:56 -0400 Original-Received: from mail-wi0-x230.google.com ([2a00:1450:400c:c05::230]:39053) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XLjzb-0001IL-Jf for emacs-devel@gnu.org; Sun, 24 Aug 2014 22:26:47 -0400 Original-Received: by mail-wi0-f176.google.com with SMTP id bs8so1847883wib.15 for ; Sun, 24 Aug 2014 19:26:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:cc:date:message-id:user-agent:mime-version :content-type; bh=FhcLGzvk6aiesFPN2QFCQtbNVWHhpl5NgdNKgOZrueo=; b=OnT1jrXiEF5rhQaV2fQuTpWt/3OrN048iN9aPOy5RM38L5xCpQCjD+87yetCSLCOVo qItbXZBHi9mdIWPmzItGKd/9luzTR64qwvsms4An+mRoVm0E8Hl7VLUZ4q892Rb6ED+b jmzvwx4d/knJcYE7hoKXfk71zG5aYwbkH53nBjRjW1dRUaxap4yj3mPwtyniyt0LqVDs Okl5uKOQJKgEMaVTuNRQHeHyqRiMXn6eO+NJb14TzYjbHs9tipYlQLAWy9r3Jc77Uemk IpcjGPg2rgOnfqUlI7Tv5Emtc/njr6A8dERCFfFq7iIgV6A0QhOOP4+JsrEfkxfmZeqj e4Sw== X-Received: by 10.180.186.230 with SMTP id fn6mr7052819wic.44.1408933606440; Sun, 24 Aug 2014 19:26:46 -0700 (PDT) Original-Received: from ThinkPad-T420 ([109.102.181.111]) by mx.google.com with ESMTPSA id r1sm26544576wia.21.2014.08.24.19.26.44 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Sun, 24 Aug 2014 19:26:45 -0700 (PDT) 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:c05::230 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:173817 Archived-At: I needed quick view option, like in midnight commander, and I wrote this code. I want to ask if you know something that already exists and does a similar job. My code is not complete -- for example, for large files, I want to see only the header, not to load all the file. In my emacs this code works as I expect to work. I did not test it outside -- but it should work as well. --- (setq lexical-binding t) (require 'dired) (defun qv-update () (let ((f (dired-get-filename t t))) (when (and (stringp f) (file-regular-p f) (< (nth 7 (file-attributes f)) 1e7)) (when (not (equal (window-buffer) (save-window-excursion (window-buffer (other-window 1))))) (save-window-excursion (other-window 1) (and buffer-read-only (not (buffer-modified-p)) (kill-buffer (window-buffer))))) (view-file-other-window f) (other-window 1)))) (defun qv () (let ((i 0)) (let ((config (current-window-configuration))) (delete-other-windows) (split-window-sensibly) (balance-windows) (add-hook 'post-command-hook 'qv-update) (lambda (message) (defun exit () (setq-local quick-view-object nil) (define-key dired-mode-map [(control ?c) (control ?q)] qv-binding) (setq i (1- i)) (set-window-configuration config) (remove-hook 'post-command-hook 'qv-update) (message "exit qv")) (apply message '()))))) (setq-local qv-binding (lambda (&optional arg) (interactive) (setq-local quick-view-object (qv)) (define-key dired-mode-map [(control ?c) (control ?q)] (lambda (&optional arg) (interactive) (dired-next-line 1) (apply quick-view-object (list 'exit)))))) (define-key dired-mode-map [(control ?c) (control ?q)] qv-binding) -- No GNUs is bad news.