Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

23.7.9.3 Inserting Version Control Headers

Sometimes it is convenient to put version identification strings directly into working files. Certain special strings called version headers are replaced in each successive version by the number of that version.

If you are using RCS, and version headers are present in your working files, Emacs can use them to determine the current version and the locking state of the files. This is more reliable than referring to the master files, which is done when there are no version headers. Note that in a multi-branch environment, version headers are necessary to make VC behave correctly (see Multi-User Branching).

Searching for version headers is controlled by the variable vc-consult-headers. If it is non-nil (the default), Emacs searches for headers to determine the version number you are editing. Setting it to nil disables this feature.

You can use the C-x v h command (vc-insert-headers) to insert a suitable header string.

C-x v h
Insert headers in a file for use with your version-control system.

The default header string is ‘$Id$’ for RCS and ‘%W%’ for SCCS. You can specify other headers to insert by setting the variables vc-backend-header where backend is rcs or sccs.

Instead of a single string, you can specify a list of strings; then each string in the list is inserted as a separate header on a line of its own.

It is often necessary to use “superfluous” backslashes when writing the strings that you put in this variable. For instance, you might write "$Id\$" rather than "$Id$". The extra backslash prevents the string constant from being interpreted as a header, if the Emacs Lisp file containing it is maintained with version control.

Each header is inserted surrounded by tabs, inside comment delimiters, on a new line at point. Normally the ordinary comment start and comment end strings of the current mode are used, but for certain modes, there are special comment delimiters for this purpose; the variable vc-comment-alist specifies them. Each element of this list has the form (mode starter ender).

The variable vc-static-header-alist specifies further strings to add based on the name of the buffer. Its value should be a list of elements of the form (regexp . format). Whenever regexp matches the buffer name, format is inserted as part of the header. A header line is inserted for each element that matches the buffer name, and for each string specified by vc-backend-header. The header line is made by processing the string from vc-backend-header with the format taken from the element. The default value for vc-static-header-alist is as follows:

     (("\\.c$" .
       "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n\
     #endif /* lint */\n"))

It specifies insertion of text of this form:

     
     #ifndef lint
     static char vcid[] = "string";
     #endif /* lint */

Note that the text above starts with a blank line.

If you use more than one version header in a file, put them close together in the file. The mechanism in revert-buffer that preserves markers may not handle markers positioned between two version headers.


 
 
  Published under the terms of the GNU General Public License Design by Interspire