;; Author: Francis J. Wright <F.J.Wright at qmul.ac.uk>
;; Time-stamp: <23 August 2004>
;; URL: http://centaur.maths.qmul.ac.uk/Emacs/
-;; Version: 1.3
+;; Version: 1.5
;; Keywords: convenience
;; This package is free software; you can redistribute it and/or modify
(list (edit-and-eval-command
"Comment start (string or nil): " csv-comment-start)))
;; Paragraph means a group of contiguous records:
- (setq csv-comment-start string)
(set (make-local-variable 'paragraph-separate) "[:space:]*$") ; White space.
(set (make-local-variable 'paragraph-start) "\n");Must include \n explicitly!
- (if string
- (progn
- (setq paragraph-separate (concat paragraph-separate "\\|" string)
- paragraph-start (concat paragraph-start "\\|" string))
- (set (make-local-variable 'comment-start) string)
- (modify-syntax-entry
- (string-to-char string) "<" csv-mode-syntax-table)
- (modify-syntax-entry ?\n ">" csv-mode-syntax-table))
- (with-syntax-table text-mode-syntax-table
- (modify-syntax-entry (string-to-char string)
- (string (char-syntax (string-to-char string)))
- csv-mode-syntax-table)
- (modify-syntax-entry ?\n
- (string (char-syntax ?\n))
- csv-mode-syntax-table))))
+ ;; Remove old comment-start/end if available
+ (with-syntax-table text-mode-syntax-table
+ (when comment-start
+ (modify-syntax-entry (string-to-char comment-start)
+ (string (char-syntax (string-to-char comment-start)))
+ csv-mode-syntax-table))
+ (modify-syntax-entry ?\n
+ (string (char-syntax ?\n))
+ csv-mode-syntax-table))
+ (when string
+ (setq paragraph-separate (concat paragraph-separate "\\|" string)
+ paragraph-start (concat paragraph-start "\\|" string))
+ (set (make-local-variable 'comment-start) string)
+ (modify-syntax-entry
+ (string-to-char string) "<" csv-mode-syntax-table)
+ (modify-syntax-entry ?\n ">" csv-mode-syntax-table))
+ (setq csv-comment-start string))
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.[Cc][Ss][Vv]\\'" . csv-mode))
(while (not (eobp)) ; for each record...
(or (csv-not-looking-at-record)
(let ((w widths)
- (beg (point)) ; Beginning of current field.
+ (col (current-column))
x)
(while (not (eolp))
(csv-end-of-field)
- (setq x (- (point) beg)) ; Field width.
+ (setq x (- (current-column) col)) ; Field width.
(if w
(if (> x (car w)) (setcar w x))
(setq w (list x)
widths (nconc widths w)))
(or (eolp) (forward-char)) ; Skip separator.
- (setq w (cdr w)
- beg (point)))))
+ (setq w (cdr w) col (current-column)))))
(forward-line))
widths))
(align-padding (if (bolp) 0 csv-align-padding))
(left-padding 0) (right-padding 0)
(field-width
- ;; FIXME: Don't assume length=string-width!
- (progn (csv-end-of-field) (- (point) beg)))
+ (- (- (current-column)
+ (progn (csv-end-of-field) (current-column)))))
(column-width (pop w))
(x (- column-width field-width))) ; Required padding.
(set-marker end (point)) ; End of current field.