CMake/Editors/Emacs: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
(Split "CMake/Editors/Emacs" page out from "CMake Editors Support")
 
(Organize page layout)
Line 1: Line 1:
* '''Emacs''' [http://www.cmake.org/CMakeDocs/cmake-mode.el combined syntax highlighting and indentation mode].  The file in the repository used to not function properly when running fill-paragraph (M-q).  There was a [[CMake Emacs mode patch for comment formatting|patched version]] to fix this, but it is largely unnecessary now that the one in the repository works properly now.  To enable it, add the following to your ''.emacs'' file:
= 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.

  1. 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)
      )
    
  2. 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. :)