emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* malformed function
@ 2018-07-09 13:37 hymie!
  2018-07-11  9:35 ` Joost Kremers
  0 siblings, 1 reply; 4+ messages in thread
From: hymie! @ 2018-07-09 13:37 UTC (permalink / raw)
  To: emacs-orgmode

Greetings.

I know this is technically an emacs problem and not an Orgmode problem,
but maybe you guys will see the error that I can't find.

I have two different machines.  One is a Linux machine running
Orgmode 9.1.13 under Emacs 25.3.1 , and one is a Windows 10 machine
running Orgmode 9.1.13 under Emacs 24.5.1 .  Both have the same .emacs
file as far as I can tell.

The Linux machine is getting this error:

Warning (bytecomp): ‘(extract-window (line) (let ((start
(get-text-property 1 (quote time-of-day) line)) (dur (get-text-property
1 (quote duration) line))) (cond ((and start dur) (cons start
(org-time-from-minutes (+ dur (org-time-to-minutes start))))) (start
start) (t nil))))’ is a malformed function

As far as I can tell, the parens and quotes are all matched properly, and
the Windows machine is not displaying this error.

Here is the relevant part of my .emacs file.  Maybe you guys can see the
error I don't see?

===== 8< =====
; http://orgmode.org/worg/org-hacks.html
(defun org-time-to-minutes (time)
  "Convert an HHMM time to minutes"
  (+ (* (/ time 100) 60) (% time 100)))
(defun org-time-from-minutes (minutes)
  "Convert a number of minutes to an HHMM time"
  (+ (* (/ minutes 60) 100) (% minutes 60)))
(defadvice org-agenda-add-time-grid-maybe (around mde-org-agenda-grid-tweakify
                                                  (list ndays todayp))
  (if (member 'remove-match (car org-agenda-time-grid))
      (flet ((extract-window
              (line)
              (let ((start (get-text-property 1 'time-of-day line))
                    (dur (get-text-property 1 'duration line)))
                (cond
                 ((and start dur)
                  (cons start
                        (org-time-from-minutes
                         (+ dur (org-time-to-minutes start)))))
                 (start start)
                 (t nil)))))
        (let* ((windows (delq nil (mapcar 'extract-window list)))
               (org-agenda-time-grid
                (list (car org-agenda-time-grid)
                      (cadr org-agenda-time-grid)
                      (remove-if
                       (lambda (time)
                         (find-if (lambda (w)
                                    (if (numberp w)
                                        (equal w time)
                                      (and (>= time (car w))
                                           (< time (cdr w)))))
                                  windows))
                       (caddr org-agenda-time-grid)))))
          ad-do-it))
    ad-do-it))
(ad-activate 'org-agenda-add-time-grid-maybe)
===== 8< =====

Thanks.

--hymie!     http://lactose.homelinux.net/~hymie    hymie@lactose.homelinux.net

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

* Re: malformed function
  2018-07-09 13:37 malformed function hymie!
@ 2018-07-11  9:35 ` Joost Kremers
  2018-07-11  9:48   ` Joost Kremers
  2018-07-11 11:39   ` hymie!
  0 siblings, 2 replies; 4+ messages in thread
From: Joost Kremers @ 2018-07-11  9:35 UTC (permalink / raw)
  To: hymie!; +Cc: emacs-orgmode


On Mon, Jul 09 2018, hymie! wrote:
> Greetings.
>
> I know this is technically

Technically and practically. ;-)

> an emacs problem and not an Orgmode problem,
> but maybe you guys will see the error that I can't find.

A better place to ask would probably be the mailing list 
help-gnu-emacs, but:

> I have two different machines.  One is a Linux machine running
> Orgmode 9.1.13 under Emacs 25.3.1 , and one is a Windows 10 
> machine
> running Orgmode 9.1.13 under Emacs 24.5.1 .  Both have the same 
> .emacs
> file as far as I can tell.

Try diff or ediff to make sure.

> The Linux machine is getting this error:
>
> Warning (bytecomp): ‘(extract-window (line) (let ((start
> (get-text-property 1 (quote time-of-day) line)) (dur 
> (get-text-property
> 1 (quote duration) line))) (cond ((and start dur) (cons start
> (org-time-from-minutes (+ dur (org-time-to-minutes start))))) 
> (start
> start) (t nil))))’ is a malformed function

That means that the entire s-expr (extract-window ... nil)))) is 
being interpreted as a function, which is caused by the fact that 
it is the first element of the list ((extract-window ... nil))))) 
(note extra pair of parens). Since such an s-expr cannot be a 
function, you get an error.

The fact that it is interpreted as a function indicates that the 
byte compiler doesn't know that `flet' is a macro, which in turn 
indicates that you haven't loaded the required library.

Note that the documentation for `flet' says that it has been 
obsolete since Emacs 24.3 and that you should be using `cl-flet' 
instead (or `cl-letf', but that doesn't seem to be what you want). 
So best thing to do is to replace `flet' with `cl-flet' and then 
add `(require 'cl-lib)' somewhere at the top of your init file, 
and you should be good to go.

Why you're only getting this error on one machine isn't entirely 
clear to me. It could be that something changed between Emacs 24 
and 25 that causes this, it could be that you're loading a package 
on the Windows machine that loads cl or cl-lib and that you don't 
use on Emacs.

HTH


-- 
Joost Kremers
Life has its moments

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

* Re: malformed function
  2018-07-11  9:35 ` Joost Kremers
@ 2018-07-11  9:48   ` Joost Kremers
  2018-07-11 11:39   ` hymie!
  1 sibling, 0 replies; 4+ messages in thread
From: Joost Kremers @ 2018-07-11  9:48 UTC (permalink / raw)
  To: hymie!; +Cc: emacs-orgmode


On Wed, Jul 11 2018, Joost Kremers wrote:
> On Mon, Jul 09 2018, hymie! wrote:
>> Greetings.
>>
>> I know this is technically
>
> Technically and practically. ;-)

Actually, I just now noticed your code is coming from worg, so 
that makes it not completely off-topic, I'd say.

-- 
Joost Kremers
Life has its moments

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

* Re: malformed function
  2018-07-11  9:35 ` Joost Kremers
  2018-07-11  9:48   ` Joost Kremers
@ 2018-07-11 11:39   ` hymie!
  1 sibling, 0 replies; 4+ messages in thread
From: hymie! @ 2018-07-11 11:39 UTC (permalink / raw)
  To: Joost Kremers; +Cc: hymie!, emacs-orgmode

On Wed, Jul 11, 2018 at 11:35:14AM +0200, Joost Kremers wrote:
> 
> Note that the documentation for `flet' says that it has been obsolete since
> Emacs 24.3 and that you should be using `cl-flet' instead (or `cl-letf', but
> that doesn't seem to be what you want). So best thing to do is to replace
> `flet' with `cl-flet' and then add `(require 'cl-lib)' somewhere at the top
> of your init file, and you should be good to go.

Looks like that solved it.  Thanks much!

--hymie!     http://lactose.homelinux.net/~hymie    hymie@lactose.homelinux.net

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

end of thread, other threads:[~2018-07-11 11:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-09 13:37 malformed function hymie!
2018-07-11  9:35 ` Joost Kremers
2018-07-11  9:48   ` Joost Kremers
2018-07-11 11:39   ` hymie!

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

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