unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* how to randomize (scample) regions in a an (org) buffer
@ 2021-10-06 15:53 Uwe Brauer
  2021-10-06 16:35 ` [SOLVED] (was: how to randomize (scample) regions in a an (org) buffer) Uwe Brauer
  0 siblings, 1 reply; 7+ messages in thread
From: Uwe Brauer @ 2021-10-06 15:53 UTC (permalink / raw)
  To: help-gnu-emacs



Hi

I need to replace private information in my org files, but only region wide.

I found 
https://www.reddit.com/r/emacs/comments/6pc0ts/sanitize_buffer_by_replacing_words_with_random/

Where two such functions are discussed, one is even for org files,
however only buffer wide and the code looks rather complicated to me.

Anybody knows about such a function?

Thanks 

Uwe Brauer 




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

* [SOLVED] (was: how to randomize (scample) regions in a an (org) buffer)
  2021-10-06 15:53 how to randomize (scample) regions in a an (org) buffer Uwe Brauer
@ 2021-10-06 16:35 ` Uwe Brauer
  2021-10-06 19:59   ` Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 1 reply; 7+ messages in thread
From: Uwe Brauer @ 2021-10-06 16:35 UTC (permalink / raw)
  To: help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 1065 bytes --]

>>> "UB" == Uwe Brauer <oub@mat.ucm.es> writes:

> Hi

> I need to replace private information in my org files, but only region wide.

> I found 
> https://www.reddit.com/r/emacs/comments/6pc0ts/sanitize_buffer_by_replacing_words_with_random/

> Where two such functions are discussed, one is even for org files,
> however only buffer wide and the code looks rather complicated to me.

Actually it was quite easy as in 

(defun randomise-region ()
  "Like `ap/replace-words-randomly', but only replace inside region if it is active.
If the region is not active, replace from point to the end of the
buffer.  The region is never considered active outside
`transient-mark-mode'. "
  (interactive)
  (if (or (and (boundp 'zmacs-region-active-p) zmacs-region-active-p)
	  (and (boundp 'transient-mark-mode) transient-mark-mode mark-active))
      (save-restriction
        (save-excursion
          (narrow-to-region (point) (mark))
          (goto-char (point-min))
          (ap/replace-words-randomly)))
    (ap/replace-words-randomly)))

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

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

* Re: [SOLVED] (was: how to randomize (scample) regions in a an (org) buffer)
  2021-10-06 16:35 ` [SOLVED] (was: how to randomize (scample) regions in a an (org) buffer) Uwe Brauer
@ 2021-10-06 19:59   ` Emanuel Berg via Users list for the GNU Emacs text editor
  2021-10-06 20:24     ` [SOLVED] Uwe Brauer
  0 siblings, 1 reply; 7+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-10-06 19:59 UTC (permalink / raw)
  To: help-gnu-emacs

Uwe Brauer wrote:

