all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Kaushal Modi <kaushal.modi@gmail.com>
To: Emanuel Berg <moasen@zoho.com>
Cc: help-gnu-emacs@gnu.org
Subject: Re: DWIM region (was: Re: count regexp hits)
Date: Thu, 04 Jan 2018 22:48:42 +0000	[thread overview]
Message-ID: <CAFyQvY3y94wOnfWt3RDsxdwWCn4PRDeHHGDJ2Y+qKk9RXeXqqA@mail.gmail.com> (raw)
In-Reply-To: <86d12pb988.fsf_-_@zoho.com>

On Thu, Jan 4, 2018 at 4:35 PM Emanuel Berg <moasen@zoho.com> wrote:

> BTW this method on acting on the region (if
> any) I have found very useful and it has
> recurred many times in my code:
>
> Is it the canonical way of doing it as well?
>

I don't think there's a canonical way.. here's how I dealt with the same
problem:


;;; Operate on Region or Whole Buffer
(defvar modi/region-or-whole-fns '(indent-region
                                   eval-region)
  "List of functions to act on the whole buffer if no region is selected.")

(defun modi/advice-region-or-whole (orig-fun &rest args)
  "Advice function that applies ORIG-FUN to the whole buffer if no region is
selected.
http://thread.gmane.org/gmane.emacs.help/109025/focus=109102 "
  ;; Required to override the "r" argument of `interactive' in functions
like
  ;; `indent-region' so that they can be called without an active region.
  (interactive (if (use-region-p)
                   (list (region-beginning) (region-end))
                 (list (point-min) (point-max))))
  (prog1 ; Return value of the advising fn needs to be the same as ORIG-FUN
      (apply orig-fun args)
    (when (and (called-interactively-p 'interactive)
               (not (use-region-p)))
      (message "Executed %s on the whole buffer."
               (propertize (symbol-name this-command)
                           'face 'font-lock-function-name-face)))))

(dolist (fn modi/region-or-whole-fns)
  (advice-add fn :around #'modi/advice-region-or-whole))


Now with that setup, I simply need to add functions, where I want the same
whole buffer or region behavior, to the modi/region-or-whole-fns variable.

Ref:
https://github.com/kaushalmodi/.emacs.d/blob/c7e3d5bae08105a7a1853566b44ea65c73c80e69/setup-files/setup-editing.el#L1001-L1028


-- 

Kaushal Modi


  parent reply	other threads:[~2018-01-04 22:48 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-04  4:12 count regexp hits Emanuel Berg
2018-01-04  5:02 ` Drew Adams
     [not found] ` <mailman.6799.1515042142.27995.help-gnu-emacs@gnu.org>
2018-01-04 18:47   ` Emanuel Berg
2018-01-04 21:32     ` DWIM region (was: Re: count regexp hits) Emanuel Berg
2018-01-04 22:18       ` DWIM region Stefan Monnier
2018-01-05 23:18         ` Philipp Stephani
2018-01-04 22:48       ` Kaushal Modi [this message]
     [not found]       ` <mailman.6836.1515106138.27995.help-gnu-emacs@gnu.org>
2018-01-04 23:03         ` DWIM region (was: Re: count regexp hits) Emanuel Berg
2018-01-04 23:14           ` Kaushal Modi
     [not found]           ` <mailman.6837.1515107666.27995.help-gnu-emacs@gnu.org>
2018-01-05  2:10             ` Emanuel Berg
2018-01-08 16:09           ` advice vs hooks in org (was DWIM region) Rusi
     [not found]       ` <mailman.6835.1515104325.27995.help-gnu-emacs@gnu.org>
2018-01-04 23:09         ` DWIM region Emanuel Berg
2018-01-04 23:14           ` Stefan Monnier
     [not found]           ` <mailman.6838.1515107716.27995.help-gnu-emacs@gnu.org>
2018-01-04 23:36             ` Emanuel Berg
2018-01-05  0:19               ` Emanuel Berg
2018-01-05 20:45             ` Emanuel Berg
2018-01-05 22:31               ` Stefan Monnier
     [not found]               ` <mailman.6892.1515191546.27995.help-gnu-emacs@gnu.org>
2018-01-06  2:20                 ` Emanuel Berg
2018-01-06 15:53                   ` Stefan Monnier
     [not found]                   ` <mailman.6929.1515254243.27995.help-gnu-emacs@gnu.org>
2018-01-06 18:52                     ` Emanuel Berg
2018-01-06 20:29                     ` Emanuel Berg
2018-01-06 22:14                     ` Emanuel Berg
2018-01-07  3:14                       ` Emanuel Berg
2018-01-07  3:25                         ` Emanuel Berg
2018-01-08 14:17                           ` Stefan Monnier
     [not found]                           ` <mailman.7019.1515421057.27995.help-gnu-emacs@gnu.org>
2018-01-09  1:41                             ` Emanuel Berg
2018-01-09  2:30                               ` Stefan Monnier
     [not found]                               ` <mailman.7052.1515465048.27995.help-gnu-emacs@gnu.org>
2018-01-09  4:11                                 ` Emanuel Berg
2018-01-09 13:40                                   ` Stefan Monnier
2018-01-08 14:11                         ` Stefan Monnier
     [not found]                         ` <mailman.7018.1515420745.27995.help-gnu-emacs@gnu.org>
2018-01-08 20:26                           ` Emanuel Berg
2018-01-08 14:08                       ` Stefan Monnier
2018-01-04 23:20         ` Emanuel Berg
2018-01-07  5:32       ` DWIM region (was: Re: count regexp hits) Marcin Borkowski
     [not found]       ` <mailman.6953.1515303153.27995.help-gnu-emacs@gnu.org>
2018-01-07  6:45         ` Emanuel Berg
2018-01-07  7:21           ` Marcin Borkowski
     [not found]           ` <mailman.6967.1515337253.27995.help-gnu-emacs@gnu.org>
2018-01-07 20:57             ` Emanuel Berg
2018-01-09  5:28               ` Marcin Borkowski
2018-01-09 13:42                 ` DWIM region Stefan Monnier
     [not found]                 ` <mailman.7069.1515505638.27995.help-gnu-emacs@gnu.org>
2018-01-10  3:31                   ` Emanuel Berg
     [not found]               ` <mailman.7055.1515475732.27995.help-gnu-emacs@gnu.org>
2018-01-09  6:20                 ` DWIM region (was: Re: count regexp hits) Emanuel Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAFyQvY3y94wOnfWt3RDsxdwWCn4PRDeHHGDJ2Y+qKk9RXeXqqA@mail.gmail.com \
    --to=kaushal.modi@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=moasen@zoho.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.