From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ian Zimmerman Newsgroups: gmane.emacs.help Subject: code: deleterious mode [Was: yank-pop problem] Date: Fri, 7 Aug 2015 11:49:36 -0700 Message-ID: <20150807184750.8448.34B15BAC@ahiker.mooo.com> References: <20150806073831.GA4560@ofb.net> <20150806234942.GA6355@ofb.net> <20150807031208.1255.1CEF4BA2@ahiker.mooo.com> Reply-To: help-gnu-emacs@gnu.org NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1438973398 25824 80.91.229.3 (7 Aug 2015 18:49:58 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 7 Aug 2015 18:49:58 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Fri Aug 07 20:49:58 2015 Return-path: Envelope-to: geh-help-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 1ZNmiL-0002od-0q for geh-help-gnu-emacs@m.gmane.org; Fri, 07 Aug 2015 20:49:57 +0200 Original-Received: from localhost ([::1]:50785 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZNmiK-0002cg-ET for geh-help-gnu-emacs@m.gmane.org; Fri, 07 Aug 2015 14:49:56 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:46316) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZNmiA-0002bE-3z for help-gnu-emacs@gnu.org; Fri, 07 Aug 2015 14:49:47 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZNmi9-0003XT-6K for help-gnu-emacs@gnu.org; Fri, 07 Aug 2015 14:49:46 -0400 Original-Received: from disorder-1-pt.tunnel.tserv3.fmt2.ipv6.he.net ([2001:470:1f04:51a::2]:56809 helo=acedia.primate.net) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZNmi8-0003X2-U3 for help-gnu-emacs@gnu.org; Fri, 07 Aug 2015 14:49:45 -0400 Original-Received: from acedia.primate.net (localhost [127.0.0.1]) by acedia.primate.net (8.14.9/8.14.9/Debian-2) with ESMTP id t77Inax4022230 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 7 Aug 2015 11:49:36 -0700 Original-Received: (from itz@localhost) by acedia.primate.net (8.14.9/8.14.9/Submit) id t77InaFu022225 for help-gnu-emacs@gnu.org; Fri, 7 Aug 2015 11:49:36 -0700 X-Authentication-Warning: acedia.primate.net: itz set sender to itz@buug.org using -f Original-Received: from itz by ahiker.mooo.com with local (Exim 4.80) (envelope-from ) id 1ZNmi0-0002Cz-Aw for help-gnu-emacs@gnu.org; Fri, 07 Aug 2015 11:49:36 -0700 Content-Disposition: inline In-Reply-To: <20150807031208.1255.1CEF4BA2@ahiker.mooo.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:470:1f04:51a::2 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:106326 Archived-At: This thread gave me an idea :-) Constructive criticism most welcome! ;;; deleterious.el --- minor move to delete things instead of killing them ;; Copyright (C) Ian Zimmerman 2015 ;; Terms: GNU General Public License, Version 2 (require 'thingatpt) (defmacro deleterious-def (thing) (let ((sthing (symbol-name thing))) `(defun ,(intern (concat "deleterious-delete-" sthing)) (n) ,(concat "Delete a " sthing " without adding to the kill ring. Numeric prefix arg means delete that many " sthing "s. Negative arg means delete backward.") (interactive "p") (let ((bound (save-excursion (forward-thing (quote ,thing) n) (point)))) (if (< (point) bound) (delete-region (point) bound) (delete-region bound (point))))))) (deleterious-def line) (deleterious-def sentence) (deleterious-def sexp) (deleterious-def word) (defconst deleterious-mode-map (let ((k (make-sparse-keymap))) (define-key k [remap kill-region] 'delete-region) (define-key k [remap kill-line] 'deleterious-delete-line) (define-key k [remap kill-sentence] 'deleterious-delete-sentence) (define-key k [remap kill-sexp] 'deleterious-delete-sexp) (define-key k [remap kill-word] 'deleterious-delete-word) k) "Keymap to use in Deleterious minor mode.") ;;;###autoload (define-minor-mode deleterious-mode "Set or toggle Deleterious minor mode. It deletes instead of killing. This global minor mode rebinds a few keys to commands which remove bits of text but *do not* put them on the kill ring. It is useful for repetitive tasks involving multiple yanks of the same string; the string you yank will not get pushed back in the kill ring by new additions." :global t :init-value nil :lighter " Del" :keymap deleterious-mode-map) (provide 'deleterious) ;; Local Variables: ;; End: ;;; deleterious.el ends here -- Please *no* private copies of mailing list or newsgroup messages. Rule 420: All persons more than eight miles high to leave the court.