all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Rasmus <rasmus@gmx.us>
To: emacs-devel@gnu.org
Subject: Re: [mentor-request] a darkroom/writeroom mode for Emacs
Date: Mon, 08 Dec 2014 13:40:52 +0100	[thread overview]
Message-ID: <87sigqiaaz.fsf@gmx.us> (raw)
In-Reply-To: m2iohm5pzt.fsf_-_@king.lan

joaotavora@gmail.com (João Távora) writes:

> Hi, I'm looking for a mentor who would help me clean up the code I have
> in
>
>    https://github.com/capitaomorte/darkroom-mode
>
> This is my implementation of the popular "darkroom/writeroom" hack, of
> which multiple versions can be found around the web. I believe mine can
> be polished to make it into Emacs.

Why is your mode preferable?
Did you take care of the FSF paperwork?

> I'm looking for pointers on how to clone the Emacs repository after the
> recent Git transition, whether to use Emacs or ELPA for it, plus any
> other tips that increase my chances.

This is surely documented somewhere.

I guess it should go to ELPA, but you need to improve it.
BTW: I'm using writeroom.el for this.

Some quick comments follow.  Note, I'm not an expert, especially on the
Emacs display engine.  I'm not sure if this is the intended format of
[mentor-request] emails.


You need to start with a proper head of the file, including the commentary
section.  Further, for ELPA dependencies, version etc. should be listed (I
guess none).  See the top of any file in your ~/.emacs.d/elpa/ folder.

