unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / 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: Sun, 30 May 2021 22:48:12 +0300	[thread overview]
Message-ID: <YLPr/CMDiJEMetjA@protected.localdomain> (raw)
In-Reply-To: <trinity-8f3e6a27-ef21-45f4-a3d6-89df3e8068d5-1622395340714@3c-app-mailcom-bs10>

* Christopher Dimech <dimech@gmx.com> [2021-05-30 20:22]:
> I am having some problem figuring out what the following does, having format 
> repeated twice.
> 
> (format format ": " name)

It could be all simpler, it just adds the sub-name to the main name.

M-x rcd-temp-buffer would create *RCD TEMPORARY BUFFER: 1*

but (rcd-temp-buffer "Lisp") would create *RCD TEMPORARY BUFFER: Lisp*

Myself I don't know why I made it so complex, but it just works and I
use temporary or scratch buffers that way often.

Simpler way to open temporary buffer is just:

C-x b NAME-OF-YOUR-BUFFER

but when function is tied to key binding it becomes simple, press F5
or other key how you bind it, and you are already in clean empty new
temporary buffer. Or invoke C-u prefix to be asked for the mode.

As Eduardo mentioned maybe it is good to keep those notes, but because
in my mind there is distinction on what is temporary and what is not,
for me it is fine that way as I use the database and it is trivial to
make a function to just open quickly buffer, write anything and have
it saved for future.

So I made this one...

(defun hyperscope-quick-emacs-lisp ()
  (interactive)
  (let* ((id (hlink-add-generic (concat "Emacs Lisp: " (rcd-timestamp-literate)) "" 50 33))
	 (template (rcd-db-get-entry "hlinktypes" "hlinktypes_template" 50 hs-db)))
    (when template
      (rcd-db-update-entry "hyobjects" "hyobjects_text" id template hs-db))
    (hyperscope-edit-with-mode id "hyobjects_text")))

The "name" of the note should be something quick:

(concat "Emacs Lisp: " (rcd-timestamp-literate)) ⇒ "Emacs Lisp: Sunday, May 30 2021, 22:21:26"

Function `hlink-add-generic' just adds generic object with type 50
(Emacs Lisp in description, text and report of the object) with the
parent node 33 which is "Emacs Lisp" set or category.

A type can have a template, why not, it is inserted as value of the
column "hyobjects_text", and finally edited in the last line.

Automatic saving is not a big deal, and automatic revision system
also.

What really matters is integration that brings speed to user without
thinking, and so the workflow is:

1. Press F5, edit Emacs Lisp (forget about anything else)

When editing database stuff, then things like byte compiling will not
work as it is not tied to buffer, but is not impossible to byte
compile and keep what is compiled in the database. I did not manage to
make it.

I am aware that little of this makes sense to people who edit mostly
files. Some functionality can be for files:

;;;; ↝ 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)
  (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-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)
    (auto-save-mode 1)
    (funcall (intern mode))))

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


Then calling `rcd-temp-file' with C-u prefix will create and save the
file with chosen mode, it will automatically generate name based on
the time stamp and it will be in the chosen mode, like:

/home/data1/protected/tmp/Sunday-May-30-2021-22:44:11.sql

Defining a key globally:

(global-set-key [f5] 'rcd-temp-file)

That could be one way to just press a key like F5 and to create a
note with the timestamp on a file system without thinking of its
file name, opening of file, saving, etc.


-- 
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/



  parent reply	other threads:[~2021-05-30 19:48 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 [this message]
2021-05-31 20:30                                 ` Christopher Dimech
2021-05-31 21:53                                   ` Jean Louis
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

  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=YLPr/CMDiJEMetjA@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.
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).