all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Jean Louis <bugs@gnu.support>
To: Christopher Dimech <dimech@gmx.com>
Cc: help-gnu-emacs@gnu.org
Subject: Re: How users start programming in Emacs Lisp...
Date: Tue, 1 Jun 2021 00:53:46 +0300	[thread overview]
Message-ID: <YLVa6nsjXF49eqZ3@protected.localdomain> (raw)
In-Reply-To: <trinity-b909c76a-ecf6-40aa-84ab-1a0ed9a5b419-1622493042031@3c-app-mailcom-bs01>

* Christopher Dimech <dimech@gmx.com> [2021-05-31 23:31]:
> I would like to be able to decide the name from the mini-buffer.
> How can that be done?

Here is the set of improved functions:

- your main buffer name is in variable `rcd-temp-buffer-name'; your
  main buffer name should be something unique, descriptive so that it
  can be destroyed easily (when necessarily) or followed up;

- run M-x rcd-temp-buffer-ask-name or bind it to key if you wish to
  get asked for sub-name

- use C-u prefix to get asked for mode

- if you have many temporary buffers you maybe wish to browse through
  such buffers, because they got their main name, the function M-x
  rcd-temp-buffer-next will go through such. Bind it to a simple key
  and you can press key and browse through temporary buffers quicker. 


;;;; ↝ RCD TEMPORARY BUFFERS

(defvar rcd-temp-buffer-mode-history nil)
(defvar rcd-temp-file-directory "~/tmp/")
(defvar rcd-temp-buffer-name "RCD TEMPORARY BUFFER")
(defvar rcd-temp-buffer-modes '(("adoc-mode" . "adoc")
				("emacs-lisp-mode" . "el")
				("lisp-mode" . ".lisp")
				("markdown-mode" . ".md")
				("org-mode" . "org")
				("sql-mode" . "sql")
				("fundamental-mode" . "txt")
				("html-mode" . "html")))

(defun rcd-temp-buffer (&optional name mode)
  "Generate new temporary buffer."
  (interactive "p")
  (let* ((format (concat "*" rcd-temp-buffer-name "%s%s*"))
	 (buffer (if name (format format ": " name) (format format "" ""))))
    (switch-to-buffer (generate-new-buffer buffer))
    (if current-prefix-arg
	(let* ((mode (completing-read
		      "Mode: "
		      (map-keys rcd-temp-buffer-modes) nil t nil
		      'rcd-temp-buffer-mode-history)))
	  (funcall (intern mode)))
      (funcall (intern (or mode "fundamental-mode"))))))

(defun rcd-temp-buffer-ask-name ()
  "Generate new temporary buffer by asking for buffer name."
  (interactive)
  (rcd-temp-buffer
   (read-from-minibuffer "Buffer name: ")))

(defun rcd-temp-file (&optional name mode)
  "Quickly open temporary file.
Using C-u as prefix will ask you for the mode of the file and
will influence the extension.

NAME may be provided programmatically.
MODE may be provided as string programmatically."
  (interactive)
  (let* ((mode (or mode
		   (if current-prefix-arg
		       (let* ((mode (completing-read
				     "Mode: "
				     (map-keys rcd-temp-buffer-modes) nil t nil
				     'rcd-temp-buffer-mode-history)))
			 mode)
		     "fundamental-mode")))
	 (file (concat rcd-temp-file-directory
		       (or name (format-time-string "%A-%B-%e-%Y-%T."))
		       (cdr (assoc-string mode rcd-temp-buffer-modes)))))
    (find-file file)
    (save-buffer)
    (funcall (intern mode))))

(defvar rcd-temp-buffer-list nil)

(defun rcd-temp-buffer-next ()
  (interactive)
  (unless rcd-temp-buffer-list
    (setq rcd-temp-buffer-list (reverse (rcd-list-matching-buffers rcd-temp-buffer-name))))
  (let ((rcd-buffer (pop rcd-temp-buffer-list))
	(buffer (current-buffer)))
    (if rcd-buffer
	(if (buffer-live-p rcd-buffer)
	    (switch-to-buffer rcd-buffer)
	  (rcd-temp-buffer-next))
      (message "No temporary buffers"))))

(defun rcd-temp-buffer-destroy-em ()
  (interactive)
  (kill-matching-buffers "RCD TEMPORARY BUFFER"))

(defun rcd-list-matching-buffers (query)
  "Return list of matching buffers."
  (let ((list))
    (mapc (lambda (buffer)
	    (when (string-match query (buffer-name buffer))
	      (push buffer list)))
	  (buffer-list))
    list))


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

Sign an open letter in support of Richard M. Stallman
https://stallmansupport.org/



  reply	other threads:[~2021-05-31 21:53 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-29 20:08 Fortran Topics (outline-minor-mode, require, fixed format) ludvig-faddeev
2021-05-29 20:14 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-29 20:48   ` Jean Louis
2021-05-29 21:26     ` Christopher Dimech
2021-05-29 21:56       ` Jean Louis
2021-05-29 22:07         ` Christopher Dimech
2021-05-29 22:37           ` How users start programming in Emacs Lisp Jean Louis
2021-05-30  1:06             ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30  2:11             ` Christopher Dimech
2021-05-30  4:32               ` Eduardo Ochs
2021-05-30  7:05                 ` Jean Louis
2021-05-30  7:51                   ` Eduardo Ochs
2021-05-30  8:31                     ` Jean Louis
2021-05-30 19:27                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 22:27                       ` Jean Louis
2021-05-30 22:41                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 22:52                           ` Jean Louis
2021-05-30 11:43                 ` Arthur Miller
2021-05-30 12:08                   ` Christopher Dimech
2021-05-30 19:35                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 21:54                       ` Jean Louis
2021-05-30 22:06                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 22:38                           ` Jean Louis
2021-05-30 22:46                             ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 22:56                               ` Jean Louis
2021-05-30 23:02                                 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 23:35                                   ` Jean Louis
2021-05-31  0:21                                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-06-01 14:09                     ` Arthur Miller
2021-06-01 21:09                       ` Christopher Dimech
2021-06-01 21:54                       ` Christopher Dimech
2021-05-30 14:44                   ` Tomas Hlavaty
2021-05-30 15:23                     ` Eduardo Ochs
2021-05-30 19:41                       ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 19:59                         ` Eduardo Ochs
2021-05-31 17:59                       ` Tomas Hlavaty
2021-05-30 19:37                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-06-01 10:29                     ` Arthur Miller
2021-06-01 11:40                       ` Eduardo Ochs
2021-06-01 16:30                         ` Jean Louis
2021-06-02  0:54                           ` Eduardo Ochs
2021-06-02  3:43                             ` Jean Louis
2021-05-30 15:35                   ` Eduardo Ochs
2021-05-30 19:42                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-06-01 10:23                     ` Arthur Miller
2021-05-30 19:31                   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-06-01 10:22                     ` Arthur Miller
2021-06-01 10:30                       ` Christopher Dimech
2021-05-30 19:23                 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 21:33                   ` Jean Louis
2021-05-30 21:43                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 22:05                       ` Jean Louis
2021-05-30 22:16                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 22:41                           ` Jean Louis
2021-05-30 22:49                             ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 23:01                               ` Jean Louis
2021-05-30 23:07                                 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 23:36                                   ` Jean Louis
2021-05-31  0:25                                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-31  0:34                                 ` Eduardo Ochs
2021-05-31  8:09                                   ` Jean Louis
2021-05-30 22:49                           ` Tomas Hlavaty
2021-05-30 22:18                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 22:50                           ` Jean Louis
2021-05-30 22:59                             ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-30 23:25                               ` Jean Louis
2021-05-30  5:46               ` Jean Louis
2021-05-30 10:32                 ` Christopher Dimech
2021-05-30 10:35                   ` Jean Louis
2021-05-30 11:08                     ` Christopher Dimech
2021-05-30 11:19                       ` Jean Louis
2021-05-30 13:55                         ` Christopher Dimech
2021-05-30 15:54                           ` Jean Louis
2021-05-30 17:22                             ` Christopher Dimech
2021-05-30 18:57                               ` Jean Louis
2021-05-30 19:48                               ` Jean Louis
2021-05-31 20:30                                 ` Christopher Dimech
2021-05-31 21:53                                   ` Jean Louis [this message]
2021-05-29 20:36 ` Fortran Topics (outline-minor-mode, require, fixed format) Jean Louis
2021-05-29 20:51   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-29 21:00     ` Jean Louis
2021-05-29 21:27       ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-29 22:00         ` Jean Louis
2021-05-30  2:04 ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-05-30  2:06   ` Stefan Monnier via Users list for the GNU Emacs text editor

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=YLVa6nsjXF49eqZ3@protected.localdomain \
    --to=bugs@gnu.support \
    --cc=dimech@gmx.com \
    --cc=help-gnu-emacs@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 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.