(define-module (scm editor))
+;; Also for standalone use, so cannot include any lily modules.
(use-modules
- (ice-9 regex))
+ (ice-9 regex)
+ (srfi srfi-13)
+ (srfi srfi-14))
-(define editor-command-template-alist
- '(("emacs" . "emacsclient --no-wait +%(line)s:%(column)s %(file)s")
- ("gvim" . "gvim --remote +:%(line)s:norm%(column)s %(file)s")
- ("nedit" . "nc -noask +%(line)s %(file)s")
- ("gedit" . "gedit +%(line)s %(file)s")
- ("jedit" . "jedit %(file)s +line:%(line)s")
- ("lilypad" . "lilypad +%(line)s:%(column)s %(file)s")))
+(define PLATFORM
+ (string->symbol
+ (string-downcase
+ (car (string-tokenize (vector-ref (uname) 0) char-set:letter)))))
(define (get-editor)
(or (getenv "LYEDITOR")
(getenv "XEDITOR")
(getenv "EDITOR")
- "emacs"))
+
+ ;; FIXME: how are default/preferred editors specified on
+ ;; different platforms?
+ (case PLATFORM
+ ((windows) "lilypad")
+ (else
+ "emacs"))))
+
+(define editor-command-template-alist
+ '(("emacs" . "emacsclient --no-wait +%(line)s:%(column)s %(file)s || (emacs +%(line)s:%(column)s %(file)s&)")
+ ("gvim" . "gvim --remote +:%(line)s:norm%(column)s %(file)s")
+ ("uedit32" . "uedit32 %(file)s -l%(line)s -c%(column)s")
+ ("nedit" . "nc -noask +%(line)s %(file)s")
+ ("gedit" . "gedit +%(line)s %(file)s")
+ ("jedit" . "jedit -reuseview %(file)s +line:%(line)s")
+ ("syn" . "syn -line %(line)s -col %(column)s %(file)s")
+ ("lilypad" . "lilypad +%(line)s:%(column)s %(file)s")))
(define (get-command-template alist editor)
(define (get-command-template-helper)
x
(re-sub "\\\\" "/" x)))
-(define-public (get-editor-command file-name line column)
+(define-public (get-editor-command file-name line char column)
(let* ((editor (get-editor))
(template (get-command-template editor-command-template-alist editor))
(command