CMake/Editors/Emacs: Difference between revisions
From KitwarePublic
< CMake
Jump to navigationJump to search
(Split "CMake/Editors/Emacs" page out from "CMake Editors Support") |
(Organize page layout) |
||
Line 1: | Line 1: | ||
= Modes = | |||
== cmake-mode == | |||
See the [http://cmake.org/gitweb?p=cmake.git;a=blob_plain;hb=master;f=Docs/cmake-mode.el combined syntax highlighting and indentation mode] in the CMake source tree. To enable it, add the following to your ''.emacs'' file: | |||
<pre> | <pre> | ||
Line 11: | Line 15: | ||
(autoload 'cmake-mode "~/CMake/Docs/cmake-mode.el" t) | (autoload 'cmake-mode "~/CMake/Docs/cmake-mode.el" t) | ||
</pre> | </pre> | ||
= User Suggestions = | |||
== Buffer Names == | |||
I've been long irritated with having to deal with multiple buffers all name CMakeLists.txt. Emacs by default will call them CMakeLists.txt, CMakeLists.txt<2>, CMakeLists.txt<3>, etc.. This is really hard to switch back and forth when the buffer names are difficult to associate with location. | I've been long irritated with having to deal with multiple buffers all name CMakeLists.txt. Emacs by default will call them CMakeLists.txt, CMakeLists.txt<2>, CMakeLists.txt<3>, etc.. This is really hard to switch back and forth when the buffer names are difficult to associate with location. |
Revision as of 15:10, 25 April 2013
Modes
cmake-mode
See the combined syntax highlighting and indentation mode in the CMake source tree. To enable it, add the following to your .emacs file:
; Add cmake listfile names to the mode list. (setq auto-mode-alist (append '(("CMakeLists\\.txt\\'" . cmake-mode)) '(("\\.cmake\\'" . cmake-mode)) auto-mode-alist)) (autoload 'cmake-mode "~/CMake/Docs/cmake-mode.el" t)
User Suggestions
Buffer Names
I've been long irritated with having to deal with multiple buffers all name CMakeLists.txt. Emacs by default will call them CMakeLists.txt, CMakeLists.txt<2>, CMakeLists.txt<3>, etc.. This is really hard to switch back and forth when the buffer names are difficult to associate with location.
I've found a couple of solutions to this problem.
- Use uniquify emacs package. This gives several options to automatically rename buffers based on their location on disk.
;; uniquify.el is a helper routine to help give buffer names a better unique name. (when (load "uniquify" 'NOERROR) (require 'uniquify) (setq uniquify-buffer-name-style 'forward) ;(setq uniquify-buffer-name-style 'post-forward) )
- Rename the buffer as part of the cmake-mode
(defun cmake-rename-buffer () "Renames a CMakeLists.txt buffer to cmake-<directory name>." (interactive) ;(print (concat "buffer-filename = " (buffer-file-name))) ;(print (concat "buffer-name = " (buffer-name))) (when (and (buffer-file-name) (string-match "CMakeLists.txt" (buffer-name))) ;(setq file-name (file-name-nondirectory (buffer-file-name))) (setq parent-dir (file-name-nondirectory (directory-file-name (file-name-directory (buffer-file-name))))) ;(print (concat "parent-dir = " parent-dir)) (setq new-buffer-name (concat "cmake-" parent-dir)) ;(print (concat "new-buffer-name= " new-buffer-name)) (rename-buffer new-buffer-name t) ) ) (add-hook 'cmake-mode-hook (function cmake-rename-buffer))
I actually prefer renaming my buffers with my cmake-rename-buffer function, because the buffer names start with a lower case letter. :)