> Actually it was quite easy as in 
>
> (defun randomise-region ()
>   "Like `ap/replace-words-randomly', but only replace inside region if it is active.
> If the region is not active, replace from point to the end of the
> buffer.  The region is never considered active outside
> `transient-mark-mode'. "
>   (interactive)
>   (if (or (and (boundp 'zmacs-region-active-p) zmacs-region-active-p)
> 	  (and (boundp 'transient-mark-mode) transient-mark-mode mark-active))
>       (save-restriction
>         (save-excursion
>           (narrow-to-region (point) (mark))
>           (goto-char (point-min))
>           (ap/replace-words-randomly)))
>     (ap/replace-words-randomly)))

;;; -*- lexical-binding: t -*-
;;;
;;; this file:
;;;   http://user.it.uu.se/~embe8573/emacs-init/sort-incal.el
;;;   https://dataswamp.org/~incal/emacs-init/sort-incal.el

(require 'edit)
(require 'erc)
(require 'sort)

(setq sort-fold-case t)

(defun sort-second-field (beg end)
  (interactive "r")
  (sort-fields 2 beg end) )
(defalias 's2f #'sort-second-field)

(defun sort-lines-length (beg end)
  (interactive (if (use-region-p)
                   (list (region-beginning) (region-end))
                 (list (point-min) (point-max)) ))
  (save-excursion
    (save-restriction
      (narrow-to-region beg end)
      (goto-char (point-min))
      (sort-subr nil
                 #'forward-line
                 #'end-of-line
                 nil nil
                 (lambda (a b) (> (- (cdr a) (car a))
                                  (- (cdr b) (car b)) ))))))
(defalias 'sll #'sort-lines-length)

(defun sort-lines-random (beg end)
  (interactive "r")
  (save-excursion
    (save-restriction
      (narrow-to-region beg end)
      (goto-char (point-min))
      (sort-subr nil
                 #'forward-line
                 #'end-of-line
                 nil nil
                 (lambda (_ __) (zerop (random 2)) )))))
(defalias 'r #'sort-lines-random)

;; test here:
;; aaa
;; ccc
;; bbb
;; ddd

(defun sort-buffer-random ()
  (interactive)
  (sort-lines-random (point-min) (point-max))
  (save-buffer) )

(defun sort-whole-lines (beg end)
  (interactive "r")
  (save-excursion
    (let ((s (progn (goto-char beg) (line-beginning-position)))
          (e (progn (goto-char end) (line-end-position))) )
      (sort-lines nil s e) )))

(defun sort-buffer-and-save ()
  (interactive)
  (sort-lines nil (point-min) (point-max))
  (save-buffer) )
(defalias 'bs #'sort-buffer-and-save)

(defun insert-string-list (string-list)
  (when string-list
    (insert (format "%s" (car string-list)))
    (dolist (s (cdr string-list))
      (insert (format " %s" s)))))

(defun sort-line-words (beg end &optional set-delim)
  (interactive "r\nP")
  (let*((str       (region-to-string))
        (delim-str (when set-delim
                     (read-string "delimiter: ") ))
        (str-list  (split-string str delim-str))
        (sorted    (erc-sort-strings str-list)) )
    (kill-region beg end)
    (if set-delim
        (progn
          (dolist (s (nreverse (cdr (nreverse sorted))))
            (insert (format "%s%s" s delim-str)))
          (insert (format "%s" (car (last sorted)))))
      (insert-string-list sorted) )))
;;; sort me: a is just string test this
;;; sorted:  a is just string test this
;;;
;;; and me with a dash delim: this-is-just-a-test-string

(defun scramble (beg end)
  "Shuffle chars in region from BEG to END."
  (interactive "r")
  (when (use-region-p)
    (save-excursion
      (let*((str        (region-to-string))
            (chars      (delete "" (split-string str "")))
            (rand-chars (sort chars (lambda (_ __) (zerop (random 2))))) )
        (delete-region beg end)
        (dolist (c rand-chars)
          (insert c) )))))

(require 'seq)
(defun scramble-string (str)
  "Randomize the characters of a string."
  (interactive "sscramble me: ")
  (let ((rand-str (seq-sort (lambda (_ __) (zerop (random 2))) str )))
    (if (called-interactively-p 'any)
        (message rand-str)
      rand-str) ))

(defun comic-book-insult ()
  (interactive)
  (insert (concat (scramble-string "@#$%&") "!")) )

;; (comic-book-insult) ; @#$%&!
;; (comic-book-insult) ; $&#@%!

;; (scramble-string "Hello there, Emacs is very cool piece of software")
;; "aye eposrr lvre olsec,ewfico ceti ftomH hseoa l E"

(provide 'sort-incal)

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




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

* Re: [SOLVED]
  2021-10-06 19:59   ` Emanuel Berg via Users list for the GNU Emacs text editor
@ 2021-10-06 20:24     ` Uwe Brauer
  2021-10-06 20:58       ` [SOLVED] Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 1 reply; 7+ messages in thread
From: Uwe Brauer @ 2021-10-06 20:24 UTC (permalink / raw)
  To: help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 1115 bytes --]

>>> "EBvUlftGEte" == Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> writes:

