[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Emacs lisp question
From: |
Matthias Pfeifer |
Subject: |
Emacs lisp question |
Date: |
Mon, 18 Apr 2016 16:27:50 +0200 |
Hi there,
My emacs version is 25.0.91.1 and it's running on Windows 7. I have this
piece of Emacs lisp that does insert a template file in a fresh java-mode
buffer and start my "pre-processor"
(add-to-list 'auto-insert-alist '(".*\\.java$" . [ "template.java"
mp:java-preprocessor] ))
pre-processor looks like this:
(defun mp:java-preprocessor()
(let ((classname (file-name-sans-extension (buffer-name)))
(packagename (mp:predict-package-name-for-current-buffer)))
(while (search-forward "CLASSNAME" nil t)
(replace-match classname))
(goto-char (point-min))
(while (search-forward "PACKAGE" nil t)
(replace-match packagename) ) ) )
(defun mp:predict-package-name-for-current-buffer ()
"Simply take two parent directories and concat with . inbetween."
(let* ((components (remq ""
(reverse
(split-string
(file-name-directory (buffer-file-name))
"\\/")))))
(concat (nth 0 components) "." (nth 1 components) "." (nth 2
components))))
The problem is that the class-name and package-name are actually inserted
in capital letters while all file-names involved are writtn with lower-case
letters. So for a file with this path "c:/a/b/c/d/. The predict method
actually inserts: C.D.
Calling it outside the auto-insert environment eg by pressing C-x C-e
behind the closing paren belonging to the form in the
mp:predict-package-name-for-current-buffer function results into a lower
case letters package name.
Sorry for the bit lengthy question. I hope the question is clear: Why is
the result in capital letters in one case and in the case of the filename
letters in the other case?
Matthias
- Emacs lisp question,
Matthias Pfeifer <=