unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Commands to insert a heading and a new page
@ 2024-03-26  9:16 Heime
  2024-03-27 22:48 ` tpeplt
  0 siblings, 1 reply; 10+ messages in thread
From: Heime @ 2024-03-26  9:16 UTC (permalink / raw)
  To: Heime via Users list for the GNU Emacs text editor


I would like to have two commands, one to insert a heading, the other to
insert a new page in a buffer.  So I can easily traverse the code in a buffer.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Commands to insert a heading and a new page
  2024-03-26  9:16 Commands to insert a heading and a new page Heime
@ 2024-03-27 22:48 ` tpeplt
  2024-03-28  3:12   ` Emanuel Berg
  2024-03-28  9:42   ` Heime
  0 siblings, 2 replies; 10+ messages in thread
From: tpeplt @ 2024-03-27 22:48 UTC (permalink / raw)
  To: Heime; +Cc: Heime via Users list for the GNU Emacs text editor

Heime <heimeborgia@protonmail.com> writes:

> I would like to have two commands, one to insert a heading, the other to
> insert a new page in a buffer.  So I can easily traverse the code in a buffer.

The Emacs function ‘insert’ inserts text into the current buffer:

(insert &rest ARGS)

Insert the arguments, either strings or characters, at point.

A simple function to insert a form-feed character:

(defun new-page ()
  "Insert a page separator into the current buffer."
  (interactive)
  (newline)
  (insert ?\f)                 ;Form feed is \f or Ctrl-l or ASCII 012
  (newline))

‘insert’ accepts either characters or strings, so it could be used to
define a command that inserts whatever text you want in a heading.

(newline)
(insert "Header line 1\n")
(insert "Line 2\n")
(insert (format "Parameter is %s.\n" parm))

--



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Commands to insert a heading and a new page
  2024-03-27 22:48 ` tpeplt
@ 2024-03-28  3:12   ` Emanuel Berg
  2024-03-31 15:49     ` [External] : " Drew Adams
  2024-03-28  9:42   ` Heime
  1 sibling, 1 reply; 10+ messages in thread
From: Emanuel Berg @ 2024-03-28  3:12 UTC (permalink / raw)
  To: help-gnu-emacs

tpeplt wrote:

> A simple function to insert a form-feed character:
>
> (defun new-page ()
>   "Insert a page separator into the current buffer."
>   (interactive)
>   (newline)
>   (insert ?\f)                 ;Form feed is \f or Ctrl-l or ASCII 012
>   (newline))

It is not used so often, why and when do you use it?

> ‘insert’ accepts either characters or strings, so it could
> be used to define a command that inserts whatever text you
> want in a heading.
>
> (newline)
> (insert "Header line 1\n")
> (insert "Line 2\n")
> (insert (format "Parameter is %s.\n" parm))

Here is a bunch of Elisp that maybe amuses you:

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

(defun sign (label &optional no-insert)
  (interactive "sLabel: \nP")
  (let*((vertical   "|")
        (horizontal  ?-)
        (corner     "+")
        (mid (format "%s %s %s" vertical label vertical))
        (len (length mid))
        (top (format "%s%s%s" corner (make-string (- len 2) horizontal) corner))
        (sgn (format "%s\n%s\n%s\n" top mid top)) )
    (if no-insert
        sgn
      (insert sgn) )))

;; +---------------------+
;; | This is not a bluff |
;; +---------------------+

(defun hline (&optional char)
  (interactive "P")
  (let ((len (- (window-width) (or (current-column) 0) 1))
        (c   (or (and (listp char) (car char))
                 (and (numberp char) char)
                 ?-) ))
    (insert (make-string len c)) ))

(defalias 'hl #'hline)

(when nil
  (hline)----------------------------------------------------------------------
  (hline 42)*******************************************************************
  (hline ?+)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  M-x hline RET----------------------------------------------------------------
  C-u C-u C-u M-x hline RET@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  C-u 59 M-x hline RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
)

(defun string-data-p (str)
  (and (stringp str)
       (not (string= str ""))
       str) )

(defun region-to-string ()
  (when (use-region-p)
    (let ((beg (region-beginning))
          (end (region-end) ))
      (let ((str (buffer-substring-no-properties beg end)))
        (replace-regexp-in-string "\n" " " str) ))))

