Sign in Join
Wiki copytemporary

New IDE features since: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11This page contains a list of major IDE features that made Lazarus even more impressive. All features are sorted by the Lazarus release version that they became available in.
22
33If you would like to contribute to this page, please read the following page ([[Creating animated gifs for wiki]]) giving hints on creating animated gifs for this wiki.
44
55# Overview
66
7-<table class="sortable">
8-
9-<tr valign="top">
10-
11-<th>
12-
137Version
148
15-</th>
16-
17-<th>
18-
199Category
2010
21-</th>
22-
23-<th>
24-
2511Feature
2612
27-</th>
28-
29-</tr>
30-
31-</table>
32-
3313# prior to v0.9.4 (2004 and earlier)
3414
3515## form designer guidelines (June 2002)
3616
3717The Form Designer shows green or blue guidelines when you position components. This help you align or size components correctly. When components are correctly aligned or sized, then guidelines are shown.
3818
39-<figure>
40-<img src="Ide_features_design_guidelines.gif" title="Ide_features_design_guidelines.gif" />
41-<figcaption>Ide_features_design_guidelines.gif</figcaption>
42-</figure>
19+![](/wiki-images/2/2e/Ide_features_design_guidelines.gif)
4320
4421# (2005-01-09)
4522
4623Invert Assignment tool
4724
4825# v0.9.10 (2005-10-06)
4926
5027## Integrated Documentation Editor
5128
5229Lazarus IDE is now capable of editing the external fpdoc help (xml) files while you are working with the source code. The FPDoc Editor can be found at: **View -\> FPDoc Editor** menu option. As you navigate your code, the FPDoc Editor window gets updated with the related documentation. External help files prevent you from obfuscating your source code. fpdoc is similar to the JavaDoc technology, but with its own features and syntax.
5330
54-<figure>
55-<img src="Ide_features_fpdoc_editor.gif" title="Ide_features_fpdoc_editor.gif" />
56-<figcaption>Ide_features_fpdoc_editor.gif</figcaption>
57-</figure>
31+![](/wiki-images/3/30/Ide_features_fpdoc_editor.gif)
5832
5933# v0.9.13 (2006-02-03)
6034
6135## Quick Fixes
6236
6337- Quick Fix for improving message: Unit not found
6438- Quick Fix for Sender not used
6539
6640# v0.9.17 (2006-05-27)
6741
6842- Quick Fix for some linker errors
6943
7044# v0.9.18 (2006-09-18)
7145
7246## procedure list
7347
7448This makes finding methods in your current unit really fast! It can be found at **Search \> Procedure list** (Hotkey is Alt+G). The procedure list enables you to view a list of Free Pascal / Lazarus procedures in the current unit and quickly jump to the implementation. Include files are also supported and the method list gets filtered as you type the partial method name.
7549
76-<figure>
77-<img src="Ide_features_procedure_list.gif" title="Ide_features_procedure_list.gif" />
78-<figcaption>Ide_features_procedure_list.gif</figcaption>
79-</figure>
50+![](/wiki-images/2/2c/Ide_features_procedure_list.gif)
8051
8152# v0.9.20 (2006-11-05)
8253
8354## divider lines in editor
8455
8556The Lazarus editor supports drawing horizontal divider lines between classes, methods, nested procedures, begin..end blocks and many more. So now there is no need to add extra blank lines or {*******...} comments between classes or methods. In the upcoming v0.9.28 release this feature is very customizable in the "**Environment \> Options \> Editor \> Divider Drawing**" screen. In the following screenshot it shows some divider lines using the default color and a divider line for nested procedures using a customized color.
8657
87-<figure>
88-<img src="Ide_features_divider_lines.png" title="Ide_features_divider_lines.png" />
89-<figcaption>Ide_features_divider_lines.png</figcaption>
90-</figure>
58+![](/wiki-images/3/37/Ide_features_divider_lines.png)
9159
9260# v0.9.24 (2007-11-05)
9361
9462- Quick Fix for fpc warning constructing a class with abstract methods
9563
9664## editor toolbar
9765
9866The editor toolbar plug-in allows you to define toolbar buttons to any of the IDE menu items.
9967
100-<figure>
101-<img src="Ide_features_editor_toolbar.png" title="Ide_features_editor_toolbar.png" />
102-<figcaption>Ide_features_editor_toolbar.png</figcaption>
103-</figure>
68+![](/wiki-images/1/16/Ide_features_editor_toolbar.png)
10469
10570# v0.9.26 (2008-10-25)
10671
10772## fpdoc help inside editor tooltips
10873
10974Lazarus can now display fpdoc documentation inside the tooltip help. Packages and Project can all be setup to find the related fpdoc (*.xml) help files, which then enables Lazarus to display the extended help in the tooltips. Simply hover the mouse over various parts of the code to see the tooltips in action. In the image below the mouse was hovered over the TCollection class definition.
11075
111-<figure>
112-<img src="Ide_features_fpdoc_tooltip.png" title="Ide_features_fpdoc_tooltip.png" />
113-<figcaption>Ide_features_fpdoc_tooltip.png</figcaption>
114-</figure>
76+![](/wiki-images/7/7f/Ide_features_fpdoc_tooltip.png)
11577
11678# v0.9.28 (2009-10-12)
11779
11880## block matching
11981
12082The IDE automatically highlights matching blocks - begin..end pairs.
12183
122-<figure>
123-<img src="block_matching.gif" title="block_matching.gif" />
124-<figcaption>block_matching.gif</figcaption>
125-</figure>
84+![](/wiki-images/8/85/Block_matching.gif)
12685
12786## code macro OfAll
12887
12988The code templates of the IDE can use code macros. Writing code macros is easy. The new code macro *\$OfAll()* creates a list of enums for case statements as demonstrated in the image below:
13089
131-<figure>
132-<img src="CodeMakroOfAll.gif" title="CodeMakroOfAll.gif" />
133-<figcaption>CodeMakroOfAll.gif</figcaption>
134-</figure>
90+![](/wiki-images/0/0b/CodeMakroOfAll.gif)
13591
13692(Hint: The separator line between text and folder marks can be enabled via [[IDE Window: Editor Options|Margin and gutter]])
13793
13894New users will automatically get the new macro. Old users can either delete their ~/.lazarus/lazarus.dci or add the template themselves. How to create the template:
13995
14096- IDE menu / Environment / code templates
14197- Add. Token: "ofall" or whatever you like. Comment: "case variable of \<list of all enums\> end"
14298- Click ok to add it
14399- The new template is selected below.
144100- check "Enable macros"
145101- The code of the template:
146102
147103`of`\
148104`|$OfAll()end;`
149105
150106- click ok to save and close the templates.
151107
152108## Code Templates with macro \$Param
153109
154-<figure>
155-<img src="Image-Ide_features_trycf_demo.gif" title="Image-Ide_features_trycf_demo.gif" />
156-<figcaption>Image-Ide_features_trycf_demo.gif</figcaption>
157-</figure>
110+![](/wiki-images/2/2f/Image-Ide_features_trycf_demo.gif)
158111
159112To use this feature add the following macro (or delete your old config):
160113
161114`$param(variable) := $param(typename).Create;`\
162115`try`\
163116`  |`\
164117`finally`\
165118`  $param(variable,sync=1).Free;`\
166119`end;`
167120
168121## Syncron-Edit
169122
170-<figure>
171-<img src="SynEditSyncro.gif" title="SynEditSyncro.gif" />
172-<figcaption>SynEditSyncro.gif</figcaption>
173-</figure>
123+![](/wiki-images/a/a6/SynEditSyncro.gif)
174124
175125# v0.9.30 (2011-03-28)
176126
177127- Quick Fix for message: unit1(): fatal: can not find unit2 used by unit3
178128- Quick Fix for identifier not found: add local variable
179129- Quick Fix for identifier not found: search via Code Browser
180130- Quick Fix for unit not found: remove unit from uses section
181131- Quick Fix for note local variable not used: remove variable
182132- Quick Fix for hints: add IDE directive {%H-}
183133
184134## Multi Source Editor
185135
186136Lazarus can now open as many Source-Editor-Windows as you want, and you can freely move files between them.
187137
188138It is also possible to view the same file in multiple Windows.
189139
190-<figure>
191-<img src="Three_src_edit_medium2.png" title="Three_src_edit_medium2.png" />
192-<figcaption>Three_src_edit_medium2.png</figcaption>
193-</figure>
140+![](/wiki-images/4/47/Three_src_edit_medium2.png)
194141
195142[[http://lazarus-dev.blogspot.com/2010/04/using-multiply-editor-windows.html|Multiply Source-Editor-Windows]]
196143
197144## Docked IDE
198145
199146The IDE now supports docking. Install either the package [[Anchor Docking|AnchorDockingDsgn]] or EasyDockMgrDsgn.
200147
201-<figure>
202-<img src="Ide_docked.png" title="Ide_docked.png" />
203-<figcaption>Ide_docked.png</figcaption>
204-</figure>
148+![](/wiki-images/a/af/Ide_docked.png)
205149
206150## Code folding with hiding option for Comments
207151
208152Comments in the source code can be completely folded away (hidden). The context menu (on the fold gutter) provides info on the nested folds at the selected line
209153
210-<figure>
211-<img src="FoldHideComments2.png" title="FoldHideComments2.png" />
212-<figcaption>FoldHideComments2.png</figcaption>
213-</figure>
154+![](/wiki-images/e/ef/FoldHideComments2.png)
214155
215156# v1.0 (2012-08-29)
216157
217158- Quick Fix: cant find unit: show ppu of installed package
218159
219160## Folding (Hiding) text by selection
220161
221162Lazarus can now fold any text/code segment you want. Just select the text and hide it. (These folds are not remembered in the session, restoring folds on load only works for folds at keywords)
222163
223-<figure>
224-<img src="Fold_selection.gif" title="Fold_selection.gif" />
225-<figcaption>Fold_selection.gif</figcaption>
226-</figure>
164+![](/wiki-images/8/8f/Fold_selection.gif)
227165
228166## Watches/Locals History in debugger
229167
230168A history of Watches and Locals
231169
232170More Info: [[http://lazarus-dev.blogspot.com/2011/05/remember-remember-history-of-debugging.html blog]] ![](/wiki-images/7/7d/LazDbgHistory.png)
233171
234172## Macro Recorder for Code Editor
235173
236174The source-code editor can record and play macros
237175
238176## Procedure/Class-Name Hint for long declarations
239177
240178The editor displays an embedded hint with the name of the current Procedure/Class if the top of the declaration is scrolled out
241179
242180# v1.2 (2014-03-04)
243181
244182## Command Macros can be saved
245183
246-<figure>
247-<img src="Editor_macros.png" title="Editor_macros.png" />
248-<figcaption>Editor_macros.png</figcaption>
249-</figure>
184+![](/wiki-images/1/11/Editor_macros.png)
250185
251186Support for multiple command macros, that can be saved with session or IDE config. [[IDE Window: Editor Macros]]
252187
253188## PascalScript macros
254189
255190## Multiple user defined word highlight/markup
256191
257192The user can define any amount of different markup settings, and assign his own choice of words,expressions (one line terms) to them. This allows to highlight all occurrences of one or more identifiers of interest.
258193
259194Words to be highlighted can be toggled via keyboard. Words can be highlighted per editor, or across all editors. A list of pre-defined words can be defined, that will be active when the IDE starts.
260195
261-<figure>
262-<img src="SynUserDefinedMarkup.png" title="SynUserDefinedMarkup.png" />
263-<figcaption>SynUserDefinedMarkup.png</figcaption>
264-</figure>
196+![](/wiki-images/4/4d/SynUserDefinedMarkup.png)
265197
266198[[IDE Window: Editor User Defined Words|See documentation]]
267199
268200## Package Graph Control
269201
270202The package graph now shows the package dependencies as graph.
271203
272204This new control is part of the package LazControls and used by the IDE itself as well. The control shows a graph consisting of nodes and edges as a level graph (this type of graph is also called a layered graph).
273205
274-<figure>
275-<img src="packagegraph1.png" title="packagegraph1.png" />
276-<figcaption>packagegraph1.png</figcaption>
277-</figure>
206+![](/wiki-images/5/52/Packagegraph1.png)
278207
279208## Dialog to find and remove unneeded package dependencies
280209
281210Available via package editor / context menu of a dependency or via the package graph.
282211
283-<figure>
284-<img src="cleanuppackagedependencies1.png" title="cleanuppackagedependencies1.png" />
285-<figcaption>cleanuppackagedependencies1.png</figcaption>
286-</figure>
212+![](/wiki-images/d/de/Cleanuppackagedependencies1.png)
287213
288214## Auto-continue for comments and strings
289215
290216## Project Additions and Overrides
291217
292218Projects can now add compiler options to packages and override the output directories depending on the current build mode. You can also add compiler options to all projects on a machine depending on build mode.
293219
294220[[IDE Window: Compiler Options|Additions and Overrides]]
295221
296-<figure>
297-<img src="CompilerAdditionsAndOverrides1.png" title="CompilerAdditionsAndOverrides1.png" />
298-<figcaption>CompilerAdditionsAndOverrides1.png</figcaption>
299-</figure>
222+![](/wiki-images/c/cd/CompilerAdditionsAndOverrides1.png)
300223
301224## Low-lighting inactive \$IFDEF code
302225
303-<figure>
304-<img src="Source_Editor_IFDEF_lowlight.png" title="Source_Editor_IFDEF_lowlight.png" />
305-<figcaption>Source_Editor_IFDEF_lowlight.png</figcaption>
306-</figure>
226+![](/wiki-images/7/7e/Source_Editor_IFDEF_lowlight.png)
307227
308228## Unit Dependencies
309229
310230You can now find out what units uses a unit.
311231
312232[[IDE Window: Unit dependencies|Unit Dependencies]]
313233
314-<figure>
315-<img src="UnitDependencies1.png" title="UnitDependencies1.png" />
316-<figcaption>UnitDependencies1.png</figcaption>
317-</figure>
234+![](/wiki-images/0/04/UnitDependencies1.png)
318235
319236## Quick Fix for circular unit not found
320237
321238When you create a cycle between units, the compiler only reports one edge of the cycle. Right click on the message / Show unit dependencies will open the unit dependencies dialog with a full path from unit A to unit B to unit A.
322239
323240## Find references of used unit
324241
325242Position source editor cursor on a unit within a uses clause. Then right click / Find / Find references of used unit. This will find all references within the current unit to the used unit.
326243
327244# v1.4 (2015-04-22)
328245
329246## Designer supports Undo
330247
331248This is one of the coolest improvements in this release. Earlier if you worked on a complex layout of components inside a Panel and then deleted the Panel by accident, there was no way to get it back. Now there is!
332249
333250## Drag and Drop refactoring of files in project and packages
334251
335252Drag and Drop support was added to both Project inspector and Package editor.
336253
337254## Parallel building packages
338255
339256Compilation of packages is now threaded. The Messages window has coloured header lines with information, one header per package. So when your project depends on multiple packages that have to be compiled, the IDE starts multiple threads to compile all those packages. This speeds up the compilation especially for larger projects, like the Lazarus IDE itself.
340257
341258Downside is that sections in the Messages window are updated in random order, thus it is more difficult to follow the compilation process. Parallel compilation can be disabled by setting "Maximum parallel processes" to 1.
342259
343260## Message Marks
344261
345262For each compiler message listed in the Messages window the Source Editor shows an icon in the left gutter, a line in the right gutter and the offending token is given a wavey underline. Right-clicking on the left gutter icon shows a context menu with a list of quick fixes.
346263
347264The wavey underlines and other marks are only updated after compilation. This differs from the real-time syntax check in new Delphi versions where the wavey underline comes and goes while typing.
348265
349-<figure>
350-<img src="MessageMarks.png" title="MessageMarks.png" />
351-<figcaption>MessageMarks.png</figcaption>
352-</figure>
266+![](/wiki-images/3/33/MessageMarks.png)
353267
354268## Messages windows shows translated messages
355269
356270You can use the FPC provided translation files to show messages in many languages like German and French.
357271
358272## Messages windows allows to search with highlighting
359273
360274Explanation
361275
362276## Hint windows and Object Inspector info box have HTML rendering by default
363277
364278Hints showing suitably formatted text give the IDE a more professional appearance, and the documentation shown usually includes clickable hyperlinks to sources and associated packages. Hint formatting was only available previously if you installed the TurboPowerIProDsgn package. It was not installed by default due to outstanding bugs which are now resolved.
365279
366-<figure>
367-<img src="OI_Infobox.png" title="OI_Infobox.png" />
368-<figcaption>OI_Infobox.png</figcaption>
369-</figure>
280+![](/wiki-images/8/87/OI_Infobox.png)
370281
371282## Editor Toolbar is visible by default
372283
373284The Editor Toolbar package was improved and is now installed by default. It has preconfigured buttons for "Jump Back" and "Jump Forward" features. Those buttons are often requested by new users. This toolbar makes Lazarus yet more newbie-friendly. It can be hidden from View-menu, thus there is no need to uninstall the package any more.
374285
375-<figure>
376-<img src="EditorToolbar.png" title="EditorToolbar.png" />
377-<figcaption>EditorToolbar.png</figcaption>
378-</figure>
286+![](/wiki-images/0/08/EditorToolbar.png)
379287
380288## Checkbox can be used as a Boolean property editor in OI
381289
382290A Checkbox is maybe the most natural control for editing Booleans. It can be configured in Object Inspector environment settings, although the Combobox with "False" and "True" choices is still the default.
383291
384-<figure>
385-<img src="OI_Checkbox.png" title="OI_Checkbox.png" />
386-<figcaption>OI_Checkbox.png</figcaption>
387-</figure>
292+![](/wiki-images/4/47/OI_Checkbox.png)
388293
389294## Component palette is configurable
390295
391296The order of components and pages in the component palette can be changed by user. There is a new options page for it under environment options.
392297
393-<figure>
394-<img src="CompPaletteOpts.png" title="CompPaletteOpts.png" />
395-<figcaption>CompPaletteOpts.png</figcaption>
396-</figure>
298+![](/wiki-images/5/5b/CompPaletteOpts.png)
397299
398300# v1.6
399301
400302- Quick fix for fpc message *Local variable "i" does not seem to be initialized*: insert assignment
401303- Added TFlowPanel in ExtCtrls.pp
402304
403305## Multi Caret
404306
405307The editor allows multiple carets. Those can be set from column mode selection (Shift-Alt-Select), individually (Shift-Ctrl-Left-mouse or Shift-Ctrl-Insert-Key), or from selection (see image)
406308
407-<figure>
408-<img src="multicaret.gif" title="multicaret.gif" />
409-<figcaption>multicaret.gif</figcaption>
410-</figure>
309+![](/wiki-images/a/a0/Multicaret.gif)
411310
412311See also [[IDE Window: Editor Options General|Multi Caret]] and [[SynEdit MultiCaret plugin]]
413312
414313## Project Groups
415314
416-<figure>
417-<img src="ProjectGroupsEditor1.png" title="ProjectGroupsEditor1.png" />
418-<figcaption>ProjectGroupsEditor1.png</figcaption>
419-</figure>
315+![](/wiki-images/9/90/ProjectGroupsEditor1.png)
420316
421317See [[Project Groups]].
422318
423319## Desktops
424320
425-<figure>
426-<img src="desktops.png" title="desktops.png" />
427-<figcaption>desktops.png</figcaption>
428-</figure>
321+![](/wiki-images/9/94/Desktops.png)
429322
430323See [[IDE Window: Desktops|Desktops]]
431324
432325## IDE CoolBar
433326
434327Replaces the old static Toolbar. ToDo: upload an animation about changing Coolbar layout.
435328
436329## Package Tabs
437330
438-<figure>
439-<img src="packagetabs-top.png" title="packagetabs-top.png" />
440-<figcaption>packagetabs-top.png</figcaption>
441-</figure>
331+![](/wiki-images/c/cd/Packagetabs-top.png)
442332
443333See [[Package Tabs]]
444334
445335## Favorites
446336
447-<figure>
448-<img src="favorites.png" title="favorites.png" />
449-<figcaption>favorites.png</figcaption>
450-</figure>
337+![](/wiki-images/2/21/Favorites.png)
451338
452339See [[Favorites]]
453340
454341# v1.8
455342
456343- Quick fix for any fpc hint, note or warning: insert compiler directive {\$warn id off}
457344
458345## Outline for Pascal Sources
459346
460347The editor can outline pascal code blocks, such as if/then, loops, try/except, begin/end and others.
461348
462349Settings can be found under Tools -\> Options -\> Editor on the pages "Markup and Matches" and "Colors"
463350
464351![](/wiki-images/b/b9/Editor_outline_example.png) ![](/wiki-images/a/a9/Editor_outline_example2.png)
465352
466353# Unsorted
467354
468355Any items below this point have not been sorted per Lazarus release yet.
469356
470357## built-in diff viewer
471358
472359...
473360
474361## refactoring
475362
476363...
477364
478365## favorites in Object Inspector
479366
480367...
481368
482369## integrated unit testing with FPCUnit
483370
484371...
485372
486373## better anchoring and margins in form designer
487374
488375...
489376
490377## file browser
491378
492379...
493380
494381## CodeTools
495382
496383- word completion
497384- Rename component in Designer auto-renames all instances in unit.
498385
499386...
500387
501388## Include files
502389
503390...
504391
505392## Lazarus Packages
506393
507394...
508395
509396## Enclose Selection
510397
511398Select some text in editor. Right Click to get popup menu. Select "Refactoring \> Enclose Selection".
512399
513400## Quick Fix: Remove unit
514401
515402In messages window
516403
517404## Code Observer
518405
519406...
520407
521408## Line Change indicators
522409
523410...
524411
525412---
526413*From the Free Pascal wiki, page "New IDE features since", as it stood on 2019-01-07 after a change by Martin, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
527414Category: Historical
528415Category: IDE
529416Category: Lazarus
530417Category: Release Notes

Back to history