|
|
(17 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
| = Modes =
| | {{CMake/Template/Moved}} |
|
| |
|
| == cmake-mode ==
| | This page has moved [https://gitlab.kitware.com/cmake/community/wikis/doc/editors/Emacs here]. |
| | |
| 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>
| |
| ; 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)
| |
| </pre>
| |
| | |
| == company-mode ==
| |
| | |
| See [http://company-mode.github.io/ company-mode] and its [https://github.com/company-mode/company-cmake#readme completion backend for CMake scripts].
| |
| | |
| = 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.
| |
| | |
| <ol><li>Use uniquify emacs package. This gives several options to automatically rename buffers based on their location on disk.
| |
| | |
| <pre>
| |
| ;; 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)
| |
| )
| |
| </pre>
| |
| </li>
| |
| | |
| <li>Rename the buffer as part of the cmake-mode
| |
| | |
| <pre>
| |
| (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))
| |
| </pre>
| |
| </li></ol>
| |
| | |
| I actually prefer renaming my buffers with my cmake-rename-buffer function, because the buffer names start with a lower case letter. :)
| |