(provide 'string)

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




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Commands to insert a heading and a new page
  2024-03-27 22:48 ` tpeplt
  2024-03-28  3:12   ` Emanuel Berg
@ 2024-03-28  9:42   ` Heime
  1 sibling, 0 replies; 10+ messages in thread
From: Heime @ 2024-03-28  9:42 UTC (permalink / raw)
  To: tpeplt; +Cc: Heime via Users list for the GNU Emacs text editor






Sent with Proton Mail secure email.

On Thursday, March 28th, 2024 at 10:48 AM, tpeplt <tpeplt@gmail.com> wrote:

> Heime heimeborgia@protonmail.com writes:
> 
> > I would like to have two commands, one to insert a heading, the other to
> > insert a new page in a buffer. So I can easily traverse the code in a buffer.
> 
> 
> The Emacs function ‘insert’ inserts text into the current buffer:
> 
> (insert &rest ARGS)
> 
> Insert the arguments, either strings or characters, at point.
> 
> A simple function to insert a form-feed character:
> 
> (defun new-page ()
> "Insert a page separator into the current buffer."
> (interactive)
> (newline)
> (insert ?\f) ;Form feed is \f or Ctrl-l or ASCII 012
> (newline))

That does the job.
 
> ‘insert’ accepts either characters or strings, so it could be used to
> define a command that inserts whatever text you want in a heading.
> 
> (newline)
> (insert "Header line 1\n")
> (insert "Line 2\n")
> (insert (format "Parameter is %s.\n" parm))
> 
> --



^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [External] : Re: Commands to insert a heading and a new page
  2024-03-28  3:12   ` Emanuel Berg
@ 2024-03-31 15:49     ` Drew Adams
  2024-03-31 18:40       ` tpeplt
  2024-04-01  1:20       ` Emanuel Berg
  0 siblings, 2 replies; 10+ messages in thread
From: Drew Adams @ 2024-03-31 15:49 UTC (permalink / raw)
  To: Emanuel Berg, help-gnu-emacs@gnu.org

> > A simple function to insert a form-feed character:

And two newline chars.

> > (defun new-page ()
> >   "Insert a page separator into the current buffer."
> >   (interactive)
> >   (newline)
> >   (insert ?\f);Form feed is \f or Ctrl-l or ASCII
> 012
> >   (newline))

`C-q C-j C-l C-j` does the same thing.

Get to know `C-q'.
Get to know the ASCII control chars.

> It is not used so often, why and when do you use it?

Sure it is.  Separate text/code pieces,
visually and for navigation.

See (emacs) `Pages':

https://www.gnu.org/software/emacs/manual/html_node/emacs/Pages.html

And customize page separator:

https://www.emacswiki.org/emacs/PrettyControlL
 
> ;; +---------------------+
> ;; | This is not a bluff |
> ;; +---------------------+

See also library boxquote.el:

https://github.com/davep/boxquote.el

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [External] : Re: Commands to insert a heading and a new page
  2024-03-31 15:49     ` [External] : " Drew Adams
@ 2024-03-31 18:40       ` tpeplt
  2024-03-31 20:32         ` Drew Adams
  2024-04-01  1:20       ` Emanuel Berg
  1 sibling, 1 reply; 10+ messages in thread
From: tpeplt @ 2024-03-31 18:40 UTC (permalink / raw)
  To: Drew Adams; +Cc: Emanuel Berg, help-gnu-emacs@gnu.org

Drew Adams <drew.adams@oracle.com> writes:

>> > A simple function to insert a form-feed character:
>
> And two newline chars.
>

Thanks.  Yes, the ‘defun’ is intentionally more verbose than the keystroke
solution you provided because:

1. The writer asked for a function
2. A function can be called in a programmatic way
3. It documents the operations that are performed

>> > (defun new-page ()
>> >   "Insert a page separator into the current buffer."
>> >   (interactive)
>> >   (newline)
>> >   (insert ?\f);Form feed is \f or Ctrl-l or ASCII
>> 012
>> >   (newline))
>
> `C-q C-j C-l C-j` does the same thing.
>
> Get to know `C-q'.
> Get to know the ASCII control chars.
>

Yes.  Your instructions can be a little confusing to new users.  Taken
literally, they won’t work.  New users should read that the key
sequences are:

C-j
C-q C-l
C-j

>> It is not used so often, why and when do you use it?
>
> Sure it is.  Separate text/code pieces,
> visually and for navigation.
>
> See (emacs) `Pages':
>
> https://www.gnu.org/software/emacs/manual/html_node/emacs/Pages.html
>
> And customize page separator:
>
> https://www.emacswiki.org/emacs/PrettyControlL

Thank you for writing the ‘pp-c-l’ library (pp-c-l.el).

1. Is this library provided as a package?  If so, can you provide the
name of the archive?  It is not available from either
https://elpa.gnu.org/packages/ or http://stable.melpa.org/packages/.

2. After downloading the file, I added "-*- lexical-binding: t; -*-" to
the first line and compiled the file using Emacs 29.3.  The compiler
reported the following:

In toplevel form:
pp-c-l.el:126:23: Warning: avoid `lsh'; use `ash' instead
pp-c-l.el:187:19: Warning: Unused lexical argument `symbol'
pp-c-l.el:252:57: Warning: reference to free variable ‘pretty-control-l-mode’
pp-c-l.el:251:11: Warning: assignment to free variable ‘pretty-control-l-mode’

In refresh-pretty-control-l:
pp-c-l.el:269:9: Warning: reference to free variable ‘pretty-control-l-mode’

In end of data:
pp-c-l.el:200:33: Warning: the function ‘pp^L-make-glyph-code’ is not known to
    be defined.
pp-c-l.el:187:34: Warning: the function ‘pretty-control-l-mode’ is not known
    to be defined.

>  
>> ;; +---------------------+
>> ;; | This is not a bluff |
>> ;; +---------------------+
>
> See also library boxquote.el:
>
> https://github.com/davep/boxquote.el

This library, ‘boxquote’ is available as package in the ‘melpa-stable’
archive, listed above, so it can be easily installed, updated, or
un-installed.

--



^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [External] : Re: Commands to insert a heading and a new page
  2024-03-31 18:40       ` tpeplt
@ 2024-03-31 20:32         ` Drew Adams
  2024-04-01  2:07           ` Emanuel Berg
  0 siblings, 1 reply; 10+ messages in thread
From: Drew Adams @ 2024-03-31 20:32 UTC (permalink / raw)
  To: tpeplt; +Cc: Emanuel Berg, help-gnu-emacs@gnu.org

> >> > (newline)
> >> > (insert ?\f
> >> > (newline))
> >
> > `C-q C-j C-l C-j` does the same thing.
> >
> > Get to know `C-q'.
> > Get to know the ASCII control chars.
> 
> Yes.  Your instructions can be a little confusing to new users.  Taken
> literally, they won’t work.  New users should read that the key
> sequences are:
> 
> C-j
> C-q C-l
> C-j

Actually, that's not right.  But neither
was what I wrote. ;-(  This is correct:

C-q C-j
C-q C-l
C-q C-j

C-j is often bound, even by default in
vanilla Emacs (`emacs -Q'), to commands
that do other things, besides insert a
newline char.

E.g.: In `emacs-lisp-mode' it's bound
to `electric-newline-and-maybe-indent'.
In *scratch* it's bound to
`eval-print-last-sexp'.

If you want to insert a newline char
then use `C-q C-l'.  Don't use C-l.

> Thank you for writing the ‘pp-c-l’ library (pp-c-l.el).

De rien.

> 1. Is this library provided as a package?  If so, can you provide the
> name of the archive?  It is not available from either...

It's a Lisp file, `pp-c-l.el'.  The doc page
I mentioned points to the file, but here's
the direct URL:

https://www.emacswiki.org/emacs/download/pp-c-l.el

Just (require 'pp-c-l), after putting the file in
your `load-path`.  Nothing else is needed.

> 2. I added "-*- lexical-binding: t; -*-" to
> the first line

No reason to do that, here.

> and compiled the file using Emacs 29.3.  The compiler
> reported the following:

You can ignore the byte-compiler warnings.
You see them because the library's compatible
with older Emacs versions.

> >> ;; +---------------------+
> >> ;; | This is not a bluff |
> >> ;; +---------------------+
> >
> > See also library boxquote.el:
> >
> > https://github.com/davep/boxquote.el
>
> This library, ‘boxquote’ is available as package in the ‘melpa-stable’
> archive, listed above, so it can be easily installed, updated, or
> un-installed.

It can also be easily...just by downloading it
(a single Lisp file) FROM the GIT repo whose
URL I gave TO a directory in your `load-path'.

Here's the direct URL to the file:

https://github.com/davep/boxquote.el/raw/main/boxquote.el

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [External] : Re: Commands to insert a heading and a new page
  2024-03-31 15:49     ` [External] : " Drew Adams
  2024-03-31 18:40       ` tpeplt
@ 2024-04-01  1:20       ` Emanuel Berg
  1 sibling, 0 replies; 10+ messages in thread
From: Emanuel Berg @ 2024-04-01  1:20 UTC (permalink / raw)
  To: help-gnu-emacs

Drew Adams wrote:

>> It is not used so often, why and when do you use it?
>
> Sure it is. Separate text/code pieces, visually and
> for navigation.

Indeed, it is an aspect of the interface and user experience.
Such issues are up to the editor or IDE to solve IMO.

I did 'grep "^\\\f" **/*.el' and provided that command makes
sense we don't have '\f' for that use case in the Emacs
source, good.

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




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [External] : Re: Commands to insert a heading and a new page
  2024-03-31 20:32         ` Drew Adams
@ 2024-04-01  2:07           ` Emanuel Berg
  2024-04-01 16:53             ` Drew Adams
  0 siblings, 1 reply; 10+ messages in thread
From: Emanuel Berg @ 2024-04-01  2:07 UTC (permalink / raw)
  To: help-gnu-emacs

Drew Adams wrote:

> It's a Lisp file, `pp-c-l.el'. The doc page I mentioned
> points to the file, but here's the direct URL:
>
> https://www.emacswiki.org/emacs/download/pp-c-l.el
>
> Just (require 'pp-c-l), after putting the file in your
> `load-path`. Nothing else is needed.

Still, people are more comfortable using the package manager
which is also a good method to find stuff (searching the
buffer).

>> 2. I added "-*- lexical-binding: t; -*-" to
>> the first line
>
> No reason to do that, here.

That's right, since it was introduced in Emacs 24 and your
source is compatible all the way back to Emacs 20. So no,
I don't think that would be appreciated in GNU ELPA :) Is that
why you don't want to put it there?

> You can ignore the byte-compiler warnings. You see them
> because the library's compatible with older Emacs versions.

Indeed, a lot of modern stuff cannot be used if you want to be
compatible with software released in 1997 :)

etc/HISTORY:

  GNU Emacs 20.1 (1997-09-15) emacs-20.1

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




^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [External] : Re: Commands to insert a heading and a new page
  2024-04-01  2:07           ` Emanuel Berg
@ 2024-04-01 16:53             ` Drew Adams
  0 siblings, 0 replies; 10+ messages in thread
From: Drew Adams @ 2024-04-01 16:53 UTC (permalink / raw)
  To: Emanuel Berg, help-gnu-emacs@gnu.org

> Drew Adams wrote:
> 
> > It's a Lisp file, `pp-c-l.el'. The doc page I mentioned
> > points to the file, but here's the direct URL:
> > https://www.emacswiki.org/emacs/download/pp-c-l.el
> >
> > Just (require 'pp-c-l), after putting the file in your
> > `load-path`. Nothing else is needed.
> 
> Still, people are more comfortable using the package manager
> which is also a good method to find stuff (searching the
> buffer).

Some people are more comfortable never
going outdoors. ;-)

Elisp on Emacs Wiki is also mirrored
at https://github.com/emacsmirror.

E.g., pp-c-l.el is here:
https://github.com/emacsmirror/pp-c-l



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-04-01 16:53 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-26  9:16 Commands to insert a heading and a new page Heime
2024-03-27 22:48 ` tpeplt
2024-03-28  3:12   ` Emanuel Berg
2024-03-31 15:49     ` [External] : " Drew Adams
2024-03-31 18:40       ` tpeplt
2024-03-31 20:32         ` Drew Adams
2024-04-01  2:07           ` Emanuel Berg
2024-04-01 16:53             ` Drew Adams
2024-04-01  1:20       ` Emanuel Berg
2024-03-28  9:42   ` Heime

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).