> (defvar darkroom-margins 0.15

This is a defcusom.  See (info "(elisp) Variable Definitions")


> (defvar darkroom-turns-on-visual-line-mode t

See above.  I think providing a hook is better.  People can add this
themselves if they want something different from the global value.
(info "(elisp) Hooks")


> (defvar darkroom-fringes-outside-margins t

defcustom 

> (defun darkroom-margins ()

IMO you should document every defun.


> (defun darkroom-float-to-columns (f)

As above.


> (defun darkroom-increase-margins ()
docstring 

>   (interactive)
>   (when (floatp darkroom-margins)
>     (setq darkroom-margins (+ 0.05 darkroom-margins))

0.05 should at the very least be a defconst but better a defcustom or from
some global variable.
Also, you provide three ways of setting margins. 

> (defun darkroom-decrease-margins ()
>   (interactive)
>   (when (floatp darkroom-margins)
>     (setq darkroom-margins (- darkroom-margins 0.05))
>     (darkroom-set-margins)))

> (defun darkroom-fill-paragraph-maybe (really)
>   (interactive "P")
>   (cond (visual-line-mode
>          (if (not really)
>              (message "not filling paragraph")
>            (call-interactively 'fill-paragraph)
>            (message "filled paragraph even in visual-line-mode")))
>         (t
>          (call-interactively 'fill-paragraph))))

This seems quite opinionated.  Why the need to deviate from ordinary Emacs
behavior?  You need to document these features an explain why they make
sense in the docstring and preferably in the commentary as well.

> (defvar darkroom-mode-map (let ((map (make-sparse-keymap)))
>                                   (define-key map (kbd "C-M-+") 'darkroom-increase-margins)
>                                   (define-key map (kbd "C-M--") 'darkroom-decrease-margins)
>                                   (define-key map (kbd "M-q") 'darkroom-fill-paragraph-maybe)
>                                   map))

> (defvar darkroom-saved-mode-line-format nil)
> (defvar darkroom-saved-header-line-format nil)
> (defvar darkroom-saved-visual-line-mode nil)

Please add docstring, last argument.

> (make-variable-buffer-local 'darkroom-saved-mode-line-format)
> (make-variable-buffer-local 'darkroom-saved-header-line-format)
> (make-variable-buffer-local 'darkroom-saved-visual-line-mode)

> (defun darkroom-visual-mode-maybe-enable ()
>   (when darkroom-turns-on-visual-line-mode
>     (cond (darkroom-mode
>            (setq darkroom-saved-visual-mode visual-line-mode)
>            (visual-line-mode 1))
>           (t
>            (unless darkroom-saved-visual-line-mode
>              (visual-line-mode -1))))))

Docstring.  I don't understand the need of this feature.

> (define-minor-mode darkroom-mode
>   "Minor mode emulating the darkroom editor that I never used."

This is a bad docstring since it contains uselsess info and I need to know
what darkroom is.

>   nil nil nil
>   (cond (darkroom-mode
>          (setq darkroom-saved-mode-line-format mode-line-format
>                mode-line-format nil
>                darkroom-saved-header-line-format header-line-format
>                header-line-format nil)
>          (darkroom-set-margins)
>          (darkroom-visual-mode-maybe-enable)
>          (text-scale-increase 2)

Should be a defcustom.

>          (add-hook 'window-configuration-change-hook 'darkroom-set-margins nil t))
>         (t
>          (setq mode-line-format darkroom-saved-mode-line-format
>                header-line-format darkroom-saved-header-line-format)
>          (text-scale-decrease 2)
>          (darkroom-set-margins '(0 . 0))

I guess my old margin should be recorded.

>          (darkroom-visual-mode-maybe-enable)
>          (remove-hook 'window-configuration-change-hook 'darkroom-set-margins t))))

> (defun darkroom-maybe-enable ()

Docstring. 

>   (cond ((and (not darkroom-mode) (= (count-windows) 1))

why count-windows?  Why would it not just use the buffer in focus?

>          (darkroom-mode 1)) 
>         ((and darkroom-mode (> (count-windows) 1))
>          (darkroom-mode -1))
>         (t
>          (message "Hmm buffer: %s windows: %s darkroom-mode: %s"
what does "hmm buffer" mean?
>                   (current-buffer)
>                   (count-windows)
>                   darkroom-mode))))


> (define-minor-mode darkroom-tentative-mode
>   "Minor mode that enters `darkroom-mode' when all windws are deleted"
>   nil "D" nil
>   (cond (darkroom-tentative-mode
>          (add-hook 'window-configuration-change-hook 'darkroom-maybe-enable nil t)
>          (darkroom-maybe-enable))
>         (t
>          (if darkroom-mode (darkroom-mode -1))
>          (remove-hook 'window-configuration-change-hook 'darkroom-maybe-enable t))))

Again, this seems like a feature and I have no idea about it cause you
never explain the intended design.

Hope it helps,
Rasmus

-- 
Enough with the bla bla!





  parent reply	other threads:[~2014-12-08 12:40 UTC|newest]

Thread overview: 249+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20141203142859.24393.98673@vcs.savannah.gnu.org>
     [not found] ` <E1XwAvL-0006M3-CA@vcs.savannah.gnu.org>
2014-12-03 15:31   ` [Emacs-diffs] master e820f16: Added file-tree-walk to files.el Stefan Monnier
2014-12-03 19:31     ` Eric S. Raymond
2014-12-03 21:19       ` Stefan Monnier
2014-12-03 21:54         ` Metaproblem, part 3 Eric S. Raymond
2014-12-03 22:13           ` Stefan Monnier
2014-12-04  6:30           ` Eli Zaretskii
2014-12-04  6:32           ` Paul Eggert
2014-12-04 15:37             ` Stefan Monnier
2014-12-04 16:06               ` Lars Magne Ingebrigtsen
2014-12-04 17:53                 ` Stefan Monnier
2014-12-04 21:48                   ` Lars Magne Ingebrigtsen
2014-12-04 22:53                   ` Paul Eggert
2014-12-05  4:40                     ` Stefan Monnier
2014-12-05  7:20                       ` Stephen J. Turnbull
2014-12-05  8:06                       ` Glenn Morris
2014-12-05 11:24                         ` andres.ramirez
2014-12-05 14:26                       ` Stefan Monnier
2014-12-05 14:46                         ` David Kastrup
2014-12-05 14:47                       ` Lars Magne Ingebrigtsen
2014-12-05 18:38                         ` Stefan Monnier
2014-12-06 17:29                           ` Lars Magne Ingebrigtsen
2014-12-06 18:05                             ` Lars Magne Ingebrigtsen
2014-12-13 22:03                       ` Alan Mackenzie
2014-12-04 15:40             ` Generate ChangeLogs (was: Metaproblem, part 3) Lars Magne Ingebrigtsen
2014-12-04 17:23               ` Generate ChangeLogs Karl Fogel
2014-12-04 17:28                 ` Eric S. Raymond
2014-12-04 17:40               ` Paul Eggert
2014-12-04 19:09                 ` Achim Gratz
2014-12-05  8:07                 ` Glenn Morris
2014-12-06  2:24                   ` Paul Eggert
2014-12-04 18:18               ` Ted Zlatanov
2014-12-04 13:58           ` Metaproblem, part 3 Phillip Lord
2014-12-04 14:32             ` João Távora
2014-12-04 17:40               ` Eli Zaretskii
2014-12-05 10:27                 ` João Távora
2014-12-05 10:45                   ` Eli Zaretskii
2014-12-05 11:21                     ` João Távora
2014-12-05 11:31                       ` Eli Zaretskii
2014-12-05 12:20                         ` João Távora
2014-12-05 13:16                           ` Kelvin White
2014-12-05 14:52                           ` Eli Zaretskii
2014-12-06  5:38                             ` Stephen J. Turnbull
2014-12-06  7:07                               ` João Távora
2014-12-06  8:03                                 ` Eli Zaretskii
2014-12-08 11:40                                   ` [mentor-request] a darkroom/writeroom mode for Emacs João Távora
2014-12-08 12:15                                     ` joakim
2014-12-09 11:46                                       ` João Távora
2014-12-09 12:45                                         ` joakim
2014-12-10  2:39                                         ` Stephen J. Turnbull
2014-12-08 12:40                                     ` Rasmus [this message]
2014-12-09 11:28                                       ` [mentoring] " João Távora
2014-12-09 12:20                                         ` Rasmus
2014-12-09 13:11                                           ` João Távora
2014-12-09 14:56                                             ` Rasmus
2014-12-10  0:54                                               ` Stefan Monnier
2014-12-10  1:22                                                 ` Rasmus
2014-12-09 22:25                                             ` Rasmus
2014-12-11 11:22                                               ` João Távora
2014-12-11 17:15                                                 ` Stefan Monnier
2014-12-12 11:19                                                   ` João Távora
2014-12-11 18:33                                                 ` Rasmus
2014-12-12 11:16                                                   ` João Távora
2014-12-12 12:09                                                     ` Rasmus
2014-12-15 12:01                                                       ` [mentoring-done] " João Távora
2014-12-15 13:06                                                         ` Dmitry Gutov
2014-12-15 13:20                                                           ` João Távora
2014-12-15 13:47                                                             ` Dmitry Gutov
2014-12-15 13:55                                                               ` João Távora
2014-12-15 14:38                                                             ` Stefan Monnier
2014-12-15 13:19                                                         ` martin rudalics
2014-12-15 13:37                                                           ` João Távora
2014-12-15 14:15                                                             ` martin rudalics
2014-12-15 14:54                                                               ` João Távora
2014-12-15 15:28                                                                 ` martin rudalics
2014-12-15 22:10                                                                   ` João Távora
2014-12-12 14:27                                                     ` [mentoring] " Drew Adams
2014-12-12 14:38                                                     ` Stefan Monnier
2014-12-09 16:32                                         ` Phillip Lord
2014-12-08 11:46                                   ` [mentor-request] Ecco - a literate programming documentation generator João Távora
2014-12-21 20:17                                   ` Results of the "mentoring" experiment Re: Metaproblem, part 3 João Távora
2014-12-21 21:22                                     ` Rasmus
2014-12-22 14:14                                     ` Results of the "mentoring" experiment Stephen Leake
2014-12-22 16:01                                       ` João Távora
2014-12-22 16:03                                       ` João Távora
2014-12-05 12:16                       ` Metaproblem, part 3 Phillip Lord
2014-12-05 13:20                     ` Eric Abrahamsen
2014-12-05 14:59                       ` Eli Zaretskii
2014-12-06  5:45                       ` Stephen J. Turnbull
2014-12-06  6:18                         ` Eric S. Raymond
2014-12-06  8:01                           ` Eli Zaretskii
2014-12-06 16:32                           ` Stephen J. Turnbull
2014-12-06  8:29                         ` Eric Abrahamsen
2014-12-06 10:11                           ` Eli Zaretskii
2014-12-06 10:40                             ` Eric Abrahamsen
2014-12-06 10:47                               ` Eli Zaretskii
2014-12-06 11:04                           ` David Kastrup
2014-12-06 12:52                             ` Ivan Shmakov
2014-12-07  1:41                             ` Eric Abrahamsen
2014-12-09 12:29                               ` João Távora
2014-12-06 14:18                           ` Stephen J. Turnbull
2014-12-07  1:38                             ` Eric Abrahamsen
2014-12-06 10:51                         ` David Kastrup
2014-12-07  9:19                           ` Richard Stallman
2014-12-05 10:56                 ` Phillip Lord
2014-12-05 11:15                   ` Eli Zaretskii
2014-12-05 12:09                     ` Phillip Lord
2014-12-05 14:50                       ` Eli Zaretskii
2014-12-03 19:32     ` [Emacs-diffs] master e820f16: Added file-tree-walk to files.el David Engster
2014-12-03 19:53       ` Eric S. Raymond
2014-12-03 19:58         ` David Engster
2014-12-03 20:08           ` Eric S. Raymond
2014-12-03 20:28             ` David Engster
2014-12-03 20:58               ` Eric S. Raymond
2014-12-04 20:28                 ` David Engster
2014-12-04 20:46                   ` Eli Zaretskii
2014-12-05  2:16                   ` Stefan Monnier
2014-12-05  8:06                     ` Glenn Morris
2014-12-03 15:34   ` Stefan Monnier
2014-12-03 16:41     ` Thien-Thi Nguyen
2014-12-03 18:08       ` Eli Zaretskii
2014-12-03 18:36         ` Tom
2014-12-03 19:21           ` Paul Eggert
2014-12-03 19:27             ` Tom
2014-12-03 18:58         ` Lars Magne Ingebrigtsen
2014-12-03 19:26           ` Eric S. Raymond
2014-12-03 19:11         ` Thien-Thi Nguyen
2014-12-03 19:27     ` Eric S. Raymond
2014-12-03 19:41       ` Paul Eggert
2014-12-03 20:03         ` Commit comment rules - and a metaproblem Eric S. Raymond
2014-12-03 20:26         ` [Emacs-diffs] master e820f16: Added file-tree-walk to files.el Eli Zaretskii
2014-12-03 21:14           ` More metaproblem Eric S. Raymond
2014-12-03 22:13             ` Karl Fogel
2014-12-04  6:38               ` Eli Zaretskii
2014-12-04  8:38                 ` Stephen Leake
2014-12-04 10:11                   ` Eli Zaretskii
2014-12-04 10:23                   ` David Kastrup
2014-12-04 15:35                   ` Stefan Monnier
2014-12-04 16:33                     ` Stephen Leake
2014-12-04 17:37                     ` Eli Zaretskii
2014-12-04 20:43                       ` Stefan Monnier
2014-12-04 21:26                         ` Eli Zaretskii
2014-12-05 23:03                     ` chad
2014-12-04  9:08                 ` Stephen Leake
2014-12-04 10:01                   ` Eli Zaretskii
2014-12-04 10:11                     ` David Kastrup
2014-12-04 10:27                     ` Eric S. Raymond
2014-12-04 10:35                       ` David Kastrup
2014-12-04 11:01                         ` Eli Zaretskii
2014-12-04 11:07                           ` Eric S. Raymond
2014-12-05  1:23                       ` Stephen J. Turnbull
2014-12-05  6:53                         ` Eli Zaretskii
2014-12-04 18:33                 ` Karl Fogel
2014-12-04 21:21                   ` Eli Zaretskii
2014-12-04 22:01                     ` Jorgen Schaefer
2014-12-05  7:08                       ` Eli Zaretskii
2014-12-05  7:55                         ` Aurélien Aptel
2014-12-05  8:44                           ` Eli Zaretskii
2014-12-06 10:41                           ` the Emacs wiki Stephen Leake
2014-12-06 10:58                             ` Eli Zaretskii
2014-12-06 21:28                             ` Nic Ferrier
2014-12-07 22:47                               ` Stephen Leake
2014-12-09  8:04                                 ` Nic Ferrier
2014-12-09 22:28                                   ` Alexis
2014-12-10 21:32                                     ` Nic Ferrier
2014-12-06  5:11                         ` More metaproblem Stephen J. Turnbull
2014-12-06  7:47                           ` Eli Zaretskii
2014-12-05 11:52                       ` Nicolas Richard
2014-12-05 22:43                         ` Richard Stallman
2014-12-05 16:51                     ` Karl Fogel
2014-12-05 16:57                       ` Lars Magne Ingebrigtsen
2014-12-05 18:24                         ` Eric S. Raymond
2014-12-05 21:16                           ` Karl Fogel
2014-12-05 18:56                         ` Stefan Monnier
2014-12-05 17:27                       ` Eli Zaretskii
2014-12-05 17:52                         ` Karl Fogel
2014-12-05 18:39                           ` Glenn Morris
2014-12-05 21:23                             ` Karl Fogel
2014-12-05 22:24                               ` Eric S. Raymond
2014-12-05 22:41                                 ` Ted Zlatanov
2014-12-05 23:02                                   ` Eli Zaretskii
2014-12-05 23:12                                 ` Eli Zaretskii
2014-12-06  4:58                                   ` Eric S. Raymond
2014-12-06  7:42                                     ` Eli Zaretskii
2014-12-06 11:35                                       ` Eric S. Raymond
2014-12-06 11:58                                         ` David Kastrup
2014-12-06 12:35                                         ` Eli Zaretskii
2014-12-06 14:10                                           ` Werner LEMBERG
2014-12-06  9:27                           ` Stephen Leake
2014-12-06 10:20                             ` Eli Zaretskii
2014-12-06 11:41                             ` Eric S. Raymond
2014-12-06 12:37                               ` Eli Zaretskii
2014-12-06 13:16                                 ` David Kastrup
2014-12-06 14:22                                   ` Eli Zaretskii
2014-12-05 18:19                       ` Eric S. Raymond
2014-12-05 21:14                         ` Karl Fogel
2014-12-05 21:23                           ` Eric S. Raymond
2014-12-05 18:20                       ` Glenn Morris
2014-12-05 18:56                         ` Eric S. Raymond
2014-12-05 20:11                           ` Eli Zaretskii
2014-12-08 17:16                             ` Glenn Morris
2014-12-09 11:00                               ` Richard Stallman
2014-12-06  9:41                           ` Stephen Leake
2014-12-06  9:10                       ` maintaining FSF Emacs web page Stephen Leake
2014-12-06 17:57                         ` Karl Fogel
2014-12-07  9:20                         ` Richard Stallman
2014-12-09 12:30                           ` Alex Schroeder
2014-12-10  8:24                             ` Richard Stallman
2014-12-06  9:19                       ` More metaproblem Stephen Leake
2014-12-06 16:44                         ` Drew Adams
2014-12-06 18:41                           ` Stephen Leake
2014-12-06 19:24                             ` Drew Adams
2014-12-07 22:07                               ` Stephen Leake
2014-12-07 23:00                                 ` Drew Adams
2014-12-08 15:57                                   ` Eli Zaretskii
2014-12-08 21:23                                 ` Przemysław Wojnowski
2014-12-09 16:54                                   ` Eli Zaretskii
2014-12-10  9:16                                     ` Stephen Leake
2014-12-10 19:46                                     ` Przemysław Wojnowski
2014-12-10 20:48                                       ` Eli Zaretskii
2014-12-10 22:10                                         ` Stefan Monnier
2014-12-10 20:09                                   ` Przemysław Wojnowski
2014-12-10 20:28                                     ` Stefan Monnier
2014-12-05  9:58                   ` Stephen Leake
2014-12-05 15:44                     ` Stefan Monnier
2014-12-05 17:37                       ` Karl Fogel
2014-12-05 19:36                         ` Stefan Monnier
2014-12-05 17:34                     ` Karl Fogel
2014-12-05 17:40                       ` Lars Magne Ingebrigtsen
2014-12-05 17:54                         ` Karl Fogel
2014-12-06 12:04                         ` Richard Stallman
2014-12-06 18:56                           ` publicizing Emacs contribute Stephen Leake
2014-12-06 19:29                             ` Óscar Fuentes
2014-12-07  1:00                               ` Dmitry Gutov
2014-12-07  1:33                                 ` Óscar Fuentes
2014-12-08  0:23                               ` Richard Stallman
2014-12-07  9:21                             ` Richard Stallman
2014-12-07 23:06                               ` Stephen Leake
2014-12-05 18:04                       ` More metaproblem Eric S. Raymond
2014-12-06 10:19                       ` Stephen Leake
2014-12-05 11:45                   ` Phillip Lord
2014-12-06  5:17                     ` Stephen J. Turnbull
2014-12-06 10:17                       ` David Kastrup
2014-12-06 16:45                         ` Drew Adams
2014-12-06 10:30                       ` Stephen Leake
2014-12-03 22:14             ` Stefan Monnier
2014-12-04  3:32             ` Stephen Leake
2014-12-04  6:25             ` Eli Zaretskii
2014-12-05 18:37   ` master e820f16: Added file-tree-walk to files.el Michael Heerdegen
2014-12-05 18:57     ` Eric S. Raymond

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=87sigqiaaz.fsf@gmx.us \
    --to=rasmus@gmx.us \
    --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 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.