Sign in Join
Wiki copytemporary

New IDE features since: what changed

Revision 2 to 3. 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
77Version
88
99Category
1010
1111Feature
1212
1313# prior to v0.9.4 (2004 and earlier)
1414
1515## form designer guidelines (June 2002)
1616
1717The 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.
1818
1919![](/wiki-images/2/2e/Ide_features_design_guidelines.gif)
2020
2121# (2005-01-09)
2222
2323Invert Assignment tool
2424
2525# v0.9.10 (2005-10-06)
2626
2727## Integrated Documentation Editor
2828
2929Lazarus 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.
3030
3131![](/wiki-images/3/30/Ide_features_fpdoc_editor.gif)
3232
3333# v0.9.13 (2006-02-03)
3434
3535## Quick Fixes
3636
3737- Quick Fix for improving message: Unit not found
3838- Quick Fix for Sender not used
3939
4040# v0.9.17 (2006-05-27)
4141
4242- Quick Fix for some linker errors
4343
4444# v0.9.18 (2006-09-18)
4545
4646## procedure list
4747
4848This 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.
4949
5050![](/wiki-images/2/2c/Ide_features_procedure_list.gif)
5151
5252# v0.9.20 (2006-11-05)
5353
5454## divider lines in editor
5555
5656The 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.
5757
5858![](/wiki-images/3/37/Ide_features_divider_lines.png)
5959
6060# v0.9.24 (2007-11-05)
6161
6262- Quick Fix for fpc warning constructing a class with abstract methods
6363
6464## editor toolbar
6565
6666The editor toolbar plug-in allows you to define toolbar buttons to any of the IDE menu items.
6767
6868![](/wiki-images/1/16/Ide_features_editor_toolbar.png)
6969
7070# v0.9.26 (2008-10-25)
7171
7272## fpdoc help inside editor tooltips
7373
7474Lazarus 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.
7575
7676![](/wiki-images/7/7f/Ide_features_fpdoc_tooltip.png)
7777
7878# v0.9.28 (2009-10-12)
7979
8080## block matching
8181
8282The IDE automatically highlights matching blocks - begin..end pairs.
8383
8484![](/wiki-images/8/85/Block_matching.gif)
8585
8686## code macro OfAll
8787
8888The 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:
8989
9090![](/wiki-images/0/0b/CodeMakroOfAll.gif)
9191
9292(Hint: The separator line between text and folder marks can be enabled via [[IDE Window: Editor Options|Margin and gutter]])
9393
9494New 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:
9595
9696- IDE menu / Environment / code templates
9797- Add. Token: "ofall" or whatever you like. Comment: "case variable of \<list of all enums\> end"
9898- Click ok to add it
9999- The new template is selected below.
100100- check "Enable macros"
101101- The code of the template:
102102
103-`of`\
104-`|$OfAll()end;`
103+``` pascal
104+of
105+|$OfAll()end;
106+```
105107
106108- click ok to save and close the templates.
107109
108110## Code Templates with macro \$Param
109111
110112![](/wiki-images/2/2f/Image-Ide_features_trycf_demo.gif)
111113
112114To use this feature add the following macro (or delete your old config):
113115
114-`$param(variable) := $param(typename).Create;`\
115-`try`\
116-`  |`\
117-`finally`\
118-`  $param(variable,sync=1).Free;`\
119-`end;`
116+``` pascal
117+$param(variable) := $param(typename).Create;
118+try
119+ |
120+finally
121+ $param(variable,sync=1).Free;
122+end;
123+```
120124
121125## Syncron-Edit
122126
123127![](/wiki-images/a/a6/SynEditSyncro.gif)
124128
125129# v0.9.30 (2011-03-28)
126130
127131- Quick Fix for message: unit1(): fatal: can not find unit2 used by unit3
128132- Quick Fix for identifier not found: add local variable
129133- Quick Fix for identifier not found: search via Code Browser
130134- Quick Fix for unit not found: remove unit from uses section
131135- Quick Fix for note local variable not used: remove variable
132136- Quick Fix for hints: add IDE directive {%H-}
133137
134138## Multi Source Editor
135139
136140Lazarus can now open as many Source-Editor-Windows as you want, and you can freely move files between them.
137141
138142It is also possible to view the same file in multiple Windows.
139143
140144![](/wiki-images/4/47/Three_src_edit_medium2.png)
141145
142146[[http://lazarus-dev.blogspot.com/2010/04/using-multiply-editor-windows.html|Multiply Source-Editor-Windows]]
143147
144148## Docked IDE
145149
146150The IDE now supports docking. Install either the package [[Anchor Docking|AnchorDockingDsgn]] or EasyDockMgrDsgn.
147151
148152![](/wiki-images/a/af/Ide_docked.png)
149153
150154## Code folding with hiding option for Comments
151155
152156Comments 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
153157
154158![](/wiki-images/e/ef/FoldHideComments2.png)
155159
156160# v1.0 (2012-08-29)
157161
158162- Quick Fix: cant find unit: show ppu of installed package
159163
160164## Folding (Hiding) text by selection
161165
162166Lazarus 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)
163167
164168![](/wiki-images/8/8f/Fold_selection.gif)
165169
166170## Watches/Locals History in debugger
167171
168172A history of Watches and Locals
169173
170174More Info: [[http://lazarus-dev.blogspot.com/2011/05/remember-remember-history-of-debugging.html blog]] ![](/wiki-images/7/7d/LazDbgHistory.png)
171175
172176## Macro Recorder for Code Editor
173177
174178The source-code editor can record and play macros
175179
176180## Procedure/Class-Name Hint for long declarations
177181
178182The editor displays an embedded hint with the name of the current Procedure/Class if the top of the declaration is scrolled out
179183
180184# v1.2 (2014-03-04)
181185
182186## Command Macros can be saved
183187
184188![](/wiki-images/1/11/Editor_macros.png)
185189
186190Support for multiple command macros, that can be saved with session or IDE config. [[IDE Window: Editor Macros]]
187191
188192## PascalScript macros
189193
190194## Multiple user defined word highlight/markup
191195
192196The 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.
193197
194198Words 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.
195199
196200![](/wiki-images/4/4d/SynUserDefinedMarkup.png)
197201
198202[[IDE Window: Editor User Defined Words|See documentation]]
199203
200204## Package Graph Control
201205
202206The package graph now shows the package dependencies as graph.
203207
204208This 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).
205209
206210![](/wiki-images/5/52/Packagegraph1.png)
207211
208212## Dialog to find and remove unneeded package dependencies
209213
210214Available via package editor / context menu of a dependency or via the package graph.
211215
212216![](/wiki-images/d/de/Cleanuppackagedependencies1.png)
213217
214218## Auto-continue for comments and strings
215219
216220## Project Additions and Overrides
217221
218222Projects 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.
219223
220224[[IDE Window: Compiler Options|Additions and Overrides]]
221225
222226![](/wiki-images/c/cd/CompilerAdditionsAndOverrides1.png)
223227
224228## Low-lighting inactive \$IFDEF code
225229
226230![](/wiki-images/7/7e/Source_Editor_IFDEF_lowlight.png)
227231
228232## Unit Dependencies
229233
230234You can now find out what units uses a unit.
231235
232236[[IDE Window: Unit dependencies|Unit Dependencies]]
233237
234238![](/wiki-images/0/04/UnitDependencies1.png)
235239
236240## Quick Fix for circular unit not found
237241
238242When 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.
239243
240244## Find references of used unit
241245
242246Position 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.
243247
244248# v1.4 (2015-04-22)
245249
246250## Designer supports Undo
247251
248252This 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!
249253
250254## Drag and Drop refactoring of files in project and packages
251255
252256Drag and Drop support was added to both Project inspector and Package editor.
253257
254258## Parallel building packages
255259
256260Compilation 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.
257261
258262Downside 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.
259263
260264## Message Marks
261265
262266For 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.
263267
264268The 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.
265269
266270![](/wiki-images/3/33/MessageMarks.png)
267271
268272## Messages windows shows translated messages
269273
270274You can use the FPC provided translation files to show messages in many languages like German and French.
271275
272276## Messages windows allows to search with highlighting
273277
274278Explanation
275279
276280## Hint windows and Object Inspector info box have HTML rendering by default
277281
278282Hints 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.
279283
280284![](/wiki-images/8/87/OI_Infobox.png)
281285
282286## Editor Toolbar is visible by default
283287
284288The 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.
285289
286290![](/wiki-images/0/08/EditorToolbar.png)
287291
288292## Checkbox can be used as a Boolean property editor in OI
289293
290294A 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.
291295
292296![](/wiki-images/4/47/OI_Checkbox.png)
293297
294298## Component palette is configurable
295299
296300The 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.
297301
298302![](/wiki-images/5/5b/CompPaletteOpts.png)
299303
300304# v1.6
301305
302306- Quick fix for fpc message *Local variable "i" does not seem to be initialized*: insert assignment
303307- Added TFlowPanel in ExtCtrls.pp
304308
305309## Multi Caret
306310
307311The 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)
308312
309313![](/wiki-images/a/a0/Multicaret.gif)
310314
311315See also [[IDE Window: Editor Options General|Multi Caret]] and [[SynEdit MultiCaret plugin]]
312316
313317## Project Groups
314318
315319![](/wiki-images/9/90/ProjectGroupsEditor1.png)
316320
317321See [[Project Groups]].
318322
319323## Desktops
320324
321325![](/wiki-images/9/94/Desktops.png)
322326
323327See [[IDE Window: Desktops|Desktops]]
324328
325329## IDE CoolBar
326330
327331Replaces the old static Toolbar. ToDo: upload an animation about changing Coolbar layout.
328332
329333## Package Tabs
330334
331335![](/wiki-images/c/cd/Packagetabs-top.png)
332336
333337See [[Package Tabs]]
334338
335339## Favorites
336340
337341![](/wiki-images/2/21/Favorites.png)
338342
339343See [[Favorites]]
340344
341345# v1.8
342346
343347- Quick fix for any fpc hint, note or warning: insert compiler directive {\$warn id off}
344348
345349## Outline for Pascal Sources
346350
347351The editor can outline pascal code blocks, such as if/then, loops, try/except, begin/end and others.
348352
349353Settings can be found under Tools -\> Options -\> Editor on the pages "Markup and Matches" and "Colors"
350354
351355![](/wiki-images/b/b9/Editor_outline_example.png) ![](/wiki-images/a/a9/Editor_outline_example2.png)
352356
353357# Unsorted
354358
355359Any items below this point have not been sorted per Lazarus release yet.
356360
357361## built-in diff viewer
358362
359363...
360364
361365## refactoring
362366
363367...
364368
365369## favorites in Object Inspector
366370
367371...
368372
369373## integrated unit testing with FPCUnit
370374
371375...
372376
373377## better anchoring and margins in form designer
374378
375379...
376380
377381## file browser
378382
379383...
380384
381385## CodeTools
382386
383387- word completion
384388- Rename component in Designer auto-renames all instances in unit.
385389
386390...
387391
388392## Include files
389393
390394...
391395
392396## Lazarus Packages
393397
394398...
395399
396400## Enclose Selection
397401
398402Select some text in editor. Right Click to get popup menu. Select "Refactoring \> Enclose Selection".
399403
400404## Quick Fix: Remove unit
401405
402406In messages window
403407
404408## Code Observer
405409
406410...
407411
408412## Line Change indicators
409413
410414...
411415
412416---
413417*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).*
414418Category: Historical
415419Category: IDE
416420Category: Lazarus
417421Category: Release Notes

Back to history