emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [Orgmode] Automatic screenshot insertion


From: François Pinard
Subject: Re: [O] [Orgmode] Automatic screenshot insertion
Date: Tue, 10 Jan 2012 09:53:49 -0500
User-agent: Gnus/5.110018 (No Gnus v0.18) Emacs/23.3 (gnu/linux)

Eric S Fraga <address@hidden> writes:

Hi again, Eric.  I'll be using your corrections on the code, thanks!

> I had to add a call to expand-file-name for getting a file name which
> worked on my system for some reason.

  (make-temp-name
   (expand-file-name
    (concat (file-name-as-directory name)
            (subst-char-in-string
             "." "-"
             (file-name-sans-extension
              (file-name-nondirectory
               (buffer-file-name)))))))
  ".png")))

Not a big deal, but I wonder if it should not rather be:

  (make-temp-name
   (concat (expand-file-name
            (file-name-as-directory name))
           (subst-char-in-string
            "." "-"
            (file-name-sans-extension
             (file-name-nondirectory
              (buffer-file-name))))))

as there is nothing to expand in the base part of the file name?

> I also re-arranged your second (unless ...)  to an (if ...):

  (if (file-writable-p name)
      (progn
        (message "Taking screenshot into %s" name)
        (call-process "import" nil nil nil name)
        (message "Taking screenshot...done"))
    (error "Cannot create image file"))

I kept it, but I might likely revert it back routinely to the earlier
state, if I later happen to revisit that code.

Just to show you how maniacal I may be, let me explain.  I just do not
like "(progn ...)", and make stunts to avoid it.  I would rather write:

  (if (not (file-writable-p name))
      (error "Cannot create image file")
    (message "Taking screenshot into %s" name)
    (call-process "import" nil nil nil name)
    (message "Taking screenshot...done"))

Then, besides a few exceptions, I generally do not like else clauses
after returning or other escaping statements, so the above becomes:

  (if (not (file-writable-p name))
      (error "Cannot create image file"))
  (message "Taking screenshot into %s" name)
  (call-process "import" nil nil nil name)
  (message "Taking screenshot...done")

Finally, I avoid "(not ...)" when this is easily done.  I will always
exchange the two branches of an "if" to get rid of one (unless it would
imply re-introducing "(progn ..."), as progn is uglier than not :-).
Easier here, as "(if (not ...))" may be rewritten "(unless ...)".

By the way, "(when ...)" is always nicer than a single-branched "if".

Scheme is especially irritating.  They said it is minimalist, and yet,
they have many ways to write conditional code, forcing me to choose
constantly.  I will turn "(if ...)"  into "(cond ...)" if a "(begin
...)"  becomes necessary on either branch.  And a "(cond ...)" back to
an "(if ...)" if while simplifying a cond, I see it could written to an
if without begin.  And there is always this stretch towards tail
recursion, and so many ways to reuse or not local variables as
arguments, doing so.  Irritating I say.  And yet, I love this language.

Maniacal I am, really!

François

P.S. If you happen to grok French, you might have fun reading me (or
making fun of me reading...):

  http://icule.blogspot.com/1997/02/dieu-la-douleur-et-l.html





reply via email to

[Prev in Thread] Current Thread [Next in Thread]