From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jambunathan K Newsgroups: gmane.emacs.bugs Subject: bug#13069: 24.3.50; vc-dir: Unify git stashing and bzr shelving Date: Mon, 03 Dec 2012 20:31:56 +0530 Message-ID: <8738zn2n8b.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1354546792 16025 80.91.229.3 (3 Dec 2012 14:59:52 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 3 Dec 2012 14:59:52 +0000 (UTC) To: 13069@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Dec 03 16:00:04 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1TfXV4-00040z-UE for geb-bug-gnu-emacs@m.gmane.org; Mon, 03 Dec 2012 16:00:03 +0100 Original-Received: from localhost ([::1]:48995 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfXUt-00059R-BH for geb-bug-gnu-emacs@m.gmane.org; Mon, 03 Dec 2012 09:59:51 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:35258) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfXUn-00054M-GA for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 09:59:49 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfXUh-00052F-Ic for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 09:59:45 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:41351) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfXUh-00052B-F1 for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 09:59:39 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TfXWz-0001Ar-Ot for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 10:02:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jambunathan K Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 03 Dec 2012 15:02:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 13069 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.13545469194503 (code B ref -1); Mon, 03 Dec 2012 15:02:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 3 Dec 2012 15:01:59 +0000 Original-Received: from localhost ([127.0.0.1]:51602 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfXWw-0001AZ-Ap for submit@debbugs.gnu.org; Mon, 03 Dec 2012 10:01:58 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:36822) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfXWt-0001AR-BP for submit@debbugs.gnu.org; Mon, 03 Dec 2012 10:01:56 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfXUQ-0004pj-VR for submit@debbugs.gnu.org; Mon, 03 Dec 2012 09:59:32 -0500 Original-Received: from lists.gnu.org ([208.118.235.17]:58416) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfXUQ-0004pQ-RT for submit@debbugs.gnu.org; Mon, 03 Dec 2012 09:59:22 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:35142) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfXUP-00053Q-OI for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 09:59:22 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfXUG-0004ds-3w for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 09:59:21 -0500 Original-Received: from mail-pa0-f41.google.com ([209.85.220.41]:34233) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfXUF-0004dn-Tz for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 09:59:12 -0500 Original-Received: by mail-pa0-f41.google.com with SMTP id bj3so1898372pad.0 for ; Mon, 03 Dec 2012 06:59:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version:content-type; bh=zlk0X3bfbzouJTe0eXBwyR066nQZTiNl8xHdAdfVZKE=; b=NajhLxUTQP6XxKpLWZf4uGfoyAj5qbZdmropHsD+lpK7xI52A97MpLPHqnAJ51hGZP wWiACMNOjLTqv5LHVwCZU0vDGo87x2QeyIC/4u3tIS1JqpTE6XMBeOTDAh/vcGsPkyPZ rytOg8CWgAMtODCnqejQADl1i5hiOTllm+5a07c8+c/elZ94vxw/F+SMw+UqI1udDs+W L2+bUsXuVMh8e1rMxzHWAoyI5Qd1VrMMNpVCAhIkltu/CVyepYHUZaiETDOvTf8xSRvy y5qkEWWLSGZ3iE+QVfO+tCnae8iVOcITizPY9RMgph5jK80Dern++rqJO2/TzJOQrGJo ccCg== Original-Received: by 10.68.237.6 with SMTP id uy6mr29238410pbc.147.1354546750909; Mon, 03 Dec 2012 06:59:10 -0800 (PST) Original-Received: from debian-6.05 ([115.241.4.81]) by mx.google.com with ESMTPS id k2sm4525456paw.24.2012.12.03.06.59.07 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 03 Dec 2012 06:59:09 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:67835 Archived-At: "Works-for-me" changes in my .emacs to uniformly shelf/unshelve changes in git and bzr backends. You can install the following changes and in a *vc-dir* (git/bzr) buffer you can do f s => stash f S => snapshot f p => pop The patch uses `vc-call-backend' for each of the above operations. There is also a `vc-stash-name' function to get the latest stash name. The changes for "works-for-me". It would be good to have "works-for-all" equivalent of this functionality in vanilla Emacs. ---------------------------------------------------------------------- ;; Unify git stashing and bzr shelving ;; Put stash related operations on a `f' prefix. (defvar vc-dir-stash-map (let ((map (make-sparse-keymap))) (define-key map "s" 'vc-stash) (define-key map "S" 'vc-stash-snapshot) (define-key map "p" 'vc-stash-pop) map)) (fset 'vc-dir-stash-map vc-dir-stash-map) (add-hook 'vc-dir-mode-hook (lambda () (define-key vc-dir-mode-map "f" 'vc-dir-stash-map))) ;; Generic vc-stash callbacks. (require 'vc) (defun vc-stash (name) "Stash current working tree." (interactive "sName: ") (let* ((vc-fileset (vc-deduce-fileset t)) ;FIXME: Why t? --Stef (backend (car vc-fileset)) (files (cadr vc-fileset))) (vc-call-backend backend 'stash name))) (defun vc-stash-snapshot () "Take a snapshot of working tree." (interactive) (let* ((vc-fileset (vc-deduce-fileset t)) ;FIXME: Why t? --Stef (backend (car vc-fileset)) (files (cadr vc-fileset))) (vc-call-backend backend 'stash-snapshot))) (defun vc-stash-pop () "Pop newest stash." (interactive) (let* ((vc-fileset (vc-deduce-fileset t)) ;FIXME: Why t? --Stef (backend (car vc-fileset)) (files (cadr vc-fileset)) (name (vc-stash-name))) (when name (vc-call-backend backend 'stash-pop name)))) (defun vc-stash-name () "Name of the stash on top." (let* ((vc-fileset (vc-deduce-fileset t)) ;FIXME: Why t? --Stef (backend (car vc-fileset)) (files (cadr vc-fileset))) (vc-call-backend backend 'stash-name))) ;; Bzr vc-stash callbacks. (defalias 'vc-bzr-stash 'vc-bzr-shelve) (defalias 'vc-bzr-stash-snapshot 'vc-bzr-shelve-snapshot) (defalias 'vc-bzr-stash-apply 'vc-bzr-shelve-apply) (defun vc-bzr-stash-name () (let* ((name (car (vc-bzr-shelve-list))) (id (when (and name (string-match "^ +\\([0-9]+\\):" name)) (match-string 1 name)))) id)) (defun vc-bzr-stash-pop (name) (interactive) (vc-bzr-shelve-apply name)) ;; Git vc-stash callbacks. (defun vc-git-stash-name () (let* ((name (car (vc-git-stash-list))) (id (when (and name (string-match "^ +\\({[0-9]+}\\):" name)) (match-string 1 name)))) (format "stash@%s" id))) In GNU Emacs 24.3.50.8 (i686-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2012-12-03 on debian-6.05 Bzr revision: 111072 cyd@gnu.org-20121203062306-87uj2za1hu2dynaj Windowing system distributor `The X.Org Foundation', version 11.0.10707000 Important settings: value of $LANG: en_IN locale-coding-system: iso-latin-1-unix default enable-multibyte-characters: t