From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.help Subject: Re: Help setting nadvice for indent-region Date: Tue, 09 Feb 2016 00:13:27 +0100 Message-ID: <87oabqkd7s.fsf@debian.uxu> References: <87a8ne2k6v.fsf@web.de> <87si145aru.fsf@debian.uxu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1454973259 12478 80.91.229.3 (8 Feb 2016 23:14:19 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 8 Feb 2016 23:14:19 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Feb 09 00:14:07 2016 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 1aSv0R-0004mz-7B for geh-help-gnu-emacs@m.gmane.org; Tue, 09 Feb 2016 00:14:07 +0100 Original-Received: from localhost ([::1]:49736 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aSv0Q-00022k-J9 for geh-help-gnu-emacs@m.gmane.org; Mon, 08 Feb 2016 18:14:06 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39497) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aSv08-0001zD-Lo for help-gnu-emacs@gnu.org; Mon, 08 Feb 2016 18:13:49 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aSv03-0003pQ-JB for help-gnu-emacs@gnu.org; Mon, 08 Feb 2016 18:13:48 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:60202) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aSv03-0003pM-C4 for help-gnu-emacs@gnu.org; Mon, 08 Feb 2016 18:13:43 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1aSv01-0004Jw-BV for help-gnu-emacs@gnu.org; Tue, 09 Feb 2016 00:13:41 +0100 Original-Received: from nl106-137-227.student.uu.se ([130.243.137.227]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 09 Feb 2016 00:13:41 +0100 Original-Received: from embe8573 by nl106-137-227.student.uu.se with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 09 Feb 2016 00:13:41 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Original-Lines: 57 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: nl106-137-227.student.uu.se Mail-Copies-To: never User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) Cancel-Lock: sha1:q8Cp4hIh7/Zu0+Vv7XxLbS7p6Jk= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 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:109065 Archived-At: John Mastro writes: > Your solution requires you to define a new `dwim' > function every time you want overload a function > like this Yes, which is very fast and accurate. > whereas with advice you can simply add it to the > list of functions to be adviced (assuming it will be > adviced in the same way). If you write a defun, you know for sure what it does and that it will be used as intended. If you start muck around with existing code you have two places to look when you want to know what happens, instead of one place. Only at one of those places is there even an indication there is another place to look (i.e., where the advice is, but not where the original code is). Also, with a defun, it is used explicitly, but with the advice or self-modifying code, what make sense for you can be completely incomprehensible/invisible to another person or program that uses the same piece of code, and this makes debugging much more difficult - also for the reason above (two places), by the way. Remember the whole monolithic kernel vs. microkernel thing. >> It it also more natural and "human-ish" to read >> without all the computer lingo (`funcall' etc.). > > Avoid funcall because it has a fun-y (haha) name? > This part I can't get behind at all. Just because people program computer doesn't mean anyone is benefited from the people themselves turning into, or acting like, computers. If the code is all computer lingo this is a bad sign. Compare the old-school C code which was constantly pointers, references, bitmasks, all computer stuff, enough to make your head spin - what does all this stuff *do*? /* You are not expected to understand this */ To get the size of a vector ("array" in the C lingo), simple! do int n = sizeof(a)/sizeof(a[0]); compare this to the Lisp `length'. -- underground experts united http://user.it.uu.se/~embe8573