Translation update done using Pootle.
[phpmyadmin/madhuracj.git] / ChangeLog
blobb318d405ca3eddb5ec8aebaf36c88aa7dc62de69
1 phpMyAdmin - ChangeLog
2 ======================
4 3.5.0.0 (not yet released)
5 + rfe #2021981 [interface] Add support for mass prefix change.
6 + "up to date" message on main page when current version is up to date
7 + Update to jQuery 1.6.2
8 + Patch #3256122 [search] Show/hide db search results
9 + Patch #3302354 Add gettext wrappers around a message
10 + Remove deprecated function PMA_DBI_get_fields
11 + rfe #2098927 Remember recent tables
12 + rfe #3078542 Remember the last sort order for each table
13 + AJAX for Create table in navigation panel
14 + rfe #3310562 Wording about Column
15 + AJAX for Add a user in Database privileges
16 + Patch #3271804 for rfe #3177495, new DisableMultiTableMaintenance directive
17 + [interface] Reorganised server status page.
18 + [interface] Changed way of generating charts.
19 + rfe #939233 [interface] Flexible column width
20 + [interface] Mouse-based column reordering in query results
21 + AJAX for Insert to a table from database Structure page
22 - Patch #3316969 PMA_ajaxShowMessage() does not respect timeout
23 + AJAX for Change on multiple rows in table Browse
24 + [interface] Improved support for stored routines
25 + [display] More options for browsing GIS data
26 + [interface] Support for spatial indexes
27 + [display] GIS data visualization
28 + AJAX for table structure multiple-column change
29 + AJAX for table structure index edit
30 + Show/hide indexes in table Structure
31 + More compact navigation bar
32 + Display direction (horizontal/vertical) no longer displayed by default
33 + Shift/click support in database Structure
34 + Show/hide column in table Browse
35 - bug #3353856 [AJAX] AJAX dialogs use wrong font-size
36 - bug #3354356 [interface] Timepicker does not work in AJAX dialogs
37 + AJAX for table Structure Indexes Edit
38 + AJAX for table Structure column Change
39 + [interface] Improved support for events
40 + [interface] Improved support for triggers
41 + [interface] Improved server monitoring
42 + AJAX for table Structure column Add
43 + AJAX for table Operations copy table
44 - bug #3380946 [export] no uid Query result export (Suhosin limit)
45 + Grid editing in browse mode (replaces row inline edit)
46 + Zoom-search in table Search
47 + [interface] Editor for GIS data
48 + [import] Import GIS data from ESRI Shapefiles
49 + [interface] 'Function based search' for GIS data
50 + Support Drizzle database
51 - bug #3356456 [interface] Interface problems for queries having LIMIT clauses
52 + [interface] Remove DefaultPropDisplay feature
53 - bug #3299486 [prettyprint] Order By in a query containing comment character
54 + [interface] Improved ENUM/SET editor
55 + patch #3428376 [pmadb] pmadb on a different MySQL server
56 + patch #3410688 [interface] Improving field size for character columns
57 - [usability] Removed an unnecessary AJAX request from database search
58 - bug #3302419 [navi] Tabs break when squeezing page
59 + rfe #3406797 [navi] Stick table tools to top of page on scroll
60 + rfe #1632106 [interface] Improved error handling
61 + patch #3432835 [interface] Add useful intermediate pages to pageselector
62 + [interface] Improved index editor
63 + View editing via a generated ALTER VIEW
64 - bug #3408377 [interface] Deleting table from the DB does not change the table counter
66 3.4.9.0 (not yet released)
67 - bug #3442028 [edit] Inline editing enum fields with null shows no dropdown
68 - bug #3442004 [interface] DB suggestion not correct for user with underscore
69 - bug #3438420 [core] Magic quotes removed in PHP 5.4
70 - bug #3398788 [session] No feedback when result is empty (signon auth_type)
71 - bug #3384035 [display] Problems regarding ShowTooltipAliasTB
72 - bug #3306875 [edit] Can't rename a database that contains views
74 3.4.8.0 (2011-12-01)
75 - bug #3425230 [interface] enum data split at space char (more space to edit)
76 - bug #3426840 [interface] ENUM/SET editor can't handle commas in values
77 - bug #3427256 [interface] no links to browse/empty views and tables
78 - bug #3430377 [interface] Deleted search results remain visible
79 - bug #3428627 [import] ODS import ignores memory limits
80 - bug #3426836 [interface] Visual column separation
81 - bug #3428065 [parser] TRUE not recognized by parser
82 + patch #3433770 [config] Make location of php-gettext configurable
83 - patch #3430291 [import] Handle conflicts in some open_basedir situations
84 - bug #3431427 [display] Dropdown results - setting NULL does not work
85 - patch #3428764 [edit] Inline edit on multi-server configuration
86 - patch #3437354 [core] Notice: Array to string conversion in PHP 5.4
87 - [interface] When ShowTooltipAliasTB is true, VIEW is wrongly shown as the
88   view name in main panel db Structure page
89 - bug #3439292 [core] Fail to synchronize column with name of keyword
90 - bug #3425156 [interface] Add column after drop
91 - [interface] Avoid showing the password in phpinfo()'s output
92 - bug #3441572 [GUI] 'newer version of phpMyAdmin' message not shown in IE8
93 - bug #3407235 [interface] Entering the key through a lookup window does not reset NULL
94 - [security] Self-XSS on database names (Synchronize), see PMASA-2011-18
95 - [security] Self-XSS on database names (Operations/rename), see PMASA-2011-18
96 - [security] Self-XSS on column type (Create index), see PMASA-2011-18
97 - [security] Self-XSS on column type (table Search), see PMASA-2011-18
98 - [security] Self-XSS on invalid query (table overview), see PMASA-2011-18
100 3.4.7.1 (2011-11-10)
101 - [security] Fixed possible local file inclusion in XML import
102 (CVE-2011-4107).
104 3.4.7.0 (2011-10-23)
105 - bug #3418610 [interface] Links in navigation when $cfg['MainPageIconic'] = false
106 - bug #3418849 [interface] Inline edit shows dropdowns even after closing
107 - bug [view] View renaming did not work
108 - bug [navi] Wrong icon for view (MySQL 5.5)
109 - bug #3420229 [doc] Missing documentation section
110 - bug #3423725 [pdf] Broken PDF file when exporting database to PDF
111 - [core] Allow to set language in URL
112 - bug #3425184 [doc] Fix links to PHP documentation
113 - bug #3426031 [export] Export to bzip2 is not working
115 3.4.6.0 (2011-10-16)
116 - patch #3404173 InnoDB comment display with tooltips/aliases
117 - bug #3404886 [navi] Edit SQL statement after error
118 - bug #3403165 [interface] Collation not displayed for long enum fields
119 - bug #3399951 [export] Config for export compression not used
120 - bug #3400690 [privileges] DB-specific privileges won't submit
121 - bug #3410604 [config] Configuration storage incorrect suggested table name 
122 - bug #3383572 [interface] Cannot execute saved query
123 - bug #3411535 [display] Full text button unchecks results display options
124 - bug #3411224 [display] Broken binary column when 'Show binary contents' is not set
125 - bug #3411633 [core] Call to undefined function PMA_isSuperuser()
126 - bug #3413743 [interface] Display options link missing after search
127 - bug #3324161 [core] CSP policy causing designer JS buttons to fail
128 - bug #3412862 [relation] Relations/constraints are dropped/created on every change
129 - bug #3390832 [display] Delete records from last page breaks search
130 - bug #3392150 [schema] PMA_User_Schema::processUserChoice() is broken
131 - bug #3414744 [core] External link fails in 3.4.5
132 - patch #3314626 [display] CharTextareaRows is not respected
133 - bug #3417089 [synchronize] Extraneous db choices
134 - [security] Fixed local path disclosure vulnerability, see PMASA-2011-15
135 - [security] Fixed XSS in setup (host/verbose parameter), see PMASA-2011-16
137 3.4.5.0 (2011-09-14)
138 - bug #3375325 [interface] Page list in navigation frame looks odd
139 - bug #3313235 [interface] Error div misplaced
140 - bug #3374802 [interface] Comment on a column breaks inline editing
141 - patch #3383711 [display] Order by a column in a view doesn't work in some cases
142 - bug #3386434 [interface] Add missing space to server status
143 - [core] Remove library PHPExcel, due to license issues
144 - [export] Remove native Excel export modules (xls and xlsx formats)
145 - [import] Remove native Excel import modules (xls and xlsx formats)
146 - bug #3392920 [edit] BLOB emptied after editing another column
147 - [security] Fixed XSS in Inline Edit on save action, see PMASA-2011-14
148 - [security] Fixed XSS with db/table/column names, see PMASA-2011-14 
150 3.4.4.0 (2011-08-24)
151 - bug #3323060 [parser] SQL parser breaks AJAX requests if query has unclosed quotes
152 - bug #3323101 [parser] Invalid escape sequence in SQL parser
153 - bug #3348995 [config] $cfg['Export']['asfile'] set to false does not select asText option
154 - bug #3340151 [export] Working SQL query exports error page
155 - bug #3353649 [interface] "Create an index on X columns" form not validated
156 - bug #3350790 [interface] JS error in Table->Structure->Index->Edit
157 - bug #3353811 [interface] Info message has "error" class
158 - bug #3357837 [interface] TABbing through a NULL field in the inline mode resets NULL
159 - remove version number in /setup
160 - bug #3367993 [usability] Missing "Generate Password" button
161 - bug #3363221 [display] Missing Server Parameter on inline sql query
162 - bug #3367986 [navi] Drop field -> lost active table
163 - remove misleading comment on the "Rename database" interface
164 - bug #3374374 [interface] Fix footnote for inexact count while browsing
165 - bug #3372807 [interface] Fix security warning link in setup
166 - bug #3374347 [display] Backquotes in normal text on import page
167 - bug #3358750 [core] With Suhosin, urls are too long in edit links
168 - [security] Missing sanitization on the table, column and index names leads to XSS vulnerabilities, see PMASA-2011-13
170 3.4.3.2 (2011-07-23)
171 - [security] Fixed XSS vulnerability, see PMASA-2011-9
172 - [security] Fixed local file inclusion vulnerability, see PMASA-2011-10
173 - [security] Fixed local file inclusion vulnerability and code execution, see PMASA-2011-11
174 - [security] Fixed possible session manipulation in swekey authentication, see PMASA-2011-12
176 3.4.3.1 (2011-07-02)
177 - [security] Fixed possible session manipulation in swekey authentication, see PMASA-2011-5
178 - [security] Fixed possible code injection incase session variables are compromised, see PMASA-2011-6
179 - [security] Fixed regexp quoting issue in Synchronize code, see PMASA-2011-7
180 - [security] Fixed filtering of a file path, which allowed for directory traversal, see PMASA-2011-8
182 3.4.3.0 (2011-06-27)
183 - bug #3311170 [sync] Missing helper icons in Synchronize
184 - patch #3304473 [setup] Redefine a lable that was wrong
185 - bug #3304544 [parser] master is not a reserved word
186 - bug #3307616 [edit] Inline edit updates multiple duplicate rows
187 - patch #3311539 [edit] Inline edit does not escape backslashes
188 - bug #3313210 [interface] Columns class sometimes changed for nothing
189 - patch #3313326 [interface] Some tooltips do not disappear
190 - bug #3315720 [search] Fix search in non unicode tables
191 - bug #3315741 [display] Inline query edit broken
192 - patch #3317206 [privileges] Generate password option missing on new accounts
193 - bug #3317293 [edit] Inline edit places HTML line breaks in edit area
194 - bug #3319466 [interface] Inline query edit does not escape special characters
195 - minor XSS (require a valid token)
197 3.4.2.0 (2011-06-07)
198 - bug #3301249 [interface] Iconic table operations does not remove inline edit label
199 - bug #3303869 [interface] Unnecessary scrolling on Databases page
200 - patch #3303813 [setup] Define a label that was missing
201 - bug #3305606 [interface] Show all button wraps on privileges page
202 - bug #3305517 [config] Config for export compression not used
203 - bug #3305883 [interface] Table is dropped regardless of confirmation
204 - [auth] Fixed error handling for signon auth method.
205 - bug #3276001 [core] Avoid caching of index.php.
206 - bug #3306958 [interface] Unnecessary Details slider
207 - bug #3308476 [interface] "Show all" not persistent after a sort
208 - bug #3308072 [auth] Version disclosure to anonymous visitors
209 - bug #3306981 [interface] pmahomme and table statistics
211 3.4.1.0 (2011-05-20)
212 - bug #3301108 [interface] Synchronize and already configured host
213 - bug #3302457 Inline edit and $cfg['PropertiesIconic']
214 - Patch #3302313 Show a translated label
215 - bug #3300981 [navi] Table filter is case sensitive
216 - bug #3285929 [privileges] Revert temporary fix
217 - bug #3302872 [synchronize] Synchronize and user name
218 - bug #3302733 [core] Some browsers report an insecure https connection
219 - [security] Make redirector require valid token
221 3.4.0.0 (2011-05-11)
222 + rfe #2890226 [view] Enable VIEW rename 
223 + rfe #838637 [privileges] Export a user's privileges 
224 - [core] Updated mootools to fix some glitches with Safari.
225 + rfe #2816943 [interface] Add REGEXP ^...$ to select dialog.
226 + rfe #2924956 [interface] Add insert ignore option to editing row.
227 + rfe #2838080 [interface] Show warning when javascript is disabled.
228 + rfe #2823707 [edit] Call UUID function separately to show it in insert.
229 + rfe #2420684 [export] Allow export of timestamps in UTC.
230 + [core] Remove config data from session as it brings chicken-egg problem.
231 + [core] Cookie path now honors PmaAbsoluteUri.
232 + rfe #2393597 [core] phpMyAdmin honors https in PmaAbsoluteUri.
233 + rfe #1778337 [core] Try moving tables by RENAME and fail to CREATE/INSERT if that fails.
234 + rfe #1721189 [core] Force reload js on code change.
235 + rfe #1954161 [interface] Do not display long numbers in server status.
236 + rfe #2033616 [edit] Add option to just display insert query.
237 + rfe #1435032 [interface] Move SSL status to the end, it is usually empty.
238 + rfe #1340812 [interface] Show numbers of columns in table structure.
239 + rfe #1186511 [inrerface] Add link to reload navigation frame.
240 + rfe #2936156 [auth] Signon authentication forwards error message through session data.
241 + rfe #2835109 [interface] Move ^1 to the end of message.
242 + rfe #854911  [interface] Grey out non applicable actions in structure 
243 + [interface] Allow to create new table from navigation frame (in light mode).
244 + rfe #1025696 [browse] Add direct download of binary fields.
245 - [browse] Properly display NULL value for BLOB.
246 - rfe #1516803 [edit] Allow to set BLOB to/from NULL with ProtectBinary.
247 - [edit] Do not default to UNHEX when using file upload.
248 - rfe #1379201 [core] Add option to configure session_save_path.
249 + [interface] Provide links to documentation in highlighted SQL.
250 + [interface] It is now possible to bookmark most pages in JS capable browser.
251 - bug #2936482 [core] Fix SSL detection.
252 + rfe #2937850 [doc] Add some hints to chk_rel.php for quick setup.
253 + rfe #2938579 [interface] Add class to some elements for easier theming.
254 + rfe #2937840 [doc] Add some interesting configs to config.sample.inc.php.
255 + rfe #2792992 [doc] Added advice to re-login after changing pmadb settings
256 + patch #2952353 [interface] Prefill "Copy table to" in tbl_operations.php, thanks to iinl
257 + [lang] Add English (United Kingdom) translation, thanks to Robert Readman.
258 + patch #2948421 [auth] HTTP Basic auth realm name,
259   thanks to Harald Jenny - haraldj
260 - bug #2954916 [interface] Do not insert doc links to not formatted SQL.
261 + [lang] Chinese Simplified update, thanks to Shanyan Baishui - rimyxp 
262 + [lang] Turkish update, thanks to Burak Yavuz
263 + rfe #2963310 [interface] Focus TEXTAREA "sql_query" on click on "SQL" link
264 + [lang] Uzbek update, thanks to Orzu Samarqandiy
265 + rfe #2958013 [import] After import, also list uploaded filename, thanks
266   to Pavel Konnikov and Herman van Rink
267 + patch #2974341 [structure] Clicking on table name in db Structure should 
268   Browse the table if possible, thanks to bhdouglass - dougboybhd
269 + patch #2975533 [search] New search operators, thanks to
270   Martynas Mickevičius
271 + patch #2967320 [designer] Colored relations based on the primary key,
272   thanks to GreenRover - greenrover
273 - [core] Provide way for vendors to easily change paths to config files.
274 + patch #2979922, rfe #2804874 [interface] Add inline query editing, thanks to Muhammd Adnan.
275 - bug #2966752 [setup] Allow to configure changes tracking in setup script.
276 + patch #2981165 [edit] Optionally disable the Type column, 
277   thanks to Brian Douglass - bhdouglass
278 + patch #2984058 [edit] Buttons for quicky creating common SQL queries, thanks
279   to sutharshan.
280 + patch #2984337 [interface] Convert loading of export/import to jQuery ready
281   event, thanks to sutharshan.
282 - [edit] CURRENT_TIMESTAMP is also valid for datetime fields.
283 - patch #2985068 [engines] Fix parsing of PBXT status, thanks to Madhura Jayaratne.
284 - patch #2986073 [interface] Convert upload progress bar to jQuery, thanks to
285   Philip Frank.
286 - patch #2983960 [interface] Add javascript validation of datetime input,
287   thanks to Sutharshan Balachandren.
288 - rfe #2981999 [interface] Default sort order is now SMART.
289 - rfe #2972969 [interface] Fix flipping of headers in non-IE browsers.
290 + rfe #2964518 [interface] Allow to choose servers from configuration for
291   synchronisation.
292 + rfe #2988633 [relation] Improve ON DELETE/ON UPDATE drop-downs
293 + rfe #2988629 [relation] Improve labels in relation view 
294 + rfe #2983207, patch #2988715 [interface] Use jQuery calendar dialog, thanks
295   to Muhammad Adnan.
296 + [doc] Incorporate synchronisation docs into main document.
297 + [core] Include Content Security Policy HTTP headers.
298 - bug #3004216 [CSS] Field attributes use inline CSS
299 - patch #2999595, rfe #2998130 [interface] Cleanup navigation frame.
300 - patch #3025161 [core] Prevent sending of unnecessary cookies, 
301   thanks to Piotr Przybylski  - crackpl
302 - bug [password] Generate password only available if JS is enabled
303   (fixed for Privileges and Change password)
304 - [core] RecodingEngine now accepts none as valid option.
305 + [core] Dropped AllowAnywhereRecoding configuration variable.
306 - rfe #3016457 [interface] Define tab order in SQL form to allow easier tab
307   navigation.
308 + [core] Centralized format string expansion, @VARIABLES@ are recommended way
309   now, used by file name templates, default queries, export and title
310   generating.
311 + [validator] SQL validator works also with SOAP PHP extension.
312 - [interface] Better formatting for SQL validator results.
313 - [doc] The linked-tables infrastructure is now called phpMyAdmin
314   configuration storage.
315 - [interface] Move drop/empty links from being tabs to Operations tab.
316 - [interface] Fixed rendering of error/notice/info titles background.
317 - patch #3038293 [doc] Language and grammar fixes,
318   thanks to Isaac Bennetch - ibennetch
319 - patch #3038312 [export] JSON export, 
320   thanks to Hauke Henningsen - blubberkeks152
321 - rfe #1494550 [interface] Editor for SET/ENUM fields.
322 - rfe #2649375 [interface] Simplified interface to backup/restore.
323 - rfe #2973909 Users preferences
324 - [relations] Dropped WYSIWYG-PDF configuration variable.
325 - rfe #806035, #686260 [relations] Export relations to Dia, SVG and others
326 + [interface] Added charts to status tab, profiling page and query results
327 + [interface] AJAXification on various pages 
328 - [core] Remove last remaining parts of profiling code which was removed in 2006.
329 - bug #3042665 [parser] Add workaround for MySQL way of handling backtick.
330 - bug #3056610 [interface] Removed modification options for information_schema 
331 + patch #3055886 [config] Add Left frame table filter visibility config option, thanks to eesau
332 - [core] Force generating of new session on login
333 + rfe #1105678 [interface] Drop page-break-before as it is useless for smaller
334   tables.
335 + rfe #2956556 [interface] Allow to wrap enum values.
336 - bug #1669459 [interface] Do not automatically mark PDF schema rows to delete
337 - bug #3087682 [interface] Do not apply LeftFrameDBSeparator on first character.
338 + rfe #3111455 [interface] Column highlighting and marking in table view
339 + Visual query builder
340 - bug #3115519 [interface] Prevent long queries from being shown in confirmation popup
341 - patch #3112792 [navi] Left panel table grouping incorrect,
342   thanks to garas - garas
343 - bug #3123433 [interface] Avoid double escaping of MySQL errors.
344 - [interface] Use less noisy message and remove disable link on server charts and database statistics.
345 + rfe #3141330 [relation] When displaying results, show a link to the foreign 
346   table even when phpMyAdmin configuration storage is not active
347 - bug #3141327 [relation] Foreign key input options
348 - [export] Better handling of export to PHP array.
349 - rfe #3158867 [privileges] No DROP DATABASE warning if you delete a user
350 - [interface] Add link to documentation for status variables.
351 - [security] Redirect external links to avoid Referer leakage.
352 - [interface] Default to not count tables in database.
353 - patch #3172172 [interface] Shortcut for copying table row.
354 - bug #3175227 [auth] Reset user cache on login.
355 - rfe #3148361 [interface] Replace hard coded limit with $cfg['LimitChars'].
356 - bug #3177136 [interface] Indicate that bookmark is being used on browse.
357 - [interface] Indicate shared bookmarks in interface.
358 - patch #3176420 [Search] Ajaxify browse and delete criteria in DB Search,
359   thanks to Thilanka Kaushalya
360 - [interface] New default theme pmahomme, dropped darkblue_orange theme.
361 - rfe #2936155 [auth] Allow to pass additional parameters using signon method.
362 - rfe #1640812 [auth] Add example for OpenID authentication using signon method.
363 - rfe #1312657 [dbi] Default to mysqli extension.
364 - rfe #1168350 [interface] Add clear button to SQL edit box.
365 - [core] Update library PHPExcel to version 1.7.6
366 - bug #3206876 [core] Work without mbstring installed.
367 - rfe #3196075, patch #3212068 [interface] Add links to variables documentation.
368 - bug #3208723 [import] Fix import of utf-8 XML files.
369 - bug #3039384 [auth] Force signon auth on signon URL change.
370 - bug #3168733 [core] Synchronization does not honor AllowArbitraryServer
371 - bug #3134495 [synchronization] Data containing single quotes prevents sync,
372   thanks to jviewer
373 - Remove the custom color picker feature
374 - bug #3285929 [privileges] Don't fail silently on missing priviledge to execute REVOKE ALL PRIVILEGES
376 3.3.11.0 (not yet released)
378 3.3.10.1 (2011-05-20)
379 - [security] XSS on Tracking page
381 3.3.10.0 (2011-03-19)
382 - patch #3147400 [structure] Aria table size printed as unknown,
383   thanks to erickoh75 - erickoh75
384 - patch #3150164 [structure] Ordering by size gives incorrect results,
385   thanks to Madhura Jayaratne - madhuracj 
386 - bug #3153409 [core] 0 row(s) affected 
387 - bug #3155842 [core] Edit relational page and page number
388 - [security] Minor security fixes, see PMASA-2010-9 and PMASA-2010-10
389 - [lang] German update, thanks to to jannicars@users.sourceforge.net.
391 3.3.9.2 (2011-02-11)
392 - [security] SQL injection, see PMASA-2011-2
394 3.3.9.1 (2011-02-08)
395 - [security] Path disclosure, see PMASA-2011-1
397 3.3.9.0 (2011-01-03)
398 - bug [doc] Fix references to MySQL doc
399 - patch #3101490 Default function for TIMESTAMP, thanks to jirand - jirand
400 - bug #3103853 [js] Double quotes were not escaped in generated js
401 - bug #3077463 [core] Events were not copied when copying/renaming database
402 - bug #1762306 [core] Copy database with view of a view
403 - patch #3117535 [replication] Add quotes to database in initial statement,
404   thanks to Craig Duncan - duncan3dc
405 - bug #3112614 [pdf schema] Scratchboard for PDF pages not working
406 - bug #3125606 [parser] Query for table "level" causes strange display
407 - bug #3127904 [parser] Close all opened round brackets indents
409          --- Older ChangeLogs can be found on our project website ---
410                      http://www.phpmyadmin.net/old-stuff/ChangeLogs/
412 # vim: et ts=4 sw=4 sts=4
413 # vim: ft=changelog fenc=utf-8
414 # vim: fde=getline(v\:lnum-1)=~'^\\s*$'&&getline(v\:lnum)=~'\\S'?'>1'\:1&&v\:lnum>4&&getline(v\:lnum)!~'^#'
415 # vim: fdn=1 fdm=expr