Copyright
Your project may contain files that you want to protect by copyright. Instead of adding a copyright notice to each file separately, you can use copyright profiles.
A profile defines copyright notice text and a set of files (a scope) in which this text will be incorporated.
You may need several different copyright notices for files within the same project. In this case, you can configure several profiles and associate them with different scopes.
Configure copyright profiles
Create a new copyright profile
A profile allows you define a copyright text that you can later insert across the project or add to specific files only.
Press Ctrl+Alt+S to open the IDE settings and select
.To configure the default profile for all newly created projects, select
.Click and name the new profile.
Enter the copyright notice text.
You can enter plain text, or configure a Velocity template. For the template, use variables, and click Validate to make sure that it is configured correctly.
Once the profile is configured, you can select the scope of files to which you want to add the text or set this profile as the default profile for all files in the project that are not included to any scope.
Dates in the copyright template
By default, the copyright template contains two years: the original year that and the current year.
If you insert a new copyright notice, the original year is going to match the current year, so only one year is going to be added (for example, 2021
). The next year, when you update your copyright, you'll be able to regenerate the notice, so that the original year is going to appear alongside with the current year (2021 - 2022
). This way you don't have to add the year manually every time you update the copyright.
In the template, the original year is pulled with the $originalComment.match("Copyright \(c\) (\d+)", 1, "-")
code, and the current year is inserted with $today.year
.
Note that the year is going to update correctly if the format of the new copyright matches the format of the previous copyright in the template. So, make sure to edit the part of template that pulls the year from files so that it matches the format of the original copyright.
For example, if your original notice was Copyright 2019-2021 MongoDB, Inc.
, remove the copyright sign (c)
from the template: $originalComment.match("Copyright (\d+)", 1, "-")
.
Assign a profile to a scope of files
Select the scope of files to which you want to add the configured copyright text:
Press Ctrl+Alt+S to open the IDE settings and select
.Click (or press Alt+Insert), and select an existing shared scope from the list.
You can define a new scope if necessary. Click the Select Scopes to add scopes or modify existing ones link in the lower part of the page.
From the Copyright list, select the profile that you want to link with the scope.
Apply the changes and close the dialog.
After that you can add the copyright to the necessary files.
Set the default copyright profile
The settings of the default profile will be applied to files that are not explicitly included in any scope covered by a profile.
Press Ctrl+Alt+S to open the IDE settings and select
.From the Default project copyright list, select the profile you want to use as the default profile.
Apply the changes and close the dialog.
After that you can add the copyright to the necessary files.
Configure the copyright text format
By default, the IDE pastes a block comment before other comments with a prefix in each line and adds a blank line after the block.
You can change the default format for all files or for each file type separately:
Press Ctrl+Alt+S to open the IDE settings and select
.On this page, you can configure the formatting for all types of files.
To change the formatting for a specific file type, select it under the Formatting node.
Configure the formatting options. Use the preview section to make sure that the new formatting looks as intended.
Insert copyright text into files
To insert the text into a single file, open it in the editor, press Alt+Insert, and select Copyright from the popup.
To insert the text into a group of files, right-click a node in the Project tool window, and select Update Copyright. You will be prompted to select in which scope you want to update the notice.
A node may include files that belong to different scopes. In this case, copyright notices will be generated according to the assigned profiles.
If a node contains a file that doesn't belong to any scope, the IDE will assign the default profile to it.
Update copyright notices
Update copyright text
Press Ctrl+Alt+S to open the IDE settings and select
.Select the necessary profile and edit the copyright text.
In the Regex to detect copyright in comments field, specify a regular expression that will be used to find existing copyright notices in files.
The IDE will use this expression to identify the copyright comment among other comments. For example, such comments normally contain the word
Copyright
.In the Allow replacing copyright if old copyright matches field, specify a regular expression that the IDE will use to search for the files in which copyright text should be updated.
For example, if you want to update the copyright text in all files that contain years 2000-2006 and 2010-2016 in their copyright, specify
20[0-1][0-6]
.Apply the changes and close the dialog.
In the Project (Alt+1) tool window, right-click the node for which you want to update the text, and select Update Copyright.
Update copyright on save
You can configure the IDE to update copyright notices every time the IDE saves your changes.
Press Ctrl+Alt+S to open the IDE settings and select
.Select the Update copyright notice checkbox.
The checkbox is available if you have configured at least one copyright profile and specified a scope of files to which this profile is applied.
If you haven't configured a profile yet, click the Configure… link.
When the profile is configured, return to Update copyright notice checkbox.
and enable theApply the changes and close the dialog.
For more information on actions that you can enable on save, refer to Trigger actions when saving changes.