> Uwe Brauer wrote:
>> Actually it was quite easy as in 
>> 
>> (defun randomise-region ()
>> "Like `ap/replace-words-randomly', but only replace inside region if it is active.
>> If the region is not active, replace from point to the end of the
>> buffer.  The region is never considered active outside
>> `transient-mark-mode'. "
>> (interactive)
>> (if (or (and (boundp 'zmacs-region-active-p) zmacs-region-active-p)
>> (and (boundp 'transient-mark-mode) transient-mark-mode mark-active))
>> (save-restriction
>> (save-excursion
>> (narrow-to-region (point) (mark))
>> (goto-char (point-min))
>> (ap/replace-words-randomly)))
>> (ap/replace-words-randomly)))

> ;;; -*- lexical-binding: t -*-
> ;;;
> ;;; this file:
> ;;;   http://user.it.uu.se/~embe8573/emacs-init/sort-incal.el
> ;;;   https://dataswamp.org/~incal/emacs-init/sort-incal.el

> (require 'edit)
> (require 'erc)
> (require 'sort)

Thanks but the file edit, is missing at least not included in my emacs

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

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

* Re: [SOLVED]
  2021-10-06 20:24     ` [SOLVED] Uwe Brauer
@ 2021-10-06 20:58       ` Emanuel Berg via Users list for the GNU Emacs text editor
  2021-10-07  7:05         ` [SOLVED] Uwe Brauer
  0 siblings, 1 reply; 7+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-10-06 20:58 UTC (permalink / raw)
  To: help-gnu-emacs

Uwe Brauer wrote:

> Thanks but the file edit, is missing at least not included
> in my emacs

You are right, "must" fix the names, try these and only these:

(defun region-to-string ()
  "Return the region text as a string. Replace newlines with spaces."
  (when (use-region-p)
    (let ((beg (region-beginning))
          (end (region-end) ))
    (let ((text (buffer-substring-no-properties beg end)))
      (replace-regexp-in-string "\n" " " text) ))))

(defun scramble (beg end)
  "Shuffle chars in region from BEG to END."
  (interactive "r")
  (when (use-region-p)
    (save-excursion
      (let*((str        (region-to-string))
            (chars      (delete "" (split-string str "")))
            (rand-chars (sort chars (lambda (_ __) (zerop (random 2))))) )
        (delete-region beg end)
        (dolist (c rand-chars)
          (insert c) )))))

(require 'seq)
(defun scramble-string (str)
  "Randomize the characters of a string."
  (interactive "sscramble me: ")
  (let ((rand-str (seq-sort (lambda (_ __) (zerop (random 2))) str )))
    (if (called-interactively-p 'any)
        (message rand-str)
      rand-str) ))

(defun comic-book-insult ()
  (interactive)
  (insert (concat (scramble-string "@#$%&") "!")) )

;; (comic-book-insult) ; @#$%&!
;; (comic-book-insult) ; $&#@%!

;; (scramble-string "Hello there, Emacs is very cool piece of software")
;; "aye eposrr lvre olsec,ewfico ceti ftomH hseoa l E"

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




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

* Re: [SOLVED]
  2021-10-06 20:58       ` [SOLVED] Emanuel Berg via Users list for the GNU Emacs text editor
@ 2021-10-07  7:05         ` Uwe Brauer
  2021-10-07  8:15           ` [SOLVED] Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 1 reply; 7+ messages in thread
From: Uwe Brauer @ 2021-10-07  7:05 UTC (permalink / raw)
  To: help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 529 bytes --]

>>> "EBvUlftGEte" == Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> writes:

> Uwe Brauer wrote:
>> Thanks but the file edit, is missing at least not included
>> in my emacs

> You are right, "must" fix the names, try these and only these:

Thanks that works nicely, it is a bit different from the package I use
because mine replaces words by some randomly picked words of the same
size yours randomise also the words. Both approaches work, yours is
independent from any external tool, tough.

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

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

* Re: [SOLVED]
  2021-10-07  7:05         ` [SOLVED] Uwe Brauer
@ 2021-10-07  8:15           ` Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 0 replies; 7+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-10-07  8:15 UTC (permalink / raw)
  To: help-gnu-emacs

Uwe Brauer wrote:

>>>> "EBvUlftGEte" == Emanuel Berg via Users list for the GNU
>>> Emacs text editor <help-gnu-emacs@gnu.org> writes:
>
>> Uwe Brauer wrote:
>>> Thanks but the file edit, is missing at least not included
>>> in my emacs
>
>> You are right, "must" fix the names, try these and only these:
>
> Thanks that works nicely, it is a bit different from the package I use
> because mine replaces words by some randomly picked words of the same
> size yours randomise also the words. Both approaches work, yours is
> independent from any external tool, tough.

You mean zmacs-region-active-p and/or
ap/replace-words-randomly ?

Yeah, I don't have either ...

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




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

end of thread, other threads:[~2021-10-07  8:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-10-06 15:53 how to randomize (scample) regions in a an (org) buffer Uwe Brauer
2021-10-06 16:35 ` [SOLVED] (was: how to randomize (scample) regions in a an (org) buffer) Uwe Brauer
2021-10-06 19:59   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-06 20:24     ` [SOLVED] Uwe Brauer
2021-10-06 20:58       ` [SOLVED] Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-07  7:05         ` [SOLVED] Uwe Brauer
2021-10-07  8:15           ` [SOLVED] Emanuel Berg via Users list for the GNU Emacs text editor

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