home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / Texte / scribus / scribus-1.3.3.9-win32-install.exe / libs / tools / antiword / Docs / Emacs < prev    next >
Internet Message Format  |  2002-11-30  |  4KB

  1. From: Alex Schroeder <alex@emacswiki.org>
  2. Subject: Re: MS Word mode?
  3. Date: Fri, 08 Nov 2002 00:40:15 +0100
  4.  
  5. Roger Mason <rmason@sparky2.esd.mun.ca> writes:
  6.  
  7. > There was a question about this recently on this forum.  Look for
  8. > undoc.el, I got it from the wiki (I think).  It has worked very well for
  9. > me to date, although I have not attempted ro read complex documents.
  10.  
  11. Well, it makes things readable, but it is far from perfect -- it seems
  12. to just delete any non-ascii characters, such that sometimes you will
  13. see words such as "Alex8" where "8" is some garbage that just looked
  14. like being part of a real word...  In other words, interfacing to
  15. something like catdoc, antiword, or wvText (included with AbiWord)
  16. might be cool.  Actually all you need is this:
  17.  
  18. (add-to-list 'auto-mode-alist '("\\.doc\\'" . no-word))
  19.  
  20. (defun no-word ()
  21.   "Run antiword on the entire buffer."
  22.   (shell-command-on-region (point-min) (point-max) "antiword - " t t))
  23.  
  24. Alex.
  25.  
  26. ===============================================================================
  27.  
  28. From: Arnaldo Mandel <am@ime.usp.br>
  29. Subject: Re: MS Word mode?
  30. Date: Fri, 8 Nov 2002 11:52:33 -0200
  31.  
  32. Alex Schroeder wrote (on Nov 8, 2002):
  33.  
  34.  >                 Actually all you need is this:
  35.  > 
  36.  > (add-to-list 'auto-mode-alist '("\\.doc\\'" . no-word))
  37.  > 
  38.  > (defun no-word ()
  39.  >   "Run antiword on the entire buffer."
  40.  >   (shell-command-on-region (point-min) (point-max) "antiword - " t t))
  41.  
  42. On my system there are lots of filenames ending in .doc whose files
  43. are not Word files.  So I modified your function thusly
  44.  
  45. (defun no-word ()
  46.   "Run antiword on the entire buffer."
  47.   (if (string-match "Microsoft "
  48.             (shell-command-to-string (concat "file " buffer-file-name)))
  49.       (shell-command-on-region (point-min) (point-max) "antiword - " t t)))
  50.  
  51. Works in Solaris and Linux, and should work on other unixes as well.
  52.  
  53. am
  54.  
  55. ===============================================================================
  56.  
  57. From: Alex Schroeder <alex@emacswiki.org>
  58. Subject: Re: MS Word mode?
  59. Date: Fri, 08 Nov 2002 18:24:07 +0100
  60.  
  61. Arnaldo Mandel <am@ime.usp.br> writes:
  62.  
  63. > (defun no-word ()
  64. >   "Run antiword on the entire buffer."
  65. >   (if (string-match "Microsoft "
  66. >             (shell-command-to-string (concat "file " buffer-file-name)))
  67. >       (shell-command-on-region (point-min) (point-max) "antiword - " t t)))
  68.  
  69. Cool.  I did not know about "file"...  :)
  70.  
  71. My stuff is on the wiki, btw:
  72.  
  73. * http://www.emacswiki.org/cgi-bin/wiki.pl?AntiWord
  74.  
  75. Alex.
  76.  
  77. ===============================================================================
  78.  
  79. From: Benjamin Riefenstahl <Benjamin.Riefenstahl@epost.de>
  80. Subject: Re: emacs rmail. How to convert .doc to plain text
  81. Date: 24 Nov 2002 18:08:22 +0100
  82.  
  83. Hi,
  84.  
  85. Puff Addison <puff@theaddisons.demon.co.uk> writes:
  86. > Yes, please post your Emacs integration code.
  87.  
  88. Ok, see below.  I should note that it is probably also possible to
  89. (ab-)use jka-compr for this, which would make my two functions
  90. obsolete.
  91.  
  92. so long, benny
  93.  
  94. >>>>>>>
  95.  
  96. (defun benny-antiword-file-handler (operation &rest args)
  97.   ;; First check for the specific operations
  98.   ;; that we have special handling for.
  99.   (cond ((eq operation 'insert-file-contents)
  100.      (apply 'benny-antiword-insert-file args))
  101.     ((eq operation 'file-writable-p)
  102.      nil)
  103.     ((eq operation 'write-region)
  104.      (error "Word documents can't be written"))
  105.     ;; Handle any operation we don't know about.
  106.     (t (let ((inhibit-file-name-handlers
  107.           (cons 'benny-antiword-file-handler
  108.             (and (eq inhibit-file-name-operation operation)
  109.                  inhibit-file-name-handlers)))
  110.          (inhibit-file-name-operation operation))
  111.          (apply operation args)))))
  112.  
  113. (defun benny-antiword-insert-file (filename &optional visit beg end replace)
  114.   (set-buffer-modified-p nil)
  115.   (setq buffer-file-name (file-truename filename))
  116.   (setq buffer-read-only t)
  117.   (let ((start (point))
  118.     (inhibit-read-only t))
  119.     (if replace (delete-region (point-min) (point-max)))
  120.     (save-excursion
  121.       (let ((coding-system-for-read 'utf-8)
  122.         (filename (encode-coding-string
  123.                buffer-file-name
  124.                (or file-name-coding-system
  125.                default-file-name-coding-system))))
  126.     (call-process "antiword" nil t nil "-m" "UTF-8.txt"
  127.               filename))
  128.       (list buffer-file-name (- (point) start)))))
  129.  
  130. (setq file-name-handler-alist
  131.       (cons '("\\.doc\\'" . benny-antiword-file-handler)
  132.         file-name-handler-alist))
  133.  
  134. <<<<<<<
  135.