unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Emanuel Berg <incal@dataswamp.org>
To: emacs-devel@gnu.org
Subject: Re: how to speed up Lisp devel time
Date: Sat, 10 Aug 2024 09:51:39 +0200	[thread overview]
Message-ID: <87sevczugk.fsf@dataswamp.org> (raw)
In-Reply-To: 87wmkozvt9.fsf@dataswamp.org

>> I do not necessarily want them on the same line.
>> Depending on how often or rarely I use that command,
>> I might want labels reminding me what each argument is for.
>
> You got: same line, with labels.

There, at least we solved the problem for my function, now
with an interface setup of 1079 chars :)

Usually it isn't that hard to go from hard-coded individual
case to the general case, well, it isn't as hard as one
thinks anyway. 

Good, because this time - I think it's gonna be pretty hard :)

Zzz

;;; -*- lexical-binding: t -*-
;;
;; this file:
;;   https://dataswamp.org/~incal/emacs-init/iihf.el

(require 'cl-lib)

;; [
;;   end  :d 73     :r 0<            :pa mxd od
;;   step :d end/10 :r 0<  :r 2-10 c
;;   i    :d 0      :r 0<=
;; ]

(defun input-args (&optional do-ps end step i)
  (interactive)
  (let* (( end-def 73)
         (step-def (max 10 (min 2 (/ end-def 10))))
         (   i-def 0)
         (def (list end-def step-def i-def))
         (num-str (format "%s %s %s" (or end end-def) (or step step-def) (or i i-def)))
         (def-str (format "%s %s %s" (nth 0 def) (nth 1 def) (nth 2 def)))
         (str (if do-ps
                  (read-string (format "end step i [RET %s]: " def-str)
                               nil nil def-str)
                num-str))
         (spl (split-string str " "))
         (res (cl-mapcar (lambda (a) (string-to-number a)) spl))
         (all `(,@res ,@(cl-subseq def (length res))))
         (end  (nth 0 all))
         (step (nth 1 all))
         (   i (nth 2 all)))
    (unless (and (<  0  end)
                 (<  0 step)
                 (<= 0    i))
      (error "DNC"))
    (let ((min  2)
          (max 10))
      (setq step (cond ( (< step min)  min )
                       ( (< max  step) max )
                       ( step )))
      (list end step i))))

;; (input-args t)          RET  ; 73 10 0
;; (input-args t)  73 100  RET  ; 73 10 0
;; (input-args t)  73   1  RET  ; 73  2 0
;; (input-args t)  55      RET  ; 55 10 0
;; (input-args nil  1   2    3) ;  1  2 3
;; (input-args nil  1   2)      ;  1  2 0
;; (input-args nil  1)          ;  1 10 0
;; (input-args nil -1)          ;     DNC
;; (input-args nil  1  -1)      ;     DNC
;; (input-args nil  1   1   -1) ;     DNC
;; (input-args nil  1   1    0) ;  1  2 0

(provide 'iihf)

-- 
underground experts united
https://dataswamp.org/~incal




  reply	other threads:[~2024-08-10  7:51 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-09  7:16 how to speed up Lisp devel time Emanuel Berg
2024-08-09  7:24 ` Eli Zaretskii
2024-08-09  7:39   ` Emanuel Berg
2024-08-09 10:43     ` Eli Zaretskii
2024-08-09 11:18       ` Emanuel Berg
2024-08-09 12:02         ` Eli Zaretskii
2024-08-09 13:54           ` Emanuel Berg
2024-08-09 14:58             ` Eli Zaretskii
2024-08-09 16:03               ` Emanuel Berg
2024-08-09 16:16                 ` Emanuel Berg
2024-08-09 17:54                   ` Eli Zaretskii
2024-08-09 18:56                     ` Christopher Dimech
2024-08-09 21:57                       ` Emanuel Berg
2024-08-09 21:47                     ` Emanuel Berg
2024-08-09 17:27                 ` Yuri Khan
2024-08-09 21:21                   ` Emanuel Berg
2024-08-10  2:14                   ` Emanuel Berg
2024-08-10  6:01                     ` Yuri Khan
2024-08-10  6:08                       ` Emanuel Berg
2024-08-10  6:44                         ` Yuri Khan
2024-08-10  7:22                           ` Emanuel Berg
2024-08-10  7:51                             ` Emanuel Berg [this message]
2024-08-10  4:32                   ` Emanuel Berg
2024-08-10  5:58                     ` Eli Zaretskii
2024-08-09 14:59             ` Eduardo Ochs
2024-08-09 16:19               ` Emanuel Berg
2024-08-09 18:00                 ` Eli Zaretskii
2024-08-09 18:54                   ` Christopher Dimech
2024-08-09 22:17                     ` Emanuel Berg
2024-08-09 22:00                   ` Emanuel Berg
2024-08-09  8:24   ` Emanuel Berg
2024-08-09 10:36     ` Christopher Dimech

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=87sevczugk.fsf@dataswamp.org \
    --to=incal@dataswamp.org \
    --cc=emacs-devel@gnu.org \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).