emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Bug: EOL needs to be converted to Unix for MobileOrg files [7.5


From: Sebold, Charles
Subject: Re: [O] Bug: EOL needs to be converted to Unix for MobileOrg files [7.5 (release_7.5.147.g9ddc)]
Date: Wed, 04 May 2011 09:29:38 -0500
User-agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.50 (windows-nt)

On 3 May 2011, charles sebold wrote:

> I'm bumping this.  I think the patch attached to the last post could
> be better, but failing a response for now, I've decided that rather
> than drag my changes along, I'm just advising the necessary functions.
>
> So, to get this to work for Emacs on Windows + MobileOrg, the
> following is in my .emacs file.  Hopefully this will be helpful for
> somebody:

What I attached didn't work; I ended up flet-ing copy-file just a little
too much.

I've had to fall back to essentially redefining
org-mobile-copy-agenda-files.  Here's what I've got in my .emacs now,
but it's subject to break if org-mobile-copy-agenda-files ever changes.

I would like somebody to consider forcing all the output files
(pre-encryption obviously, if encryption is enabled) to unix line
endings in some more correct way than I have done.

#+BEGIN_SRC emacs-lisp
; bug fix for org-mobile
(defun org-mobile-copy-file (file newname)
  "Copy file, converting to Unix line endings."
  (with-temp-file newname
    (set-buffer-file-coding-system 'undecided-unix nil)
    (insert-file-contents file)))

(eval-and-compile
  (require 'cl)) ; for flet

(defadvice org-mobile-copy-agenda-files (around
                                         crs-org-mobile-copy-agenda-files)
  "Copy agenda files to mobile device with Unix EOLs."
  (let ((files-alist org-mobile-files-alist)
        file buf entry link-name target-path target-dir check)
    (while (setq entry (pop files-alist))
      (setq file (car entry) link-name (cdr entry))
      (when (file-exists-p file)
        (setq target-path (expand-file-name link-name org-mobile-directory)
              target-dir (file-name-directory target-path))
        (unless (file-directory-p target-dir)
          (make-directory target-dir 'parents))
        (if org-mobile-use-encryption
            (org-mobile-encrypt-and-move file target-path)
          (org-mobile-copy-file file target-path 'ok-if-exists))
        (setq check (shell-command-to-string
                     (concat org-mobile-checksum-binary " "
                             (shell-quote-argument (expand-file-name file)))))
        (when (string-match "[a-fA-F0-9]\\{30,40\\}" check)
          (push (cons link-name (match-string 0 check))
                org-mobile-checksum-files))))

    (setq file (expand-file-name org-mobile-capture-file
                                 org-mobile-directory))
    (save-excursion
      (setq buf (find-file file))
      (when (and (= (point-min) (point-max))) 
        (insert "\n")
        (save-buffer)
        (when org-mobile-use-encryption
          (write-file org-mobile-encryption-tempfile)
          (org-mobile-encrypt-and-move org-mobile-encryption-tempfile file)))
      (push (cons org-mobile-capture-file (md5 (buffer-string)))
            org-mobile-checksum-files))
    (org-mobile-cleanup-encryption-tempfile)
    (kill-buffer buf)))

(defadvice org-mobile-encrypt-file (around crs-org-mobile-encrypt-file)
  "Encrypt INFILE to OUTFILE with Unix EOLs."
  (let ((tempfile (make-temp-file "orgmobile")))
    (org-mobile-copy-file infile tempfile)
    (ad-set-arg 0 tempfile)
    ad-do-it
    (delete-file tempfile)))

(ad-activate 'org-mobile-copy-agenda-files)
(ad-activate 'org-mobile-encrypt-file)
#+END_SRC
-- 
Charles Sebold                                          4th of May, 2011
              GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600)
     No Gnus v0.18 | Org-mode version 7.5 (release_7.5.249.gbf7ce)




reply via email to

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