From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.devel Subject: Re: how to speed up Lisp devel time Date: Fri, 09 Aug 2024 13:18:25 +0200 Message-ID: <87frre3pxa.fsf@dataswamp.org> References: <87y156413v.fsf@dataswamp.org> <86sevekvjy.fsf@gnu.org> <87v80a402y.fsf@dataswamp.org> <86ikwakmdg.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="34649"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: emacs-devel@gnu.org Cancel-Lock: sha1:zciz0xdyo7FsEHh5C94PYA4U7Sw= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Aug 09 13:56:17 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1scOEC-0008pP-Sh for ged-emacs-devel@m.gmane-mx.org; Fri, 09 Aug 2024 13:56:16 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1scODW-0005dT-BM; Fri, 09 Aug 2024 07:55:34 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1scNdu-0004ck-8u for emacs-devel@gnu.org; Fri, 09 Aug 2024 07:18:46 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1scNds-0007UX-Hl for emacs-devel@gnu.org; Fri, 09 Aug 2024 07:18:46 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1scNdp-00018Q-DI for emacs-devel@gnu.org; Fri, 09 Aug 2024 13:18:41 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 09 Aug 2024 07:55:30 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:322568 Archived-At: Eli Zaretskii wrote: >>>> (interactive (if (numberp current-prefix-arg) >>>> (list current-prefix-arg) >>>> current-prefix-arg)) >>>> (unless end >>>> (setq end 73)) >>>> (unless step >>>> (setq step (min 10 (max 2 (/ end 10))))) >>>> (unless i >>>> (setq i 0)) >>>> (unless (and (numberp i) (<= 0 i) >>>> (numberp end) (< 0 end) >>>> (numberp step) (< 0 step)) >>>> (error "Bogus indata")) >>>> >>>> This is 402 chars! >>> >>> Why do you need that? >> >> I want it to work with M-x, C-u M-x, and C-u 100 M-x. > > This is rather unusual, and you should expect to have some > more-than-normally complicate code in that case. What do you mean? It is the same for `forward-line' C-u M-x forward-line RET C-u 4 M-x forward-line RET > Also, someone pointed out that you could write this in just > 83 characters. Really? Well, well, let's see the code then! It is 402 chars now so that is quite an achievement! >> Then I want the same defaults for interactive and >> non-interactive use. > > That usually makes little sense in Emacs. Interactive and > non-interactive uses have different semantics. Same default for any kind of call makes little sense. Usually! I OTOH thinks that is the first policy I can think of. Since the interface is just the interface, if something is unset that is needed by the function, regardless of what interface didn't set it, just set it to the default. That works. >>> Just look at the Emacs sources: you will rarely if ever >>> find such long sequences of setting missing arguments to >>> their defaults. That's no accident. >> >> Oh, there are long sequences setting up the interface in >> the Emacs source alright. Sometimes they are so long they >> have become separate functions of their own. > > That happens, but very rarely. Well-designed clean code > should avoid that. It is better if everyone, well-designers or not, could use a clean interface to do that. Then one could simply use it and not having to rely on people writing great Elisp for everything. -- underground experts united https://dataswamp.org/~incal