diff -Nru jedit-5.4.0+dfsg/build.xml jedit-5.5.0+dfsg/build.xml --- jedit-5.4.0+dfsg/build.xml 2017-03-18 13:30:34.000000000 +0000 +++ jedit-5.5.0+dfsg/build.xml 2018-04-08 23:59:23.000000000 +0000 @@ -580,10 +580,17 @@ - + + value="unix-x64"/> + + + + + + @@ -591,14 +598,24 @@ - + + + + + + + + - + - - - - - Sun, 22 Apr 2018 09:43:35 -0700 + jedit (5.4.0+dfsg-3) unstable; urgency=medium * Team upload. diff -Nru jedit-5.4.0+dfsg/debian/control jedit-5.5.0+dfsg/debian/control --- jedit-5.4.0+dfsg/debian/control 2018-03-22 14:55:01.000000000 +0000 +++ jedit-5.5.0+dfsg/debian/control 2018-04-22 16:43:35.000000000 +0000 @@ -23,7 +23,7 @@ xsltproc Build-Conflicts: junit Build-Depends-Indep: default-jdk (>= 2:1.8) -Standards-Version: 4.1.3 +Standards-Version: 4.1.4 Vcs-Git: https://anonscm.debian.org/git/pkg-java/jedit.git Vcs-Browser: https://anonscm.debian.org/cgit/pkg-java/jedit.git Homepage: http://www.jedit.org/ diff -Nru jedit-5.4.0+dfsg/debian/rules jedit-5.5.0+dfsg/debian/rules --- jedit-5.4.0+dfsg/debian/rules 2018-03-22 14:55:01.000000000 +0000 +++ jedit-5.5.0+dfsg/debian/rules 2018-04-22 16:43:35.000000000 +0000 @@ -56,12 +56,3 @@ rm -f debian/jedit.menu debian/jedit.desktop debian/jedit.debhelper.log # bsh: clean rm -rf org/gjt/sp/jedit/bsh bsh - - -get-orig-source: - uscan --verbose --download-version $(VERSION) --force-download --repack --rename - -mkdir $(TMPDIR) && tar -C $(TMPDIR) -zxf ../jedit_$(VERSION).orig.tar.gz - rm -f ../jedit_$(VERSION).orig.tar.gz - cd $(TMPDIR) && tar --exclude org/gjt/sp/jedit/bsh \ - -Jcf ../../jedit_$(VERSION)+dfsg.orig.tar.xz * - rm -rf $(TMPDIR) diff -Nru jedit-5.4.0+dfsg/debian/watch jedit-5.5.0+dfsg/debian/watch --- jedit-5.4.0+dfsg/debian/watch 2018-03-22 14:55:01.000000000 +0000 +++ jedit-5.5.0+dfsg/debian/watch 2018-04-22 16:43:35.000000000 +0000 @@ -1,6 +1,7 @@ version=4 opts="uversionmangle=s/pre/~pre/,\ - dversionmangle=s/\+dfsg//,\ + dversionmangle=s/\+dfsg\d*$//,\ repack,\ + repacksuffix=+dfsg,\ compression=xz" \ http://sf.net/jedit/jedit(\d\S+)source.tar.bz2 diff -Nru jedit-5.4.0+dfsg/doc/CHANGES.txt jedit-5.5.0+dfsg/doc/CHANGES.txt --- jedit-5.4.0+dfsg/doc/CHANGES.txt 2017-03-18 13:30:21.000000000 +0000 +++ jedit-5.5.0+dfsg/doc/CHANGES.txt 2018-04-09 22:23:40.000000000 +0000 @@ -1,161 +1,129 @@ -jEdit 5.4 version history - (changes since jEdit 5.3.0) +jEdit 5.5 version history + (changes since jEdit 5.4.0) :encoding=UTF-8: -{{{ Version 5.4.0 +{{{ Version 5.5.0 -Thanks to Björn "Vampire" Kautler, Eric Le Lay, Jesse Pavel, Wayne Zhang, -Makarius, A Vontobel, Marc Häfner, Jordan Miner, Jack J. Woehr, Alan Ezust, -Adam S, Jean-Francois Larvoire, Wim West and Dale Anson for contributing to this -release. +Thanks to Björn "Vampire" Kautler, AdamS, Wim West, M. Cesar R. Lacruz, +Egor Abramovich, Hrotkó Gábor, Alan Ezust, Dale Anson, Roman Tsourick, +Rafal Kolanski, Uwe Stöhr, Matthieu Casanova, A. Vontobel and Jesse Pavel for +contributing to this release. {{{ Bug Fixes -- Add NSSupportsAutomaticGraphicsSwitching to JarBundler so that jEdit does not - drain the battery unnecessarily on OS X. - (feature request #529 - Björn "Vampire" Kautler) +- Fix and cleanup various localization properties (Björn "Vampire" Kautler) -- Bug 3857 fixed, related to resolving symlinks of buffers and checking for - updated buffers (Patch # 589 - Wim West) +- Make the Display_Shortcuts.bsh macro work properly (Björn "Vampire" Kautler) -- Fix bug #2732 - syntax highlighting broken if non-visible lines change - (Patch #580 - Marc Häfner) +- Do not manipulate filename when opening a probably backup file but let the + user choose what to do as intended (Björn "Vampire" Kautler) -- Fix bug #3659 - Macro Keywords_to_Upper_Case fails to find class - (Patch #582 - Marc Häfner) +- Fix jEdit backup filename recognition (Björn "Vampire" Kautler) -- Fix bug #3949 - Macro Display_Shortcuts show no/wrong results - (Patch #581 - Marc Häfner) +- Do not use translated strings to match log lines within activity.log in + Make_Bug_Report.bsh (Björn "Vampire" Kautler) -- Fix bug #3944: Select All checkbox initially disabled. (Alan Ezust) +- Support Java 9 and newer in the Windows EXE launcher + (Bug #4064 - Björn "Vampire" Kautler) -- Fix bug #3983: filename completion prefered longest filename when no - match with exact length was found. Prefer the first one (Eric Le Lay) +- Fix splash screen progress call count not being equal in all code branches / + parameter combinations (Björn "Vampire" Kautler) -- Fix bug #3913: beanshell do-while loop bug (Patch #572 Jesse Pavel) +- Fix splash screen progress count, so that the progress bar finally reaches + the right end (Björn "Vampire" Kautler) -- Fix Java_File_Save macro: accept text after class name (Eric Le Lay) +- Fix a bug preventing jEdit from loading when a buffer has an invalid + selection and is loaded in two edit panes (Matthieu Casanova) -- Fix bug #3936, better choice for text area corner colors (Dale Anson) +- RegisterViewer editable contentPane fixed (Patch #598, Jesse Pavel) -- Fix bug #3717, gutter lines not aligning with text area lines (Dale Anson) +- Command line behavior for +line fixed (Patch #590 - Wim West) -- Fix bug #3937, issue with non-capturing groups in regex search and replace - (Dale Anson) - -- Fix bug #3924, changes to mode files are not detected when ~/.jedit/modes - is a symlink. (Dale Anson) - -- Fix bug #3920, cannot change alpha value of a color in the syntax highlighting - settings. (Dale Anson) - -- Fix bug #3943, issues with move lines up and down macros. (Dale Anson) - -- Fix bug #3923, documentation bug about where auto-saved files are saved. - (Dale Anson) - -- Fix bug #3916, null pointer exception in ChunkCache. (Dale Anson) - -- Add missing source and target version to compile-installer task to not - accidentally get an installer that needs a newer Java version than jEdit - itself does. (Björn "Vampire" Kautler) +- Autosave Untitled Buffers is now persistent across sessions + (Feature Request #501, Patch #596, Patch #614, Fix Bug #4059 - Hrotkó Gábor) -- Use new version of JarBundler that also sets LSApplicationCategoryType and - NSHighResolutionCapable. (Björn "Vampire" Kautler) +- Fixed a number of bugs in the new jEdit printing system (Dale Anson) -- Set default colors for foreground and background in syntax highlighting - style editor. (Dale Anson) +- Add missing local properties to Insert_Buffer_Properties macro + (Patch #599 - Jesse Pavel) -- Fix plugin bug #1853 XML plugin crashes on JDK9. Don't pre-connect - the returned URLConnection in jeditresource: protocol handler (Eric Le Lay) +- Fixed an issue with the activity log viewer so that setting the number of + lines in the log actually works. (Dale Anson) -- Fix bug #3994, ConcurrentModificationException in ProperyManager. (Dale Anson) +- Fix for bug #3971, exception trying to set WM_CLASS. (Dale Anson) -- Fix bug #4002, too short horizontal scrollbar after view resize. (Dale Anson) - -- Fix bug #3773, InvocationTargetException with negative printing tab width. +- Fix for bug #4047, illegal reflective access operation with Java 9. (Dale Anson) -- Fix bug # 2844, printing range bug. (Dale Anson) - -- Delete a user mode from the catalog even if the mode file is missing - (Eric Le Lay) +- Fix Bug #4011, The Cut Lines macro gives exception if the cursor is beyond + text area (Patch #600, Roman Tsourick) -- Plugin Manager: fix missing newline between released and description for - plugins without dependencies. Add extra newline for clarity. (Eric Le Lay) - -- Fix bug # 3998, Next Char macro doesn't work. (Dale Anson) +- Fix for bug #541, let ESC key close the print dialog. (Dale Anson) }}} {{{ UI Improvements -- Feature Request #520 Environment variables in Find dialog Directory - (Alan Ezust) +- Consistently use lowercase status bar indicators for disabled settings + (Björn "Vampire" Kautler) -- UI clean up, button spacing, borders, etc. (Dale Anson) +- Allow specification of fallback font sizes (Patch #569, Rafal Kolanski) -- Implemented feature request #493, ask for confirmation before closing all - buffers. (Dale Anson) +- Show tooltips in ShortcutOptionPane table (FR# 538, Roman Tsourick) -- Refactor editing option pane into several tabs, allow user editing of modes - lists, similar to editing the encoding options lists. This also fixes - feature request #515. (Dale Anson) +- FSB: Disable first column dragging (Patch# 603, Roman Tsourick) -- Updated NumericTextField to allow decimal numbers and only allow negative sign - at the start of a number. (Dale Anson) +- FSB: Sorting icon not following header when moving + (Bug# 4049, Patch# 604, Roman Tsourick) }}} {{{ Miscellaneous -- Updated printing system with jEdit specific printer dialog, accurate page - range printing, current page printing, printing of selected text only, ability - to show page breaks in the text area. (Dale Anson) - -- The plugin manager now uses a different URL scheme where the mirror is a URL - parameter and not part of the hostname anymore and follows URL redirection - properly. This way a file can always be downloaded as we get redirected to a - mirror that has the requested file available. Now dead mirrors do not cause - the download to fail anymore due to unknown hostname and files that are only - available on few mirrors (seldom downloaded files are only available on one - mirror sometimes) also work properly. The selected mirror is just the - preferred one that is used if the file is available there, just as the label - always suggested anyway. (Björn "Vampire" Kautler) +- FR #506, FR #536: Autosaves are now saved to the Autosave directory, if + specified. (Alan Ezust, Hrotkó Gábor) -}}} -{{{ API Changes - -- jEdit now requires/can make use of Java 1.8 language / libraries. +- FR #175: Saving and backup option, "Never Mark Untitled Buffers Dirty" changed + name and behavior to "Close Dirty Untitled buffers without confirmation" + (Alan Ezust) -- new org.gjt.sp.utils.GenericGUIUtilities class, containing bits of - org.gjt.sp.jedit.GUIUtilities suitable for the standalone TextArea - package; all methods kept but deprecated and proxies (Eric Le Lay). +- Patch #612, fr #518: buffer lock (Roman Tsourick) -- refactor Help table of contents loading code to a separate class - (HelpTOCLoader). Make relevant members public, so the help TOC - is accessible to other code, e.g. the HelpServer plugin (Eric Le Lay). +- Enhancements of russian localization (Roman Tsourick) }}} {{{ Editing -- Batch mode updates (Patch #594 - Jean-Francois Larvoire) +- Shipped JavaDocs are now working properly if viewed with a browser as + JavaScript parts are no longer stripped off, just the noscript tags that + inform about disabled JavaScript are removed. ((Björn "Vampire" Kautler) + +- Patch #607: C and C++ mode updates (Roman Tsourick) + +- Patch #613: javascript mode update (up to ES 2017) (Roman Tsourick) + +- Patch #608, bug #2106: PHP mode "//" comment syntax highlighting is incorrect + (Roman Tsourick) + +- Patch #609, bug #2194: ASP Syntax highlight bug w/comment (Roman Tsourick) -- Unicode brackets (Patch #566 - Makarius) +- Patch #610, bug #4054: hash comment highlighting in mysql mode + (Roman Tsourick) -- Updates for objectrexx mode (Patch #585 - Jack J. Woehr) +- Patch #611, bug #3249: assembler-x86 comment directive (Roman Tsourick) -- Mode for m4 macro processor language (Patch #586 - Jack J. Woehr) +- nsis2 mode updates (Uwe Stöhr - Patch #606) -- Drawj2d edit mode (Patch #573 - A. Vontobel) +- Draw2d mode updates (A.Vontobel - Patch #605) -- Rust edit mode raw string fix (Patch #575 - Jordan Miner) +- Add Gherkin mode (english) to support Cucumber feature files + (Matthieu Casanova) -- Mode for Mavscript 2.0 (Patch #574 - A. Vontobel) +- Patch #593 - Various small patches to modes (AdamS) -- New mode for swift (Patch #587 - Wayne Zhang) +- Patch #592 - for groovy mode (Egor Abramovich) -- New mode for Java 9 module-info.java files (Dale Anson) +- Patch #595 - New Assembly-arm32 edit mode (M. Cesar R. Lacruz) -- Updated CSS mode provided by AdamS (Ticket #4003 - Dale Anson) +- Updated java-module-info mode (Dale Anson) }}} diff -Nru jedit-5.4.0+dfsg/doc/FAQ/faq.xml jedit-5.5.0+dfsg/doc/FAQ/faq.xml --- jedit-5.4.0+dfsg/doc/FAQ/faq.xml 2017-03-18 13:30:21.000000000 +0000 +++ jedit-5.5.0+dfsg/doc/FAQ/faq.xml 2018-04-08 23:58:58.000000000 +0000 @@ -88,7 +88,7 @@ 1.4 2006,2017 Alan Ezust - Updates for jEdit 4.3-5.4 releases + Updates for jEdit 4.3-5.5 releases diff -Nru jedit-5.4.0+dfsg/doc/stylesheet.css jedit-5.5.0+dfsg/doc/stylesheet.css --- jedit-5.4.0+dfsg/doc/stylesheet.css 2017-03-18 13:30:22.000000000 +0000 +++ jedit-5.5.0+dfsg/doc/stylesheet.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,473 +0,0 @@ -/* Javadoc style sheet, customized so it can be viewed in - the old Swing Browser that comes with the JRE. */ - -body { - background-color:#ffffff; - color:#353833; - font-family:Arial, Helvetica, sans-serif; -/* font-size:76%; */ - margin:0; -} -a:link, a:visited { - text-decoration:none; - color:#4c6b87; -} -a:hover, a:focus { - text-decoration:none; - color:#bb7a2a; -} -a:active { - text-decoration:none; - color:#4c6b87; -} -a[name] { - color:#353833; -} -a[name]:hover { - text-decoration:none; - color:#353833; -} -pre { - font-size:1.3em; -} -h1 { - font-size:1.8em; -} -h2 { - font-size:1.5em; -} -h3 { - font-size:1.4em; -} -h4 { - font-size:1.3em; -} -h5 { - font-size:1.2em; -} -h6 { - font-size:1.1em; -} -ul { - list-style-type:disc; -} -code, tt { - font-size:1.2em; -} -dt code { - font-size:1.2em; -} -table tr td dt code { - font-size:1.2em; - vertical-align:top; -} -sup { - font-size:.6em; -} -/* -Document title and Copyright styles -*/ -.clear { - clear:both; - height:0px; - overflow:hidden; -} -.aboutLanguage { - float:right; - padding:0px 21px; - font-size:.8em; - z-index:200; - margin-top:-7px; -} -.legalCopy { - margin-left:.5em; -} -.bar a, .bar a:link, .bar a:visited, .bar a:active { - color:#FFFFFF; - text-decoration:none; -} -.bar a:hover, .bar a:focus { - color:#bb7a2a; -} -.tab { - background-color:#0066FF; - background-image:url(resources/titlebar.gif); - background-position:left top; - background-repeat:no-repeat; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} -/* -Navigation bar styles -*/ -.bar { - background-image:url(resources/background.gif); - background-repeat:repeat-x; - color:#FFFFFF; - padding:.8em .5em .4em .8em; - height:auto;/*height:1.8em;*/ - font-size:1em; - margin:0; -} -.topNav { - background-image:url(resources/background.gif); - background-repeat:repeat-x; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; -} -.bottomNav { - margin-top:10px; - background-image:url(resources/background.gif); - background-repeat:repeat-x; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; -} -.subNav { - background-color:#dee3e9; - border-bottom:1px solid #9eadc0; - float:left; - width:100%; - overflow:hidden; -} -.subNav div { - clear:left; - float:left; - padding:0 0 5px 6px; -} -ul.navList, ul.subNavList { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.navList li{ - list-style:none; - float:left; - padding:3px 6px; -} -ul.subNavList li{ - list-style:none; - float:left; -/* font-size:90%; */ -} -.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { - color:#FFFFFF; - text-decoration:none; -} -.topNav a:hover, .bottomNav a:hover { - text-decoration:none; - color:#bb7a2a; -} -.navBarCell1Rev { - background-image:url(resources/tab.gif); - background-color:#a88834; - color:#FFFFFF; - margin: auto 5px; - border:1px solid #c9aa44; -} -/* -Page header and footer styles -*/ -.header, .footer { - clear:both; - margin:0 20px; - padding:5px 0 0 0; -} -.indexHeader { - margin:10px; - position:relative; -} -.indexHeader h1 { - font-size:1.3em; -} -.title { - color:#2c4557; - margin:10px 0; -} -.subTitle { - margin:5px 0 0 0; -} -.header ul { - margin:0 0 25px 0; - padding:0; -} -.footer ul { - margin:20px 0 5px 0; -} -.header ul li, .footer ul li { - list-style:none; - font-size:1.2em; -} -/* -Heading styles -*/ -div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { - background-color:#dee3e9; - border-top:1px solid #9eadc0; - border-bottom:1px solid #9eadc0; - margin:0 0 6px -8px; - padding:2px 5px; -} -ul.blockList ul.blockList ul.blockList li.blockList h3 { - background-color:#dee3e9; - border-top:1px solid #9eadc0; - border-bottom:1px solid #9eadc0; - margin:0 0 6px -8px; - padding:2px 5px; -} -ul.blockList ul.blockList li.blockList h3 { - padding:0; - margin:15px 0; -} -ul.blockList li.blockList h2 { - padding:0px 0 20px 0; -} -/* -Page layout container styles -*/ -.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { - clear:both; - padding:10px 20px; - position:relative; -} -.indexContainer { - margin:10px; - position:relative; - font-size:1.0em; -} -.indexContainer h2 { - font-size:1.1em; - padding:0 0 3px 0; -} -.indexContainer ul { - margin:0; - padding:0; -} -.indexContainer ul li { - list-style:none; -} -.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { - font-size:1.1em; - font-weight:bold; - margin:10px 0 0 0; - color:#4E4E4E; -} -.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { - margin:10px 0 10px 20px; -} -.serializedFormContainer dl.nameValue dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -.serializedFormContainer dl.nameValue dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* -List styles -*/ -ul.horizontal li { - display:inline; - font-size:0.9em; -} -ul.inheritance { - margin:0; - padding:0; -} -ul.inheritance li { - display:inline; - list-style:none; -} -ul.inheritance li ul.inheritance { - margin-left:15px; - padding-left:15px; - padding-top:1px; -} -ul.blockList, ul.blockListLast { - margin:10px 0 10px 0; - padding:0; -} -ul.blockList li.blockList, ul.blockListLast li.blockList { - list-style:none; - margin-bottom:25px; -} -ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { - padding:0px 20px 5px 10px; - border:1px solid #9eadc0; - background-color:#f9f9f9; -} -ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { - padding:0 0 5px 8px; - background-color:#ffffff; - border:1px solid #9eadc0; - border-top:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { - margin-left:0; - padding-left:0; - padding-bottom:15px; - border:none; - border-bottom:1px solid #9eadc0; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { - list-style:none; - border-bottom:none; - padding-bottom:0; -} -table tr td dl, table tr td dl dt, table tr td dl dd { - margin-top:0; - margin-bottom:1px; -} -/* -Table styles -*/ -.contentContainer table, .classUseContainer table, .constantValuesContainer table { - border-bottom:1px solid #9eadc0; - width:100%; -} -.contentContainer ul li table, .classUseContainer ul li table, .constantValuesContainer ul li table { - width:100%; -} -.contentContainer .description table, .contentContainer .details table { - border-bottom:none; -} -.contentContainer ul li table th.colOne, .contentContainer ul li table th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li table th, .constantValuesContainer ul li table th, .contentContainer ul li table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer ul li table td.colLast, .classUseContainer ul li table td, .constantValuesContainer ul li table td{ - vertical-align:top; - padding-right:20px; -} -.contentContainer ul li table th.colLast, .classUseContainer ul li table th.colLast,.constantValuesContainer ul li table th.colLast, -.contentContainer ul li table td.colLast, .classUseContainer ul li table td.colLast,.constantValuesContainer ul li table td.colLast, -.contentContainer ul li table th.colOne, .classUseContainer ul li table th.colOne, -.contentContainer ul li table td.colOne, .classUseContainer ul li table td.colOne { - padding-right:3px; -} -.overviewSummary caption, .packageSummary caption, .contentContainer ul.blockList li.blockList caption, .summary caption, .classUseContainer caption, .constantValuesContainer caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:#FFFFFF; - font-weight:bold; - clear:none; - overflow:hidden; - padding:0px; - margin:0px; -} -caption a:link, caption a:hover, caption a:active, caption a:visited { - color:#FFFFFF; -} -.overviewSummary caption span, .packageSummary caption span, .contentContainer ul.blockList li.blockList caption span, .summary caption span, .classUseContainer caption span, .constantValuesContainer caption span { - white-space:nowrap; - padding-top:8px; - padding-left:8px; - display:block; - float:left; - background-image:url(resources/titlebar.gif); - height:18px; -} -.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer .tabEnd, .constantValuesContainer .tabEnd { - width:10px; - background-image:url(resources/titlebar_end.gif); - background-repeat:no-repeat; - background-position:top right; - position:relative; - float:left; -} -ul.blockList ul.blockList li.blockList table { - margin:0 0 12px 0px; - width:100%; -} -.tableSubHeadingColor { - background-color: #EEEEFF; -} -.altColor { - background-color:#eeeeef; -} -.rowColor { - background-color:#ffffff; -} -.overviewSummary td, .packageSummary td, .contentContainer ul.blockList li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer td { - text-align:left; - padding:3px 3px 3px 7px; -} -th.colFirst, th.colLast, th.colOne, .constantValuesContainer th { - background:#dee3e9; - border-top:1px solid #9eadc0; - border-bottom:1px solid #9eadc0; - text-align:left; - padding:3px 3px 3px 7px; -} -td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { - font-weight:bold; -} -td.colFirst, th.colFirst { - border-left:1px solid #9eadc0; - white-space:nowrap; -} -td.colLast, th.colLast { - border-right:1px solid #9eadc0; -} -td.colOne, th.colOne { - border-right:1px solid #9eadc0; - border-left:1px solid #9eadc0; -} -table.overviewSummary { - padding:0px; - margin-left:0px; -} -table.overviewSummary td.colFirst, table.overviewSummary th.colFirst, -table.overviewSummary td.colOne, table.overviewSummary th.colOne { - width:25%; - vertical-align:middle; -} -table.packageSummary td.colFirst, table.overviewSummary th.colFirst { - width:25%; - vertical-align:middle; -} -/* -Content styles -*/ -.description pre { - margin-top:0; -} -.deprecatedContent { - margin:0; - padding:10px 0; -} -.docSummary { - padding:0; -} -/* -Formatting effect styles -*/ -.sourceLineNo { - color:green; - padding:0 30px 0 0; -} -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:.9em; -} -.block { - display:block; - margin:3px 0 0 0; -} -.strong { - font-weight:bold; -} diff -Nru jedit-5.4.0+dfsg/doc/users-guide/basics.xml jedit-5.5.0+dfsg/doc/users-guide/basics.xml --- jedit-5.4.0+dfsg/doc/users-guide/basics.xml 2017-03-18 13:30:21.000000000 +0000 +++ jedit-5.5.0+dfsg/doc/users-guide/basics.xml 2018-04-08 23:58:57.000000000 +0000 @@ -189,42 +189,37 @@
- Buffer Sets + Buffer Sets and closing buffers - The buffer sets feature helps keep the buffer lists local and manageable when using - jEdit in a multiple-View and multiple-EditPane environment. + The Buffer Sets feature helps keep the buffer lists + local and manageable when using jEdit in a multiple-View and multiple-EditPane environment. - As mentioned in the previous section, each EditPane can show a Buffer - Switcher, which displays the contents of a BufferSet. In jEdit 4.2, all EditPane + As mentioned in the previous section, each Edit Pane can show a Buffer + Switcher, which displays the contents of a Buffer Set. In jEdit 4.2, all EditPane buffer switchers showed the same BufferSet: a global list of all buffers that were opened from any EditPane in any View. When using many Views and EditPanes, this resulted in large lists of buffers, and made the next/previous buffer actions useless with many Views, EditPanes and Buffers. - Since jEdit 4.3, it is possible to have more narrow scopes for the BufferSets - of an EditPane. This makes the 'next-buffer' and 'previous-buffer' actions switch - between buffers that are local to the view or pane. + Since jEdit 4.3, it is possible to have more narrow scopes for the Buffer + Sets of an Edit Pane. This makes the 'next-buffer' and 'previous-buffer' actions + switch between buffers that are local to the view or pane. - The three BufferSet scopes are: + The three BufferSet scopes are: - Global: Includes all buffers + Global: Includes all buffers open from any EditPane. - View: EditPanes in the same View + View: EditPanes in the same View share the same BufferSet. Opening a buffer in one View will not affect the other views. - EditPane: Each EditPane can have + EditPane: Each EditPane can have its own independent BufferSet. - Bufferset scope can be set from Utilities - >Options > - View > - BufferSet scope:. - File > Close removes the current buffer from the EditPane's BufferSet only. If it was the last BufferSet to @@ -245,11 +240,17 @@ Switching Bufferset Scopes - The statusbar shows you which BufferSet scope is active - (look for the letter "G", "E" or "V"). Double-clicking on that - will allow you to change the scope without going into global options. + Bufferset Scope can be set from Utilities + >Options > + View > + BufferSet scope:. + + + The statusbar shows you which BufferSet scope is + active (look for the letter "G", "E" or "V"). Double-clicking on that will allow + you to change the scope without going into global options. - The BufferSet Scope can also be changed from + The BufferSet Scope can also be changed from View>Buffer Sets > (Global|View|EditPane) Buffer Set. A change to the bufferset scope affects all editpanes immediately. @@ -259,12 +260,13 @@ Buffer Switchers and Buffer Sets can be sorted independently. Both can be sorted by name or by path. Both can be left unsorted. Possibly the most useful - combination is to sort the Buffer Switchers and leave the Buffer Sets unsorted. - In this case, it is easy to find the buffer to work with in the Buffer Switcher - since the buffer names are sorted alphabetically, and leaving the Buffer Set unsorted + combination is to sort the Buffer Switchers and leave the Buffer Sets unsorted. In + this case, it is easy to find the buffer to work with in the Buffer Switcher since + the buffer names are sorted alphabetically, and leaving the Buffer Set unsorted means the "go to previous" and "go to next" actions follow the order in which the - buffers were last used rather than by name. However, some users prefer Buffer - Sets to also be sorted by name or path, so jEdit supports multiple sorting methods. + buffers were last used rather than by name. However, some users prefer Buffer Sets + to also be sorted by name or path, so jEdit supports multiple sorting + methods.
diff -Nru jedit-5.4.0+dfsg/doc/users-guide/customizing.xml jedit-5.5.0+dfsg/doc/users-guide/customizing.xml --- jedit-5.4.0+dfsg/doc/users-guide/customizing.xml 2017-03-18 13:30:21.000000000 +0000 +++ jedit-5.5.0+dfsg/doc/users-guide/customizing.xml 2018-04-08 23:58:57.000000000 +0000 @@ -31,7 +31,7 @@ linkend="opening" />) - Whether to show a dialog or auto-reload when + Whether to show a dialog or auto-reload when this buffer's file is changed on disk. @@ -235,26 +235,26 @@ The General pane contains various settings, such as the number of recent files to remember, when to check for changed files, - if the recent file list should be sorted, what current locale to use, - if caret positions or markers in buffers should be saved, - if previously open files or split configurations should be restored on startup, + if the recent file list should be sorted, what current locale to use, + if caret positions or markers in buffers should be saved, + if previously open files or split configurations should be restored on startup, and so on. If Open Buffers Are Changed On Disk... If Do Nothing is selected, then modifications from jEdit will silently clobber changes made from other processes during saves. Don't use this option unless you know what you are doing! Also, changing this - option here only affects newly opened buffers, not the ones that are currently - open. You can also change this setting for individual buffers from + option here only affects newly opened buffers, not the ones that are currently + open. You can also change this setting for individual buffers from Buffer Options. Check for changed buffers upon... This option allows you choose additional times that jEdit checks for changed files on disk. For slow or remote file systems, removing unnecessary - file status checks might improve performance. + file status checks might improve performance. Regardless of the choice here, files are still checked before - save, unless Do Nothing is also selected + save, unless Do Nothing is also selected for the previous option. @@ -297,7 +297,7 @@ The Appearance pane can be used to change the appearance of user interface controls such as buttons, - labels and menus. It can also be used to change the icon set, or + labels and menus. It can also be used to change the icon set, or look and feel, enable/disable the splash screen or system tray, and other appearance tweaks. You can also set the number of items retained in history text fields, see . @@ -324,9 +324,9 @@ It is possible to configure jEdit to automatically load and/or save Docking Layouts (similar to eclipse perspectives) based on the edit mode of your current buffer through the checkboxes in this pane. See . - jEdit also supports alternate docking frameworks. If + jEdit also supports alternate docking frameworks. If the appropriate plugins are installed (Currently only MyDoggy - is available), you can change docking frameworks from here. + is available), you can change docking frameworks from here. @@ -337,7 +337,7 @@ The Editing option pane contains 3 tabs where settings such as the tab size, syntax highlighting and soft tabs on a global or mode-specific basis are made. - + The Mode Settings tab allows adjusting specific settings per mode. Changing these options does not change XML mode definition files on disk; it merely writes values to the user properties file which override those set in mode files. To find out how to edit mode files directly, see . Some of these options can be further overridden on an individual file basis through the use of buffer-local properties. @@ -352,13 +352,13 @@ The Deep Indent option instructs jEdit to indent subsequent lines so that they line up with the open bracket on the previous line. - + The Edit Modes tab provides a setting to choose the default edit mode, the edit modes to display in the various 'mode' choosers, and the ability to manually add a new edit mode. Since there are now over 200 modes that jEdit recognizes, having the ability to reduce the number of choices in the 'mode' choosers to those needed by a user is a nice feature. - + This tab also provides a way to easily add and delete user modes. - + The Undo Settings tab allows setting the number of undo and whether to reset the undo history on save. @@ -440,11 +440,26 @@ The Gutter option pane contains settings to customize the appearance of the gutter. You can - customize values such as + customize values such as "minimal number of digits to reserve for line numbers", and "fold style". See . +
+ The Large Files Pane + + This option pane allows the user to customize how jEdit should handle + large files. There is a radio-button with 4 choices, allowing you to + pop up a dialog asking the user each time, or automatically lower the level of + syntax highlighting and disable soft-wrap to speed things things up + (or use less battery). + + The jEdit properties longLineLimit and + largeBufferSize can be customized to change + which buffers jEdit considers 'large'. + +
+
The Mouse Pane @@ -463,24 +478,24 @@ chooser for the desired download mirror, as well as various settings such as the directory where plugins are to be installed. In addition, you can set the time in minutes that the pluginlist can be cached from jedit.org, helping to reduce the server load. See . - + If the option Disable Obsolete Plugins is checked, then plugins that were released on Plugin Manager will be checked against the plugins you have - installed, for those with a maximum jEdit version that is lower than the one you are + installed, for those with a maximum jEdit version that is lower than the one you are running. Plugins are marked with a maximum jEdit version when they are found to be broken or somehow - incompatible with a given jEdit release. + incompatible with a given jEdit release. Until an update is made available for such a plugin on Plugin Manager, these plugins are automatically unloaded and marked unsupported. This should improve the stability of jEdit. - + If you re-enable a plugin that was disabled this way, it will remain loaded until the next time the plugin list is checked - whenever the user selects the Update or Install tab from Plugin Manager. If you un-check this option, then plugins will not be automatically disabled in this way. - - + +
- +
The Printing Pane @@ -499,8 +514,9 @@ The Saving and Backup Pane The Saving and Backup option pane contains - settings for the autosave and backup features. See and . + settings for dirty and/or untitled buffers, confirmation dialog option after Close All, autosave, and backup features. See and for information + about those features.
@@ -512,41 +528,44 @@ shortcuts associated with it, and each shortcut can be a single or multiple key sequence.
- jEdit 5 introduces a new feature known as "keymaps". Each keymap is - a named set of keyboard shortcut mappings. - Default keymaps are found in jEdit's keymaps folder, - and user customized keymaps are are stored in the - user settings' keymaps folder. - - The top combobox allows you to Choose a Keymap, - or a set of shortcuts. - The "imported" keymap is automatically created and selected when jEdit needs - to initially create a "keymaps" user settings folder. - At this point, jEdit imports the existing shortcuts and places them into - "imported". This makes it easy to bring in shortcuts - from properties files that were customized with jEdit 4.5 or earlier. - - If a keymap of the same name exists in the defaults and the user settings - directory, the user version is the one that is used in favor of the default. - To take an existing keymap and customize it, select it, click + jEdit 5 organizes shortcuts into Keymaps. Each + keymap is a named set of keyboard shortcut mappings. + Default keymaps are found in jEdit's keymaps folder, and + user customized keymaps are are stored in the user settings' + keymaps folder. The user can switch between keymaps with + the first combobox on this pane. + + The imported.props keymap is automatically created + and selected when jEdit needs to initially create a + keymaps user settings folder. At this point, jEdit + imports the existing shortcuts and places them into + imported. This makes it easy to bring in shortcuts from + properties files that were customized with jEdit 4.5 or earlier. + + If a keymap of the same name exists in the defaults and the user + settings directory, the user version is the one that is used in favor of the + default. To take an existing keymap and customize it, select it, click duplicate and you will be asked for the name of the new - keymap. A copy of that keymap will be - saved in the user settings keymaps directory. At this point, - this keymap will be selected and will determine where new shortcut properties are - stored. To remove all customizations and restore a default keymap, - click reset. - - The combo box below the keymap selector selects the - command set to edit. Command sets exist for the set of all built-in - commands, the commands of each plugin, and the set of macros. - - To change a shortcut, click the appropriate table entry and - press the keys you want associated with that command in the - resulting dialog box. The dialog box will warn you if the shortcut - is already assigned. The properties will be saved in the currently selected - keymap. + keymap. A copy of that keymap will be saved in the user settings + keymaps directory. At this point, this keymap will be + selected and will determine where new shortcut properties are stored. To + remove all customizations and restore a default keymap, click + reset. + + The combo box below the Keymap selector selects the + Action Set to edit. Action Sets + exist for the set of all built-in commands, the commands of each plugin, and + the set of macros. Some plugins (ProjectViewer, Console and SideKick) offer + additional action sets of dynamically-generated actions. Here, you can also + select All to see all actions, and an additional 4th + column appears in the table, indicating the Action Set each action comes from. + To change a shortcut, click the appropriate table entry and press the + keys you want associated with that command in the resulting dialog box. The + dialog box will warn you if the shortcut is already assigned. The properties + will be saved in the currently selected keymap. +
@@ -582,24 +601,27 @@ The Text Area pane contains settings to customize the appearance of the text area. - + You can configure the Text Font, - antialias settings, colors, cursor style, highlight matching, and + antialias settings, colors, cursor style, highlight matching, and word-completion settings from here. - + Fractional Font Metrics is an old option that helps with certain versions of Java, but usually not in combination with subpixel antialiasing. - - Additional Fonts with font substitution if checked, - shows a list of Preferred fonts, as well as the following option. - Fonts added to this list will determine the order jEdit searches - for glyphs that may be missing from your chosen + + Additional Fonts with font substitution if + checked, shows a list of Preferred fonts, as well as + the following option. Fonts added to this list will determine the order jEdit + searches for glyphs that may be missing from your chosen Text Font. - If the - Font Substitution: Search all system fonts option is checked, all of the installed fonts - are searched for glyphs, after the preferred list is searched. If this option is checked, no fonts need to be added to preferred fonts list. - You probably don't want to un-check either of these options unless you want to test a system with limited fonts. + + If the Font Substitution: Search all system + fonts option is checked, all of the installed + fonts are searched for glyphs, after the preferred list is + searched. If this option is checked, no fonts need to be added to preferred + fonts list. You probably don't want to un-check either of these options unless + you want to test a system with limited fonts.
@@ -620,9 +642,9 @@ and buffer switcher are visible, and whether menu, toolbar, and statusbar are visible in full-screen mode. See .
- - You can choose the default bufferset scope here, as well as whether/how you want buffersets to be sorted in buffer switchers. See for more details. - + + You can choose the default bufferset scope here, as well as whether/how you want buffersets to be sorted in buffer switchers. See for more details. + If Abbreviate paths with environment variables when possible is checked, you will notice that jEdit displays abbreviated versions of file paths when it can, using @@ -630,7 +652,7 @@ %VARIABLE%\name.ext syntax, depending on your platform. Abbreviating is used in the File System Browser, as well as in the window title, and in plugins, to save horizontal space. Reverse-expansions also work - as you would expect them to, with both syntaxes recognized on both platforms. + as you would expect them to, with both syntaxes recognized on all platforms. @@ -658,9 +680,9 @@ example when you want to copy jEdit settings between computers. The location of the settings directory is system-specific - On Linux, it is ~/.jedit. - On Windows, you will find it in %APPDATA%\jEdit. - On the Mac, it is ~/Library/jEdit. + On Linux, it is ~/.jedit. + On Windows, you will find it in %APPDATA%\jEdit. + On the Mac, it is ~/Library/jEdit. . It is printed to the activity log (Utilities>Troubleshooting>Activity @@ -673,6 +695,10 @@ first item in the pullout menu is the location of your settings directory. + From Console or the File System Browser, you can use an environment + variable, $JEDIT_SETTINGS, to refer to that location. + + Specifying the -settings switch on the command line instructs jEdit to store settings in a directory other than the default. For example, the following command will instruct jEdit to @@ -707,7 +733,7 @@ which contains the full activity log. See .
- + history - a plain text file which stores history lists, used by history text fields and the @@ -733,8 +759,8 @@ contains collections of named keyboard shortcuts which can be defined from the Shortcuts Option Pane (see ). - - + + killring.xml - stores recently deleted text. See . @@ -820,27 +846,27 @@ integer or boolean) by plugins at runtime. Do not edit this file while jEdit is running. If you do, it - is possible that your changes (either your edits, or jEdit settings + is possible that your changes (either your edits, or jEdit settings changes) may get lost. - +
Site Properties - - + + - You may also put properties files in the properties directory under + You may also put properties files in the properties directory under the jEdit home directory (NOT the jedit settings directory). You can locate the jEdit home directory by going to the Utilities menu directory, then the jEdit Home Directory menu item, and the first item in the pullout menu will be the location of the jEdit home - directory. This is intended for site-wide settings. This lets you keep + directory. This is intended for site-wide settings. This lets you keep custom user properties separate from the jEdit site-wide properties, so they are easier to find, edit, and move between machines. Note that your custom properties files must have ".props" as the file name extension. - - Prior to jEdit 5.0, this was also where site-wide keyboard shortcuts were placed, but now you can define custom sets of shortcuts as keymap files. These files can be cloned and edited from the Shortcuts Option Pane, or edited by hand. To place them in a system-wide location, copy them into the keymaps folder under the jedit home directory. + + Prior to jEdit 5.0, this was also where site-wide keyboard shortcuts were placed, but now you can define custom sets of shortcuts as keymap files. These files can be cloned and edited from the Shortcuts Option Pane, or edited by hand. To place them in a system-wide location, copy them into the keymaps folder under the jedit home directory. Site properties files are read in alphabetically by file name. This means @@ -851,7 +877,7 @@ You can edit these files inside jEdit - changes made to these files will not be re-read until the next time jEdit is started. - +
diff -Nru jedit-5.4.0+dfsg/doc/users-guide/files.xml jedit-5.5.0+dfsg/doc/users-guide/files.xml --- jedit-5.4.0+dfsg/doc/users-guide/files.xml 2017-03-18 13:30:21.000000000 +0000 +++ jedit-5.5.0+dfsg/doc/users-guide/files.xml 2018-04-08 23:58:57.000000000 +0000 @@ -117,10 +117,14 @@ The autosave feature protects your work from computer crashes and such. Every 30 seconds, all buffers with unsaved changes are - written out to the same directory with their respective file names, + written out, with their respective file names, enclosed in hash (#) characters. For example, /home/user/project/program.c will be autosaved to - /home/user/project/#program.c#. + home/user/project/#program.c#. + + If you wish autosave files to be stored in an alternate + location, you can specify the Autosave Directory + as a Saving and Backup option. Saving a buffer using one of the commands in the previous section automatically deletes the autosave file, so they will only @@ -130,6 +134,10 @@ If an autosave file is found while a buffer is being loaded, jEdit will offer to recover the autosaved data. + If Autosave of Untitled Buffers is enabled, + then jEdit will allow you to exit without asking you to save dirty untitled + buffers, and will silently restore them for you on next jEdit startup. + The autosave interval can be changed in the Autosave and Backup pane of the Utilities>Options @@ -146,10 +154,9 @@ backed up under a different file name. The behavior of the backup feature is specified in the - Autosave and Backup pane of the - Utilities>Options - dialog box; see . + Saving and Backup pane of the + Utilities>Global Options + see . The default behavior is to back up the original contents to the buffer's file name suffixed with a tilde (~). For @@ -169,8 +176,7 @@ If the Backup directory setting is non-empty, backups are saved in that location (with the full path to the original file under it). Otherwise, - they are saved in the same directory as the original file. - The latter is the default behavior. + they are saved in the same directory as the original file.
@@ -186,12 +192,6 @@ - Backups can optionally be saved in a specified backup - directory, instead of the directory of the original file. - This can reduce clutter. - - - The Backup on every save option is off by default, which results in a backup only being created the first time a buffer is saved in an editing diff -Nru jedit-5.4.0+dfsg/doc/users-guide/users-guide.xml jedit-5.5.0+dfsg/doc/users-guide/users-guide.xml --- jedit-5.4.0+dfsg/doc/users-guide/users-guide.xml 2017-03-18 13:30:21.000000000 +0000 +++ jedit-5.5.0+dfsg/doc/users-guide/users-guide.xml 2018-04-08 23:58:57.000000000 +0000 @@ -3,9 +3,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xi="http://www.w3.org/2001/XInclude" xsi:noNamespaceSchemaLocation='https://www.docbook.org/xsd/4.4/docbook.xsd'> - jEdit 5.4 User's Guide + jEdit 5.5 User's Guide Legal Notice @@ -39,7 +39,7 @@ - 4.3 - 5.4 + 4.3 - 5.5 2005-2017 AlanEzust Maintainer. diff -Nru jedit-5.4.0+dfsg/doc/welcome.html jedit-5.5.0+dfsg/doc/welcome.html --- jedit-5.4.0+dfsg/doc/welcome.html 2017-03-18 13:30:22.000000000 +0000 +++ jedit-5.5.0+dfsg/doc/welcome.html 2018-04-08 23:59:12.000000000 +0000 @@ -4,7 +4,7 @@
-

Welcome to jEdit 5.4

+

Welcome to jEdit 5.5

Useful menu commands:

    diff -Nru jedit-5.4.0+dfsg/doc/whatsnew/news.xml jedit-5.5.0+dfsg/doc/whatsnew/news.xml --- jedit-5.4.0+dfsg/doc/whatsnew/news.xml 2017-03-18 13:30:21.000000000 +0000 +++ jedit-5.5.0+dfsg/doc/whatsnew/news.xml 2018-04-08 23:58:45.000000000 +0000 @@ -1,34 +1,35 @@
    + xsi:noNamespaceSchemaLocation='https://www.docbook.org/xsd/4.4/docbook.xsd'> - What's new in jEdit 5.4 + What's new in jEdit 5.5 - 2017 + 2018 This is a time-based release, scheduled to come out about 1 year after - jEdit 5.3, and is a collection of enhancements, bug fixes and patches + jEdit 5.4, and is a collection of enhancements, bug fixes and patches submitted by the community. Detailed changes can be found in the Detailed Change Log. - Some notable new things in this version are: - - Use of Java 1.8 - Use of a new XML format for Plugin Manager, - and proper following of redirects, resulting in a much improved - plugin install experience. - - New Printing code updated for current versions - of Java - + One notable new thing in this version is autosaves of untitled buffers. + This allows jEdit to save and restore untitled buffers across sessions. + Totally rewritten is most of the autosave code - it can use an autosave directory + to store its files. In addition, the option for never marking untitled buffers + dirty has been replaced by an option that achieves a similar goal (allowing you to + close or quit untitled buffers without a dialog confirmation), but allows for + multiple dirty untitled buffers. + + jEdit's launcher and core have both been tested with Java 9. + Some of the plugins (e.g. Lucene) may not yet be compatible, + but at least the core works fine on it now. With continued support from the community, we will keep releasing a newer version each year that can accurately bring together the fruits of everyone's labor. - Thank you to each and every one of the contributors who helped make 5.4 the best + Thank you to each and every one of the contributors who helped make 5.5 the best version of jEdit ever. diff -Nru jedit-5.4.0+dfsg/ivy.xml jedit-5.5.0+dfsg/ivy.xml --- jedit-5.4.0+dfsg/ivy.xml 2017-03-18 13:30:35.000000000 +0000 +++ jedit-5.5.0+dfsg/ivy.xml 2018-04-08 23:59:23.000000000 +0000 @@ -70,11 +70,12 @@ - + + - + <% %> - + <script language="vbscript" runat="server"> </script> @@ -97,13 +97,13 @@ ****************************************************************** --> - + <% %> - + <script language="vbscript" runat="server"> </script> @@ -188,7 +188,7 @@ - + <script language="vbscript" runat="server"> </script> @@ -273,7 +273,7 @@ - + <script language="vbscript" runat="server"> </script> @@ -352,7 +352,7 @@ ****************************************************************** --> - + <% %> @@ -372,7 +372,7 @@ - + <% %> @@ -437,7 +437,7 @@ - + <% %> @@ -465,7 +465,7 @@ - + <% %> @@ -493,7 +493,7 @@ - + <% %> @@ -514,5 +514,31 @@ %> + + + + + + + ]]> + + + + )]]> + + + + + + + ]]> + + + + )]]> + + + + diff -Nru jedit-5.4.0+dfsg/modes/assembly-arm32.xml jedit-5.5.0+dfsg/modes/assembly-arm32.xml --- jedit-5.4.0+dfsg/modes/assembly-arm32.xml 1970-01-01 00:00:00.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/assembly-arm32.xml 2018-04-09 00:01:03.000000000 +0000 @@ -0,0 +1,730 @@ + + + + + + + + + + + + + + + ; + + + [a-zA-Z_]\w* + + \$[a-zA-Z_](\w*\.?\w+)? + + [1-9]?\d([a-zA-Z_]\w*)* + + %(F|B)?(A|T)?[1-9]?\d([a-zA-Z_]\w*)* + + + $$ + $ + + + 0f_[\da-fA_F]{8}|0d_[\da-fA_F]{16}|0x[\da-fA-F]+|[2-9]_[0-8]+|&[\da-fA-F]+ + \d*\.?\d+[Ee]\-?\d+ + \d*\.\d+ + \d+ + + + FRAME\s+(ADDRESS|POP|PUSH|REGISTER|RESTORE|SAVE|RETURN\s+ADDRESS|STATE\s+REMEMBER|STATE\s+RESTORE|UNWIND\s+ON|UNWIND\s+OFF) + + + \[WEAK\] + + + \{TRUE\} + \{FALSE\} + + + a[1-4] + v[1-8] + [rpc](1[0-5]|\d) + [ds]([1-2]\d|3[0-1]|\d) + + + #(define|include|undef|ifdef|ifndef|if|else|elif|endif|error|line|pragma|warning) + + + + ' + ' + + + + + " + " + + + + + || + || + + + | + | + + + + (BKPT|CPSI[ED]|HLTQ?|HVC|SETEND|TB[BH])\s + + + LDR(SB|SH|B|H)?S?(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.W|\.N)\s + + + IT[TE]{0,3}\s+(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)? + + + (AD[CD]|AND|ASR|BIC|EOR|LSL|LSR|ML[AS]|MOV|MUL|MVN|OR[NR]|ROR|RRX|RS[BC]|SBC|SMLAL|[SU]MULL|SUB|UMLAL)S?(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?\s + + + (ADR|BL?XNS|BL?X?|TTA?T?|UDF)(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.W|\.N)?\s + + + (CBN?Z|CRC32C?[BHW]|SETPAN)(\.W|\.N)?\s + + + (ADRL|BF[IC]|BXJ|CDP2?|CLZ|CM[PN]|CPY|LDAEX[BHD]?|LDA[BH]?|LDC2?L?|LDM(IA|IB|DA|DB|FD|FA|ED|EA)?|LDR(SB|SH|B|H)?T?|LDRD|LDREX[BHD]?|MCRR?2?|MOV32|MOVT|MRR?C2?|MRS|MSR|NEG|PKH(TB|BT)|PL(DW|D|I)|POP|PUSH|QADD(16|8)?|QASX|QDADD|QDSUB|QSAX|QSUB(16|8)?|RBIT|REV(SH|16)?|RFE(IA|IB|DA|DB)?|SH?ADD(16|8)|SH?ASX|SBFX|[SU]DIV|SEL|SH?SAX|SH?SUB(16|8)|SMC|SMLAL?[BT][BT]|SMLAL?DX?|SMLSL?DX?|SMLAW[BT]|SMML[AS]R?|SMMULR?|SMUADX?|SMUL[BT][BT]|SMULW[BT]|SMUSDX?|SRS(IA|IB|DA|DB|FD|FA|ED|EA)?|[US]SAT|[US]SAT16|STC2?L?|STL[BH]?|STLEX[BHD]?|STM(IA|IB|DA|DB|FD|FA|ED|EA)?|STR(EX)?[BHD]?|STR[BH]?T|SVC|SWPB?|SXTA?B(16)?|SXTA?H|SYS|TEQ|TST|U[QH]?ADD(16|8)|U[QH]?ASX|UBFX|U[QH]?SAX|U[HQ]?SUB(16|8)|UMAAL|USADA?8|UXTA?B16|UXTA?[BH])(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?\s + + + VMOV(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.32)?\s + + V(LDR|STR)(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.32|\.64)?\s + + V(ABS|ADD|CMPE?|DIV|FN?(MA|MS)|LDR|ML[AS]|MOV|MUL|NEG|NML[AS]|NMUL|SEL|SQRT|SUB)(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F32|\.F64)\s + + VCVT(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F32\.F64|\.F64\.F32)\s + + VCVT[BT](EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F16\.F64|\.F64\.F16)\s + + VCVT[BT](EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F32\.F16|\.F16\.F32)\s + + VRINT[ZRXANPM](EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F32\.F32|\.F64\.F64)\s + + VCVTR?(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.[US]32\.F(32|64))\s + + VCVT[ANPM](\.F(32|64)\.[US]32|\.[US]32\.F(32|64))\s + + VCVT(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.[US](16|32)\.F(32|64))\s + + V(LDM(IA|DB|EA|FD)|MOV|MRS|MSR|POP|PUSH|STM(IA|DB|EA|FD))(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?\s + + V(JCVT(\.N|\.W)?\.S32\.F64|M(AX|IN)NM\.F(32|64))\s + + + # + + = + + + ( + ) + [ + ] + { + } + ? + + + - + * + / + :MOD: + % + :BASE: + :CC_ENCODING: + :DEF: + :INDEX: + :LEN: + :LNOT: + :NOT: + :RCONST: + :CC: + :LEFT: + :RIGHT: + :ROL: + :ROR: + :SHL: + :SHR: + >> + << + :AND: + :EOR: + :OR: + ^ + & + + == + > + >= + < + <=: + /= + <> + != + :LAND: + :LEOR: + :LOR: + && + + || + ! + + + + ALIAS + ALIGN + AREA + ASSOC + CODE + CODEALIGN + COMDEF + COMGROUP + EXECONLY + FINI_ARRAY + GROUP + INIT_ARRAY + LINKORDER + MERGE + NOALLOC + NOINIT + PREINIT_ARRAY + READONLY + READWRITE + SECFLAGS + SECTYPE + STRINGS + ZEROALIGN + ARM + CODE32 + ASSERT + ATTR + FILESCOPE + SCOPE + SETVALUE + SETSTRING + SETCOMPATWITHVALUE + SETCOMPATWITHSTRING + CN + CODE16 + COMMON + DYNAMIC + PROTECTED + HIDDEN + INTERNAL + CP + DCB + DCD + DCDU + DCDO + DCFD + DCFDU + DCFS + DCFSU + DCI + DCI.W + DCQ + DCQU + DCW + DCWU + END + ENDFUNC + ENDP + ENTRY + EQU + ARM + CODE32 + DATA + EXPORT + GLOBAL + ELFTYPE + EXPORTAS + FIELD + FUNCTION + PROC + GBLA + GBLL + GBLS + GET + INCLUDE + IF + ELSE + ENDIF + ELIF + IMPORT + EXTERN + INCBIN + INFO + KEEP + LCLA + LCLL + LCLS + LTORG + MACRO + MEND + MAP + MEXIT + NOFP + OPT + QN + DN + SN + RELOC + REQUIRE + REQUIRE8 + PRESERVE8 + RLIST + RN + ROUT + SETA + SETL + SETS + SPACE + FILL + THUMB + TTL + SUBT + WHILE + WEND + WN + + + sb + ip + sp + lr + pc + APSR + CPSR + SPSR + IPSR + EPSR + IEPSR + IAPSR + EAPSR + MSP + PSP + XPSR + PRIMASK + BASEPRI + BASEPRI_MAX + FAULTMASK + CONTROL + + + n + z + c + v + q + g + + + BE + LE + + + ISHLD + ISHST + ISH + NSHLD + NSHST + NSH + OSHLD + OSHST + OSH + SH + SY + LD + ST + + + + CLREXEQ + CLREXNE + CLREXCS + CLREXHS + CLREXCC + CLREXLO + CLREXMI + CLREXPL + CLREXVS + CLREXVC + CLREXHI + CLREXLS + CLREXGE + CLREXLT + CLREXGT + CLREXLE + CLREXAL + CLREX + DBGEQ + DBGNE + DBGCS + DBGHS + DBGCC + DBGLO + DBGMI + DBGPL + DBGVS + DBGVC + DBGHI + DBGLS + DBGGE + DBGLT + DBGGT + DBGLE + DBGAL + DBG + DMBEQ + DMBNE + DMBCS + DMBHS + DMBCC + DMBLO + DMBMI + DMBPL + DMBVS + DMBVC + DMBHI + DMBLS + DMBGE + DMBLT + DMBGT + DMBLE + DMBAL + DMB + DSBEQ + DSBNE + DSBCS + DSBHS + DSBCC + DSBLO + DSBMI + DSBPL + DSBVS + DSBVC + DSBHI + DSBLS + DSBGE + DSBLT + DSBGT + DSBLE + DSBAL + DSB + ERETEQ + ERETNE + ERETCS + ERETHS + ERETCC + ERETLO + ERETMI + ERETPL + ERETVS + ERETVC + ERETHI + ERETLS + ERETGE + ERETLT + ERETGT + ERETLE + ERETAL + ERET + ISBEQ + ISBNE + ISBCS + ISBHS + ISBCC + ISBLO + ISBMI + ISBPL + ISBVS + ISBVC + ISBHI + ISBLS + ISBGE + ISBLT + ISBGT + ISBLE + ISBAL + ISB + NOPEQ + NOPNE + NOPCS + NOPHS + NOPCC + NOPLO + NOPMI + NOPPL + NOPVS + NOPVC + NOPHI + NOPLS + NOPGE + NOPLT + NOPGT + NOPLE + NOPAL + NOP + SEVEQ + SEVNE + SEVCS + SEVHS + SEVCC + SEVLO + SEVMI + SEVPL + SEVVS + SEVVC + SEVHI + SEVLS + SEVGE + SEVLT + SEVGT + SEVLE + SEVAL + SEV + SEVLEQ + SEVLNE + SEVLCS + SEVLHS + SEVLCC + SEVLLO + SEVLMI + SEVLPL + SEVLVS + SEVLVC + SEVLHI + SEVLLS + SEVLGE + SEVLLT + SEVLGT + SEVLLE + SEVLAL + SEVL + WFEEQ + WFENE + WFECS + WFEHS + WFECC + WFELO + WFEMI + WFEPL + WFEVS + WFEVC + WFEHI + WFELS + WFEGE + WFELT + WFEGT + WFELE + WFEAL + WFE + WFIEQ + WFINE + WFICS + WFIHS + WFICC + WFILO + WFIMI + WFIPL + WFIVS + WFIVC + WFIHI + WFILS + WFIGE + WFILT + WFIGT + WFILE + WFIAL + WFI + YIELDEQ + YIELDNE + YIELDCS + YIELDHS + YIELDCC + YIELDLO + YIELDMI + YIELDPL + YIELDVS + YIELDVC + YIELDHI + YIELDLS + YIELDGE + YIELDLT + YIELDGT + YIELDLE + YIELDAL + YIELD + DCPS1 + DCPS2 + DCPS3 + SG + ESBEQ.W + ESBNE.W + ESBCS.W + ESBHS.W + ESBCC.W + ESBLO.W + ESBMI.W + ESBPL.W + ESBVS.W + ESBVC.W + ESBHI.W + ESBLS.W + ESBGE.W + ESBLT.W + ESBGT.W + ESBLE.W + ESBAL.W + ESB.W + UNDEQ.W + UNDNE.W + UNDCS.W + UNDHS.W + UNDCC.W + UNDLO.W + UNDMI.W + UNDPL.W + UNDVS.W + UNDVC.W + UNDHI.W + UNDLS.W + UNDGE.W + UNDLT.W + UNDGT.W + UNDLE.W + UNDAL.W + UND.W + ESBEQ.N + ESBNE.N + ESBCS.N + ESBHS.N + ESBCC.N + ESBLO.N + ESBMI.N + ESBPL.N + ESBVS.N + ESBVC.N + ESBHI.N + ESBLS.N + ESBGE.N + ESBLT.N + ESBGT.N + ESBLE.N + ESBAL.N + ESB.N + UNDEQ.N + UNDNE.N + UNDCS.N + UNDHS.N + UNDCC.N + UNDLO.N + UNDMI.N + UNDPL.N + UNDVS.N + UNDVC.N + UNDHI.N + UNDLS.N + UNDGE.N + UNDLT.N + UNDGT.N + UNDLE.N + UNDAL.N + UND.N + ESBEQ + ESBNE + ESBCS + ESBHS + ESBCC + ESBLO + ESBMI + ESBPL + ESBVS + ESBVC + ESBHI + ESBLS + ESBGE + ESBLT + ESBGT + ESBLE + ESBAL + ESB + UNDEQ + UNDNE + UNDCS + UNDHS + UNDCC + UNDLO + UNDMI + UNDPL + UNDVS + UNDVC + UNDHI + UNDLS + UNDGE + UNDLT + UNDGT + UNDLE + UNDAL + UND + ITTTT + ITTTE + ITTET + ITTEE + ITETT + ITETE + ITEET + ITEEE + ITTT + ITTE + ITET + ITEE + ITT + ITE + IT + + + diff -Nru jedit-5.4.0+dfsg/modes/assembly-x86.xml jedit-5.5.0+dfsg/modes/assembly-x86.xml --- jedit-5.4.0+dfsg/modes/assembly-x86.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/assembly-x86.xml 2018-04-09 00:01:03.000000000 +0000 @@ -32,6 +32,12 @@ " + + + comment\s+(\S) + $1[^$]*$ + + %% diff -Nru jedit-5.4.0+dfsg/modes/catalog jedit-5.5.0+dfsg/modes/catalog --- jedit-5.4.0+dfsg/modes/catalog 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/catalog 2018-04-09 00:01:03.000000000 +0000 @@ -49,6 +49,9 @@ + + + + @@ -340,7 +346,7 @@ - + diff -Nru jedit-5.4.0+dfsg/modes/cplusplus.xml jedit-5.5.0+dfsg/modes/cplusplus.xml --- jedit-5.4.0+dfsg/modes/cplusplus.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/cplusplus.xml 2018-04-09 00:01:03.000000000 +0000 @@ -41,7 +41,24 @@ as labels. --> :: - + + + + + + + + + + + (?:u8|u|U)("|') + $1 + + + (?:L|u8|u|U)?R"([^()\\\s]*)\( + )$1" + @@ -49,7 +66,7 @@ IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*"> - + catch @@ -80,6 +97,41 @@ typename using virtual + wchar_t + + + atomic_cancel + atomic_commit + atomic_noexcept + synchronized + transaction_safe + transaction_safe_dynamic + + + co_await + co_return + co_yield + + + import + module + + + alignas + alignof + char16_t + char32_t + constexpr + decltype + final + noexcept + nullptr + override + thread_local + + + concept + requires @@ -89,11 +141,11 @@ IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*"> - include\b - define\b - endif\b - elif\b - if\b + include\b + define\b + endif\b + elif\b + if\b diff -Nru jedit-5.4.0+dfsg/modes/css.xml jedit-5.5.0+dfsg/modes/css.xml --- jedit-5.4.0+dfsg/modes/css.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/css.xml 2018-04-09 00:01:03.000000000 +0000 @@ -197,6 +197,7 @@ direction display empty-cells + fill flex flex-basis flex-direction @@ -325,7 +326,7 @@ ; - } + } diff -Nru jedit-5.4.0+dfsg/modes/c.xml jedit-5.5.0+dfsg/modes/c.xml --- jedit-5.4.0+dfsg/modes/c.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/c.xml 2018-04-09 00:01:03.000000000 +0000 @@ -33,31 +33,20 @@ - - - + + + - - L" - " - - - " - " - - - L' - ' - - - ' - ' - + + + L?("|') + $1 + ??( diff -Nru jedit-5.4.0+dfsg/modes/drawj2d.xml jedit-5.5.0+dfsg/modes/drawj2d.xml --- jedit-5.4.0+dfsg/modes/drawj2d.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/drawj2d.xml 2018-04-09 00:01:03.000000000 +0000 @@ -95,100 +95,130 @@ ~ - + + after append - array - concat - console + break + catch + close + continue + else + elseif eval - expr - format + exit + for + foreach global - set - trace - unset - upvar + if + incr join lappend lindex - linsert list llength lrange - lreplace - lsearch - lsort - split - scan - string - regexp - regsub - if - else - elseif - switch - for - foreach - while - break - continue + lset + open proc + puts + read + rename return + set source - unknown - uplevel - cd - close - eof - file - flush - gets - glob - open - read - puts - pwd - seek - tell - catch - error - exec - pid - after + split time - exit - history - rename - info - - ceil - floor - round - incr + unset + while + + alias + and + bgerror + classof + clock + copy + eq + false + file.readable + filter + hasclass + hasnext + hash + hclear + hcontains + hget + hkeys + hremove + hset + intro + linsert + llen + max + min + ne + not + or + readln + runtime.freememory + runtime.totalmemory + search + sort + strbytelen + strcmp + strfind + strindex + strlast + strlen + strlower + strrange + strrep + strreplace + strtrim + strtriml + strtrimr + strupper + system.gc + system.getproperty + system.hasproperty + thisinterp + throw + tnotify + true + twait + upeval + + abs acos - cos - cosh asin - sin - sinh atan atan2 - tan - tanh + cbrt + ceil + cos + cosh + double + exp + expm1 + float + floor + hypot + int log log10 - fmod + log1p + long pow - hypot + random + round + signum + sin + sinh sqrt - double - int - - load - lset - subst - update + tan + tanh + toDegrees + toRadians unitlength @@ -208,10 +238,12 @@ pen font - nf - expr - exprinput - assert + opacity + today + nf + expr + exprinput + assert moveto m @@ -262,6 +294,8 @@ fillsegment sector fillsector + image + dxf label lb @@ -287,12 +321,21 @@ dimangle texdimangle + endblock + block.rotate + block.flip + block.scale + block + geom.vector geom.v + geom.azimuth + geom.azi geom.add geom.subtract geom.multiply geom.divide + geom.half geom.tox tx geom.toy @@ -301,6 +344,7 @@ geom.area geom.centroid geom.intersectlinepath + geom.intersectcircles geom.online geom.angle geom.anglerad @@ -309,7 +353,6 @@ geom.rotate geom.polar geom.length - geom.hypot geom.abs geom.norm geom.parallel @@ -340,6 +383,7 @@ brown cyan darkgray + darkgreen darkorange gray green @@ -347,7 +391,9 @@ magenta orange pink + purple red + violet white yellow dashed @@ -363,7 +409,6 @@ italic left justify - block NE E SE @@ -373,7 +418,10 @@ NW N C + BW + BC BL + BLC diff -Nru jedit-5.4.0+dfsg/modes/gherkin.xml jedit-5.5.0+dfsg/modes/gherkin.xml --- jedit-5.4.0+dfsg/modes/gherkin.xml 1970-01-01 00:00:00.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/gherkin.xml 2018-04-09 00:01:03.000000000 +0000 @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + # + in\s+order\s+to + \s*(given|when|then|but|and|As\s+a|I\s+want\s+to) + [ + ] + ( + ) + | + + " + " + + + ' + ' + + + < + > + + + Scenario Outline: + + @ + + Feature: + Scenario: + Background: + Examples: + + + + + < + > + + + \ No newline at end of file diff -Nru jedit-5.4.0+dfsg/modes/groovy.xml jedit-5.5.0+dfsg/modes/groovy.xml --- jedit-5.4.0+dfsg/modes/groovy.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/groovy.xml 2018-04-09 00:01:03.000000000 +0000 @@ -68,6 +68,8 @@ // + /[^\p{Blank}]*?/ + ( ) diff -Nru jedit-5.4.0+dfsg/modes/html.xml jedit-5.5.0+dfsg/modes/html.xml --- jedit-5.4.0+dfsg/modes/html.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/html.xml 2018-04-09 00:01:03.000000000 +0000 @@ -157,6 +157,7 @@ output p param + path pre progress q @@ -177,6 +178,7 @@ sub summary sup + svg table tbody td diff -Nru jedit-5.4.0+dfsg/modes/java-module-info.xml jedit-5.5.0+dfsg/modes/java-module-info.xml --- jedit-5.4.0+dfsg/modes/java-module-info.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/java-module-info.xml 2018-04-09 00:01:03.000000000 +0000 @@ -8,11 +8,12 @@ * are considered identifiers. * * This mode file is the same as the java.xml mode file with the addition of the - * new keywords that are specific to modules. From the spec: - * "module, requires, exports, to, uses, provides, and with are restricted keywords - * (i.e. they are keywords solely where they appear as terminals in ModuleDeclaration, - * and are identifiers everywhere else)." - * Reference: http://cr.openjdk.java.net/~mr/jigsaw/spec/lang-vm.html + * new keywords that are specific to modules, so this is way overkill for just a + * module-info.java file. From the spec: + * "open, module, requires, transitive, exports, opens, to, uses, provides, and + * with are restricted keywords (i.e. they are keywords solely where they appear + * as terminals in ModuleDeclaration, and are identifiers everywhere else)." + * Reference: http://download.oracle.com/otndocs/jcp/java_platform_module_system-0_1-edr-spec/index.html --> @@ -127,9 +128,12 @@ - module + open + module requires + transitive exports + opens to uses provides diff -Nru jedit-5.4.0+dfsg/modes/javascript.xml jedit-5.5.0+dfsg/modes/javascript.xml --- jedit-5.4.0+dfsg/modes/javascript.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/javascript.xml 2018-04-09 00:01:03.000000000 +0000 @@ -21,10 +21,11 @@ + + DIGIT_RE="((0x|0b|0o)[\p{XDigit}]+[lL]?|[\p{Digit}]+(e[\p{Digit}]*)?[lLdDfF]?)"> @@ -38,19 +39,16 @@ */ - - " - " - - - ' - ' - + + ( + ( ) + => + //--> // /[^\p{Blank}]*?/ @@ -80,107 +78,190 @@ ] [ ? - : + : : + + + + + + + + + + + + + - - break - continue - delete - else - for - function - if - in - new - return - this - typeof - var - void - while - with - - - abstract - boolean - byte + async + await + break case catch - char class const + continue debugger default - + delete do - double + else enum - export extends final finally - float + for + function + get goto + if implements - - import + in instanceof - int interface - long + let native - package + new + of private protected public - - short + return + set static - super switch synchronized throw throws transient try + typeof + var volatile - - - Array - Boolean - Date - Function - Global - Math - Number - Object - RegExp - String - + while + with + yield + + export + import + package + + boolean + byte + char + double + float + int + long + short + void + + super + this + false null true - NaN Infinity - + + + undefined + + + decodeURI + decodeURIComponent + encodeURI + encodeURIComponent + eval - parseInt - parseFloat - escape - unescape - isNaN isFinite - + isNaN + parseFloat + parseInt + + + Array + Boolean + Date + Error + EvalError + Function + Global + InternalError + Math + Number + Object + RangeError + ReferenceError + RegExp + String + Symbol + SyntaxError + TypeError + URIError + + + Float32Array + Float64Array + Int8Array + Int16Array + Int32Array + Uint8Array + Uint8ClampedArray + Uint16Array + Uint32Array + + + Map + Set + WeakMap + WeakSet + + + ArrayBuffer + DataView + JSON + + + Generator + GeneratorFunction + Promise + + + Proxy + Reflect + + + Intl + Intl.Collator + Intl.DateTimeFormat + Intl.NumberFormat + + + WebAssembly + WebAssembly.CompileError + WebAssembly.Instance + WebAssembly.LinkError + WebAssembly.Memory + WebAssembly.Module + WebAssembly.RuntimeError + WebAssembly.Table + + + arguments + + + + + + + @@ -555,5 +636,49 @@ adRecalcAlways --> + + + + + + " + " + + + + ' + ' + + + + + + + + + + + ${ + } + + + + + + + + ` + ` + + + + + + + + + + diff -Nru jedit-5.4.0+dfsg/modes/mysql.xml jedit-5.5.0+dfsg/modes/mysql.xml --- jedit-5.4.0+dfsg/modes/mysql.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/mysql.xml 2018-04-09 00:01:03.000000000 +0000 @@ -22,6 +22,9 @@ ' + -- + # + ADD diff -Nru jedit-5.4.0+dfsg/modes/nsis2.xml jedit-5.5.0+dfsg/modes/nsis2.xml --- jedit-5.4.0+dfsg/modes/nsis2.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/nsis2.xml 2018-04-09 00:01:03.000000000 +0000 @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Updated for 4.3pre9 by Alan Ezust 2007 -$Id: nsis2.xml 22465 2012-11-13 06:45:29Z ezust $ +$Id: nsis2.xml 24789 2017-12-03 15:48:36Z ezust $ --> @@ -278,6 +278,7 @@ !cd !echo !error + !getdllversion !insertmacro !packhdr !system @@ -308,6 +309,7 @@ allowrootdirinstall allowskipfiles autoclosewindow + bgfont bggradient brandingtext bringtofront @@ -387,6 +389,8 @@ loadlanguagefile logset logtext + manifestdpiaware + manifestsupportedos miscbuttontext name nop @@ -446,6 +450,7 @@ strcpy strlen subcaption + unicode uninstallbuttontext uninstallcaption uninstallicon @@ -458,6 +463,7 @@ videscription vicompanyname vicomments + vifileversion vilegalcopyrights vilegaltrademarks viproductname diff -Nru jedit-5.4.0+dfsg/modes/perl.xml jedit-5.5.0+dfsg/modes/perl.xml --- jedit-5.4.0+dfsg/modes/perl.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/perl.xml 2018-04-09 00:01:03.000000000 +0000 @@ -503,7 +503,9 @@ caller + case continue + croak die do dump @@ -514,6 +516,7 @@ next redo return + switch wantarray diff -Nru jedit-5.4.0+dfsg/modes/php.xml jedit-5.5.0+dfsg/modes/php.xml --- jedit-5.4.0+dfsg/modes/php.xml 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/modes/php.xml 2018-04-09 00:01:03.000000000 +0000 @@ -53,8 +53,8 @@ - - + + @@ -460,6 +460,7 @@ */ + ]]> // # diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/ActionSet.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/ActionSet.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/ActionSet.java 2017-03-18 13:30:30.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/ActionSet.java 2018-04-08 23:56:22.000000000 +0000 @@ -33,7 +33,7 @@ /** * A set of actions, either loaded from an XML file, or constructed at runtime - * by a plugin. + * by a plugin. * *

    Action sets loaded from XML files

    * @@ -139,7 +139,7 @@ * * @author Slava Pestov * @author John Gellene (API documentation) - * @version $Id: ActionSet.java 24427 2016-06-22 22:29:03Z daleanson $ + * @version $Id: ActionSet.java 24851 2018-03-27 16:26:50Z vampire0 $ * @since jEdit 4.0pre1 */ public class ActionSet extends JEditActionSet implements Comparable @@ -153,7 +153,7 @@ { label = ""; } //}}} - + //{{{ ActionSet constructor /** * Creates a new action set. @@ -181,7 +181,7 @@ } loaded = false; } //}}} - + //{{{ addAction() method /** * Adds an action to the action set. @@ -194,13 +194,13 @@ { super.addAction(action); } //}}} - + //{{{ getArray() method protected EditAction[] getArray(int size) { return new EditAction[size]; } //}}} - + //{{{ getActions() method /** * Returns an array of all actions in this action set.

    @@ -284,14 +284,14 @@ } return retVal.toArray(new String[retVal.size()]); } //}}} - + //{{{ getProperty() method - protected String getProperty(String name) + public String getProperty(String name) { Keymap keymap = jEdit.getKeymapManager().getKeymap(); return keymap.getShortcut(name); } //}}} - + //{{{ getInputHandler() method public AbstractInputHandler getInputHandler() { @@ -310,7 +310,7 @@ { return label; } //}}} - + //{{{ createBeanShellAction() method /** * Creates a BeanShellAction. diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/browser/VFSDirectoryEntryTable.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/browser/VFSDirectoryEntryTable.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/browser/VFSDirectoryEntryTable.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/browser/VFSDirectoryEntryTable.java 2018-04-08 23:57:42.000000000 +0000 @@ -49,7 +49,7 @@ /** * @author Slava Pestov - * @version $Id: VFSDirectoryEntryTable.java 24021 2015-08-14 18:36:19Z makarius $ + * @version $Id: VFSDirectoryEntryTable.java 24774 2017-10-29 23:31:27Z ezust $ * @since jEdit 4.2pre1 */ public class VFSDirectoryEntryTable extends JTable @@ -80,6 +80,32 @@ setAutoResizeMode(AUTO_RESIZE_OFF); } //}}} + @Override + protected JTableHeader createDefaultTableHeader() + { + /** + * Set up column hook in a way that it survives switching of LAF + * */ + JTableHeader header = new JTableHeader(getColumnModel()) + { + ColumnDragHook hook; + + @Override + public void updateUI() + { + if (hook != null) + { + hook.uninstallHook(); + hook = null; + } + super.updateUI(); + hook = new ColumnDragHook(this); + } + + }; + return header; + } + //{{{ selectFile() method public boolean selectFile(String path) { @@ -556,7 +582,7 @@ TableColumnModel columns = getColumnModel(); for(int i = 1; i < model.getColumnCount(); i++) - model.setColumnWidth(i,columns.getColumn(i).getWidth()); + model.saveColumnWidth(i,columns.getColumn(i).getWidth()); } //}}} //}}} @@ -576,7 +602,7 @@ public void columnAdded(TableColumnModelEvent e) {} public void columnRemoved(TableColumnModelEvent e) {} public void columnMoved(TableColumnModelEvent e) { - ((VFSDirectoryEntryTableModel)getModel()).columnMoved(e.getFromIndex(), e.getToIndex()); + ((VFSDirectoryEntryTableModel)getModel()).columnMoved(e.getFromIndex(), e.getToIndex()); // view indexes } public void columnSelectionChanged(ListSelectionEvent e) {} @@ -610,21 +636,30 @@ class MouseHandler extends MouseInputAdapter { @Override - public void mousePressed(MouseEvent evt) + public void mouseClicked(MouseEvent evt) { // double click on columns header if (evt.getSource() == header && evt.getClickCount() == 2) { VFSDirectoryEntryTableModel model = (VFSDirectoryEntryTableModel) header.getTable().getModel(); TableColumnModel columnModel = header.getColumnModel(); - int viewColumn = columnModel.getColumnIndexAtX(evt.getX()); - int column = columnModel.getColumn(viewColumn).getModelIndex(); + int viewColumnIndex = columnModel.getColumnIndexAtX(evt.getX()); + + // View index must be used here instead of model index because model order is rearranged by custom code + // on column move according to view order so that both are equal, but no "structurechanged" is triggered, + // so view order is the same as model order (maintained by custom code, while JTable's automatic + // indexing is wrong here) before sortByColumn call finishes, where sortColumnIndex is saved + // and structureChanged is triggered. + // + // If use modelIndex, the bug will arise (sort by column, move that column, sort again, result: sorting + // mark is at wrong column) + int modelColumnIndex = viewColumnIndex; saveWidths(); - if(model.sortByColumn(column)) + if(model.sortByColumn(modelColumnIndex)) { resizeColumns(); Log.log(Log.DEBUG,this,"VFSDirectoryEntryTable sorted by " - + model.getColumnName(column) + + model.getColumnName(modelColumnIndex) + (model.getAscending() ? " ascending" : " descending") ); } } @@ -647,7 +682,7 @@ { JLabel l = (JLabel)tcr.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column); VFSDirectoryEntryTableModel model = (VFSDirectoryEntryTableModel)table.getModel(); - Icon icon = column == model.getSortColumn() + Icon icon = column == model.getSortColumnIndex() ? model.getAscending() ? ASC_ICON : DESC_ICON : null; l.setIcon(icon); @@ -663,4 +698,173 @@ //}}} + + /** + * Original code: + * https://stackoverflow.com/questions/1155137/how-to-keep-a-single-column-from-being-reordered-in-a-jtable/14480948 + * + * A delegating MouseInputListener to be installed instead of + * the one registered by the ui-delegate. + * + * It's implemented to prevent dragging the first column or any other + * column over the first. + * + */ + public static class ColumnDragHook implements MouseInputListener { + + private JTableHeader header; + private MouseListener mouseDelegate; + private MouseMotionListener mouseMotionDelegate; + private int minMouseX; + + public ColumnDragHook(JTableHeader header) { + this.header = header; + installHook(); + } + + /** + * Implemented to do some tweaks/bookkeeping before/after + * passing the event to the original + * + * - temporarily disallow reordering if hit on first column + * - calculate the max mouseX that's allowable in dragging to the left + * + */ + @Override + public void mousePressed(MouseEvent e) { + int index = header.columnAtPoint(e.getPoint()); + + boolean reorderingAllowed = header.getReorderingAllowed(); + + if (index == 0) { + // temporarily disable re-ordering + header.setReorderingAllowed(false); + } + mouseDelegate.mousePressed(e); + if (index == 0) { + // re-enable re-ordering + header.setReorderingAllowed(reorderingAllowed); + } + + // Calculate minimum X for a column (all except the first one) when dragging + if (header.getDraggedColumn() != null) { + int draggedColumnX = header.getHeaderRect(index).x; + int firstColumnWidth = header.getColumnModel().getColumn(0).getWidth(); + minMouseX = firstColumnWidth + (e.getX() - draggedColumnX)- 1; + } + } + + /** + * Implemented to pass the event to the original only if the + * mouseX doesn't lead to dragging the column over the first. + */ + @Override + public void mouseDragged(MouseEvent e) { + TableColumn dragged = header.getDraggedColumn(); + + if (dragged != null) + { + int index = header.getTable().convertColumnIndexToView(dragged.getModelIndex()); + + if (index == 1) { // dragged column is at second position... + if (e.getX() < minMouseX) return; // allow only drags to the right + } + } + mouseMotionDelegate.mouseDragged(e); + } + + @Override + public void mouseReleased(MouseEvent e) { + mouseDelegate.mouseReleased(e); + } + + @Override + public void mouseClicked(MouseEvent e) { + mouseDelegate.mouseClicked(e); + } + + @Override + public void mouseEntered(MouseEvent e) { + mouseDelegate.mouseEntered(e); + } + + @Override + public void mouseExited(MouseEvent e) { + mouseDelegate.mouseExited(e); + } + + @Override + public void mouseMoved(MouseEvent e) { + mouseMotionDelegate.mouseMoved(e); + } + + + protected void installHook() { + installMouseHook(); + installMouseMotionHook(); + } + + protected void installMouseMotionHook() { + MouseMotionListener[] listeners = header.getMouseMotionListeners(); + for (int i = 0; i < listeners.length; i++) { + MouseMotionListener l = listeners[i]; + if (l.getClass().getName().contains("TableHeaderUI")) { + this.mouseMotionDelegate = l; + listeners[i] = this; + } + header.removeMouseMotionListener(l); + } + for (MouseMotionListener l : listeners) { + header.addMouseMotionListener(l); + } + } + + protected void installMouseHook() { + MouseListener[] listeners = header.getMouseListeners(); + for (int i = 0; i < listeners.length; i++) { + MouseListener l = listeners[i]; + if (l.getClass().getName().contains("TableHeaderUI")) { + this.mouseDelegate = l; + listeners[i] = this; + } + header.removeMouseListener(l); + } + for (MouseListener l : listeners) { + header.addMouseListener(l); + } + } + + public void uninstallHook() { + uninstallMouseHook(); + uninstallMouseMotionHook(); + } + + protected void uninstallMouseMotionHook() { + MouseMotionListener[] listeners = header.getMouseMotionListeners(); + for (int i = 0; i < listeners.length; i++) { + MouseMotionListener l = listeners[i]; + if (l == this) { + listeners[i] = mouseMotionDelegate; + } + header.removeMouseMotionListener(l); + } + for (MouseMotionListener l : listeners) { + header.addMouseMotionListener(l); + } + } + + protected void uninstallMouseHook() { + MouseListener[] listeners = header.getMouseListeners(); + for (int i = 0; i < listeners.length; i++) { + MouseListener l = listeners[i]; + if (l == this) { + listeners[i] = mouseDelegate; + } + header.removeMouseListener(l); + } + for (MouseListener l : listeners) { + header.addMouseListener(l); + } + } + } } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/browser/VFSDirectoryEntryTableModel.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/browser/VFSDirectoryEntryTableModel.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/browser/VFSDirectoryEntryTableModel.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/browser/VFSDirectoryEntryTableModel.java 2018-04-08 23:57:42.000000000 +0000 @@ -25,7 +25,7 @@ //{{{ Imports import javax.swing.table.*; import java.util.*; -import org.gjt.sp.jedit.io.FileVFS; + import org.gjt.sp.jedit.io.VFS; import org.gjt.sp.jedit.io.VFSFile; import org.gjt.sp.jedit.io.VFSManager; @@ -36,7 +36,7 @@ /** * @author Slava Pestov - * @version $Id: VFSDirectoryEntryTableModel.java 23970 2015-08-08 18:10:36Z daleanson $ + * @version $Id: VFSDirectoryEntryTableModel.java 24774 2017-10-29 23:31:27Z ezust $ * @since jEdit 4.2pre1 */ public class VFSDirectoryEntryTableModel extends AbstractTableModel @@ -45,7 +45,7 @@ public VFSDirectoryEntryTableModel() { extAttrs = new ArrayList(); - sortColumn = 0; + sortColumnIndex = 0; ascending = true; } //}}} @@ -67,7 +67,7 @@ /* if(files.length != 0) fireTableRowsInserted(0,files.length - 1); */ - Arrays.sort(files, new EntryCompare(getSortAttribute(sortColumn), ascending)); + Arrays.sort(files, new EntryCompare(getSortAttribute(sortColumnIndex), ascending)); fireTableStructureChanged(); } //}}} @@ -100,7 +100,7 @@ // sort expanded entries according to current sort params Arrays.sort(subdirFiles, new EntryCompare( - getSortAttribute(sortColumn), ascending)); + getSortAttribute(sortColumnIndex), ascending)); // make room after expanded entry for subdir files int nextIndex = startIndex + 1; @@ -208,10 +208,10 @@ return ascending; } //}}} - //{{{ getSortColumn() method - public int getSortColumn() + //{{{ getSortColumnIndex() method + public int getSortColumnIndex() { - return sortColumn; + return sortColumnIndex; } //}}} //{{{ getSortAttribute() method @@ -221,20 +221,20 @@ } //}}} //{{{ sortByColumn() method - public boolean sortByColumn(int column) + public boolean sortByColumn(int columnIndex) { // toggle ascending/descending if column was clicked again - ascending = sortColumn != column || !ascending; + ascending = sortColumnIndex != columnIndex || !ascending; // we don't sort by some attributes - String sortBy = getSortAttribute(column); + String sortBy = getSortAttribute(columnIndex); if(sortBy == VFS.EA_STATUS) return false; Arrays.sort(files, new EntryCompare(sortBy, ascending)); // remember column - sortColumn = column; + sortColumnIndex = columnIndex; fireTableStructureChanged(); return true; @@ -248,40 +248,46 @@ //{{{ getColumnWidth() method /** - * @param i The column index + * @param index The column index * @return A saved column width * @since jEdit 4.3pre2 */ - public int getColumnWidth(int i) + public int getColumnWidth(int index) { - String extAttr = getExtendedAttribute(i); + String extAttr = getExtendedAttribute(index); return jEdit.getIntegerProperty("vfs.browser." + extAttr + ".width",100); } //}}} - //{{{ setColumnWidth() method + //{{{ saveColumnWidth() method /** - * @param i The column index + * @param index The column index * @param w The column width * @since jEdit 4.3pre2 */ - public void setColumnWidth(int i, int w) + public void saveColumnWidth(int index, int w) { - String extAttr = getExtendedAttribute(i); + String extAttr = getExtendedAttribute(index); jEdit.setIntegerProperty("vfs.browser." + extAttr + ".width",w); } //}}} //{{{ columnMoved() method - protected void columnMoved(int from, int to) { - if (from == to) + protected void columnMoved(int fromIndex, int toIndex) { + if (fromIndex == toIndex) return; - if (from < 1 || from > getColumnCount()) + if (fromIndex < 1 || fromIndex > getColumnCount()) return; - if (to < 1 || to > getColumnCount()) + if (toIndex < 1 || toIndex > getColumnCount()) return; - ExtendedAttribute ea = extAttrs.remove(from - 1); - extAttrs.add(to - 1, ea); + ExtendedAttribute ea = extAttrs.remove(fromIndex - 1); + extAttrs.add(toIndex - 1, ea); + + + // Also adjust sort column index if touched + + if (sortColumnIndex == fromIndex) sortColumnIndex = toIndex; + else if (sortColumnIndex == toIndex) sortColumnIndex = fromIndex; } //}}} //{{{ getFiles() method @@ -299,7 +305,7 @@ //{{{ Private members private List extAttrs; - private int sortColumn; + private int sortColumnIndex; private boolean ascending; //{{{ addExtendedAttributes() method diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/buffer/JEditBuffer.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/buffer/JEditBuffer.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/buffer/JEditBuffer.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/buffer/JEditBuffer.java 2018-04-08 23:57:06.000000000 +0000 @@ -68,7 +68,7 @@ *

* * @author Slava Pestov - * @version $Id: JEditBuffer.java 24427 2016-06-22 22:29:03Z daleanson $ + * @version $Id: JEditBuffer.java 24832 2018-02-22 01:27:36Z vampire0 $ * * @since jEdit 4.3pre3 */ @@ -196,7 +196,18 @@ */ public boolean isEditable() { - return !(isPerformingIO()); + return !(isPerformingIO()) && editable; + } //}}} + + //{{{ setEditable() method + /** + * @param editable {@code true} to set the buffer editable, {@code false} otherwise. Default is {@code true}. + * This does not change the read only flag on the file, just makes the buffer + * editable or not. + */ + public void setEditable(boolean editable) + { + this.editable = editable; } //}}} //{{{ isReadOnly() method @@ -377,7 +388,7 @@ * Returns the end offset of the specified line. * This method is thread-safe. * @param line The line - * @return The end offset of the specified line, that is the offset + * @return The end offset of the specified line, that is the offset * after the end-of-line character. Note that * buffer.getLineOfOffset(buffer.getLineEndOffset(x)) * does not return x but x+1. @@ -2100,7 +2111,7 @@ if(!isEditable()) { - javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); + javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); return; } @@ -2112,7 +2123,7 @@ fireBeginUndo(); Selection[] s = undoMgr.undo(); if(s == null || s.length == 0) - javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); + javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); else { textArea.setCaretPosition(s[s.length - 1].getEnd()); @@ -2142,7 +2153,7 @@ if(!isEditable()) { - javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); + javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); return; } @@ -2154,7 +2165,7 @@ fireBeginRedo(); Selection[] s = undoMgr.redo(); if(s == null || s.length == 0) - javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); + javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); else { textArea.setCaretPosition(s[s.length - 1].getEnd()); @@ -2757,6 +2768,7 @@ private boolean dirty; private boolean readOnly; private boolean readOnlyOverride; + private boolean editable = true; private boolean transaction; private boolean loading; private boolean io; diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/bufferio/BufferAutosaveRequest.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/bufferio/BufferAutosaveRequest.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/bufferio/BufferAutosaveRequest.java 2017-03-18 13:30:30.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/bufferio/BufferAutosaveRequest.java 2018-04-08 23:57:44.000000000 +0000 @@ -34,7 +34,7 @@ /** * A buffer autosave request. * @author Slava Pestov - * @version $Id: BufferAutosaveRequest.java 22357 2012-10-13 04:58:01Z ezust $ + * @version $Id: BufferAutosaveRequest.java 24725 2017-07-14 14:41:01Z ezust $ */ public class BufferAutosaveRequest extends BufferIORequest { @@ -71,9 +71,14 @@ buffer.readLock(); if(buffer.isDirty()) out = vfs._createOutputStream(session,path,view); - if(out != null) + if(out != null) { + Log.log(Log.DEBUG,MiscUtilities.class, + "Saving autosave of file \"" + + buffer.getPath() + "\" to \"" + + path + '"'); write(buffer,out); } + } catch (FileNotFoundException e) { Log.log(Log.WARNING,this,"Unable to save " + e.getMessage()); diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/bufferio/BufferLoadRequest.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/bufferio/BufferLoadRequest.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/bufferio/BufferLoadRequest.java 2017-03-18 13:30:30.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/bufferio/BufferLoadRequest.java 2018-04-08 23:57:44.000000000 +0000 @@ -40,10 +40,12 @@ /** * A buffer load request. * @author Slava Pestov - * @version $Id: BufferLoadRequest.java 24414 2016-06-19 11:07:43Z kerik-sf $ + * @version $Id: BufferLoadRequest.java 24705 2017-06-12 20:48:59Z ezust $ */ public class BufferLoadRequest extends BufferIORequest { + private boolean untitled; + //{{{ BufferLoadRequest constructor /** * Creates a new buffer I/O request. @@ -52,11 +54,13 @@ * @param session The VFS session * @param vfs The VFS * @param path The path + * @param untitled is the buffer untitled */ public BufferLoadRequest(View view, Buffer buffer, - Object session, VFS vfs, String path) + Object session, VFS vfs, String path, boolean untitled) { super(view,buffer,session,vfs,path); + this.untitled = untitled; } //}}} //{{{ run() method @@ -75,7 +79,7 @@ path = vfs._canonPath(session,path,view); readContents(); - buffer.setNewFile(false); + buffer.setNewFile(untitled); if (jEdit.getBooleanProperty("persistentMarkers") && (vfs.isMarkersFileSupported())) diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/Buffer.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/Buffer.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/Buffer.java 2017-03-18 13:30:30.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/Buffer.java 2018-04-08 23:56:22.000000000 +0000 @@ -34,7 +34,6 @@ import java.util.Vector; import javax.swing.*; -import javax.swing.SwingWorker.StateValue; import javax.swing.text.Segment; import org.gjt.sp.jedit.browser.VFSBrowser; @@ -43,7 +42,6 @@ import org.gjt.sp.jedit.buffer.JEditBuffer; import org.gjt.sp.jedit.bufferio.BufferAutosaveRequest; import org.gjt.sp.jedit.bufferio.BufferIORequest; -import org.gjt.sp.jedit.bufferio.IoTask; import org.gjt.sp.jedit.bufferio.MarkersSaveRequest; import org.gjt.sp.jedit.bufferset.BufferSet; import org.gjt.sp.jedit.gui.DockableWindowManager; @@ -52,6 +50,7 @@ import org.gjt.sp.jedit.io.VFSFile; import org.gjt.sp.jedit.io.VFSManager; import org.gjt.sp.jedit.msg.BufferUpdate; +import org.gjt.sp.jedit.msg.PropertiesChanged; import org.gjt.sp.jedit.syntax.ModeProvider; import org.gjt.sp.jedit.syntax.ParserRuleSet; import org.gjt.sp.jedit.syntax.TokenHandler; @@ -92,7 +91,7 @@ * * @author Slava Pestov - * @version $Id: Buffer.java 24087 2015-09-19 20:56:09Z daleanson $ + * @version $Id: Buffer.java 24849 2018-03-27 16:24:10Z vampire0 $ */ public class Buffer extends JEditBuffer { @@ -197,7 +196,10 @@ final boolean loadAutosave; - if(reload || !getFlag(NEW_FILE)) + boolean autosaveUntitled = jEdit.getBooleanProperty("autosaveUntitled"); + + // for untitled: re-read autosave file if enabled + if(reload || !getFlag(NEW_FILE) || (isUntitled() && autosaveUntitled)) { if(file != null) modTime = file.lastModified(); @@ -226,7 +228,7 @@ // NEW_FILE flag if(reload || !getFlag(NEW_FILE)) { - if(!vfs.load(view,this,path)) + if(!vfs.load(view,this,path, isUntitled())) { setLoading(false); return false; @@ -348,11 +350,33 @@ */ public void autosave() { - if(autosaveFile == null || !getFlag(AUTOSAVE_DIRTY) + autosave(false); + } //}}} + + //{{{ autosave() method + /** + * Autosaves this buffer. + * + * @param force save even if AUTOSAVE_DIRTY not set + * @since jEdit 5.5pre1 + */ + public void autosave(boolean force) + { + + if(autosaveFile == null || (!getFlag(AUTOSAVE_DIRTY) && !force) || !isDirty() || isPerformingIO() || !autosaveFile.getParentFile().exists()) return; + // re-set autosave file path, based on the path at the settings + File autosaveFileOriginal = autosaveFile; + setAutosaveFile(); + + // if autosave path settings changed, delete the old file + if(autosaveFile != null && !autosaveFileOriginal.toString().equals(autosaveFile.toString())) { + autosaveFileOriginal.delete(); + } + setFlag(AUTOSAVE_DIRTY,false); ThreadUtilities.runInBackground(new BufferAutosaveRequest( @@ -372,12 +396,12 @@ public boolean saveAs(View view, boolean rename) { String fileSavePath = path; - if (jEdit.getBooleanProperty("saveAsUsesFSB")) + if (jEdit.getBooleanProperty("saveAsUsesFSB")) { DockableWindowManager dwm = view.getDockableWindowManager(); Component comp = dwm.getDockable("vfs.browser"); VFSBrowser browser = (VFSBrowser) comp; - if (browser != null) + if (browser != null) fileSavePath = browser.getDirectory() + "/"; } String[] files = GUIUtilities.showVFSFileDialog(view, fileSavePath, VFSBrowser.SAVE_DIALOG,false); @@ -443,7 +467,7 @@ GUIUtilities.error(view,"buffer-multiple-io",null); return false; } - + setBooleanProperty(BufferIORequest.ERROR_OCCURRED,false); if(path == null && getFlag(NEW_FILE)) @@ -643,7 +667,8 @@ // because for a moment newModTime will be greater than // oldModTime, due to the multithreading // - only supported on local file system - if(!isPerformingIO() && file != null && !getFlag(NEW_FILE)) + // - for untitled, do not check + if(!isPerformingIO() && file != null && !getFlag(NEW_FILE) && !isUntitled()) { boolean newReadOnly = file.exists() && !file.canWrite(); if(newReadOnly != isFileReadOnly()) @@ -894,6 +919,17 @@ return getFlag(UNTITLED); } //}}} + //{{{ setUntitled() method + /** + * + * @param untitled untitled value to set + * @since jEdit 5.5pre1 + */ + protected void setUntitled(boolean untitled) + { + setFlag(UNTITLED, untitled); + } //}}} + //{{{ setDirty() method /** * Sets the 'dirty' (changed since last save) flag of this buffer. @@ -902,11 +938,10 @@ public void setDirty(boolean d) { boolean old_d = isDirty(); - if (isUntitled() && jEdit.getBooleanProperty("suppressNotSavedConfirmUntitled")) - d = false; if (d && getLength() == initialLength) { - if (jEdit.getBooleanProperty("useMD5forDirtyCalculation")) + // for untitled, do not check if the content existed before + if (jEdit.getBooleanProperty("useMD5forDirtyCalculation") && !isUntitled()) d = !Arrays.equals(calculateHash(), md5hash); } super.setDirty(d); @@ -944,6 +979,60 @@ return getFlag(TEMPORARY); } //}}} + //{{{ isBackup() method + /** + * @return if this buffer most probably contains backup file + */ + public boolean isBackup() + { + return MiscUtilities.isBackup(MiscUtilities.getFileName(getPath())); + } //}}} + + + public boolean isEditable() + { + return super.isEditable() && !isLocked(); // respects "locked" property + } + + //{{{ isLocked() method + /** + * @return if this buffer is locked for editing + */ + public boolean isLocked() + { + return getBooleanProperty("locked", false); + } + //}}} + + //{{{ setLocked() method + /** + * Changes locked state of the buffer. + * @param locked true to lock, false to unlock + */ + public void setLocked(boolean locked) + { + setBooleanProperty("locked", locked); + propertiesChanged(); + } + //}}} + + //{{{ toggleLocked() method + /** + * Toggles locked state of the buffer. + * @param view We show a message in the view's status bar + */ + public void toggleLocked(View view) + { + setLocked(!isLocked()); + + view.getStatus().setMessageAndClear( + jEdit.getProperty("view.status.locked-changed", + new Integer[] { isLocked() ? 1 : 0 })); + EditBus.send(new PropertiesChanged(Buffer.this)); + + } + //}}} + //{{{ getIcon() method /** * @return this buffer's icon. @@ -953,7 +1042,7 @@ { if(isDirty()) return GUIUtilities.loadIcon("dirty.gif"); - else if(isReadOnly()) + else if(isReadOnly() || isLocked()) return GUIUtilities.loadIcon("readonly.gif"); else if(getFlag(NEW_FILE)) return GUIUtilities.loadIcon("new.gif"); @@ -1010,7 +1099,7 @@ // Try returning it as an integer first try { - retVal = new Integer(value); + retVal = Integer.valueOf(value); } catch(NumberFormatException nf) { @@ -1048,7 +1137,7 @@ setProperty("wrap",wrap); propertiesChanged(); } //}}} - + //{{{ toggleAutoIndent() method /** * Toggles automatic indentation on and off. @@ -1065,12 +1154,12 @@ else if (indent.equals("full")) indent = "none"; setProperty("autoIndent", indent); - + view.getStatus().setMessageAndClear( jEdit.getProperty("view.status.autoindent-changed", new String[] {indent})); } - + //{{{ toggleLineSeparator() method /** @@ -1140,7 +1229,7 @@ //}}} //}}} - + //{{{ Edit modes, syntax highlighting //{{{ setMode() method @@ -1170,12 +1259,12 @@ mode.loadIfNecessary(); boolean contextInsensitive = mode.getBooleanProperty("contextInsensitive"); String largeFileMode = jEdit.getProperty("largefilemode", "ask"); - + if ("ask".equals(largeFileMode)) { if (!contextInsensitive) { - // the context is not insensitive + // the context is not insensitive JTextPane tp = new JTextPane(); tp.setEditable(false); tp.setText(jEdit.getProperty("largeBufferDialog.message")); @@ -1643,31 +1732,22 @@ //{{{ Buffer constructor Buffer(String path, boolean newFile, boolean temp, Map props) { + this(path, newFile, temp, props, false); + } + + //{{{ Buffer constructor + Buffer(String path, boolean newFile, boolean temp, Map props, boolean untitled) + { super(props); textTokenMarker = jEdit.getMode("text").getTokenMarker(); markers = new Vector(); setFlag(TEMPORARY,temp); + setFlag(UNTITLED,untitled); // this must be called before any EditBus messages are sent setPath(path); - /* Magic: UNTITLED is only set if newFile param to - * constructor is set, NEW_FILE is also set if file - * doesn't exist on disk. - * - * This is so that we can tell apart files created - * with jEdit.newFile(), and those that just don't - * exist on disk. - * - * Why do we need to tell the difference between the - * two? jEdit.addBufferToList() checks if the only - * opened buffer is an untitled buffer, and if so, - * replaces it with the buffer to add. We don't want - * this behavior to occur with files that don't - * exist on disk; only untitled ones. - */ - setFlag(UNTITLED,newFile); setFlag(NEW_FILE,newFile); setFlag(AUTORELOAD,jEdit.getBooleanProperty("autoReload")); setFlag(AUTORELOAD_DIALOG,jEdit.getBooleanProperty("autoReloadDialog")); @@ -1686,11 +1766,29 @@ //{{{ close() method void close() { + close(false); + } + + //{{{ close() method + /** + * close the buffer + * @param doNotSave when true, we do not want to keep the autosave even for untitled + * e.g.: we closed the buffer by hand + */ + void close(boolean doNotSave) + { setFlag(CLOSED,true); + boolean autosaveUntitled = jEdit.getBooleanProperty("autosaveUntitled"); - if(autosaveFile != null) + if(autosaveFile != null && (doNotSave || !(isUntitled() && autosaveUntitled))) autosaveFile.delete(); + // close az untitled buffer, but need to autosavesave + // except we close it manually and do not want to save + if ( !doNotSave && isUntitled() && autosaveUntitled ) { + autosave(); + } + // notify clients with -wait if(waitSocket != null) { @@ -1882,18 +1980,19 @@ if((vfs.getCapabilities() & VFS.WRITE_CAP) == 0) setFileReadOnly(true); name = vfs.getFileName(path); + directory = vfs.getParentOfPath(path); if(vfs instanceof FileVFS) { file = new File(path); symlinkPath = MiscUtilities.resolveSymlinks(path); - // if we don't do this, the autosave file won't be // deleted after a save as if(autosaveFile != null) autosaveFile.delete(); - autosaveFile = new File(file.getParent(),'#' + name + '#'); + + setAutosaveFile(); } else { @@ -1905,6 +2004,16 @@ } } //}}} + //{{{ setAutosaveFile() method + /** + * Set the autosave file, based on the autosettings dir. + * @since jEdit 5.5pre1 + */ + private void setAutosaveFile() + { + File autosaveDir = MiscUtilities.prepareAutosaveDirectory(symlinkPath); + autosaveFile = new File(autosaveDir,'#' + name + '#'); + } //}}} //{{{ recoverAutosave() method private boolean recoverAutosave(final View view) @@ -1915,13 +2024,23 @@ // this method might get called at startup GUIUtilities.hideSplashScreen(); + boolean autosaveUntitled = jEdit.getBooleanProperty("autosaveUntitled"); + final Object[] args = { autosaveFile.getPath() }; - int result = GUIUtilities.confirm(view,"autosave-found",args, + + int result; + // if it was an untitled autosave, recover without question + if (isUntitled() && autosaveUntitled) { + VFSManager.getFileVFS().load(view,this,autosaveFile.getPath(), isUntitled()); + return true; + } else { + result = GUIUtilities.confirm(view,"autosave-found",args, JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE); + } if(result == JOptionPane.YES_OPTION) { - VFSManager.getFileVFS().load(view,this,autosaveFile.getPath()); + VFSManager.getFileVFS().load(view,this,autosaveFile.getPath(), isUntitled()); // show this message when all I/O requests are // complete diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/bufferset/BufferSetManager.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/bufferset/BufferSetManager.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/bufferset/BufferSetManager.java 2017-03-18 13:30:30.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/bufferset/BufferSetManager.java 2018-04-08 23:57:44.000000000 +0000 @@ -349,16 +349,19 @@ } if (parent == null) { - parent = System.getProperty("user.home"); + parent = MiscUtilities.getBackupDirectory(); + } + VFS vfs = null; + if (parent != null) { + vfs = VFSManager.getVFSForPath(parent); } - VFS vfs = VFSManager.getVFSForPath(parent); - if ((vfs.getCapabilities() & VFS.WRITE_CAP) == 0) + if (vfs != null && (vfs.getCapabilities() & VFS.WRITE_CAP) == 0) { // cannot write on that VFS, creating untitled buffer in home directory parent = System.getProperty("user.home"); } Buffer newEmptyBuffer = jEdit.openTemporary(view, parent, - "Untitled-" + untitledCount,true, null); + "Untitled-" + untitledCount,true, true); jEdit.commitTemporary(newEmptyBuffer); return newEmptyBuffer; } //}}} diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/EditAction.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/EditAction.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/EditAction.java 2017-03-18 13:30:30.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/EditAction.java 2018-04-08 23:57:44.000000000 +0000 @@ -37,7 +37,7 @@ * @see ActionSet * * @author Slava Pestov - * @version $Id: EditAction.java 23981 2015-08-10 14:56:24Z daleanson $ + * @version $Id: EditAction.java 24750 2017-10-12 09:46:15Z ezust $ */ public abstract class EditAction extends JEditAbstractEditAction { @@ -83,6 +83,17 @@ return jEdit.getProperty(name + ".mouse-over"); } //}}} + //{{{ getToolTip() method + /** + * @return the action's tooltip text. This returns the + * value of the property named by {@link #getName()} suffixed + * with .tooltip. + */ + public String getToolTip() + { + return jEdit.getProperty(name + ".tooltip"); + } //}}} + //{{{ invoke() method /** * Invokes the action. This is an implementation of the Command pattern, diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/EditPane.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/EditPane.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/EditPane.java 2017-03-18 13:30:30.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/EditPane.java 2018-04-08 23:57:24.000000000 +0000 @@ -90,7 +90,7 @@ * @see View#getEditPanes() * * @author Slava Pestov - * @version $Id: EditPane.java 24411 2016-06-19 11:02:53Z kerik-sf $ + * @version $Id: EditPane.java 24820 2018-01-25 20:19:28Z daleanson $ */ public class EditPane extends JPanel implements BufferSetListener { @@ -182,7 +182,7 @@ { if(bufferSwitcher.getSelectedItem() != buffer) bufferSwitcher.setSelectedItem(buffer); - bufferSwitcher.setToolTipText(buffer.getPath()); + bufferSwitcher.updateStyle(buffer); } EditBus.send(new EditPaneUpdate(this,EditPaneUpdate @@ -417,6 +417,10 @@ for(int i = 0; i < selection.length; i++) { Selection s = selection[i]; + // it happens sometimes when a buffer has an invalid selection and is loaded in two caret panes during + // startup + if (s == null) + continue; int max = buffer.getLength(); if(s.getStart() > max || s.getEnd() > max) selection[i] = null; diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/BufferSwitcher.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/BufferSwitcher.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/BufferSwitcher.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/BufferSwitcher.java 2018-04-08 23:56:46.000000000 +0000 @@ -21,16 +21,18 @@ //{{{ Imports import javax.swing.event.*; -import javax.swing.plaf.ComboBoxUI; -import javax.swing.plaf.basic.BasicComboBoxUI; -import java.lang.reflect.Field; +import javax.accessibility.Accessible; import javax.swing.*; +import javax.swing.plaf.*; +import javax.swing.plaf.basic.*; import java.awt.*; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.io.IOException; import java.util.Arrays; import java.util.Comparator; @@ -41,11 +43,10 @@ import org.gjt.sp.jedit.bufferset.BufferSetManager; import org.gjt.sp.jedit.msg.PropertiesChanged; import org.gjt.sp.util.ThreadUtilities; - //}}} /** BufferSwitcher class - @version $Id: BufferSwitcher.java 24427 2016-06-22 22:29:03Z daleanson $ + @version $Id: BufferSwitcher.java 24820 2018-01-25 20:19:28Z daleanson $ */ public class BufferSwitcher extends JComboBox { @@ -56,6 +57,11 @@ private Object itemSelectedBefore; public static final DataFlavor BufferDataFlavor = new DataFlavor(BufferTransferableData.class, DataFlavor.javaJVMLocalObjectMimeType); + // actual colors will be set in constructor, here are just fallback values + static Color defaultColor = Color.BLACK; + static Color defaultBGColor = Color.LIGHT_GRAY; + + public BufferSwitcher(final EditPane editPane) { this.editPane = editPane; @@ -93,8 +99,65 @@ } }); EditBus.addToBus(this); + + + addItemListener(new ItemListener() + { + @Override + public void itemStateChanged(ItemEvent evt) + { + if (evt.getStateChange() == ItemEvent.SELECTED) + { + Buffer buffer = (Buffer) evt.getItem(); + updateStyle(buffer); + } + } + }); + + defaultColor = getForeground(); + defaultBGColor = getBackground(); + + updateStyle(editPane.getBuffer()); } + static void updateStyle(JComponent target, boolean isBackup, String path) + { + String styleName = isBackup ? "backup" : "normal"; + + switch (styleName) + { + case "backup": + target.setForeground(new Color(230,207,93)); + break; + + case "normal": + default: + target.setForeground(defaultColor); + break; + } + + target.setToolTipText(path != null ? makeToolTipText(path, isBackup) : null); + } + + static String makeToolTipText(String path, Boolean isBackup) + { + String text = path; + + if (isBackup) text = String.format("(backup file?) %s", text); + + return text; + } + + + public void updateStyle(Buffer buffer) + { + String path = buffer.getPath(); + Boolean isBackup = buffer.isBackup(); + + updateStyle(this, isBackup, path); + } + + public void updateBufferList() { // if the buffer count becomes 0, then it is guaranteed to @@ -111,20 +174,27 @@ updating = true; setMaximumRowCount(jEdit.getIntegerProperty("bufferSwitcher.maxRowCount",10)); Buffer[] buffers = bufferSet.getAllBuffers(); - if (jEdit.getBooleanProperty("bufferswitcher.sortBuffers", true)) { - Arrays.sort(buffers, new Comparator(){ - public int compare(Buffer a, Buffer b) { - if (jEdit.getBooleanProperty("bufferswitcher.sortByName", true)) { - return a.getName().toLowerCase().compareTo(b.getName().toLowerCase()); - } else { - return a.getPath().toLowerCase().compareTo(b.getPath().toLowerCase()); - } - } + if (jEdit.getBooleanProperty("bufferswitcher.sortBuffers", true)) + { + Arrays.sort(buffers, new Comparator() + { + public int compare(Buffer a, Buffer b) + { + if (jEdit.getBooleanProperty("bufferswitcher.sortByName", true)) + return a.getName().toLowerCase().compareTo(b.getName().toLowerCase()); + else + return a.getPath().toLowerCase().compareTo(b.getPath().toLowerCase()); + } }); } setModel(new DefaultComboBoxModel(buffers)); + // FIXME: editPane.getBuffer() returns wrong buffer (old buffer) after last non-untitled buffer close. + // When the only non-untitled (last) buffer is closed a new untitled buffer is added to BufferSet + // directly from BufferSetManager (@see BufferSetManager.bufferRemoved() and BufferSetManager.addBuffer()) + // This triggers EditPane.bufferAdded() -> bufferSwitcher.updateBufferList() bypassing setting EditPane's + // buffer object reference to a new created untitled buffer. + // This is why here editPane.getBuffer() returns wrong previous already closed buffer in that case. setSelectedItem(editPane.getBuffer()); - setToolTipText(editPane.getBuffer().getPath(true)); addDnD(); updating = false; } @@ -150,11 +220,14 @@ Buffer buffer = (Buffer)value; if(buffer == null) + { setIcon(null); + updateStyle(this, false, null); + } else { setIcon(buffer.getIcon()); - setToolTipText(buffer.getPath()); + updateStyle(this, buffer.isBackup(), buffer.getPath()); } return this; } @@ -165,35 +238,14 @@ ComboBoxUI ui = getUI(); if (ui instanceof BasicComboBoxUI) { - try + Accessible acc = ui.getAccessibleChild(null, 0); + if (acc instanceof BasicComboPopup) { - Field listBoxField = getField(ui.getClass(), "listBox"); - listBoxField.setAccessible(true); - JList list = (JList)listBoxField.get(ui); + JList list = ((BasicComboPopup)acc).getList(); list.setDragEnabled(true); list.setDropMode(DropMode.INSERT); list.setTransferHandler(new BufferSwitcherTransferHandler()); } - catch (Exception ignored) // NOPMD - { - // don't do anything if the above fails, it just means dnd won't work. - } - } - } - - /** - * Return the named field from the given class. - */ - private Field getField( Class aClass, String fieldName ) throws NoSuchFieldException { - if ( aClass == null ) - throw new NoSuchFieldException( "Invalid field : " + fieldName ); - try - { - return aClass.getDeclaredField( fieldName ); - } - catch ( NoSuchFieldException e ) - { - return getField( aClass.getSuperclass(), fieldName ); } } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/CloseDialog.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/CloseDialog.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/CloseDialog.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/CloseDialog.java 2018-04-08 23:56:46.000000000 +0000 @@ -74,9 +74,12 @@ bufferList.setVisibleRowCount(10); bufferList.addListSelectionListener(new ListHandler()); + boolean suppressNotSavedConfirmUntitled = jEdit.getBooleanProperty("suppressNotSavedConfirmUntitled"); + suppressNotSavedConfirmUntitled = suppressNotSavedConfirmUntitled || jEdit.getBooleanProperty("autosaveUntitled"); + for(Buffer buffer: buffers) { - if(buffer.isDirty()) + if(buffer.isDirty() && !( buffer.isUntitled() && suppressNotSavedConfirmUntitled )) bufferModel.addElement(buffer.getPath()); } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/GrabKeyDialog.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/GrabKeyDialog.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/GrabKeyDialog.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/GrabKeyDialog.java 2018-04-08 23:56:46.000000000 +0000 @@ -307,7 +307,7 @@ { // create a temporary (synthetic) prefix // KeyBinding, that won't be saved - return new KeyBinding(kb.name, kb.label, + return new KeyBinding(kb.name, kb.label, kb.tooltip, shortcut, true); } } @@ -324,11 +324,12 @@ */ public static class KeyBinding { - public KeyBinding(String name, String label, + public KeyBinding(String name, String label, String tooltip, String shortcut, boolean isPrefix) { this.name = name; this.label = label; + this.tooltip = tooltip; this.shortcut = shortcut; this.isPrefix = isPrefix; } @@ -336,6 +337,7 @@ public String actionSet; public String name; public String label; + public String tooltip; public String shortcut; public boolean isPrefix; diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/LogViewer.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/LogViewer.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/LogViewer.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/LogViewer.java 2018-04-08 23:56:46.000000000 +0000 @@ -37,7 +37,7 @@ //}}} /** Activity Log Viewer - * @version $Id: LogViewer.java 24429 2016-06-23 03:08:58Z daleanson $ + * @version $Id: LogViewer.java 24740 2017-09-20 17:16:54Z daleanson $ */ public class LogViewer extends JPanel implements DefaultFocusComponent { @@ -115,7 +115,8 @@ }); caption.add(settings); - ListModel model = Log.getLogListModel(); + Log.setMaxLines(jEdit.getIntegerProperty("log-viewer.maxlines", 500)); + ListModel model = Log.getLogListModel(); listModel = new MyFilteredListModel(model); // without this, listModel is held permanently in model. // See addNotify() and removeNotify(), and constructor of @@ -124,10 +125,10 @@ list = new LogList(listModel); listModel.setList(list); - cellRenderer = new ColorizerCellRenderer(); + cellRenderer = new ColorizerCellRenderer(list); list.setCellRenderer(cellRenderer); setFilter(); - + add(BorderLayout.NORTH,caption); JScrollPane scroller = new JScrollPane(list); Dimension dim = scroller.getPreferredSize(); @@ -158,7 +159,7 @@ public void addNotify() { super.addNotify(); - cellRenderer.updateColors(); + cellRenderer.updateColors(list); ListModel model = Log.getLogListModel(); model.addListDataListener(listModel); model.addListDataListener(listHandler = new ListHandler()); @@ -189,8 +190,8 @@ //{{{ Private members private ListHandler listHandler; - private final FilteredListModel> listModel; - private final JList list; + private FilteredListModel> listModel; + private final JList list; private final JButton copy; private final JCheckBox tail; private final JTextField filter; @@ -212,7 +213,7 @@ //{{{ propertiesChanged() method private void propertiesChanged() { - cellRenderer.updateColors(); + cellRenderer.updateColors(list); list.setFont(jEdit.getFontProperty("view.font")); list.setFixedCellHeight(list.getFontMetrics(list.getFont()) .getHeight()); @@ -265,6 +266,7 @@ StringBuilder buf = new StringBuilder(); // TODO: list.getSelectedValues is deprecated. Need to finish the // conversion to generics for this class at some point. + Object[] selected = list.getSelectedValues(); if(selected != null && selected.length != 0) { @@ -311,10 +313,9 @@ } //}}} //{{{ LogList class - @SuppressWarnings({"unchecked"}) // The FilteredListModel needs work - private class LogList extends JList + private class LogList extends JList { - LogList(ListModel model) + LogList(ListModel model) { super(model); setVisibleRowCount(24); @@ -359,31 +360,56 @@ } //}}} //{{{ ColorizerCellRenderer class - private static class ColorizerCellRenderer extends JLabel implements ListCellRenderer + private static class ColorizerCellRenderer extends JPanel implements ListCellRenderer { private static Color debugColor; private static Color messageColor; private static Color noticeColor; private static Color warningColor; private static Color errorColor; - - private ColorizerCellRenderer() - { - updateColors(); + + private String text; + private int borderWidth = 1; + private int baseline; + private int width = 0; + private int height; + + private JList list; + + private ColorizerCellRenderer(JList list) + { + super(); + this.list = list; + updateColors(list); + } + + public Dimension getPreferredSize() + { + return new Dimension(width, height); + } + + public void paint(Graphics g) + { + int currentWidth = (int)list.getFontMetrics(list.getFont()).getStringBounds(text, g).getWidth(); + this.width = Math.max(this.width, currentWidth); + g.setColor(getBackground()); + g.fillRect(0, 0, getWidth(), getHeight()); + g.setColor(getForeground()); + g.drawString(text, borderWidth, baseline); } // This is the only method defined by ListCellRenderer. - // We just reconfigure the JLabel each time we're called. @Override public Component getListCellRendererComponent( - JList list, - Object value, // value to display + JList list, + String value, // value to display int index, // cell index boolean isSelected, // is the cell selected boolean cellHasFocus ) // the list and the cell have the focus { - String s = value.toString(); - setText(s); + if (value == null) + value = ""; + text = value; if (isSelected) { setBackground(list.getSelectionBackground()); @@ -393,41 +419,44 @@ { setBackground(list.getBackground()); Color color = list.getForeground(); - if (s.contains("[debug]")) + if (text.contains("[debug]")) { color = debugColor; } - else if (s.contains("[message]")) + else if (text.contains("[message]")) { color = messageColor; } - else if (s.contains("[notice]")) + else if (text.contains("[notice]")) { color = noticeColor; } - else if (s.contains("[warning]")) + else if (text.contains("[warning]")) { color = warningColor; } - else if (s.contains("[error]")) + else if (text.contains("[error]")) { color = errorColor; } setForeground(color); } - setEnabled(list.isEnabled()); - setFont(list.getFont()); - setOpaque(true); return this; } - public void updateColors() + public void updateColors(JList list) { + this.list = list; debugColor = jEdit.getColorProperty("log-viewer.message.debug.color", Color.BLUE); messageColor = jEdit.getColorProperty("log-viewer.message.message.color", Color.BLACK); noticeColor = jEdit.getColorProperty("log-viewer.message.notice.color", Color.GREEN); warningColor = jEdit.getColorProperty("log-viewer.message.warning.color", Color.ORANGE); errorColor = jEdit.getColorProperty("log-viewer.message.error.color", Color.RED); + setFont(list.getFont()); + FontMetrics fm = list.getFontMetrics(list.getFont()); + baseline = fm.getAscent() + borderWidth; + this.width = list.getWidth(); + this.height = fm.getHeight() + (2 * borderWidth); } } //}}} @@ -450,7 +479,10 @@ { if (filter == null || filter.isEmpty()) return true; - String text = delegated.getElementAt(row).toString().toLowerCase(); + Object item = delegated.getElementAt(row); + if (item == null) + return true; + String text = item.toString().toLowerCase(); if (!showDebug && text.contains("[debug]")) return false; if (!showMessage && text.contains("[message]")) @@ -466,6 +498,7 @@ } //}}} //{{{ LogSettings dialog + @SuppressWarnings({"unchecked"}) // The FilteredListModel needs work private class LogSettings extends JDialog { LogSettings() @@ -553,6 +586,11 @@ protected void _save() { jEdit.setIntegerProperty("log-viewer.maxlines", ((SpinnerNumberModel)maxLines.getModel()).getNumber().intValue()); + Log.setMaxLines(jEdit.getIntegerProperty("log-viewer.maxlines", 500)); + ListModel model = Log.getLogListModel(); + listModel = new MyFilteredListModel(model); + list.setModel(listModel); + listModel.setList(list); showDebug = debug.isSelected(); jEdit.setBooleanProperty("log-viewer.message.debug", showDebug); @@ -573,7 +611,6 @@ jEdit.setBooleanProperty("debug.beepOnOutput", beep.isSelected()); - setFilter(); // it would be most clean to call jEdit.propertiesChanged() now // which is needed since global debug.beepOnOutput flag is attached to this pane; // but to avoid extra log entries, we workaround it by direct Log access diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/RegisterViewer.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/RegisterViewer.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/RegisterViewer.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/RegisterViewer.java 2018-04-08 23:56:46.000000000 +0000 @@ -302,8 +302,8 @@ { public void valueChanged(ListSelectionEvent evt) { - Object value = registerList.getSelectedValue(); - if(!(value instanceof Character)) + String value = registerList.getSelectedValue(); + if (value == null || value.length() < 1) { if (!editing) { @@ -313,7 +313,7 @@ return; } - char name = ((Character)value).charValue(); + char name = value.charAt(0); Registers.Register reg = Registers.getRegister(name); if(reg == null) @@ -326,7 +326,6 @@ return; } - if (!editing) { contentTextArea.setText(reg.toString()); @@ -396,10 +395,10 @@ private void updateRegister() { - Object value = registerList.getSelectedValue(); - if(!(value instanceof Character)) + String value = registerList.getSelectedValue(); + if(value == null || value.length() < 1) return; - char name = ((Character)value).charValue(); + char name = value.charAt(0); Registers.setRegister(name,contentTextArea.getText()); } } //}}} diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/SplashScreen.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/SplashScreen.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/SplashScreen.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/SplashScreen.java 2018-04-08 23:56:46.000000000 +0000 @@ -29,7 +29,7 @@ //}}} /** The splash screen displayed on startup. - * @version $Id: SplashScreen.java 23449 2014-03-30 19:14:26Z kerik-sf $ + * @version $Id: SplashScreen.java 24830 2018-02-22 01:21:35Z vampire0 $ */ public class SplashScreen extends JComponent { @@ -263,7 +263,7 @@ private final Image image; private int progress; private static final int PROGRESS_HEIGHT = 20; - private static final int PROGRESS_COUNT = 28; + private static final int PROGRESS_COUNT = 23; private String label; private String lastLabel; private long firstAdvanceTime = System.currentTimeMillis(); diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/statusbar/LockedWidgetFactory.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/statusbar/LockedWidgetFactory.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/statusbar/LockedWidgetFactory.java 1970-01-01 00:00:00.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/statusbar/LockedWidgetFactory.java 2018-04-08 23:56:22.000000000 +0000 @@ -0,0 +1,104 @@ +/* + * jEdit - Programmer's Text Editor + * :tabSize=8:indentSize=8:noTabs=false: + * :folding=explicit:collapseFolds=1: + * + * Copyright © 2017 jEdit contributors + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.gjt.sp.jedit.gui.statusbar; + +//{{{ Imports +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.SwingConstants; + +import org.gjt.sp.jedit.Buffer; +import org.gjt.sp.jedit.View; +import org.gjt.sp.jedit.jEdit; +//}}} + +/** + * @author Roman Tsourick + */ +public class LockedWidgetFactory implements StatusWidgetFactory +{ + //{{{ getWidget() class + public Widget getWidget(View view) + { + Widget widget = new LockedWidget(view); + return widget; + } //}}} + + //{{{ LockedWidget class + private static class LockedWidget implements Widget + { + private final JLabel cmp; + private final View view; + LockedWidget(final View view) + { + cmp = new ToolTipLabel(); + cmp.setHorizontalAlignment(SwingConstants.CENTER); + + this.view = view; + cmp.addMouseListener(new MouseAdapter() + { + @Override + public void mouseClicked(MouseEvent evt) + { + view.getBuffer().toggleLocked(view); + } + }); + } + + public JComponent getComponent() + { + return cmp; + } + + public void update() + { + Buffer buffer = view.getBuffer(); + Boolean locked = buffer.isLocked(); + + cmp.setText(locked ? "L" : "l"); + cmp.setEnabled(locked); + + cmp.setToolTipText(jEdit.getProperty("view.status.locked-tooltip", + new Integer[] { locked ? 1 : 0 })); + } + + public void propertiesChanged() + { + // retarded GTK look and feel! + Font font = new JLabel().getFont(); + //UIManager.getFont("Label.font"); + FontMetrics fm = cmp.getFontMetrics(font); + Dimension dim = new Dimension( + Math.max(fm.charWidth('r'),fm.charWidth('R')) + 1, + fm.getHeight()); + cmp.setPreferredSize(dim); + cmp.setMaximumSize(dim); + + } + } //}}} + +} diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/statusbar/WrapWidgetFactory.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/statusbar/WrapWidgetFactory.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/statusbar/WrapWidgetFactory.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/statusbar/WrapWidgetFactory.java 2018-04-08 23:56:22.000000000 +0000 @@ -90,7 +90,7 @@ if("none".equals(wrap)) { this.wrap.setEnabled(false); - this.wrap.setText("N"); + this.wrap.setText("n"); } else { diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/StatusBar.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/StatusBar.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/StatusBar.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/StatusBar.java 2018-04-08 23:56:46.000000000 +0000 @@ -52,7 +52,7 @@ *
  • Displaying memory status * * - * @version $Id: StatusBar.java 23410 2014-02-09 19:23:35Z ezust $ + * @version $Id: StatusBar.java 24809 2017-12-30 21:11:37Z daleanson $ * @author Slava Pestov * @since jEdit 3.2pre2 */ @@ -93,6 +93,7 @@ rectSelectWidget = _getWidget("rectSelect"); overwriteWidget = _getWidget("overwrite"); lineSepWidget = _getWidget("lineSep"); + lockedWidget = _getWidget("locked"); taskHandler = new TaskHandler(); } //}}} @@ -432,6 +433,7 @@ modeWidget.update(); foldWidget.update(); encodingWidget.update(); + lockedWidget.update(); } //}}} //{{{ updateMiscStatus() method @@ -460,6 +462,7 @@ private final Widget rectSelectWidget; private final Widget overwriteWidget; private final Widget lineSepWidget; + private final Widget lockedWidget; /* package-private for speed */ StringBuilder buf = new StringBuilder(); private Timer tempTimer; private boolean currentMessageIsIO; @@ -492,6 +495,8 @@ return overwriteWidget; if ("lineSep".equals(name)) return lineSepWidget; + if ("locked".equals(name)) + return lockedWidget; return _getWidget(name); } //}}} diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/StyleEditor.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/StyleEditor.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/gui/StyleEditor.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/gui/StyleEditor.java 2018-04-08 23:56:46.000000000 +0000 @@ -91,8 +91,9 @@ } String typeName = Token.tokenToString(token.id); String property = "view.style." + typeName.toLowerCase(); + Font font = new JLabel().getFont(); SyntaxStyle currentStyle = SyntaxUtilities.parseStyle( - jEdit.getProperty(property), "Dialog",12, true); + jEdit.getProperty(property), font.getFamily(), font.getSize(), true); SyntaxStyle style = new StyleEditor(textArea.getView(), currentStyle, typeName).getStyle(); if(style != null) @@ -229,11 +230,12 @@ ? bgColor.getSelectedColor() : null); + Font font = new JLabel().getFont(); return new SyntaxStyle(foreground,background, - new Font("Dialog", + new Font(font.getFamily(), (italics.isSelected() ? Font.ITALIC : 0) | (bold.isSelected() ? Font.BOLD : 0), - 12)); + font.getSize())); } //}}} //{{{ Private members diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/io/VFS.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/io/VFS.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/io/VFS.java 2017-03-18 13:30:30.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/io/VFS.java 2018-04-08 23:57:13.000000000 +0000 @@ -88,7 +88,7 @@ *
  • {@link #createVFSSession(String,Component)} - unless * NON_AWT_SESSION_CAP capability is set
  • *
  • {@link #insert(View,Buffer,String)}
  • - *
  • {@link #load(View,Buffer,String)}
  • + *
  • {@link #load(View,Buffer,String,boolean)}
  • *
  • {@link #save(View,Buffer,String)}
  • * * @@ -104,7 +104,7 @@ * @see VFSManager#getVFSForProtocol(String) * * @author Slava Pestov - * @author $Id: VFS.java 24415 2016-06-19 11:07:55Z kerik-sf $ + * @author $Id: VFS.java 24832 2018-02-22 01:27:36Z vampire0 $ */ public abstract class VFS { @@ -473,8 +473,9 @@ * @param view The view * @param buffer The buffer * @param path The path + * @param untitled is the buffer untitled */ - public boolean load(View view, Buffer buffer, String path) + public boolean load(View view, Buffer buffer, String path, boolean untitled) { if((getCapabilities() & READ_CAP) == 0) { @@ -489,7 +490,7 @@ if((getCapabilities() & WRITE_CAP) == 0) buffer.setReadOnly(true); - Task request = new BufferLoadRequest(view, buffer, session, this, path); + Task request = new BufferLoadRequest(view, buffer, session, this, path, untitled); if(buffer.isTemporary()) // this makes HyperSearch much faster request.run(); diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/jedit_gui.props jedit-5.5.0+dfsg/org/gjt/sp/jedit/jedit_gui.props --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/jedit_gui.props 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/jedit_gui.props 2018-04-08 23:57:31.000000000 +0000 @@ -541,7 +541,7 @@ # Title #{{{ Status bar component visibility -view.status=( mode , fold , encoding ) wrap multiSelect rectSelect overwrite lineSep buffersets task-monitor memory-status errors clock +view.status=( mode , fold , encoding ) locked wrap multiSelect rectSelect overwrite lineSep buffersets task-monitor memory-status errors clock view.status.show-caret-status=true #}}} diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/jEdit.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/jEdit.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/jEdit.java 2017-03-18 13:30:25.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/jEdit.java 2018-04-08 23:56:22.000000000 +0000 @@ -85,7 +85,7 @@ /** * The main class of the jEdit text editor. * @author Slava Pestov - * @version $Id: jEdit.java 24593 2017-01-20 09:57:13Z vampire0 $ + * @version $Id: jEdit.java 24853 2018-04-08 23:54:10Z vampire0 $ */ public class jEdit { @@ -106,7 +106,7 @@ public static String getBuild() { // (major).(minor).(<99 = preX, 99 = "final").(bug fix) - return "05.04.99.00"; + return "05.05.99.00"; } //}}} //{{{ main() method @@ -151,8 +151,9 @@ // are closed background = OperatingSystem.isMacOS(); - // Fix X11 windows class - if (OperatingSystem.isX11()) + // Fix X11 windows class for Java 8. For Java 9, this is done in the + // jar manifest file. + if (OperatingSystem.isX11() && javaVersion.startsWith("1.8")) { try { @@ -505,6 +506,8 @@ MigrationService keymapMigration = ServiceManager.getService(MigrationService.class, "keymap"); keymapMigration.migrate(); } + else + GUIUtilities.advanceSplashProgress(); SearchAndReplace.load(); @@ -568,13 +571,14 @@ File file = new File(path); if(file.exists()) { + GUIUtilities.advanceSplashProgress("run startup scripts"); runStartupScripts(file); } else GUIUtilities.advanceSplashProgress(); } else - GUIUtilities.advanceSplashProgress("run startup scripts"); + GUIUtilities.advanceSplashProgress(); if(runStartupScripts && settingsDirectory != null) { @@ -1553,7 +1557,18 @@ } if(view != null && retVal != null) - view.setBuffer(retVal); + { + if(view.getBuffer() != retVal) + { + view.setBuffer(retVal); + // Although gotoMarker code is set to execute its code in a runAfterIoTasks runnable, + // the view.setBuffer command might end up being executed after the gotoMarker code, + // if so the caret might not be visible when the buffer is changed, so we scroll to + // caret overhere. + if(!view.getTextArea().isCaretVisible()) + view.getTextArea().scrollToCaret(false); + } + } return retVal; } //}}} @@ -1695,7 +1710,25 @@ return buffer; } - newBuffer = new Buffer(path,newFile,false,props); + // if it is new, then it is untitled + newBuffer = new Buffer(path,newFile,false,props,newFile); + + + if (newBuffer.isBackup()) { + Object[] args = {newBuffer.getName()}; + int result = GUIUtilities.option(view, "file-is-backup", + args, JOptionPane.WARNING_MESSAGE, + new String[]{ + jEdit.getProperty("file-is-backup.open"), + jEdit.getProperty("file-is-backup.open-locked"), + jEdit.getProperty("common.cancel") + }, jEdit.getProperty("common.cancel")); + if (result == 2) + return null; + if (result == 1) + newBuffer.setLocked(true); + } + if(!newBuffer.load(view,false)) return null; @@ -1740,7 +1773,35 @@ { return openTemporary(view, parent, path, newFile, null); } + + //{{{ openTemporary() methods /** + * Opens a temporary buffer. A temporary buffer is like a normal + * buffer, except that an event is not fired and the buffer is + * not added to the buffers list. + *

    If a buffer for the given path was + * already opened in jEdit, then this instance is returned. + * Otherwise jEdit will not store a reference + * to the returned Buffer object. + *

    This method is thread-safe. + * + * @param view The view to open the file in + * @param parent The parent directory of the file + * @param path The path name of the file + * @param newFile True if the file should not be loaded from disk + * @param untitled is the buffer untitled + * + * @return the buffer, or null if jEdit was unable to load it + * + * @since jEdit 5.5pre1 + */ + public static Buffer openTemporary(View view, String parent, + String path, boolean newFile, boolean untitled) + { + return openTemporary(view, parent, path, newFile, null, untitled); + } + + /** * Opens a temporary buffer. * Details: {@link #openTemporary(View, String, String, boolean)} * @@ -1757,6 +1818,27 @@ public static Buffer openTemporary(View view, String parent, String path, boolean newFile, Hashtable props) { + return openTemporary(view, parent, path, newFile, null, false); + } + + /** + * Opens a temporary buffer. + * Details: {@link #openTemporary(View, String, String, boolean)} + * + * @param view The view to open the file in + * @param parent The parent directory of the file + * @param path The path name of the file + * @param newFile True if the file should not be loaded from disk + * @param props Buffer-local properties to set in the buffer + * @param untitled is the buffer untitled + * + * @return the buffer, or null if jEdit was unable to load it + * + * @since jEdit 4.3pre10 + */ + public static Buffer openTemporary(View view, String parent, + String path, boolean newFile, Hashtable props, boolean untitled) + { if(view != null && parent == null) parent = view.getBuffer().getDirectory(); @@ -1778,7 +1860,7 @@ if(buffer != null) return buffer; - buffer = new Buffer(path,newFile,true,props); + buffer = new Buffer(path,newFile,true,props,untitled); buffer.setBooleanProperty(Buffer.ENCODING_AUTODETECT, true); if(!buffer.load(view,false)) return null; @@ -1865,14 +1947,15 @@ if(editPane != null && editPane.getBuffer() != null) { path = editPane.getBuffer().getDirectory(); - VFS vfs = VFSManager.getVFSForPath(path); - // don't want 'New File' to create a read only buffer - // if current file is on SQL VFS or something - if((vfs.getCapabilities() & VFS.WRITE_CAP) == 0) - path = System.getProperty("user.home"); - } - else - path = null; + } else { + File backupDir = MiscUtilities.prepareBackupDirectory(System.getProperty("user.home")); + path = backupDir.getPath(); + } + VFS vfs = VFSManager.getVFSForPath(path); + // don't want 'New File' to create a read only buffer + // if current file is on SQL VFS or something + if((vfs.getCapabilities() & VFS.WRITE_CAP) == 0) + path = System.getProperty("user.home"); return newFile(editPane,path); } @@ -1949,8 +2032,12 @@ return false; } - if(buffer.isDirty()) - { + boolean doNotSave = false; + if(buffer.isDirty()) { + if (buffer.isUntitled() && jEdit.getBooleanProperty("suppressNotSavedConfirmUntitled")) { + _closeBuffer(view, buffer, true); + return true; + } Object[] args = { buffer.getName() }; int result = GUIUtilities.confirm(view,"notsaved",args, JOptionPane.YES_NO_CANCEL_OPTION, @@ -1967,11 +2054,19 @@ return false; } } - else if(result != JOptionPane.NO_OPTION) + else if(result != JOptionPane.NO_OPTION) { + // cancel return false; } + else if(result == JOptionPane.NO_OPTION) { + // when we close an untitled buffer, cos we do not want to save it by answering No, + // mark to delete the autosave file + doNotSave = true; + } + + } - _closeBuffer(view,buffer); + _closeBuffer(view,buffer, doNotSave); return true; } //}}} @@ -2042,6 +2137,22 @@ */ public static void _closeBuffer(View view, Buffer buffer) { + _closeBuffer(view, buffer, true); + } + + //{{{ _closeBuffer() method + /** + * Closes the buffer, even if it has unsaved changes. + * @param view The view, may be null + * @param buffer The buffer + * @param doNotSave we do not want to keep the autosave file + * + * @exception NullPointerException if the buffer is null + * + * @since jEdit 2.2pre1 + */ + public static void _closeBuffer(View view, Buffer buffer, boolean doNotSave) + { if(buffer.isClosed()) { // can happen if the user presses C+w twice real @@ -2084,7 +2195,7 @@ removeBufferFromList(buffer); - buffer.close(); + buffer.close(doNotSave); DisplayManager.bufferClosed(buffer); bufferSetManager.removeBuffer(buffer); EditBus.send(new BufferUpdate(buffer,view,BufferUpdate.CLOSED)); @@ -2120,10 +2231,14 @@ boolean saveRecent = !(isExiting && jEdit.getBooleanProperty("restore")); + boolean autosaveUntitled = jEdit.getBooleanProperty("autosaveUntitled"); + + boolean suppressNotSavedConfirmUntitled = jEdit.getBooleanProperty("suppressNotSavedConfirmUntitled") || autosaveUntitled; + Buffer buffer = buffersFirst; while(buffer != null) { - if(buffer.isDirty()) + if(buffer.isDirty() && !( buffer.isUntitled() && suppressNotSavedConfirmUntitled ) ) { dirty = true; break; @@ -2131,8 +2246,7 @@ buffer = buffer.next; } - if(dirty) - { + if(dirty) { boolean ok = new CloseDialog(view).isOK(); if(!ok) return false; @@ -2155,7 +2269,7 @@ while(buffer != null) { - if(!buffer.isNewFile() && saveRecent) + if((!buffer.isNewFile() || (buffer.isUntitled() && autosaveUntitled)) && saveRecent) { Integer _caret = (Integer)buffer.getProperty(Buffer.CARET); int caret = _caret == null ? 0 : _caret.intValue(); @@ -2313,6 +2427,7 @@ path = path.toLowerCase(); } + // TODO: danson, this causes ProjectViewer to block, not sure why yet synchronized(bufferListLock) { return bufferHash.get(path); @@ -4263,11 +4378,16 @@ String[] newArgs = new String[additionalFiles.size() + args.length]; additionalFiles.copyInto(newArgs); System.arraycopy(args, 0, newArgs, additionalFiles.size(), args.length); - buffer = openFiles(null,userDir,newArgs); + // We need to pass view to openFiles, because when a file is openened via + // the command line and is not the current buffer (because other buffers are + // already openened) and '+line' command line argument is given, a view is + // needed to scroll to the given line. + buffer = openFiles(view,userDir,newArgs); } else { - buffer = openFiles(null,userDir,args); + // See comment above in if part on passing view. + buffer = openFiles(view,userDir,args); } if(buffer != null) @@ -4615,6 +4735,23 @@ if (!view.confirmToCloseDirty()) return false; + // move the dirty untitled buffers to the next open view's current editpane bufferset (first or last) + boolean moveUntitled = jEdit.getBooleanProperty("autosaveUntitled"); + if (moveUntitled && !getBufferSetManager().getScope().equals(BufferSet.Scope.global)) { + View targetView; + if ( view.equals(viewsFirst) ) { + targetView = viewsLast; + } else { + targetView = viewsFirst; + } + BufferSet bufferSet = targetView.getEditPane().getBufferSet(); + for (Buffer buffer : view.getBuffers()) { + if ( buffer.isUntitled() && buffer.isDirty()) { + bufferSet.addBuffer(buffer); + } + } + } + view.close(); view.dispose(); removeViewFromList(view); diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/jedit.manifest jedit-5.5.0+dfsg/org/gjt/sp/jedit/jedit.manifest --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/jedit.manifest 2017-03-18 13:30:34.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/jedit.manifest 2018-04-08 23:57:44.000000000 +0000 @@ -1 +1,2 @@ Main-Class: org.gjt.sp.jedit.jEdit +Add-Opens: java.desktop/sun.awt \ No newline at end of file diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/jedit.props jedit-5.5.0+dfsg/org/gjt/sp/jedit/jedit.props --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/jedit.props 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/jedit.props 2018-04-08 23:57:24.000000000 +0000 @@ -91,7 +91,7 @@ # Number of backups to make, 0=no backups backups=1 -# Backup directory +# Backup directory suggestion: $JEDIT_SETTINGS/backups backup.directory= # Backup filename prefix and suffix diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/MiscUtilities.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/MiscUtilities.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/MiscUtilities.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/MiscUtilities.java 2018-04-08 23:57:06.000000000 +0000 @@ -3,7 +3,7 @@ * :tabSize=4:indentSize=4:noTabs=false: * :folding=explicit:collapseFolds=1: * - * Copyright © 1999-2013 Slava Pestov, Richard S. Hall, Dirk Moebius, + * Copyright \ 1999-2013 Slava Pestov, Richard S. Hall, Dirk Moebius, * jgellene, ezust, vanza, kpouer, Vampire0, Jarekczek, k_satoda, voituk, * Thomas Meyer, Martin Raspe * And possibly other members of the All Volunteer Developer Team (tm) @@ -56,7 +56,7 @@ *

  • {@link #constructPath(String,String)}
  • * * - * @version $Id: MiscUtilities.java 24464 2016-07-19 14:47:33Z ezust $ + * @version $Id: MiscUtilities.java 24840 2018-03-04 20:08:53Z ezust $ */ public class MiscUtilities { @@ -175,15 +175,19 @@ } String varName = m.group(2); String expansion = System.getenv(varName); - if (expansion == null) - { // try everything uppercase? - varName = varName.toUpperCase(); - String uparg = arg.toUpperCase(); - m = p.matcher(uparg); - expansion = System.getenv(varName); + if (expansion == null) { + if (varName.equalsIgnoreCase("jedit_settings") && jEdit.getSettingsDirectory() != null) { + expansion = jEdit.getSettingsDirectory(); + } + else { + // try everything uppercase? + varName = varName.toUpperCase(); + String uparg = arg.toUpperCase(); + m = p.matcher(uparg); + expansion = System.getenv(varName); + } } - if (expansion != null) - { + if (expansion != null) { expansion = expansion.replace("\\", "\\\\"); return m.replaceFirst(expansion); } @@ -668,56 +672,116 @@ } }// }}} + //{{{ prepareAutosaveDirectory method + /** + * Prepares the directory to autosave the specified file. + * A jEdit property is used to determine the directory. + * If there is none specified by props, + * then the current directory is used, but only for local files. + * The directory is created if it does not exist. + * @param path path to the buffer + * @return Autosave directory. null is returned for + * non-local files if no backup directory is specified in properties. + * @since jEdit 5.5 + */ + public static File prepareAutosaveDirectory(String path) + { + boolean isLocal = VFSManager.getVFSForPath(path) instanceof FileVFS; + File file; + if (isLocal) + file = new File(path); + else + file = new File(replaceNonPathChars(path, "_")); + File dir = file; + if (!dir.isDirectory()) + dir=dir.getParentFile(); + + // Check for autosave.directory + String autosaveDirectory = jEdit.getProperty("autosave.directory"); + if(autosaveDirectory != null) + { + autosaveDirectory = MiscUtilities.expandVariables(autosaveDirectory); + if (path.startsWith(autosaveDirectory)) + return dir; + // Perhaps here we would want to guard with + // a property for parallel backups or not. + autosaveDirectory = MiscUtilities.concatPath( + autosaveDirectory, dir.getAbsolutePath()); + dir = new File(autosaveDirectory); + if (!dir.exists()) + dir.mkdirs(); + } + else { + if (!isLocal) + return null; + } + return dir; + + } //}}} + + + //{{{ getBackupDirectory method + /** + * Get backup.directory property, or null. + * @return backup.directory property, or null + * @since jEdit 5.5pre1 + */ + public static String getBackupDirectory() + { + String backupDirectory = jEdit.getProperty("backup.directory"); + if(backupDirectory == null || backupDirectory.length() == 0) + { + return null; + } else { + return MiscUtilities.expandVariables(backupDirectory); + } + }// }}} + //{{{ prepareBackupDirectory method /** * Prepares the directory to backup the specified file. - * jedit property is used to determine the directory. + * A jEdit property is used to determine the directory. * If there is no dedicated backup directory specified by props, * then the current directory is used, but only for local files. - * The directory is created if not exists. + * The directory is created if it does not exist. + * @param path path to the buffer * @return Backup directory. null is returned for * non-local files if no backup directory is specified in properties. * @since 5.0pre1 */ public static File prepareBackupDirectory(String path) { - String backupDirectory = jEdit.getProperty("backup.directory"); - File dir; boolean isLocal = VFSManager.getVFSForPath(path) instanceof FileVFS; File file; if (isLocal) file = new File(path); else file = new File(replaceNonPathChars(path, "_")); - - // Check for backup.directory, and create that - // directory if it doesn't exist - if(backupDirectory == null || backupDirectory.length() == 0) + File dir = file; + if (!dir.isDirectory()) + dir=dir.getParentFile(); + + // Check for backup.directory + String backupDirectory = getBackupDirectory(); + if(backupDirectory == null) { if (!isLocal) return null; - else { - backupDirectory = file.getParent(); - dir = new File(backupDirectory); - } } else { - backupDirectory = MiscUtilities.constructPath( - System.getProperty("user.home"), backupDirectory); - + if (path.startsWith(backupDirectory)) + return dir; // Perhaps here we would want to guard with // a property for parallel backups or not. backupDirectory = MiscUtilities.concatPath( - backupDirectory,file.getParent()); - + backupDirectory, dir.getAbsolutePath()); dir = new File(backupDirectory); - if (!dir.exists()) dir.mkdirs(); } - return dir; + } //}}} //{{{ prepareBackupFile methods @@ -958,9 +1022,35 @@ */ public static boolean isBackup(String filename) { - if (filename.startsWith("#")) return true; - if (filename.endsWith("~")) return true; - if (filename.endsWith(".bak")) return true; + if (filename == null) + { + return false; + } + + // check for #Untitled=X# and #filename#save# + if (filename.matches("[#]Untitled-\\d+[#]") || filename.matches("[#].*?[#]save[#]")) + { + return true; + } + + // check for user supplied prefix and suffix + String backupPrefix = jEdit.getProperty("backup.prefix"); + String backupSuffix = jEdit.getProperty("backup.suffix"); + if (backupPrefix != null && backupSuffix != null) + { + return filename.startsWith(backupPrefix) && filename.endsWith(backupSuffix); + } + + if (backupPrefix != null && filename.startsWith(backupPrefix)) + { + return true; + } + + if (backupSuffix != null && filename.startsWith(backupSuffix)) + { + return true; + } + return false; } //}}} @@ -1518,8 +1608,13 @@ Properties sorted = new Properties() { @Override public synchronized Enumeration keys() { - return Collections.enumeration(new TreeSet(super.keySet())); + return Collections.enumeration(new TreeSet(props.keySet())); } + @Override + public synchronized Set> entrySet() { + return (new TreeMap(props)).entrySet(); + } + }; sorted.putAll(props); sorted.store(out, comments); @@ -1546,6 +1641,8 @@ Map env = pb.environment(); if (OperatingSystem.isUnix()) prefixMap.put(System.getProperty("user.home"), "~"); + if (jEdit.getSettingsDirectory() != null) + prefixMap.put(jEdit.getSettingsDirectory(), "JEDIT_SETTINGS"); for (Map.Entry entry: env.entrySet()) { String k = entry.getKey(); @@ -1575,6 +1672,7 @@ } prefixMap.put(v, k); } + } //}}} //{{{ compress() method diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/BufferOptionPane.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/BufferOptionPane.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/BufferOptionPane.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/BufferOptionPane.java 2018-04-08 23:57:00.000000000 +0000 @@ -58,6 +58,7 @@ private Buffer buffer; private JCheckBox elasticTabstops; private JComboBox autoIndent; + private JCheckBox locked; public BufferOptionPane() { @@ -223,6 +224,12 @@ elasticTabstops.setSelected(buffer.getBooleanProperty("elasticTabstops")); addComponent(elasticTabstops); //}}} + + //{{{ Locked setting + locked = new JCheckBox(jEdit.getProperty("buffer-options.locked")); + locked.setSelected(buffer.getBooleanProperty("locked")); + addComponent(locked); + //}}} } //}}} //{{{ _save() method @@ -304,8 +311,10 @@ buffer.setBooleanProperty("elasticTabstops",elasticTabstops.isSelected()); buffer.setStringProperty("autoIndent", (String)autoIndent.getSelectedItem()); + buffer.setBooleanProperty("locked", locked.isSelected()); // requires propertiesChanged() call afterwards + index = mode.getSelectedIndex(); - buffer.setMode(modes[index]); + buffer.setMode(modes[index]); // NOTE: setMode() makes implicit call of propertiesChanged() switch(checkModStatus.getSelectedIndex()) { case 0: diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/LargeFilesOptionPane.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/LargeFilesOptionPane.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/LargeFilesOptionPane.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/LargeFilesOptionPane.java 2018-04-08 23:57:00.000000000 +0000 @@ -1,9 +1,9 @@ /* - * EditingOptionPane.java - Mode-specific options panel + * LargeFilesOptionPane.java - Options for handling large files * :tabSize=4:indentSize=4:noTabs=false: * :folding=explicit:collapseFolds=1: * - * Copyright (C) 1998, 2002 Slava Pestov + * Copyright (C) 2013 Matthieu Casanova * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -31,10 +31,10 @@ //}}} /** - * The EditingOptionPane has been split up so the large files option pane is - * now a separate pane. - * @author Slava Pestov - * @version $Id: EditingOptionPane.java 23381 2013-12-09 12:43:14Z kpouer $ + * The options pane for handling large files. + * + * @author kpouer + * now a separate pane split off from $Id: EditingOptionPane.java 23381 2013-12-09 12:43:14Z kpouer $ */ public class LargeFilesOptionPane extends AbstractOptionPane { @@ -49,9 +49,17 @@ protected void _init() { //{{{ Large file mode - addSeparator(jEdit.getProperty("options.editing.largefilemode.title")); - addComponent(new JLabel(jEdit.getProperty("options.editing.largefilemode"))); + addSeparator("options.editing.largefilemode.title"); + + String labelText = jEdit.getProperty("options.editing.largefilemode", + new Object[] {jEdit.getIntegerProperty("largeBufferSize"), + jEdit.getIntegerProperty("longLineLimit")}); + JLabel titleLabel = new JLabel(labelText); + titleLabel.setToolTipText(jEdit.getProperty("options.editing.largefilemode.tooltip")); + addComponent(titleLabel); + + addComponent(askLargeFileMode = new JRadioButton(jEdit.getProperty("options.editing.largefilemode.option.ask"))); addComponent(fullSyntaxLargeFileMode = new JRadioButton(jEdit.getProperty("options.editing.largefilemode.option.full"))); addComponent(limitedSyntaxLargeFileMode = new JRadioButton(jEdit.getProperty("options.editing.largefilemode.option.limited"))); diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/SaveBackupOptionPane.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/SaveBackupOptionPane.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/SaveBackupOptionPane.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/SaveBackupOptionPane.java 2018-04-08 23:57:00.000000000 +0000 @@ -35,7 +35,7 @@ * The Save and Backup option panel. * * @author Slava Pestov - * @author $Id: SaveBackupOptionPane.java 21831 2012-06-18 22:54:17Z ezust $ + * @author $Id: SaveBackupOptionPane.java 24843 2018-03-19 00:04:03Z ezust $ */ public class SaveBackupOptionPane extends AbstractOptionPane { @@ -49,9 +49,9 @@ @Override protected void _init() { - + /* Save-As Uses FSB */ - + saveAsUsesFSB = new JCheckBox(jEdit.getProperty( "options.save-back.saveAsUsesFSB")); saveAsUsesFSB.setSelected(jEdit.getBooleanProperty( @@ -59,14 +59,14 @@ saveAsUsesFSB.setToolTipText(jEdit.getProperty( "options.save-back.saveAsUsesFSB.tooltip")); addComponent(saveAsUsesFSB); - + /* Two-stage save */ twoStageSave = new JCheckBox(jEdit.getProperty( "options.save-back.twoStageSave")); twoStageSave.setSelected(jEdit.getBooleanProperty( "twoStageSave")); twoStageSave.setToolTipText(jEdit.getProperty( - + "options.save-back.twoStageSave.tooltip")); addComponent(twoStageSave); @@ -77,24 +77,6 @@ "confirmSaveAll")); addComponent(confirmSaveAll); - /* Autosave interval */ - autosave = new NumericTextField(jEdit.getProperty("autosave"), true); - addComponent(jEdit.getProperty("options.save-back.autosave"),autosave); - - /* Autosave untitled buffers */ - autosaveUntitled = new JCheckBox(jEdit.getProperty( - "options.save-back.autosaveUntitled")); - autosaveUntitled.setSelected(jEdit.getBooleanProperty("autosaveUntitled")); - addComponent(autosaveUntitled); - - suppressNotSavedConfirmUntitled = new JCheckBox(jEdit.getProperty( - "options.save-back.suppressNotSavedConfirmUntitled")); - suppressNotSavedConfirmUntitled.setToolTipText(jEdit.getProperty( - "options.save-back.suppressNotSavedConfirmUntitled.tooltip")); - suppressNotSavedConfirmUntitled.setSelected( - jEdit.getBooleanProperty("suppressNotSavedConfirmUntitled")); - addComponent(suppressNotSavedConfirmUntitled); - useMD5forDirtyCalculation = new JCheckBox(jEdit.getProperty( "options.save-back.useMD5forDirtyCalculation")); useMD5forDirtyCalculation.setToolTipText(jEdit.getProperty( @@ -104,23 +86,68 @@ addComponent(useMD5forDirtyCalculation); + /* Close Dirty Untitled Buffers without confirm */ + suppressNotSavedConfirmUntitled = new JCheckBox(jEdit.getProperty( + "options.save-back.suppressNotSavedConfirmUntitled")); + suppressNotSavedConfirmUntitled.setToolTipText(jEdit.getProperty("options.save-back.suppressNotSavedConfirmUntitled.tooltip")); + suppressNotSavedConfirmUntitled.setSelected(jEdit.getBooleanProperty("suppressNotSavedConfirmUntitled")); + addComponent(suppressNotSavedConfirmUntitled); - /* Backup count */ - backups = new NumericTextField(jEdit.getProperty("backups"), true); - addComponent(jEdit.getProperty("options.save-back.backups"),backups); + addSeparator("options.autosave"); + + /* Autosave Directory */ + + autosaveDirectory = new JTextField(jEdit.getProperty( + "autosave.directory")); + autosaveDirectory.setToolTipText( + jEdit.getProperty("options.save-back.backupDirectory.tooltip")); + + JButton browseAutosaveDirectory = new JButton("..."); + browseAutosaveDirectory.addActionListener(new MyActionListener2()); + JPanel panel = new JPanel(new BorderLayout()); + panel.add(autosaveDirectory); + panel.add(browseAutosaveDirectory, BorderLayout.EAST); + addComponent(jEdit.getProperty("options.save-back.autosaveDirectory"), + panel); + + + /* Autosave untitled buffers */ + autosaveUntitled = new JCheckBox(jEdit.getProperty( + "options.save-back.autosaveUntitled")); + autosaveUntitled.setToolTipText(jEdit.getProperty("options.save-back.autosaveUntitled.tooltip")); + + autosaveUntitled.setSelected(jEdit.getBooleanProperty("autosaveUntitled")); + addComponent(autosaveUntitled); + + /* Autosave interval */ + autosave = new NumericTextField(jEdit.getProperty("autosave"), true); + autosave.setToolTipText(jEdit.getProperty("options.save-back.autosave.tooltip")); + addComponent(jEdit.getProperty("options.save-back.autosave"),autosave); + + addSeparator("options.backup"); /* Backup directory */ backupDirectory = new JTextField(jEdit.getProperty( "backup.directory")); + backupDirectory.setToolTipText( + jEdit.getProperty("options.save-back.backupDirectory.tooltip")); + JButton browseBackupDirectory = new JButton("..."); browseBackupDirectory.addActionListener(new MyActionListener()); - JPanel panel = new JPanel(new BorderLayout()); + panel = new JPanel(new BorderLayout()); panel.add(backupDirectory); panel.add(browseBackupDirectory, BorderLayout.EAST); addComponent(jEdit.getProperty("options.save-back.backupDirectory"), panel); + + /* Backup count */ + backups = new NumericTextField(jEdit.getProperty("backups"), true); + backups.setToolTipText(jEdit.getProperty("options.save-back.backups.tooltip")); + addComponent(jEdit.getProperty("options.save-back.backups"),backups); + + /* Backup filename prefix */ backupPrefix = new JTextField(jEdit.getProperty("backup.prefix")); addComponent(jEdit.getProperty("options.save-back.backupPrefix"), @@ -148,15 +175,18 @@ jEdit.setBooleanProperty("confirmSaveAll",confirmSaveAll.isSelected()); jEdit.setProperty("autosave", this.autosave.getText()); jEdit.setProperty("backups",backups.getText()); + jEdit.setProperty("backup.directory",backupDirectory.getText()); + String autosaveDirectoryOriginal = jEdit.getProperty("autosave.directory"); + jEdit.setProperty("autosave.directory", autosaveDirectory.getText()); jEdit.setProperty("backup.prefix",backupPrefix.getText()); jEdit.setProperty("backup.suffix",backupSuffix.getText()); jEdit.setBooleanProperty("backupEverySave", backupEverySave.isSelected()); boolean newAutosave = autosaveUntitled.isSelected(); boolean oldAutosave = jEdit.getBooleanProperty("autosaveUntitled"); jEdit.setBooleanProperty("autosaveUntitled", newAutosave); - jEdit.setBooleanProperty("suppressNotSavedConfirmUntitled", - suppressNotSavedConfirmUntitled.isSelected()); + jEdit.setBooleanProperty("suppressNotSavedConfirmUntitled", suppressNotSavedConfirmUntitled.isSelected()); + jEdit.setBooleanProperty("useMD5forDirtyCalculation", useMD5forDirtyCalculation.isSelected()); if ((!newAutosave || jEdit.getIntegerProperty("autosave",0) == 0) && oldAutosave) @@ -170,6 +200,19 @@ } } } + + // if autosave dir changed, we should issue to perform an autosave for all dirty and all untitled buffers + // to have the autosaves at the new location + if (!autosaveDirectoryOriginal.equals(autosaveDirectory.getText())) { + Buffer[] buffers = jEdit.getBuffers(); + for (Buffer buffer : buffers) { + // save dirty + if ( buffer.isDirty() ) { + buffer.autosave(true); + } + } + } + } //}}} //{{{ Private members @@ -179,8 +222,10 @@ private JTextField autosave; private JCheckBox autosaveUntitled; private JCheckBox suppressNotSavedConfirmUntitled; + private JCheckBox useMD5forDirtyCalculation; private JTextField backups; + private JTextField autosaveDirectory; private JTextField backupDirectory; private JTextField backupPrefix; private JTextField backupSuffix; @@ -193,13 +238,25 @@ public void actionPerformed(ActionEvent e) { String[] choosenFolder = - GUIUtilities.showVFSFileDialog(null, - backupDirectory.getText(), - VFSBrowser.CHOOSE_DIRECTORY_DIALOG, - false); + GUIUtilities.showVFSFileDialog(null, backupDirectory.getText(), + VFSBrowser.CHOOSE_DIRECTORY_DIALOG, false); if (choosenFolder != null) backupDirectory.setText(choosenFolder[0]); + } } //}}} + //{{{ MyActionListener class + private class MyActionListener2 implements ActionListener + { + public void actionPerformed(ActionEvent e) + { + String[] choosenFolder = + GUIUtilities.showVFSFileDialog(null, autosaveDirectory.getText(), + VFSBrowser.CHOOSE_DIRECTORY_DIALOG, false); + if (choosenFolder != null) + autosaveDirectory.setText(choosenFolder[0]); + + } + } //}}} } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/ShortcutsOptionPane.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/ShortcutsOptionPane.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/ShortcutsOptionPane.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/ShortcutsOptionPane.java 2018-04-08 23:57:00.000000000 +0000 @@ -50,7 +50,7 @@ /** * Key binding editor. * @author Slava Pestov - * @version $Id: ShortcutsOptionPane.java 24411 2016-06-19 11:02:53Z kerik-sf $ + * @version $Id: ShortcutsOptionPane.java 24751 2017-10-12 10:28:02Z ezust $ */ @SuppressWarnings("serial") public class ShortcutsOptionPane extends AbstractOptionPane @@ -102,6 +102,8 @@ keymapBox.add(duplicateKeymap); keymapBox.add(resetKeymap); keymapBox.add(deleteKeymap); + keymaps.setToolTipText(jEdit.getProperty("options.shortcuts.keymap.tooltip")); + keymapBox.setToolTipText(jEdit.getProperty("options.shortcuts.keymap.tooltip")); // combobox to choose action set selectModel = new JComboBox<>(models); @@ -152,7 +154,20 @@ filterPanel.add(filterTF); filterPanel.add(clearButton); - keyTable = new JTable(filteredModel); + keyTable = new JTable(filteredModel) + { + public String getToolTipText(MouseEvent e) + { + java.awt.Point p = e.getPoint(); + int rowIndex = rowAtPoint(p); + int colIndex = columnAtPoint(p); + int modelColIndex = convertColumnIndexToModel(colIndex); + + ShortcutsModel model = (ShortcutsModel) ((FilteredTableModel)getModel()).getDelegated(); + + return modelColIndex == 0 ? model.getToolTip(rowIndex) : null; + } + }; filteredModel.setTable(keyTable); keyTable.setRowHeight(GenericGUIUtilities.defaultRowHeight()); keyTable.getTableHeader().setReorderingAllowed(false); @@ -307,32 +322,33 @@ continue; label = GenericGUIUtilities.prettifyMenuLabel(label); - addBindings(actionSet, name, label, bindings); + String tooltip = ea.getToolTip(); + addBindings(actionSet, name, label, tooltip, bindings); } return new ShortcutsModel(modelLabel,bindings); } //}}} //{{{ addBindings() method - private void addBindings(String actionSet, String name, String label, Collection bindings) + private void addBindings(String actionSet, String name, String label, String tooltip, Collection bindings) { KeyBinding[] b = new KeyBinding[2]; - b[0] = createBinding(actionSet, name,label, + b[0] = createBinding(actionSet, name,label, tooltip, selectedKeymap.getShortcut(name + ".shortcut")); - b[1] = createBinding(actionSet, name,label, + b[1] = createBinding(actionSet, name,label, tooltip, selectedKeymap.getShortcut(name + ".shortcut2")); bindings.add(b); } //}}} //{{{ createBinding() method - private KeyBinding createBinding(String actionSet, String name, String label, String shortcut) + private KeyBinding createBinding(String actionSet, String name, String label, String tooltip, String shortcut) { if(shortcut != null && shortcut.isEmpty()) shortcut = null; - KeyBinding binding = new KeyBinding(name,label,shortcut,false); + KeyBinding binding = new KeyBinding(name,label,tooltip,shortcut,false); binding.actionSet = actionSet; allBindings.add(binding); @@ -538,7 +554,6 @@ // The only place this gets used is in JTable's own display code, so // we translate the shortcut to platform-specific form for display here. KeyBinding bindingAt = getBindingAt(row, 0); - setToolTipText(bindingAt.label); switch(col) { case 0: @@ -554,6 +569,13 @@ } } + public String getToolTip(int row) + { + KeyBinding bindingAt = getBindingAt(row, 0); + + return bindingAt.tooltip; + } + @Override public void setValueAt(Object value, int row, int col) { diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/TextAreaOptionPane.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/TextAreaOptionPane.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/options/TextAreaOptionPane.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/options/TextAreaOptionPane.java 2018-04-08 23:57:00.000000000 +0000 @@ -41,7 +41,7 @@ /** * @author Slava Pestov - * @version $Id: TextAreaOptionPane.java 24499 2016-08-15 13:28:43Z kerik-sf $ + * @version $Id: TextAreaOptionPane.java 24775 2017-11-04 01:43:57Z ezust $ */ public class TextAreaOptionPane extends AbstractOptionPane { @@ -417,7 +417,6 @@ if (selected != null) { - selected = selected.deriveFont(Font.PLAIN, 12); fontsModel.addElement(selected); fonts.setSelectedIndex(fontsModel.size() - 1); } @@ -497,7 +496,7 @@ index, isSelected, cellHasFocus); - setText(f.getFamily()); + setText(f.getFamily() + " " + f.getSize()); return this; } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/perspective.dtd jedit-5.5.0+dfsg/org/gjt/sp/jedit/perspective.dtd --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/perspective.dtd 2017-03-18 13:30:34.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/perspective.dtd 2018-04-08 23:57:45.000000000 +0000 @@ -7,7 +7,8 @@ + AUTORELOAD_DIALOG %att-bool; "TRUE" + UNTITLED %att-bool; "FALSE" > diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/PerspectiveManager.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/PerspectiveManager.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/PerspectiveManager.java 2017-03-18 13:30:34.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/PerspectiveManager.java 2018-04-08 23:57:31.000000000 +0000 @@ -23,12 +23,9 @@ package org.gjt.sp.jedit; import java.io.Closeable; -import java.io.StreamTokenizer; -import java.io.StringReader; import java.io.IOException; import java.util.Collection; import java.util.LinkedList; -import java.util.Stack; import org.gjt.sp.util.IOUtilities; import org.gjt.sp.util.Log; @@ -40,7 +37,7 @@ /** Manages persistence of open buffers and views across jEdit sessions. * @since jEdit 4.2pre1 * @author Slava Pestov - * @version $Id: PerspectiveManager.java 22357 2012-10-13 04:58:01Z ezust $ + * @version $Id: PerspectiveManager.java 24800 2017-12-29 15:38:11Z ezust $ */ public class PerspectiveManager { @@ -130,7 +127,7 @@ Collection savedBuffers = new LinkedList(); for (Buffer buffer: buffers) { - if (!buffer.isNewFile()) + if (!buffer.isNewFile() || buffer.isUntitled()) { savedBuffers.add(buffer); } @@ -159,8 +156,13 @@ out.write(buffer.getAutoReload() ? "TRUE" : "FALSE"); out.write("\" AUTORELOAD_DIALOG=\""); out.write(buffer.getAutoReloadDialog() ? "TRUE" : "FALSE"); + out.write("\" UNTITLED=\""); + out.write(buffer.isUntitled()? "TRUE" : "FALSE"); out.write("\">"); + + // for untitled, we only have the autosave file out.write(XMLUtilities.charsToEntities(buffer.getPath(), false)); + out.write(""); out.write(lineSep); } @@ -263,7 +265,7 @@ View.ViewConfig config; boolean restoreFiles; boolean restoreSplits; - String autoReload, autoReloadDialog; + String autoReload, autoReloadDialog, untitled; PerspectiveHandler(boolean restoreFiles) { @@ -311,6 +313,8 @@ autoReload = value; else if(aname.equals("AUTORELOAD_DIALOG")) autoReloadDialog = value; + else if(aname.equals("UNTITLED")) + untitled = value; } /** @@ -335,7 +339,12 @@ { if (restoreFiles && !skipRemote(charData.toString())) { - Buffer restored = jEdit.openTemporary(null,null, charData.toString(), false); + boolean bufferUntitled = false; + if(untitled != null) { + bufferUntitled = "TRUE".equals(untitled); + } + + Buffer restored = jEdit.openTemporary(null,null, charData.toString(), bufferUntitled, null, bufferUntitled); // if the autoReload attributes are not present, don't set anything // it's sufficient to check whether they are present on the first BUFFER element if (restored != null) @@ -344,6 +353,8 @@ restored.setAutoReload("TRUE".equals(autoReload)); if(autoReloadDialog != null) restored.setAutoReloadDialog("TRUE".equals(autoReloadDialog)); + if(untitled != null) + restored.setUntitled(bufferUntitled); jEdit.commitTemporary(restored); } } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/pluginmgr/InstallPanel.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/pluginmgr/InstallPanel.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/pluginmgr/InstallPanel.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/pluginmgr/InstallPanel.java 2018-04-08 23:57:31.000000000 +0000 @@ -63,7 +63,7 @@ //}}} /** - * @version $Id: InstallPanel.java 24541 2016-09-14 09:58:29Z makarius $ + * @version $Id: InstallPanel.java 24799 2017-12-29 15:17:38Z ezust $ */ class InstallPanel extends JPanel implements EBComponent { @@ -545,7 +545,7 @@ case 2: return entry.set; case 3: - if (entry.installedVersion != null) + if ((entry.installedVersion != null) && !entry.installedVersion.equals(entry.version)) return entry.installedVersion + "->" + entry.version; return entry.version; case 4: diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/pluginmgr/PluginList.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/pluginmgr/PluginList.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/pluginmgr/PluginList.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/pluginmgr/PluginList.java 2018-04-08 23:57:31.000000000 +0000 @@ -40,7 +40,7 @@ /** * Plugin list downloaded from server. * @since jEdit 3.2pre2 - * @version $Id: PluginList.java 24598 2017-01-29 16:19:46Z vampire0 $ + * @version $Id: PluginList.java 24766 2017-10-19 00:12:44Z daleanson $ */ class PluginList { @@ -533,8 +533,9 @@ } else if(what.equals("jdk")) { - String javaVersion = System.getProperty("java.version").substring(0,3); - + String javaVersion = System.getProperty("java.version"); + // openjdk 9 returns just "9", not 1.X.X like previous versions + javaVersion = javaVersion.length() >= 3 ? javaVersion.substring(0, 3) : javaVersion; if((from == null || StandardUtilities.compareStrings( javaVersion,from,false) >= 0) && @@ -615,6 +616,7 @@ return ((id != null) && !id.equals(MirrorList.Mirror.NONE)) ? id : "default"; } + // TODO: this isn't used, should it be? private static String getAutoSelectedMirror() throws java.io.IOException { diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/BasicPrintPreviewPaneUI.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/BasicPrintPreviewPaneUI.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/BasicPrintPreviewPaneUI.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/BasicPrintPreviewPaneUI.java 2018-04-08 23:57:33.000000000 +0000 @@ -283,6 +283,7 @@ scrollPane.revalidate(); printPreviewPane.revalidate(); + printPreviewPane.repaint(); } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/BufferPrintable1_7.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/BufferPrintable1_7.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/BufferPrintable1_7.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/BufferPrintable1_7.java 2018-04-08 23:57:33.000000000 +0000 @@ -60,10 +60,8 @@ private View view; private Buffer buffer; - private boolean selection; - private int[] selectedLines; private boolean reverse; - private int printRangeType = PrinterDialog.ALL; + private PrintRangeType printRangeType = PrintRangeType.ALL; private Font font; private SyntaxStyle[] styles; private boolean header; @@ -72,6 +70,7 @@ private HashMap pages = null; private int currentPhysicalLine; + private int[] printingLineNumbers = null; private LineMetrics lm; private final List lineList; @@ -86,12 +85,24 @@ this.view = view; this.buffer = buffer; firstCall = true; // pages and page ranges are calculated only once + reverse = attributes.containsKey(Reverse.class); + if (attributes.containsKey(PrintRangeType.class)) + { + printRangeType = (PrintRangeType)attributes.get(PrintRangeType.class); + } + + // the buffer might have a buffer property for the line numbers, if so, then + // the buffer is a temporary buffer representing selected text and the line + // numbers correspond with the selected lines. + printingLineNumbers = (int[])buffer.getProperty("printingLineNumbers"); header = jEdit.getBooleanProperty("print.header"); footer = jEdit.getBooleanProperty("print.footer"); lineNumbers = jEdit.getBooleanProperty("print.lineNumbers"); font = jEdit.getFontProperty("print.font"); boolean color = Chromaticity.COLOR.equals(attributes.get(Chromaticity.class)); + //Log.log(Log.DEBUG, this, "color is " + color); + //Log.log(Log.DEBUG, this, "chromaticity is " + attributes.get(Chromaticity.class)); styles = org.gjt.sp.util.SyntaxUtilities.loadStyles(jEdit.getProperty("print.font"), jEdit.getIntegerProperty("print.fontsize", 10), color); styles[Token.NULL] = new SyntaxStyle(textColor, null, font); @@ -119,36 +130,6 @@ } } - /** - * Set the line numbers that are selected in the text area. - * @param lines An array of lines that are selected in the text area. - */ - public void setSelectedLines(int[] lines) - { - selectedLines = Arrays.copyOf(lines, lines.length); - Arrays.sort(selectedLines); - } - - /** - * Set to true to print the pages in reverse order, that is, print - * the last page first and the first page last. - * @param b Whether to print in reverse or not. - */ - public void setReverse(boolean b) - { - reverse = b; - } - - /** - * Set the print range type. - * @param printRangeType One of PrinterDialog.ALL, RANGE, CURRENT_PAGE, or SELECTION. - */ - public void setPrintRangeType(int printRangeType) - { - this.printRangeType = printRangeType; - selection = PrinterDialog.SELECTION == printRangeType; - } - // useful to avoid having to recalculate the page ranges if they are already known public void setPages(HashMap pages) { @@ -171,26 +152,8 @@ firstCall = false; } - // figure out the current page if that is what is requested. I'm using - // the page that contains the caret as the current page. - // QUESTION: use the text area first physical line instead? - if (printRangeType == PrinterDialog.CURRENT_PAGE) - { - int caretLine = view.getTextArea().getCaretLine(); - for (Integer i : pages.keySet()) - { - Range range = pages.get(i); - if (range.contains(caretLine)) - { - pageIndex = i; - break; - } - } - } - - // adjust the page index for reverse printing - if (reverse && printRangeType != PrinterDialog.CURRENT_PAGE) + if (reverse && !PrintRangeType.CURRENT_PAGE.equals(printRangeType)) { pageIndex = pages.size() - 1 - pageIndex; //Log.log(Log.DEBUG, this, "Reverse is on, changing page index to " + pageIndex); @@ -198,7 +161,8 @@ // go ahead and print the page Range range = pages.get(pageIndex); - if ( (range == null || !inRange(pageIndex)) && printRangeType != PrinterDialog.CURRENT_PAGE ) + //Log.log(Log.DEBUG, this, "range = " + range); + if ( (range == null || !inRange(pageIndex)) && !PrintRangeType.CURRENT_PAGE.equals(printRangeType) ) { //Log.log(Log.DEBUG, this, "Returning NO_SUCH_PAGE for page " + pageIndex); return NO_SUCH_PAGE; @@ -345,7 +309,7 @@ // last page Range range = new Range(startLine, currentPhysicalLine); pages.put(new Integer(pageCount), range); - Log.log(Log.DEBUG, this, "calculatePages, page " + pageCount + " has " + range); + //Log.log(Log.DEBUG, this, "calculatePages, page " + pageCount + " has " + range); break; } @@ -366,7 +330,7 @@ { Range range = new Range(startLine, Math.max(0, currentPhysicalLine - 1)); pages.put(new Integer(pageCount), range); - Log.log(Log.DEBUG, this, "calculatePages, page " + pageCount + " has " + range); + //Log.log(Log.DEBUG, this, "calculatePages, page " + pageCount + " has " + range); ++ pageCount; startLine = currentPhysicalLine; y = 0.0; @@ -387,6 +351,7 @@ private boolean inRange(int pageNumber) { PageRanges ranges = (PageRanges)attributes.get(PageRanges.class); + //Log.log(Log.DEBUG, this, "inRange, ranges = " + ranges); boolean answer = false; if (ranges == null) { @@ -396,6 +361,7 @@ { answer = ranges.contains(pageNumber); } + //Log.log(Log.DEBUG, this, "inRange(" + pageNumber + ") returning " + answer); return answer; } @@ -414,7 +380,12 @@ gfx.setRenderingHint(KEY_TEXT_ANTIALIASING, view.getTextArea().getPainter().getAntiAlias().renderHint()); boolean useFractionalFontMetrics = jEdit.getBooleanProperty("view.fracFontMetrics"); gfx.setRenderingHint(KEY_FRACTIONALMETRICS, (useFractionalFontMetrics ? VALUE_FRACTIONALMETRICS_ON : VALUE_FRACTIONALMETRICS_OFF)); - gfx.setTransform(new AffineTransform(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f)); + + // TODO: why did I need this next line? Leaving it in causes the print preview + // to show the page with the wrong top and bottom margins, leaving it out doesn't seem + // to cause any problems + //gfx.setTransform(new AffineTransform(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f)); + for(int i = 0; i < styles.length; i++) { SyntaxStyle s = styles[i]; @@ -482,9 +453,11 @@ double y = 0.0; Range range = pages.get(pageIndex); //Log.log(Log.DEBUG, this, "printing range for page " + pageIndex + ": " + range); + int start = printingLineNumbers == null ? range.getStart() : 0; + int end = printingLineNumbers == null ? range.getEnd() : printingLineNumbers.length - 1; // print each line - for (currentPhysicalLine = range.getStart(); currentPhysicalLine <= range.getEnd(); currentPhysicalLine++) + for (currentPhysicalLine = start; currentPhysicalLine <= end; currentPhysicalLine++) { if(currentPhysicalLine == buffer.getLineCount()) { @@ -498,14 +471,6 @@ continue; } - // print only selected lines if printing selection - if (selection && Arrays.binarySearch(selectedLines, currentPhysicalLine) < 0) - { - //Log.log(Log.DEBUG, this, "Skipping non-selected line: " + currentPhysicalLine); - continue; - } - - // fill the line list lineList.clear(); tokenHandler.init(styles, frc, tabExpander, lineList, (float)(pageWidth - lineNumberWidth), -1); @@ -515,7 +480,12 @@ { gfx.setFont(font); gfx.setColor(lineNumberColor); - gfx.drawString(String.valueOf(currentPhysicalLine + 1), (float)pageX, (float)(pageY + y + lineHeight)); + int lineNo = currentPhysicalLine + 1; + if (printingLineNumbers != null && currentPhysicalLine < printingLineNumbers.length) + { + lineNo = printingLineNumbers[currentPhysicalLine] + 1; + } + gfx.drawString(String.valueOf(lineNo), (float)pageX, (float)(pageY + y + lineHeight)); } if (lineList.isEmpty()) @@ -537,7 +507,7 @@ } } - if (currentPhysicalLine == range.getEnd()) + if (currentPhysicalLine == end) { //Log.log(Log.DEBUG,this,"Finished page"); break; diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/BufferPrinter1_7.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/BufferPrinter1_7.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/BufferPrinter1_7.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/BufferPrinter1_7.java 2018-04-08 23:57:33.000000000 +0000 @@ -61,10 +61,10 @@ } } - + // print to a printer public static void print( final View view, final Buffer buffer ) { - //Log.log(Log.DEBUG, BufferPrinter1_7.class, "print buffer " + buffer.getPath()); + Log.log(Log.DEBUG, BufferPrinter1_7.class, "print buffer " + buffer.getPath()); // load any saved printing attributes, these are put into 'format' loadPrintSpec(); @@ -75,7 +75,7 @@ PrinterDialog printerDialog = new PrinterDialog( view, format, false ); if ( printerDialog.isCanceled() ) { - //Log.log(Log.DEBUG, BufferPrinter1_7.class, "print dialog canceled"); + Log.log(Log.DEBUG, BufferPrinter1_7.class, "print dialog canceled"); return; } @@ -106,61 +106,17 @@ } - // set up the printable. Some values need to be set directly from the print - // dialog since they don't have attributes, like reverse page printing and printRangeType - BufferPrintable1_7 printable = new BufferPrintable1_7( format, view, buffer ); - printable.setReverse( printerDialog.getReverse() ); - int printRangeType = printerDialog.getPrintRangeType(); - printable.setPrintRangeType( printRangeType ); - - // check if printing a selection, if so, recalculate the page ranges. + // check if printing a selection, if so, create a new temporary buffer + // containing just the selection // TODO: I'm not taking even/odd page setting into account here, nor am // I considering any page values that may have been set in the page range. // I don't think this is important for printing a selection, which is // generally just a few lines rather than pages. I could be wrong... - if ( printRangeType == PrinterDialog.SELECTION ) + Buffer tempBuffer = buffer; + PrintRangeType printRangeType = (PrintRangeType)format.get(PrintRangeType.class); + if ( PrintRangeType.SELECTION.equals(printRangeType) ) { - - // calculate the actual pages with a selection or bail if there is no selection - int selectionCount = view.getTextArea().getSelectionCount(); - if ( selectionCount == 0 ) - { - JOptionPane.showMessageDialog( view, jEdit.getProperty( "print-error.message", new String[] {"No text is selected to print."} ), jEdit.getProperty( "print-error.title" ), JOptionPane.ERROR_MESSAGE ); - return; - } - - - // get the page ranges from the printable - HashMap pageRanges = getPageRanges( printable, format ); - if ( pageRanges == null || pageRanges.isEmpty() ) - { - JOptionPane.showMessageDialog( view, jEdit.getProperty( "print-error.message", new String[] {"Unable to calculate page ranges."} ), jEdit.getProperty( "print-error.title" ), JOptionPane.ERROR_MESSAGE ); - return; - } - - - // find the pages that contain the selection(s) and construct a new - // page range for the format - int[] selectedLines = view.getTextArea().getSelectedLines(); - StringBuilder pageRange = new StringBuilder(); - for ( Integer i : pageRanges.keySet() ) - { - Range range = pageRanges.get( i ); - for ( int line : selectedLines ) - { - if ( range.contains( line ) ) - { - pageRange.append( i ).append( ',' ); - break; - } - } - } - pageRange.deleteCharAt( pageRange.length() - 1 ); - format.add( new PageRanges( pageRange.toString() ) ); - - // also tell the printable exactly which lines are selected so it - // doesn't have to fetch them itself - printable.setSelectedLines( selectedLines ); + tempBuffer = getSelectionBuffer(view, buffer); } // copy the doc attributes from the print format attributes @@ -177,6 +133,10 @@ } } //Log.log(Log.DEBUG, BufferPrinter1_7.class, "--- end print request attributes ---"); + + // set up the printable + BufferPrintable1_7 printable = new BufferPrintable1_7( format, view, tempBuffer ); + final Doc doc = new SimpleDoc( printable, DocFlavor.SERVICE_FORMATTED.PRINTABLE, docAttributes ); // ready to print @@ -201,13 +161,40 @@ ThreadUtilities.runInBackground( runner ); } //}}} + // returns a temporary buffer containing only the lines in the current selection. + // This also stores the line numbers of the selected lines as a buffer property + // so they can be used for printing and print preview. + private static Buffer getSelectionBuffer(View view, Buffer buffer) + { + int[] selectedLines = view.getTextArea().getSelectedLines(); + String path = buffer.getPath(); + String parent = path.substring(0, path.lastIndexOf(System.getProperty("file.separator"))); + Buffer temp = jEdit.openTemporary(view, parent, path + ".prn", true); + temp.setMode(buffer.getMode()); + for (int i : selectedLines) + { + String line = buffer.getLineText(i) + '\n'; + temp.insert(temp.getLength(), line); + } + // save the line numbers of the selected lines so they can be used for + // printing and print preview + temp.setProperty("printingLineNumbers", selectedLines); + return temp; + } + /** * This is intended for use by the PrintPreview dialog. */ protected static void printPage( PrintPreviewModel model ) { String jobName = MiscUtilities.abbreviateView( model.getBuffer().getPath() ); - model.getAttributes().add( new JobName( jobName, null ) ); + PrintRequestAttributeSet attrs = model.getAttributes(); + attrs.add( new JobName( jobName, null ) ); + Reverse reverse = (Reverse)attrs.get(Reverse.class); + if (reverse != null) + { + attrs.remove(Reverse.class); + } // set up the print job PrintService printService = model.getPrintService(); @@ -234,8 +221,14 @@ } - // set up the printable to print just the requested page - BufferPrintable1_7 printable = new BufferPrintable1_7( model.getAttributes(), model.getView(), model.getBuffer() ); + // set up the printable to print just the requested pages + Buffer buffer = model.getBuffer(); + PrintRangeType printRangeType = (PrintRangeType)attrs.get(PrintRangeType.class); + if ( PrintRangeType.SELECTION.equals(printRangeType) ) + { + buffer = getSelectionBuffer(model.getView(), buffer); + } + BufferPrintable1_7 printable = new BufferPrintable1_7( attrs, model.getView(), buffer ); printable.setPages(model.getPageRanges()); int pageNumber = model.getPageNumber(); try @@ -246,6 +239,10 @@ { e.printStackTrace(); } + if (reverse != null) + { + attrs.add(reverse); + } } @@ -255,14 +252,10 @@ */ public static HashMap getPageRanges( View view, Buffer buffer, PrintRequestAttributeSet attributes ) { - if (attributes == null) - { - loadPrintSpec(); - attributes = format; - } - - BufferPrintable1_7 printable = new BufferPrintable1_7( attributes, view, buffer ); - return BufferPrinter1_7.getPageRanges( printable, attributes ); + loadPrintSpec(); + format.addAll(attributes); + BufferPrintable1_7 printable = new BufferPrintable1_7( format, view, buffer ); + return BufferPrinter1_7.getPageRanges( printable, format ); } @@ -280,11 +273,13 @@ graphics.setClip(clipRegion); try { + // calculate which lines belong to each page HashMap pageLineRanges = printable.calculatePages( graphics, pageFormat ); PageRanges pr = (PageRanges)attributes.get(PageRanges.class); if (pr == null) { pr = new PageRanges( 1, 1000 ); } + // then keep only the pages the user has selected HashMap newLineRanges = new HashMap(); for (Integer i : pageLineRanges.keySet()) { @@ -293,15 +288,39 @@ newLineRanges.put(i, pageLineRanges.get(i)); } } - //return newLineRanges; - return pageLineRanges; + return newLineRanges; } catch(Exception e) { + e.printStackTrace(); return null; } } + public static HashMap getCurrentPageRange( View view, Buffer buffer, PrintRequestAttributeSet attributes ) + { + if (attributes == null) + { + loadPrintSpec(); + attributes = format; + } + + BufferPrintable1_7 printable = new BufferPrintable1_7( attributes, view, buffer ); + HashMap pages = BufferPrinter1_7.getPageRanges( printable, attributes ); + HashMap answer = new HashMap(); + int caretLine = view.getTextArea().getCaretLine(); + for (Integer i : pages.keySet()) + { + Range range = pages.get(i); + if (range.contains(caretLine)) + { + answer.put(i, range); + break; + } + } + return answer; + } + public static PageFormat getDefaultPageFormat(PrintRequestAttributeSet attributes) { return BufferPrinter1_7.createPageFormat(attributes); @@ -387,6 +406,7 @@ mpa = new MediaPrintableArea(0.5f, 0.5f, 10.0f, 7.5f, MediaPrintableArea.INCH); format.add(mpa); } + format.remove(Reverse.class); } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/Margins.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/Margins.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/Margins.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/Margins.java 2018-04-08 23:57:33.000000000 +0000 @@ -1,3 +1,24 @@ +/* + * Margins.java + * :tabSize=4:indentSize=4:noTabs=false: + * :folding=explicit:collapseFolds=1: + * + * Copyright (C) 2016 Dale Anson + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ package org.gjt.sp.jedit.print; diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PageBreakExtension.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PageBreakExtension.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PageBreakExtension.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PageBreakExtension.java 2018-04-08 23:57:33.000000000 +0000 @@ -26,6 +26,10 @@ import java.awt.Graphics2D; import java.util.HashMap; +import javax.print.attribute.PrintRequestAttributeSet; +import javax.print.attribute.HashPrintRequestAttributeSet; +import javax.print.attribute.standard.PageRanges; + import org.gjt.sp.jedit.Buffer; import org.gjt.sp.jedit.EBComponent; import org.gjt.sp.jedit.EBMessage; @@ -69,7 +73,9 @@ { View view = textArea.getView(); Buffer buffer = ( Buffer )textArea.getBuffer(); - pages = BufferPrinter1_7.getPageRanges( view, buffer, null ); + PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet(); + attributes.add(new PageRanges("1-1000")); + pages = BufferPrinter1_7.getPageRanges( view, buffer, attributes ); } else { @@ -162,7 +168,7 @@ // 2nd part of 'if' handles soft wrap so if the last line of the page // is wrapped, only the last screen line of the wrapped line will get // the page break line drawn on it. - if ( range.getEnd() == physicalLine && textArea.getLineEndOffset( physicalLine ) == end ) + if ( range != null && range.getEnd() == physicalLine && textArea.getLineEndOffset( physicalLine ) == end ) { y += gfx.getFontMetrics().getHeight(); gfx.drawLine( 0, y, textArea.getPainter().getWidth(), y ); diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PrinterDialog.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PrinterDialog.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PrinterDialog.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PrinterDialog.java 2018-04-08 23:57:33.000000000 +0000 @@ -47,9 +47,8 @@ import org.gjt.sp.jedit.gui.VariableGridLayout; import org.gjt.sp.jedit.jEdit; import org.gjt.sp.util.GenericGUIUtilities; +import org.gjt.sp.util.Log; - -// import org.gjt.sp.util.Log; // Technical guide on the Java printing system: // https://docs.oracle.com/javase/7/docs/technotes/guides/jps/spec/JPSTOC.fm.html public class PrinterDialog extends JDialog implements ListSelectionListener @@ -75,24 +74,14 @@ private boolean canceled = false; private Map messageMap; private PageSetupPanel pageSetupPanel; - public static int ALL = 0; - public static int ODD = 1; - public static int EVEN = 2; - public static int RANGE = 3; - public static int CURRENT_PAGE = 4; - public static int SELECTION = 5; - public static int onlyPrintPages = ALL; - private int printRangeType = ALL; + public static int onlyPrintPages = PrintRangeType.ALL.getValue(); private DocFlavor DOC_FLAVOR = DocFlavor.SERVICE_FORMATTED.PRINTABLE; - private boolean reversePrinting = false; public PrinterDialog( View owner, PrintRequestAttributeSet attributes, boolean pageSetupOnly ) { super( owner, Dialog.ModalityType.APPLICATION_MODAL ); try - - { view = owner; this.pageSetupOnly = pageSetupOnly; @@ -116,10 +105,10 @@ this.attributes.remove( Destination.class ); - Attribute[] attrs = attributes.toArray(); + // for debugging - /* + /* Attribute[] attrs = attributes.toArray(); * for ( Attribute a : attrs ) * { * Log.log( Log.DEBUG, this, "+++++ before: " + a.getName() + " = " + a ); @@ -165,10 +154,11 @@ buttonPanel.add( okButton ); buttonPanel.add( cancelButton ); contents.add( buttonPanel, BorderLayout.SOUTH ); - + setContentPane( contents ); // auto-select the default printer + /* PrintService defaultPrintService = PrintServiceLookup.lookupDefaultPrintService(); if ( defaultPrintService != null ) { @@ -178,6 +168,7 @@ { printers.setSelectedIndex( 0 ); } + */ // loads some default values if needed @@ -188,6 +179,13 @@ pack(); + // ESC key closes dialog + getRootPane().registerKeyboardAction(e -> { + PrinterDialog.this.setVisible(false); + PrinterDialog.this.dispose(); + canceled = true; + }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); + setLocationRelativeTo( jEdit.getActiveView().getTextArea() ); setVisible( true ); } @@ -222,7 +220,7 @@ AttributeSet panelAttributes = panel.getAttributes(); if (panelAttributes != null) { - PrinterDialog.this.attributes.addAll( attributes ); + PrinterDialog.this.attributes.addAll( panelAttributes ); } } @@ -273,7 +271,7 @@ AttributeSet panelAttributes = panel.getAttributes(); if (panelAttributes != null) { - PrinterDialog.this.attributes.addAll( attributes ); + PrinterDialog.this.attributes.addAll( panelAttributes ); } } @@ -382,27 +380,6 @@ } - /** - * @return true if the pages should be printed in reverse order, - * that is, the last page is printed first and the first page is printed last. - */ - public boolean getReverse() - { - return reversePrinting; - } - - - /** - * @return one of ALL, RANGE, CURRENT, or SELECTION, depending on whether the - * user has elected to print all pages, a range of pages, just the current page - * or just the selected text. - */ - public int getPrintRangeType() - { - return printRangeType; - } - - private PrintService[] getPrintServices() { PrintService[] printServices = PrintServiceLookup.lookupPrintServices( DOC_FLAVOR, null ); @@ -457,7 +434,7 @@ // setting in the Page Setup tab. private PageRanges mergeRanges( PageRanges pr ) throws PrintException { - if ( pr == null || onlyPrintPages == ALL ) + if ( pr == null || onlyPrintPages == PrintRangeType.ALL.getValue() ) { return pr; } @@ -477,12 +454,12 @@ int end = range.length == 1 ? range[0] : Math.min( range[0] + 500, range[1] ); for ( int pageIndex = start; pageIndex <= end; pageIndex++ ) { - if ( pageIndex % 2 == 0 && onlyPrintPages == EVEN ) + if ( pageIndex % 2 == 0 && onlyPrintPages == PrintRangeType.EVEN.getValue() ) { pages.add( pageIndex ); } else - if ( pageIndex % 2 == 1 && onlyPrintPages == ODD ) + if ( pageIndex % 2 == 1 && onlyPrintPages == PrintRangeType.ODD.getValue() ) { pages.add( pageIndex ); } @@ -562,163 +539,185 @@ previousSize = ( MediaSizeName )previousPaper; } - - String[] paperNames = new String [sizes.length]; - paperSizes = new ArrayList(); - int index = -1; - int letterSizeIndex = 0; - for ( int i = 0; i < sizes.length; i++ ) + if (paperSize != null) { - MediaSizeName m = sizes[i]; - if ( MediaSizeName.NA_LETTER.equals( m ) ) + String[] paperNames = new String [sizes.length]; + paperSizes = new ArrayList(); + int index = -1; + int letterSizeIndex = 0; + for ( int i = 0; i < sizes.length; i++ ) { - letterSizeIndex = i; - } - else - if ( m.equals( previousSize ) ) - { - index = i; - } - - - paperSizes.add( m ); - paperNames[i] = getMessage( m.toString() ); + MediaSizeName m = sizes[i]; + if ( MediaSizeName.NA_LETTER.equals( m ) ) + { + letterSizeIndex = i; + } + else + if ( m.equals( previousSize ) ) + { + index = i; + } + + + paperSizes.add( m ); + paperNames[i] = getMessage( m.toString() ); + } + index = index == -1 ? letterSizeIndex : index; + paperSize.setModel( new DefaultComboBoxModel( paperNames ) ); + paperSize.setEnabled( true ); + paperSize.setSelectedIndex( index ); } - index = index == -1 ? letterSizeIndex : index; - paperSize.setModel( new DefaultComboBoxModel( paperNames ) ); - paperSize.setEnabled( true ); - paperSize.setSelectedIndex( index ); - + // finishing - value = categoryValueMap.get( Finishings.class ); - if ( value == null ) - { - finishing.setModel( new DefaultComboBoxModel() ); - finishing.setEnabled( false ); - } - else + if (finishing != null) { - Finishings[] finishings = ( Finishings[] )value; - if ( finishings.length == 0 || ( finishings.length == 1 && Finishings.NONE.equals( finishings[0] ) ) ) + value = categoryValueMap.get( Finishings.class ); + if ( value == null ) { finishing.setModel( new DefaultComboBoxModel() ); finishing.setEnabled( false ); } else { - finishing.setModel( new DefaultComboBoxModel( finishings ) ); - finishing.setEnabled( true ); + Finishings[] finishings = ( Finishings[] )value; + if ( finishings.length == 0 || ( finishings.length == 1 && Finishings.NONE.equals( finishings[0] ) ) ) + { + finishing.setModel( new DefaultComboBoxModel() ); + finishing.setEnabled( false ); + } + else + { + finishing.setModel( new DefaultComboBoxModel( finishings ) ); + finishing.setEnabled( true ); + } } } // sides - value = categoryValueMap.get( Sides.class ); - if ( value == null ) - { - sides.setEnabled( false ); - } - else + if (sides != null) { - sides.setModel( new DefaultComboBoxModel( ( Sides[] )value ) ); - Sides previousSides = ( Sides )attributes.get( Sides.class ); - sides.setSelectedItem( previousSides == null ? Sides.ONE_SIDED : previousSides ); - sides.setEnabled( true ); + value = categoryValueMap.get( Sides.class ); + if ( value == null ) + { + sides.setEnabled( false ); + } + else + { + sides.setModel( new DefaultComboBoxModel( ( Sides[] )value ) ); + Sides previousSides = ( Sides )attributes.get( Sides.class ); + sides.setSelectedItem( previousSides == null ? Sides.ONE_SIDED : previousSides ); + sides.setEnabled( true ); + } } // pages per side - value = categoryValueMap.get( NumberUp.class ); - if ( value == null ) + if (pagesPerSide != null) { - pagesPerSide.setEnabled( false ); - } - else - { - NumberUp[] numberUp = ( NumberUp[] )value; - Arrays.sort( numberUp, new Comparator() + value = categoryValueMap.get( NumberUp.class ); + if ( value == null ) { - - public int compare( NumberUp a, NumberUp b ) + pagesPerSide.setEnabled( false ); + } + else + { + NumberUp[] numberUp = ( NumberUp[] )value; + Arrays.sort( numberUp, new Comparator() { - int m = a.getValue(); - int n = b.getValue(); - if ( m < n ) - { - return -1; - } - else - if ( m == n ) - { - return 0; - } - else + + public int compare( NumberUp a, NumberUp b ) { - return 1; + int m = a.getValue(); + int n = b.getValue(); + if ( m < n ) + { + return -1; + } + else + if ( m == n ) + { + return 0; + } + else + { + return 1; + } } - } - } ); - pagesPerSide.setModel( new DefaultComboBoxModel( numberUp ) ); - pagesPerSide.setEnabled( true ); + } ); + pagesPerSide.setModel( new DefaultComboBoxModel( numberUp ) ); + pagesPerSide.setEnabled( true ); + } } // ordering of pages per side - value = categoryValueMap.get( PresentationDirection.class ); - if ( value == null ) + if (pageOrdering != null) { - pageOrdering.setEnabled( false ); - } - else - { - PresentationDirection[] po = ( PresentationDirection[] )value; - pageOrdering.setModel( new DefaultComboBoxModel( po ) ); - pageOrdering.setEnabled( true ); + value = categoryValueMap.get( PresentationDirection.class ); + if ( value == null ) + { + pageOrdering.setEnabled( false ); + } + else + { + PresentationDirection[] po = ( PresentationDirection[] )value; + pageOrdering.setModel( new DefaultComboBoxModel( po ) ); + pageOrdering.setEnabled( true ); + } } // paper source tray - value = categoryValueMap.get( Media.class ); - if ( value == null ) + if (paperSource != null) { - paperSource.setEnabled( false ); - } - else - { - Set trayNames = new HashSet(); - for ( Media m : ( Media[] )value ) + value = categoryValueMap.get( Media.class ); + if ( value == null ) { - if ( m instanceof MediaTray ) - { - trayNames.add( ( MediaTray )m ); - } - } - if ( trayNames.size() > 0 ) - { - MediaTray[] trays = trayNames.toArray( new MediaTray [trayNames.size()] ); - paperSource.setModel( new DefaultComboBoxModel( trays ) ); - paperSource.setEnabled( true ); + paperSource.setEnabled( false ); } else { - paperSource.setEnabled( false ); + Set trayNames = new HashSet(); + for ( Media m : ( Media[] )value ) + { + if ( m instanceof MediaTray ) + { + trayNames.add( ( MediaTray )m ); + } + } + if ( trayNames.size() > 0 ) + { + MediaTray[] trays = trayNames.toArray( new MediaTray [trayNames.size()] ); + paperSource.setModel( new DefaultComboBoxModel( trays ) ); + paperSource.setEnabled( true ); + MediaTray lastUsedTray = (MediaTray)attributes.get(MediaTray.class); + paperSource.setSelectedItem(lastUsedTray == null ? trays[0] : lastUsedTray); + } + else + { + paperSource.setEnabled( false ); + } } } // orientation, eg. portrait or landscape - value = categoryValueMap.get( OrientationRequested.class ); - if ( value == null ) + if (orientation != null) { - orientation.setEnabled( false ); - } - else - { - OrientationRequested[] or = ( OrientationRequested[] )value; - orientation.setModel( new DefaultComboBoxModel( or ) ); - orientation.setEnabled( true ); - OrientationRequested previousOrientation = ( OrientationRequested )attributes.get( OrientationRequested.class ); - orientation.setSelectedItem( previousOrientation == null ? OrientationRequested.PORTRAIT : previousOrientation ); + value = categoryValueMap.get( OrientationRequested.class ); + if ( value == null ) + { + orientation.setEnabled( false ); + } + else + { + OrientationRequested[] or = ( OrientationRequested[] )value; + orientation.setModel( new DefaultComboBoxModel( or ) ); + orientation.setEnabled( true ); + OrientationRequested previousOrientation = ( OrientationRequested )attributes.get( OrientationRequested.class ); + orientation.setSelectedItem( previousOrientation == null ? OrientationRequested.PORTRAIT : previousOrientation ); + } } } @@ -752,16 +751,15 @@ JTextField pagesField; - // TODO: current page and selection are not implemented yet. Note there - // are no standard printer attributes to specify either of these. + // DONE: current page and selection are not implemented yet. Note there + // are no standard printer attributes to specify either of these, so I + // added the PrintRangeType attribute to handle these. public GeneralPanel() { super(); printers = new JList( getPrintServices() ); printers.setCellRenderer( new PrintServiceCellRenderer() ); printers.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); - printers.addListSelectionListener( PrinterDialog.this ); - selectedPrintService = printers.getModel().getElementAt( 0 ); JPanel rangePanel = new JPanel( new GridLayout( 4, 2, 6, 6 ) ); rangePanel.setBorder( BorderFactory.createCompoundBorder( @@ -769,28 +767,10 @@ BorderFactory.createEmptyBorder( 11, 11, 11, 11 ) ) ); allPages = new JRadioButton( jEdit.getProperty( "print.dialog.All_pages", "All pages" ) ); allPages.setSelected( true ); - allPages.addActionListener( new ActionListener() - { - - public void actionPerformed( ActionEvent ae ) - { - pagesField.setEnabled( pages.isSelected() ); - } - } - ); pages = new JRadioButton( jEdit.getProperty( "print.dialog.Pages", "Pages" ) + ':' ); pagesField = new JTextField(); pagesField.setEnabled( false ); - pages.addActionListener( new ActionListener() - { - - public void actionPerformed( ActionEvent ae ) - { - pagesField.setEnabled( pages.isSelected() ); - } - } - ); currentPage = new JRadioButton( jEdit.getProperty( "print.dialog.Current_page", "Current page" ) ); selection = new JRadioButton( jEdit.getProperty( "print.dialog.Selection", "Selection" ) ); @@ -814,17 +794,6 @@ BorderFactory.createEmptyBorder( 11, 11, 11, 11 ) ) ); JLabel copiesLabel = new JLabel( jEdit.getProperty( "print.dialog.Copies", "Copies" + ':' ) ); copies = new JSpinner( new SpinnerNumberModel( 1, 1, 999, 1 ) ); - copies.addChangeListener( new ChangeListener() - { - - public void stateChanged( ChangeEvent e ) - { - JSpinner spinner = ( JSpinner )e.getSource(); - int value = ( int )spinner.getValue(); - collate.setEnabled( value > 1 ); - collate.setSelected( value > 1 ); - } - } ); collate = new JCheckBox( jEdit.getProperty( "print.dialog.Collate", "Collate" ) ); collate.setSelected( false ); collate.setEnabled( false ); @@ -849,17 +818,78 @@ content.add( top, BorderLayout.CENTER ); content.add( bottom, BorderLayout.SOUTH ); add( content ); + + // install listeners + printers.addListSelectionListener( PrinterDialog.this ); + allPages.addActionListener( new ActionListener() + { + + public void actionPerformed( ActionEvent ae ) + { + pagesField.setEnabled( pages.isSelected() ); + } + } + ); + pages.addActionListener( new ActionListener() + { + + public void actionPerformed( ActionEvent ae ) + { + pagesField.setEnabled( pages.isSelected() ); + } + } + ); + copies.addChangeListener( new ChangeListener() + { + + public void stateChanged( ChangeEvent e ) + { + JSpinner spinner = ( JSpinner )e.getSource(); + int value = ( int )spinner.getValue(); + collate.setEnabled( value > 1 ); + collate.setSelected( value > 1 ); + } + } ); + PrintService defaultPrintService = PrintServiceLookup.lookupDefaultPrintService(); + // choose last used printer first, default printer if no last used, or first + // item in print service list otherwise + String lastUsedPrinterName = jEdit.getProperty("print.lastUsedPrinter"); + if (lastUsedPrinterName != null) + { + ListModel lm = printers.getModel(); + for (int i = 0; i < lm.getSize(); i++) + { + PrintService ps = lm.getElementAt(i); + if (lastUsedPrinterName.equals(ps.getName())) + { + printers.setSelectedValue(ps, true); + selectedPrintService = ps; + break; + } + } + } + else if (defaultPrintService != null) + { + printers.setSelectedValue(defaultPrintService, true); + selectedPrintService = defaultPrintService; + } + else + { + selectedPrintService = printers.getModel().getElementAt( 0 ); + } } public AttributeSet getAttributes() { + jEdit.setProperty("print.lastUsedPrinter", printers.getSelectedValue().getName()); + AttributeSet as = new HashAttributeSet(); if ( allPages.isSelected() ) { as.add( new PageRanges( 1, 1000 ) ); - printRangeType = ALL; + as.add( PrintRangeType.ALL ); } else if ( pages.isSelected() ) @@ -868,8 +898,6 @@ if ( pageRange != null ) { try - - { as.add( new PageRanges( pageRange ) ); } @@ -878,21 +906,27 @@ e.printStackTrace(); } } - - - printRangeType = RANGE; + as.add( PrintRangeType.RANGE ); } else if ( currentPage.isSelected() ) { - as.add( new PageRanges( 1 ) ); - printRangeType = CURRENT_PAGE; + PrinterDialog.this.attributes.add(new PageRanges( 1, 1000 ) ); + HashMap currentPageRange = BufferPrinter1_7.getCurrentPageRange(view, view.getBuffer(), PrinterDialog.this.attributes); + int page = 1; + if (currentPageRange != null && !currentPageRange.isEmpty()) + { + page = currentPageRange.keySet().iterator().next(); + } + + as.add( new PageRanges( page ) ); + as.add( PrintRangeType.CURRENT_PAGE ); } else if ( selection.isSelected() ) { - as.add( new PageRanges( 1, 1000 ) ); - printRangeType = SELECTION; + PrinterDialog.this.attributes.add(new PageRanges( 1, 1000 ) ); + as.add( PrintRangeType.SELECTION ); } @@ -903,8 +937,15 @@ as.add( new Copies( ( Integer )copies.getValue() ) ); - - reversePrinting = reverse.isSelected(); + + if (reverse.isSelected()) + { + as.add(new Reverse()); + } + else + { + attributes.remove(Reverse.class); + } return as; } @@ -983,19 +1024,6 @@ pagesPerSide = new JComboBox(); pagesPerSide.setEnabled( false ); - pagesPerSide.addActionListener( new ActionListener() - { - - public void actionPerformed( ActionEvent ae ) - { - NumberUp nu = ( NumberUp )pagesPerSide.getSelectedItem(); - if ( nu != null && nu.getValue() == 1 ) - { - pageOrdering.setEnabled( false ); - } - } - } - ); // disable this when pagesPerSide is 1 pageOrdering = new JComboBox(); @@ -1029,28 +1057,10 @@ paperSize = new JComboBox(); paperSize.setEnabled( false ); - paperSize.addActionListener( new ActionListener() - { - - public void actionPerformed( ActionEvent ae ) - { - PageSetupPanel.this.setDefaultMargins(); - } - } - ); orientation = new JComboBox(); orientation.setEnabled( false ); orientation.setRenderer( new OrientationCellRenderer() ); - orientation.addActionListener( new ActionListener() - { - - public void actionPerformed( ActionEvent ae ) - { - PageSetupPanel.this.setDefaultMargins(); - } - } - ); paperPanel.add( new JLabel( jEdit.getProperty( "print.dialog.Paper_source", "Paper source" ) + ':' ) ); paperPanel.add( paperSource ); @@ -1064,10 +1074,14 @@ JPanel marginPanel = new JPanel( new VariableGridLayout( VariableGridLayout.FIXED_NUM_COLUMNS, 2, 6, 6 ) ); marginPanel.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), jEdit.getProperty( "print.dialog.Margins", "Margins" ) ), BorderFactory.createEmptyBorder( 11, 11, 11, 11 ) ) ); boolean unitIsMM = getUnits() == MediaPrintableArea.MM; - topMarginField = new NumericTextField( "", true, unitIsMM ); - leftMarginField = new NumericTextField( "", true, unitIsMM ); - rightMarginField = new NumericTextField( "", true, unitIsMM ); - bottomMarginField = new NumericTextField( "", true, unitIsMM ); + String topMargin = jEdit.getProperty("print.topMargin", unitIsMM ? "25" : "1.0"); + String leftMargin = jEdit.getProperty("print.leftMargin", unitIsMM ? "25" : "1.0"); + String rightMargin = jEdit.getProperty("print.rightMargin", unitIsMM ? "25" : "1.0"); + String bottomMargin = jEdit.getProperty("print.bottomMargin", unitIsMM ? "25" : "1.0"); + topMarginField = new NumericTextField( topMargin, true, unitIsMM ); + leftMarginField = new NumericTextField( leftMargin, true, unitIsMM ); + rightMarginField = new NumericTextField( rightMargin, true, unitIsMM ); + bottomMarginField = new NumericTextField( bottomMargin, true, unitIsMM ); String unitsLabel = unitIsMM ? " (mm)" : " (in)"; marginPanel.add( new JLabel( jEdit.getProperty( "print.dialog.Top", "Top" ) + unitsLabel ) ); @@ -1096,6 +1110,41 @@ content.add( marginPanel ); content.add( finishingPanel ); add( content ); + + // add listeners + pagesPerSide.addActionListener( new ActionListener() + { + + public void actionPerformed( ActionEvent ae ) + { + NumberUp nu = ( NumberUp )pagesPerSide.getSelectedItem(); + if ( nu != null && nu.getValue() == 1 ) + { + pageOrdering.setEnabled( false ); + } + } + } + ); + paperSize.addActionListener( new ActionListener() + { + + public void actionPerformed( ActionEvent ae ) + { + PageSetupPanel.this.setDefaultMargins(); + } + } + ); + orientation.addActionListener( new ActionListener() + { + + public void actionPerformed( ActionEvent ae ) + { + PageSetupPanel.this.setDefaultMargins(); + } + } + ); + + } @@ -1213,12 +1262,18 @@ } - float topMargin = topMarginField.getValue().floatValue(); - float leftMargin = leftMarginField.getValue().floatValue(); - float rightMargin = rightMarginField.getValue().floatValue(); - float bottomMargin = bottomMarginField.getValue().floatValue(); - Margins margins = new Margins( topMargin, leftMargin, rightMargin, bottomMargin ); + Number topMargin = topMarginField.getValue(); + Number leftMargin = leftMarginField.getValue(); + Number rightMargin = rightMarginField.getValue(); + Number bottomMargin = bottomMarginField.getValue(); + + Margins margins = new Margins( topMargin.floatValue(), leftMargin.floatValue(), rightMargin.floatValue(), bottomMargin.floatValue() ); as.add( margins ); + + jEdit.setProperty("print.topMargin", topMargin.toString()); + jEdit.setProperty("print.leftMargin", leftMargin.toString()); + jEdit.setProperty("print.rightMargin", rightMargin.toString()); + jEdit.setProperty("print.bottomMargin", bottomMargin.toString()); return as; } @@ -1457,7 +1512,7 @@ OrientationRequested orientationRequested = ( OrientationRequested )orientation.getSelectedItem(); rotateMargins( topMargin, leftMargin, rightMargin, bottomMargin, orientationRequested ); - // Log.log( Log.DEBUG, this, "getMinimumMargins returning " + topMargin + ", " + leftMargin + ", " + rightMargin + ", " + bottomMargin); + //Log.log( Log.DEBUG, this, "getMinimumMargins returning " + topMargin + ", " + leftMargin + ", " + rightMargin + ", " + bottomMargin); return new float[] {topMargin, leftMargin, rightMargin, bottomMargin}; } @@ -1500,7 +1555,7 @@ OrientationRequested orientationRequested = ( OrientationRequested )orientation.getSelectedItem(); rotateMargins( topMargin, leftMargin, rightMargin, bottomMargin, orientationRequested ); - // Log.log( Log.DEBUG, this, "getMinimumMargins returning " + topMargin + ", " + leftMargin + ", " + rightMargin + ", " + bottomMargin); + //Log.log( Log.DEBUG, this, "getMaximumMargins returning " + topMargin + ", " + leftMargin + ", " + rightMargin + ", " + bottomMargin); return new float[] {topMargin, leftMargin, rightMargin, bottomMargin}; } @@ -1511,6 +1566,7 @@ private int getUnits() { String country = Locale.getDefault().getCountry(); + //String country = "Latvia"; // for testing metric if ( "".equals( country ) || Locale.US.getCountry().equals( country ) || Locale.CANADA.getCountry().equals( country ) ) { return MediaPrintableArea.INCH; @@ -1564,15 +1620,6 @@ // print later atButton = new JRadioButton( jEdit.getProperty( "print.dialog.At", "At" ) ); atButton.setEnabled( true ); - atButton.addActionListener( new ActionListener() - { - - public void actionPerformed( ActionEvent ae ) - { - when.setEnabled( atButton.isSelected() ); - } - } - ); Calendar calendar = Calendar.getInstance( Locale.getDefault() ); Date initialDate = calendar.getTime(); calendar.add( Calendar.YEAR, 1 ); @@ -1596,6 +1643,18 @@ content.add( jobPanel ); content.add( printPanel ); add( content, BorderLayout.NORTH ); + + // add listeners + atButton.addActionListener( new ActionListener() + { + + public void actionPerformed( ActionEvent ae ) + { + when.setEnabled( atButton.isSelected() ); + } + } + ); + } @@ -1681,30 +1740,15 @@ quality.addItem( PrintQuality.DRAFT ); quality.addItem( PrintQuality.NORMAL ); quality.addItem( PrintQuality.HIGH ); - quality.setSelectedItem( PrintQuality.NORMAL ); + PrintQuality pq = (PrintQuality)attributes.get(PrintQuality.class); + quality.setSelectedItem( pq == null ? PrintQuality.NORMAL : pq ); quality.setRenderer( new QualityCellRenderer() ); chromaticity = new JComboBox(); chromaticity.addItem( Chromaticity.MONOCHROME ); chromaticity.addItem( Chromaticity.COLOR ); Chromaticity value = ( Chromaticity )attributes.get( Chromaticity.class ); - if ( value != null ) - { - if ( "color".equalsIgnoreCase( value.toString() ) ) - { - chromaticity.setSelectedItem( Chromaticity.COLOR ); - } - else - { - chromaticity.setSelectedItem( Chromaticity.MONOCHROME ); - } - } - else - { - chromaticity.setSelectedItem( Chromaticity.MONOCHROME ); - } - - + chromaticity.setSelectedItem(value == null ? Chromaticity.MONOCHROME : value); chromaticity.setRenderer( new ChromaticityCellRenderer() ); JPanel content = new JPanel( new VariableGridLayout( VariableGridLayout.FIXED_NUM_COLUMNS, 2, 6, 6 ) ); diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PrintPreview.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PrintPreview.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PrintPreview.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PrintPreview.java 2018-04-08 23:57:33.000000000 +0000 @@ -240,6 +240,22 @@ } } ); + + pages.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent me) + { + if (model != null) + { + int selectedPage = ( Integer )pages.getSelectedItem(); + model.setPageNumber( selectedPage - 1 ); + model.setPageRanges( pageRanges ); + model.setZoomLevel( zoomLevel ); + attributes.add( new PageRanges( selectedPage ) ); + printPreviewPane.setModel( model ); + } + } + }); prevPage.addActionListener( new ActionListener() { @@ -258,6 +274,12 @@ pages.setSelectedIndex( selectedIndex ); + int selectedPage = ( Integer )pages.getSelectedItem(); + model.setPageNumber( selectedPage - 1 ); + model.setPageRanges( pageRanges ); + model.setZoomLevel( zoomLevel ); + attributes.add( new PageRanges( selectedPage ) ); + printPreviewPane.setModel( model ); } } ); @@ -278,6 +300,12 @@ pages.setSelectedIndex( selectedIndex ); + int selectedPage = ( Integer )pages.getSelectedItem(); + model.setPageNumber( selectedPage - 1 ); + model.setPageRanges( pageRanges ); + model.setZoomLevel( zoomLevel ); + attributes.add( new PageRanges( selectedPage ) ); + printPreviewPane.setModel( model ); } } ); @@ -348,24 +376,34 @@ } ); } - + private void init() { pageRanges = BufferPrinter1_7.getPageRanges( view, buffer, attributes ); DefaultComboBoxModel pagesModel = new DefaultComboBoxModel(); + boolean reverse = attributes.containsKey(Reverse.class); + StringBuilder pr = new StringBuilder(); for ( Integer i : pageRanges.keySet() ) { - pagesModel.addElement( i ); - // Log.log(Log.DEBUG, this, "init, i = " + i + ", range = " + pageRanges.get(i)); + Integer pageNo = reverse ? pageRanges.size() - i + 1: i; + pagesModel.addElement( pageNo ); + //Log.log(Log.DEBUG, this, "init, i = " + i + ", range = " + pageRanges.get(i)); + pr.append(i).append(','); } + pr.deleteCharAt(pr.length() - 1); pages.setModel( pagesModel ); + pages.setSelectedIndex( 0 ); nextPage.setEnabled( pagesModel.getSize() > 1 ); prevPage.setEnabled( pagesModel.getSize() > 1 ); model = new PrintPreviewModel( view, buffer, printService, attributes, pageRanges ); - model.setPageNumber( 0 ); + int firstPage = ( Integer )pages.getSelectedItem(); + model.setPageNumber( firstPage - 1 ); + model.setPageRanges( pageRanges ); + model.setZoomLevel( zoomLevel ); + attributes.add( new PageRanges( firstPage ) ); printPreviewPane.setModel( model ); } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PrintPreviewModel.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PrintPreviewModel.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PrintPreviewModel.java 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PrintPreviewModel.java 2018-04-08 23:57:33.000000000 +0000 @@ -47,7 +47,7 @@ private PrintRequestAttributeSet attributes; private HashMap pageRanges; private int pageNumber = 1; - private int printRangeType = PrinterDialog.ALL; + private PrintRangeType printRangeType = PrintRangeType.ALL; private Graphics gfx; public static enum Zoom { NONE, IN, OUT, WIDTH, PAGE }; private Zoom zoom = Zoom.NONE; @@ -110,12 +110,12 @@ this.pageRanges = pageRanges; } - public void setPrintRangeType(int type) + public void setPrintRangeType(PrintRangeType type) { printRangeType = type; } - public int getPrintRangeType() + public PrintRangeType getPrintRangeType() { return printRangeType; } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PrintRangeType.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PrintRangeType.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/PrintRangeType.java 1970-01-01 00:00:00.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/PrintRangeType.java 2018-04-08 23:57:33.000000000 +0000 @@ -0,0 +1,94 @@ +/* + * PrintRangeType.java + * :tabSize=4:indentSize=4:noTabs=false: + * :folding=explicit:collapseFolds=1: + * + * Copyright (C) 2016 Dale Anson + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.gjt.sp.jedit.print; + + +import javax.print.attribute.Attribute; +import javax.print.attribute.IntegerSyntax; +import javax.print.attribute.PrintJobAttribute; +import javax.print.attribute.PrintRequestAttribute; + +/** + * Custom print request attribute to represent a page range type, i.e. all pages, + * current page, range of pages, just a selection of lines, or only odd or even + * pages. + */ +public class PrintRangeType extends IntegerSyntax implements PrintRequestAttribute, PrintJobAttribute +{ + + private static final long serialVersionUID = -6426631421680023833L; + public static PrintRangeType ALL = new PrintRangeType( 0 ); + public static PrintRangeType ODD = new PrintRangeType( 1 ); + public static PrintRangeType EVEN = new PrintRangeType( 2 ); + public static PrintRangeType RANGE = new PrintRangeType( 3 ); + public static PrintRangeType CURRENT_PAGE = new PrintRangeType( 4 ); + public static PrintRangeType SELECTION = new PrintRangeType( 5 ); + + public PrintRangeType( int value ) + { + super( value, 0, 5 ); + } + + public boolean equals( Object object ) + { + return super.equals( object ) && object instanceof PrintRangeType; + } + + public final Class< ? extends Attribute> getCategory() + { + return PrintRangeType.class; + } + + public final String getName() + { + return "printRangeType"; + } + + public String toString() + { + StringBuilder sb = new StringBuilder( "PageRangeType: " ); + switch ( getValue() ) + { + case 0: + sb.append( "0 ALL" ); + break; + case 1: + sb.append( "1 ODD" ); + break; + case 2: + sb.append( "2 EVEN" ); + break; + case 3: + sb.append( "3 RANGE" ); + break; + case 4: + sb.append( "4 CURRENT_PAGE" ); + break; + case 6: + sb.append( "5 SELECTION" ); + break; + } + + return sb.toString(); + } +} diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/Reverse.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/Reverse.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/print/Reverse.java 1970-01-01 00:00:00.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/print/Reverse.java 2018-04-08 23:57:33.000000000 +0000 @@ -0,0 +1,57 @@ +/* + * Reverse.java - Print attribute indicating reverse print order + * :tabSize=4:indentSize=4:noTabs=false: + * :folding=explicit:collapseFolds=1: + * + * Copyright (C) Dale Anson + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.gjt.sp.jedit.print; + + +import javax.print.attribute.Attribute; +import javax.print.attribute.DocAttribute; +import javax.print.attribute.PrintJobAttribute; +import javax.print.attribute.PrintRequestAttribute; + + +/** + * Custom print attribute indicating the pages should be printed in reverse + * order. This is just a marker attribute, if present, pages should be printed + * in reverse order, if not present, then print pages in forward order. + */ +public class Reverse implements DocAttribute, PrintRequestAttribute, PrintJobAttribute +{ + + private static final long serialVersionUID = -2823970704630722439L; + + public boolean equals( Object object ) + { + return object != null && object instanceof Reverse && object.getClass() == this.getClass(); + } + + public final Class< ? extends Attribute> getCategory() + { + return Reverse.class; + } + + public final String getName() + { + return "reverse"; + } +} + diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/services.xml jedit-5.5.0+dfsg/org/gjt/sp/jedit/services.xml --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/services.xml 2017-03-18 13:30:34.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/services.xml 2018-04-08 23:57:31.000000000 +0000 @@ -122,6 +122,11 @@ new LineSepWidgetFactory(); + + import org.gjt.sp.jedit.gui.statusbar.*; + new LockedWidgetFactory(); + + import org.gjt.sp.jedit.gui.statusbar.*; diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/syntax/Chunk.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/syntax/Chunk.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/syntax/Chunk.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/syntax/Chunk.java 2018-04-08 23:57:24.000000000 +0000 @@ -241,9 +241,9 @@ * doesn't match any installed fonts. The following * check skips fonts that don't exist. */ - Font f = new Font(family, Font.PLAIN, 12); - if (!"dialog".equalsIgnoreCase(f.getFamily()) || - "dialog".equalsIgnoreCase(family)) + Font f = Font.decode(props.getProperty("view.fontSubstList." + i)); + if (f != null && (!"dialog".equalsIgnoreCase(f.getFamily()) || + "dialog".equalsIgnoreCase(family))) userFonts.add(f); i++; } @@ -256,6 +256,69 @@ glyphCache = null; } //}}} + //{{{ getSubstFont() method + /** + * Returns the first font which can display a character from + * configured substitution candidates, or null if there is no + * such font. + */ + public static Font getSubstFont(int codepoint) + { + // Workaround for a problem reported in SF.net patch #3480246 + // > If font substitution with system fonts is enabled, + // > I get for inserted control characters strange mathematical + // > symbols from a non-unicode font in my system. + if (Character.isISOControl(codepoint)) + return null; + + for (Font candidate: getFontSubstList()) + { + if (candidate.canDisplay(codepoint)) + { + return candidate; + } + } + return null; + } //}}} + + //{{{ deriveSubstFont() method + /** + * Derives a font to match the main font for purposes of + * font substitution. + * Preserves any transformations from main font. + * For system-fallback fonts, derives size and style from main font. + * + * @param mainFont Font to derive from + * @param candidateFont Font to transform + */ + public static Font deriveSubstFont(Font mainFont, Font candidateFont) + { + // adopt subst font family and size, but preserve any transformations + // i.e. if font is squashed/sheared, subst font glyphs should be squashed + Font substFont = candidateFont.deriveFont(mainFont.getTransform()); + + // scale up system fonts (point size 1) to size of main font + if (substFont.getSize() == 1) + substFont = substFont.deriveFont(mainFont.getStyle(), + mainFont.getSize()); + + return substFont; + } //}}} + + //{{{ usedFontSubstitution() method + /** + * Returns true if font substitution was used in the layout of this chunk. + * If substitution was not used, the chunk may be assumed to be composed + * of one glyph using a single font. + */ + public boolean usedFontSubstitution() + { + return (fontSubstEnabled && glyphs != null && + (glyphs.length > 1 || + (glyphs.length == 1 && glyphs[0].getFont() != style.getFont()))); + } + //}}} + //{{{ Package private members //{{{ Instance variables @@ -514,6 +577,14 @@ //}}} //{{{ getFontSubstList() method + /** + * Obtain a list of preferred fallback fonts as specified by the user + * (see Text Area in Global Options), as well as a list of all fonts + * specified in the system. + * Note that preferred fonts are returned with sizes as specified by the + * user, but system fonts all have a point size of 1. These should be + * scaled up once the main font is known (see layoutGlyphs()). + */ private static Font[] getFontSubstList() { if (fontSubstList == null) @@ -543,31 +614,6 @@ return fontSubstList; } //}}} - //{{{ getSubstFont() method - /** - * Returns the first font which can display a character from - * configured substitution candidates, or null if there is no - * such font. - */ - private static Font getSubstFont(int codepoint) - { - // Workaround for a problem reported in SF.net patch #3480246 - // > If font substitution with system fonts is enabled, - // > I get for inserted control characters strange mathematical - // > symbols from a non-unicode font in my system. - if (Character.isISOControl(codepoint)) - return null; - - for (Font candidate: getFontSubstList()) - { - if (candidate.canDisplay(codepoint)) - { - return candidate; - } - } - return null; - } //}}} - //{{{ drawGlyphs() method /** * Draws the internal list of glyph vectors into the given @@ -663,8 +709,10 @@ int charCount = Character.charCount(nextChar); assert !mainFont.canDisplay(nextChar); Font substFont = getSubstFont(nextChar); + if (substFont != null) { + substFont = deriveSubstFont(mainFont, substFont); subst.addRange(substFont, charCount); } else @@ -758,10 +806,9 @@ { return; } - Font font = (rangeFont == null) ? - mainFont : - rangeFont.deriveFont(mainFont.getStyle(), - mainFont.getSize()); + + Font font = (rangeFont == null) ? mainFont : rangeFont; + GlyphVector gv = layoutGlyphVector(font, frc, text, rangeStart, rangeStart + rangeLength); glyphs.add(gv); diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/jedit/View.java jedit-5.5.0+dfsg/org/gjt/sp/jedit/View.java --- jedit-5.4.0+dfsg/org/gjt/sp/jedit/View.java 2017-03-18 13:30:28.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/jedit/View.java 2018-04-08 23:57:31.000000000 +0000 @@ -135,7 +135,7 @@ * * @author Slava Pestov * @author John Gellene (API documentation) - * @version $Id: View.java 24469 2016-07-31 01:55:18Z ezust $ + * @version $Id: View.java 24814 2018-01-10 03:51:43Z ezust $ */ public class View extends JFrame implements InputHandlerProvider { @@ -778,7 +778,7 @@ editPane.focusOnTextArea(); } else - javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); + javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); } //}}} //{{{ unsplitCurrent() method @@ -839,7 +839,7 @@ editPane.focusOnTextArea(); } else - javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); + javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); } //}}} //{{{ resplit() method @@ -851,7 +851,7 @@ public void resplit() { if(lastSplitConfig == null) - javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); + javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(null); else setSplitConfig(null,lastSplitConfig); } //}}} @@ -1467,6 +1467,8 @@ */ boolean confirmToCloseDirty() { + boolean autosaveUntitled = jEdit.getBooleanProperty("autosaveUntitled"); + boolean suppressNotSavedConfirmUntitled = jEdit.getBooleanProperty("suppressNotSavedConfirmUntitled") || autosaveUntitled; Set checkingBuffers = getOpenBuffers(); for (View view: jEdit.getViews()) { @@ -1478,7 +1480,7 @@ } for (Buffer buffer: checkingBuffers) { - if (buffer.isDirty()) + if (buffer.isDirty() && !(buffer.isUntitled() && suppressNotSavedConfirmUntitled)) { return new CloseDialog(this, checkingBuffers).isOK(); } @@ -1675,21 +1677,22 @@ } else { + boolean autosaveUntitled = jEdit.getBooleanProperty("autosaveUntitled"); + // the component is an editPane EditPane editPane = (EditPane) component; splitConfig.append('"'); - splitConfig.append(StandardUtilities.charsToEscapes( - editPane.getBuffer().getPath())); + Buffer editPaneBuffer = editPane.getBuffer(); + splitConfig.append(StandardUtilities.charsToEscapes(editPaneBuffer.getPath())); splitConfig.append("\" buffer"); BufferSet bufferSet = editPane.getBufferSet(); Buffer[] buffers = bufferSet.getAllBuffers(); for (Buffer buffer : buffers) { - if (!buffer.isNewFile()) + if (!buffer.isNewFile() || (buffer.isUntitled() && autosaveUntitled)) { splitConfig.append(" \""); - splitConfig.append(StandardUtilities.charsToEscapes( - buffer.getPath())); + splitConfig.append(StandardUtilities.charsToEscapes(buffer.getPath() )); splitConfig.append("\" buff"); } } @@ -1787,7 +1790,7 @@ if (buffer == null) { buffer = jEdit.openTemporary(jEdit.getActiveView(), null, - path, true, null); + path, true, null, true); jEdit.commitTemporary(buffer); } } diff -Nru jedit-5.4.0+dfsg/org/gjt/sp/util/Log.java jedit-5.5.0+dfsg/org/gjt/sp/util/Log.java --- jedit-5.4.0+dfsg/org/gjt/sp/util/Log.java 2017-03-18 13:30:34.000000000 +0000 +++ jedit-5.5.0+dfsg/org/gjt/sp/util/Log.java 2018-04-08 23:58:37.000000000 +0000 @@ -57,7 +57,7 @@ * to the log, see {@link #init}. * * @author Slava Pestov - * @version $Id: Log.java 24428 2016-06-23 02:49:29Z daleanson $ + * @version $Id: Log.java 24740 2017-09-20 17:16:54Z daleanson $ */ public class Log { @@ -201,6 +201,43 @@ { Log.beepOnOutput = beepOnOutput; } //}}} + + public static void setMaxLines(int newMax) + { + if (newMax == MAXLINES) + return; + + // find last non-null entry in log array + int lineCount = 0; + for (int i = 0; i < log.length; i++) + { + if (log[i] == null) + break; + ++lineCount; + } + + // copy entries from log to newLog + String[] newLog = new String[newMax]; + if (newMax > lineCount) + { + System.arraycopy(log, 0, newLog, 0, lineCount); + } + else + { + // lineCount > newMax + System.arraycopy(log, lineCount - newMax, newLog, 0, newMax); + logLineCount = newMax; + } + + MAXLINES = newMax; + log = newLog; + listModel.update(lineCount, true); + } + + public static int getMaxLinex() + { + return MAXLINES; + } //{{{ flushStream() method /** @@ -344,7 +381,7 @@ //{{{ Instance variables private static final Object LOCK; - private static final String[] log; + private static String[] log; private static int logLineCount; private static boolean wrap; private static int level; diff -Nru jedit-5.4.0+dfsg/org/jedit/localization/jedit_cs.props jedit-5.5.0+dfsg/org/jedit/localization/jedit_cs.props --- jedit-5.4.0+dfsg/org/jedit/localization/jedit_cs.props 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/jedit/localization/jedit_cs.props 2018-04-08 23:58:42.000000000 +0000 @@ -51,8 +51,7 @@ action-set.macros=Makra action-set.plugin=Plugin: {0} -macro-handler.beanshell.lahbel=BeanShell skript -macro-handler.beanshell.glob=*.bsh +macro-handler.beanshell.label=BeanShell skript save-layout-failed.message=Nepovedlo se uložit dokovací rozmístění. load-layout.title=Načíst dokovací rozmístění @@ -712,7 +711,7 @@ ({2})\n\ \n\ Pro využití jiného kódování, zkuste příkazy v menu \n\ - Soubor->Otevřít v kódování + Soubor->Otevřít v kódování\n\ \n\ Pokud jste opravdu zaseklí a nevíte kudy kam, zkuste \n\ kódování "ASCII" nebo "8859_1". @@ -1245,9 +1244,8 @@ options.general.checkModStatus.silentReload=Automaticky znovunačíst bez upozornění options.general.checkModStatusUpon=Kontrolovat změnu souboru pokud: options.general.checkModStatusUpon.focus=Aplikace má focus -options.general.checkModStatusUpon.all=Aplikace má focus, buffer má focus nebo probíhá ukládání jakéhokoliv bufferu -options.general.checkModStatusUpon.operations=buffer má focus nebo probíhá ukládání jakéholiv bufferu -options.general.checkModStatusUpon.focusBuffer=buffer je právě navštíven nebo probíhá ukládání +options.general.checkModStatusUpon.all=Aplikace má focus, buffer je právě navštíven nebo probíhá ukládání jakéhokoliv bufferu +options.general.checkModStatusUpon.visitBuffer=buffer je právě navštíven options.general.checkModStatusUpon.none=ukládání bufferu options.general.recentFiles=Nedávné soubory k zapamatování: options.general.hypersearch.maxWarningResults=Maximální počet výsledků hyperhledání: @@ -1488,7 +1486,6 @@ options.save-back.confirmSaveAll="Uložit všechny buffery" žádá o potvrzení options.save-back.autosaveUntitled=Autosave nepojmenovaných bufferů options.save-back.suppressNotSavedConfirmUntitled=Nikdy neoznačovat nepojmenované buffery jako změněné. -options.save-back.suppressNotSavedConfirmUntitled.tooltip=Zaškrnete-li tuto možnost, znamená to, že nepojmenované buffery budou vymazány, kdykoliv je vytvořen nový.(je to feature!) options.save-back.useMD5forDirtyCalculation=Nikdy neoznačovat buffery jako změněné, pokud je obsah nezměněn. options.save-back.useMD5forDirtyCalculation.tooltip=Porovnáním délky a MD5 hashe bufferu v čase načtení se rozhodne, zda je upravený buffer stále změněný. options.save-back.saveAsUsesFSB=Prohlížeč souborového systému využívá jako výchozí uložení "Uložit jako" @@ -1999,16 +1996,14 @@ install-plugins.info.releaseDate=Datum vydání install-plugins.info.version=Verze install-plugins.info.category=Kategorie +install-plugins.info.author=Autor +install-plugins.info.released=Vydáno install-plugins.totalSize={0} plugin(ů), celková velikost: {1} install-plugins.select-all=Vybrat vše install-plugins.install=Instalovat install-plugins.show-updates=Zobrazit updaty -install-plugins.info=Autor: {0}\n\ - Vydáno: {1}\n\ - {2} - update-plugins.title=Update plugin-manager.progress=Stahuji {0} z mirroru {1} @@ -2277,8 +2272,6 @@ macro.rs.DisplayShortcuts.Close.label=Zavřít macro.rs.DisplayShortcuts.WriteToBuffer.label=Zapsat do bufferu macro.rs.DisplayShortcuts.ShortcutList.label=Seznam klávesových zkratek -macro.rs.DisplayShortcuts.Center.label=Střed -macro.rs.DisplayShortcuts.South.label=Jih #}}} #{{{ Hex Convert @@ -2291,12 +2284,7 @@ #{{{ Make Bug Report macro.rs.MakeBugReport.OpeningActivityLog.error=Chyba při otevírání logu aktivit. macro.rs.MakeBugReport.UsefulEntriesForReport.label=Záznamy logu aktivit mohou být užitečné při nahlašování bugů:\n\n. -macro.rs.MakeBugReport.MessagejEdit.label=[zpráva] jEdit: -macro.rs.MakeBugReport.NoticejEdit.label=[upozornění] jEdit: -macro.rs.MakeBugReport.NoticeJarClassLoader.label=[upozornění] JARClassLoader: -macro.rs.MakeBugReport.MessagejEditStartupComplete.label=[zpráva] jEdit: Spuštění hotovo -macro.rs.MakeBugReport.Error.label=[chyba] -macro.rs.MakeBugReport.ReadingActivityLog.error=Chyba při čtení logu aktivit +macro.rs.MakeBugReport.ReadingActivityLog.error=Chyba při čtení logu aktivit. #}}} #{{{ Run Script @@ -2420,9 +2408,6 @@ Editing/Duplicate_Lines_Above.label=Duplikovat řádky nad Editing/Duplicate_Lines_Below.label=Duplikovat řádky pod -Editing/Emacs_Ctrl-K.label=Emacs Ctrl-K -Editing/Emacs_Next_Line.label=Emacs další řádek -Editing/Emacs_Previous_Line.label=Emacs předchozí řádek Editing/Go_to_Column.label=Jdi na sloupec Editing/Greedy_Backspace.label=Greedy Backspace Editing/Greedy_Delete.label=Greedy Delete @@ -2443,7 +2428,6 @@ Files/Browse_Buffer_Directory.label=Prohlížet adresář bufferu Files/Browse_Directory.label=Prohlížet adresář Files/Buffer_Switcher.label=Přepínač bufferu -Files/Close_All_Except_Active.label=Zavřít vše kromě aktivního Files/Copy_Name_to_Clipboard.label=Kopírovat název do schránky Files/Copy_Path_to_Clipboard.label=Kopírovat cestu do schránky Files/Delete_Current.label=Smazat aktuální @@ -2457,6 +2441,14 @@ Files/Toggle_ReadOnly.label=Přepnout ReadOnly (pouze pro čtení) #}}} +#{{{ Emacs +macros.folder.Emacs.label=Emacs + +Emacs/Emacs_Ctrl-K.label=Emacs Ctrl-K +Emacs/Emacs_Next_Line.label=Emacs další řádek +Emacs/Emacs_Previous_Line.label=Emacs předchozí řádek +#}}} + #{{{ Interface macros.folder.Interface.label=Rozhraní diff -Nru jedit-5.4.0+dfsg/org/jedit/localization/jedit_de.props jedit-5.5.0+dfsg/org/jedit/localization/jedit_de.props --- jedit-5.4.0+dfsg/org/jedit/localization/jedit_de.props 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/jedit/localization/jedit_de.props 2018-04-08 23:58:42.000000000 +0000 @@ -58,7 +58,7 @@ #{{{ Common strings common.ok=OK -common.cancel=Abbruch +common.cancel=Abbrechen common.close=Schließen common.error=Fehler common.apply=Anwenden @@ -75,9 +75,9 @@ common.loading=Lade... common.reset=Zurücksetzen -#lineSep.unix=Unix (\\n). -#lineSep.windows=DOS/Windows (\\r\\n). -#lineSep.mac=MacOS (\\r). +lineSep.unix=Unix (\\n) +lineSep.windows=DOS/Windows (\\r\\n) +lineSep.mac=MacOS (\\r) #}}} #{{{ Miscellaneous @@ -89,7 +89,6 @@ action-set.plugin=Plugin: {0} macro-handler.beanshell.label=BeanShell-Skript -#macro-handler.beanshell.glob=*.bsh save-layout-failed.message=Dock-Layout konnte nicht gespeichert werden. load-layout.title=Dock-Layout laden @@ -575,32 +574,34 @@ view.status.io.done=Ein-/Ausgabeoperation vollständig view.status.io=I/O: {0} Operationen in Arbeit view.status.linesep-changed=Zeilenende-Zeichen gesetzt auf "{0}" -view.status.linesep-tooltip=Zeilenende-Zeichen (zum ändern klicken) +view.status.linesep-tooltip=Zeilenende-Zeichen (zum Ändern klicken) view.status.memory-tooltip=Java Heap-Speicher: {0}Kb/{1}Kb view.status.mode-tooltip=Bearbeitungsmodus, Faltmodus, Zeichenkodierung view.status.multi-changed=Mehrfachauswahl-Modus ist "{0,choice,0#Aus|1#Ein}" -view.status.multi-tooltip=Mehrfachauswahl-Modus (zum ändern klicken) +view.status.multi-tooltip=Mehrfachauswahl-Modus (zum Ändern klicken) view.status.narrow=Menüpunkt "Alle Zeilen anzeigen" wählen, um den gesamten Text wieder sichtbar zu machen view.status.no-markers=keine Lesezeichen gesetzt view.status.no-registers=keine Register definiert view.status.overwrite-changed=Überschreib-Modus ist "{0,choice,0#Aus|1#Ein}" -view.status.overwrite-tooltip=Überschreib-Modus (zum ändern klicken) +view.status.overwrite-tooltip=Überschreib-Modus (zum Ändern klicken) view.status.paste-string-register=Einfügen aus Register? [{0}] view.status.print=Seite {0} wird gedruckt view.status.quick-copy=Schnellkopier-Modus - markierter Text ersetzt Auswahl view.status.recording=Makro wird aufgenommen view.status.rect-select-changed=Spaltenauswahl ist "{0,choice,0#Aus|1#Ein}" -view.status.rect-tooltip=Spaltenauswahl-Modus (zum ändern klicken) +view.status.rect-tooltip=Spaltenauswahl-Modus (zum Ändern klicken) view.status.replace-all={0} Fundstelle(n) in {1} Datei(en) ersetzt view.status.search-not-found=Suchtext nicht gefunden! view.status.select-marker=Auswählen bis Lesezeichen mit Kürzel? [{0}] view.status.swap-marker=Cursor-Position tauschen mit Lesezeichen: Kürzel? [{0}] view.status.vertical-paste-string-register=Vertikal einfügen aus Register ? [{0}] view.status.wrap-changed=Wortumbruch-Modus ist jetzt "{0}" -view.status.wrap-tooltip=Wortumbruch-Modus ist {0} (zum ändern klicken) -view.status.indent-tooltip=Indikator für Automatische Einrückung (zum ändern klicken) +view.status.wrap-tooltip=Wortumbruch-Modus ist {0} (zum Ändern klicken) +view.status.indent-tooltip=Indikator für Automatische Einrückung (zum Ändern klicken) view.status.autoindent-changed=Automatische Einrückung ist jetzt "{0}" view.status.bufferset-tooltip=Dateisatz-Modus ist {0} +view.status.locked-changed=Datei ist {0,choice,0#entsperrt|1#gesperrt} +view.status.locked-tooltip=Datei ist {0,choice,0#entsperrt|1#gesperrt} (zum Ändern klicken) wrap.none=ausgeschaltet wrap.hard=hart wrap.soft=weich @@ -625,21 +626,21 @@ print.dialog.Advanced=Erweitert print.dialog.All_pages=Alle Seiten print.dialog.All_sheets=Alle Blätter -print.dialog.At=bei +print.dialog.At=Zeitpunkt: print.dialog.Automatic-Feeder=Automatischer Vorlageneinzug print.dialog.Bottom=Unten print.dialog.Cassette=Kassette print.dialog.Collate=Zusammenstellen -print.dialog.Color=Farbe +print.dialog.Color=farbig print.dialog.Copies=Kopien print.dialog.Current_page=Aktuelle Seite print.dialog.Draft=Entwurf -print.dialog.Event_sheets=Gerade Seiten +print.dialog.Even_sheets=Gerade Seiten print.dialog.Finishing=Finishing print.dialog.Form-Source=Formular-Quelle print.dialog.General=Allgemein print.dialog.High=Hoch -print.dialog.Ink=Tinte +print.dialog.Ink=Farbe print.dialog.Job=Job print.dialog.Job_Details=Job-Details print.dialog.Large-Format=Großformat @@ -648,11 +649,11 @@ print.dialog.Low=Niedrig print.dialog.Manual-Envelope=Umschlag manuell print.dialog.Margins=Ränder -print.dialog.Medium=Medium +print.dialog.Medium=Mittel print.dialog.Monochrome=schwarz/weiß print.dialog.Normal=Normal print.dialog.Now=Jetzt -print.dialog.Odd_sheets=Gerade Seiten +print.dialog.Odd_sheets=Ungerade Seiten print.dialog.On_Hold=Beim Halten print.dialog.Only_print=Nur drucken print.dialog.Orientation=Ausrichtung @@ -664,7 +665,7 @@ print.dialog.Paper=Papier print.dialog.Paper_size=Papiergröße print.dialog.Paper_source=Papierquelle -print.dialog.Print_Document=Druckdokument +print.dialog.Print_Document=Druckzeitpunkt print.dialog.Priority=Priorität print.dialog.Quality=Qualität print.dialog.Range=Bereich @@ -749,9 +750,9 @@ print.dialog.na-8x10=8\" x 10\" Paper print.dialog.na-9x11-envelope=9x11 Umschlag print.dialog.na-9x12-envelope=9x12 Umschlag -print.dialog.na-10x13-envelope=10x15 Umschlag -print.dialog.na-10x14-envelope=10x15 Umschlag -print.dialog.na-10x15-envelope=10x15 Umschlag +print.dialog.na-10x13-envelope=10x13 Umschlag +print.dialog.na-10x14-envelope=10x14 Umschlag +print.dialog.na-10x15-envelope=10x15 Umschlag print.dialog.na-legal=Legal print.dialog.na-letter=Letter print.dialog.na-number-9-envelope=Nr. 9 Umschlag @@ -765,7 +766,7 @@ print.dialog.personal-envelope=Persönlicher Umschlag print.dialog.portrait=Hochformat print.dialog.quarto=Quarto -print.dialog.reverse-landscape=Querformat gedreht +print.dialog.reverse-landscape=Querformat gedreht print.dialog.reverse-portrait=Hochformat gedreht print.dialog.side=Seite print.dialog.tabloid=Tabloid @@ -997,6 +998,13 @@ Ungespeicherte Änderungen in allen Dateien WERDEN VERLOREN GEHEN! #}}} +#{{{ File is backup alert +file-is-backup.title=Backupdatei öffnen +file-is-backup.message=Die Datei {0} ist wahrscheinlich eine jEdit Backupdatei. +file-is-backup.open=Öffnen +file-is-backup.open-locked=Gesperrt Öffnen +#}}} + #{{{ Encoding prompt encoding-prompt.title=Öffnen mit anderer Zeichenkodierung encoding-prompt.message=Zu verwendende Zeichenkodierung: @@ -1419,6 +1427,7 @@ buffer-options.gzipped=GZIP - Datei auf der Festplatte komprimieren buffer-options.editing=Bearbeiten buffer-options.mode=Bearbeitungsmodus: +buffer-options.locked=Gesperrt #}}} #{{{ Global options dialog @@ -1630,7 +1639,8 @@ #{{{ Large files pane options.large-files.label=Große Dateien options.editing.largefilemode.title=Modus für große Dateien -options.editing.largefilemode=Verhalten, wenn eine sehr große Datei geöffnet wird: +options.editing.largefilemode=Verhalten, wenn eine sehr große Datei geöffnet wird (> {0} Zeichen, oder Zeilenlänge > {1}): +options.editing.largefilemode.tooltip=Werte können geändert werden über jEdit-Eigenschaften: largeBufferSize und longLineLimit options.editing.largefilemode.option.ask=Fragen options.editing.largefilemode.option.full=Volle Syntaxhervorhebung : \ jEdit könnte sehr langsam werden, (nicht empfohlen) @@ -1703,11 +1713,16 @@ #}}} #{{{ Save & Backup pane +options.autosave=Autosave Optionen +options.backup=Backup Optionen options.save-back.label=Speichern & Backup - -options.save-back.autosave=Auto-Speichern Intervall (Sekunden): +options.save-back.autosave=Autosave Intervall (Sekunden): +options.save-back.autosave.tooltip=Zum Deaktivieren auf 0 setzen options.save-back.backups=Max. Anzahl von Backups: +options.save-back.backups.tooltip=Zum Deaktivieren auf 0 setzen options.save-back.backupDirectory=Backup Verzeichnis: +options.save-back.autosaveDirectory=Autosave Verzeichnis: +options.save-back.backupDirectory.tooltip=Wenn leer, wird das Verzeichnis der aktiven Datei verwendet. $VARIABLE/-Präfixe sind erlaubt. options.save-back.backupPrefix=Backup-Präfix für Dateiname: options.save-back.backupSuffix=Backup-Suffix für Dateiname: options.save-back.backupEverySave=Backup bei jedem Speichern @@ -1715,8 +1730,9 @@ options.save-back.twoStageSave.tooltip=Stufe 1: Anlegen einer temporären Datei und dahinein sichern. Stufe 2: Umbenennen der temporären Datei zum wirklichen Namen options.save-back.confirmSaveAll=Bestätigung für "Alle Dateien speichern" options.save-back.autosaveUntitled=Unbenannte Dateien automatisch speichern -options.save-back.suppressNotSavedConfirmUntitled=Unbenannte Dateien niemals als bearbeitet markieren -options.save-back.suppressNotSavedConfirmUntitled.tooltip="EIN" bedeutet, dass der Inhalt einer unbenannten Datei überschrieben wird, wenn eine neue erzeugt wird (kein Fehler!) +options.save-back.autosaveUntitled.tooltip=Unbenannte Dateien werden über jEdit-Sitzungen hinweg gespeichert und wiederhergestellt +options.save-back.suppressNotSavedConfirmUntitled=Unbenannte Dateien ohne Bestätigung schließen +options.save-back.suppressNotSavedConfirmUntitled.tooltip=Unbenannte Dateien werden ohne Bestätigung geschlossen options.save-back.useMD5forDirtyCalculation=Dateien mit unverändertem Inhalt niemals als bearbeitet markieren options.save-back.useMD5forDirtyCalculation.tooltip=Länge und MD5-Summe der Datei im Editor und der entsprechenden Datei auf der Festplatte werden dafür verglichen. options.save-back.saveAsUsesFSB="Speichern unter" startet im aktuellen Verzeichnis des Dateisystem-Browsers @@ -1733,9 +1749,10 @@ options.shortcuts.resetkeymap.label=Zurücksetzen options.shortcuts.resetkeymap.dialog.label=Tastenkürzelsatz zurücksetzen options.shortcuts.resetkeymap.dialog.title=Tastenkürzelsatz zurücksetzen -options.shortcuts.keymap.label=Tastenkürzelsatz wählen: +options.shortcuts.keymap.label=Tastenkürzelsatz: +options.shortcuts.keymap.tooltip=Ein benannter Satz benutzerdefinierter Tastenkürzel options.shortcuts.label=Tastenkürzel -options.shortcuts.select.label=Tastenkürzel bearbeiten: +options.shortcuts.select.label=Befehlssatz: options.shortcuts.select.tooltip=Filter für: Eingebaute Befehle, Makros, Plugin-Befehle, Dock-Layouts options.shortcuts.name=Befehl options.shortcuts.actionset=Befehlssatz @@ -2009,7 +2026,7 @@ io-progress-monitor.title=I/O-Threads io-progress-monitor.caption={0} anstehende Anforderung(en). io-progress-monitor.idle=Thread im Leerlauf -io-progress-monitor.abort=Abbruch +io-progress-monitor.abort=Abbrechen #{{{ I/O abort dialog box abort.title=Abort I/O @@ -2232,7 +2249,6 @@ install-plugins.info.author=Autor install-plugins.info.released=Freigegeben install-plugins.info.depends=Abhängig von -install-plugins.info.optionalDepends=Optional abhängig von install-plugins.totalSize={0} Plugin(s), Gesamtgröße: {1} install-plugins.select-all=Alle wählen @@ -2264,7 +2280,7 @@ fileprop.writeable=Schreiben fileprop.attribute=Attribut fileprop.okBtn=OK -fileprop.cancelBtn=Abbruch +fileprop.cancelBtn=Abbrechen fileprop.selectedFiles=Gewählte Dateien fileprop.selectedDirectories=Gewählte Verzeichnisse #}}} @@ -2293,31 +2309,31 @@ # the sample is an example of what the widget will show, for the # preview in the options statusbar.mode.label=Datei Bearbeitungsmodus (z.B.: java) -#statusbar.mode.sample=java +statusbar.mode.sample=java statusbar.fold.label=Datei Faltmodus (z.B.: explicit) -#statusbar.fold.sample=explicit +statusbar.fold.sample=explicit statusbar.encoding.label=Datei Zeichenkodierung (z.B.: UTF-8) -#statusbar.encoding.sample=UTF-8 +statusbar.encoding.sample=UTF-8 statusbar.wrap.label=Datei Wortumbruch-Modus (z.B.: N) -#statusbar.wrap.sample=N +statusbar.wrap.sample=N statusbar.indent.label=Automatische Einrückung (z.B.: F) -#statusbar.indent.sample=F +statusbar.indent.sample=F statusbar.multiSelect.label=Datei Mehrfachauswahl-Modus (z.B.: m) -#statusbar.multiSelect.sample=m +statusbar.multiSelect.sample=m statusbar.rectSelect.label=Datei Spaltenauswahl-Modus (z.B.: r) -#statusbar.rectSelect.sample=r +statusbar.rectSelect.sample=r statusbar.overwrite.label=Datei Überschreib-Modus (z.B.: o) -#statusbar.overwrite.sample=o +statusbar.overwrite.sample=o statusbar.lineSep.label=Datei Zeilenendezeichen (z.B.: U) -#statusbar.lineSep.sample=U +statusbar.lineSep.sample=U statusbar.memory-status.label=Speicherstatus (z.B.: 9/24Mb) -#statusbar.memory-status.sample=9/24Mb +statusbar.memory-status.sample=9/24Mb statusbar.clock.label=Uhrzeit (z.B.: 16:45) -#statusbar.clock.sample=16:45 +statusbar.clock.sample=16:45 statusbar.buffersets.label=Dateisatz-Modus (z.B.: G) -#statusbar.buffersets.sample=G +statusbar.buffersets.sample=G statusbar.selection-length.label=Zeichenanzahl in Auswahl (z.B.: 192) -#statusbar.selection-length.sample=192 +statusbar.selection-length.sample=192 statusbar.last-modified.label=Datum der letzen Änderung auf Festplatte (z.B.: 12.03.11 16:43) statusbar.last-modified.sample=12.03.11 16:43 statusbar.task-monitor.label=Task-Monitor (z.B.: 7 Aufgabe(n)) @@ -2472,12 +2488,12 @@ #}}} #{{{ Debug BufferSets -#macro.rs.DebugBuffersets.BuffersetDebugging.label=BUFFERSET DEBUGGING -#macro.rs.DebugBuffersets.BufferCount.label=BufferCount: -#macro.rs.DebugBuffersets.BufferList.label=BUFFER LIST -#macro.rs.DebugBuffersets.EndBufferList.label=END BUFFER LIST -#macro.rs.DebugBuffersets.EditpaneList.label=EDITPANE LIST -#macro.rs.DebugBuffersets.EndEditpaneList.label=END EDITPANE LIST +macro.rs.DebugBuffersets.BuffersetDebugging.label=DATEISEST DEBUGGING +macro.rs.DebugBuffersets.BufferCount.label=Bufferanzahl: +macro.rs.DebugBuffersets.BufferList.label=DATEI LISTE +macro.rs.DebugBuffersets.EndBufferList.label=ENDE DATEI LISTE +macro.rs.DebugBuffersets.EditpaneList.label=EDITPANE LISTE +macro.rs.DebugBuffersets.EndEditpaneList.label=ENDE EDITPANE LISTE #}}} #{{{ Display Abbreviations @@ -2513,8 +2529,6 @@ macro.rs.DisplayShortcuts.Close.label=Schließen macro.rs.DisplayShortcuts.WriteToBuffer.label=Schreibe in Datei macro.rs.DisplayShortcuts.ShortcutList.label=Liste der Tastenkürzel -#macro.rs.DisplayShortcuts.Center.label=Center -#macro.rs.DisplayShortcuts.South.label=South #}}} #{{{ Hex Convert @@ -2527,11 +2541,6 @@ #{{{ Make Bug Report macro.rs.MakeBugReport.OpeningActivityLog.error=Fehler beim Öffnen des Activity Log. macro.rs.MakeBugReport.UsefulEntriesForReport.label=Einträge des Activity log, die für die Fehlermeldung nützlich sein könnten:\n\n. -#macro.rs.MakeBugReport.MessagejEdit.label=[message] jEdit: -#macro.rs.MakeBugReport.NoticejEdit.label=[notice] jEdit: -#macro.rs.MakeBugReport.NoticeJarClassLoader.label=[notice] JARClassLoader: -#macro.rs.MakeBugReport.MessagejEditStartupComplete.label=[message] jEdit: Startup complete -#macro.rs.MakeBugReport.Error.label=[error] macro.rs.MakeBugReport.ReadingActivityLog.error=Fehler beim Lesen des Activity Log. #}}} @@ -2673,6 +2682,7 @@ #{{{ Emacs macros.folder.Emacs.label=Emacs + Emacs/Emacs_Align_Decls.label=Emacs Dezimalzahlen ausrichten Emacs/Emacs_Backward_Sentence.label=Emacs Satz rückwärts Emacs/Emacs_Capitalize_Word.label=Emacs Wort zu Kapitälchen @@ -2691,10 +2701,11 @@ Emacs/Emacs_Open_Line.label=Emacs Neue Zeile Emacs/Emacs_Previous_Line.label=Emacs Vorige Zeile Emacs/Emacs_Set_Mark.label=Emacs Marke setzen -Emacs/Emacs_Set_Wrap=Emacs Umbruch setzen +Emacs/Emacs_Set_Wrap.label=Emacs Umbruch setzen Emacs/Emacs_Transpose_Chars.label=Emacs Zeichen vertauschen Emacs/Emacs_Transpose_Lines.label=Emacs Zeilen vertauschen Emacs/Emacs_Upcase_Word.label=Emacs Wort zu Großbuchstaben +Emacs/EmacsUtil.label=EmacsUtil #}}} #{{{ Files @@ -2703,7 +2714,6 @@ Files/Browse_Buffer_Directory.label=Dateisystem-Browser im Verzeichnis der aktiven Datei Files/Browse_Directory.label=Dateisystem-Browser mit Verzeichnisabfrage Files/Buffer_Switcher.label=Datei wechseln -Files/Close_All_Except_Active.label=Schließe alle anderen Files/Copy_Name_to_Clipboard.label=Kopiere Dateiname Files/Copy_Path_to_Clipboard.label=Kopiere Dateipfad Files/Delete_Current.label=Lösche aktive Datei diff -Nru jedit-5.4.0+dfsg/org/jedit/localization/jedit_en.props jedit-5.5.0+dfsg/org/jedit/localization/jedit_en.props --- jedit-5.4.0+dfsg/org/jedit/localization/jedit_en.props 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/jedit/localization/jedit_en.props 2018-04-08 23:58:42.000000000 +0000 @@ -54,7 +54,6 @@ action-set.plugin=Plugin: {0} macro-handler.beanshell.label=BeanShell script -macro-handler.beanshell.glob=*.bsh save-layout-failed.message=Failed to save the docking layout. load-layout.title=Load Docking Layout @@ -568,6 +567,8 @@ view.status.indent-tooltip=Automatic indentation indicator (click to change) view.status.autoindent-changed=Automatic indentation status is now "{0}" view.status.bufferset-tooltip=BufferSet scope is {0} +view.status.locked-changed=Buffer is {0,choice,0#unlocked|1#locked} +view.status.locked-tooltip=Buffer is {0,choice,0#unlocked|1#locked} (click to change) wrap.none=disabled wrap.hard=hard wrap.soft=soft @@ -601,7 +602,7 @@ print.dialog.Copies=Copies print.dialog.Current_page=Current page print.dialog.Draft=Draft -print.dialog.Event_sheets=Even shoets +print.dialog.Even_sheets=Even sheets print.dialog.Finishing=Finishing print.dialog.Form-Source=Form Source print.dialog.General=General @@ -716,8 +717,8 @@ print.dialog.na-8x10=8\" x 10\" Paper print.dialog.na-9x11-envelope=9x11 Envelope print.dialog.na-9x12-envelope=9x12 Envelope -print.dialog.na-10x13-envelope=10x15 Envelope -print.dialog.na-10x14-envelope=10x15 Envelope +print.dialog.na-10x13-envelope=10x13 Envelope +print.dialog.na-10x14-envelope=10x14 Envelope print.dialog.na-10x15-envelope=10x15 Envelope print.dialog.na-legal=Legal print.dialog.na-letter=Letter @@ -967,6 +968,13 @@ Unsaved changes in any open buffers WILL BE LOST! #}}} +#{{{ File is backup alert +file-is-backup.title=Opening Backup File +file-is-backup.message=The file {0} is likely a jEdit backup file. +file-is-backup.open=Open +file-is-backup.open-locked=Open locked +#}}} + #{{{ Encoding prompt encoding-prompt.title=Open With Other Encoding encoding-prompt.message=Character encoding to use: @@ -1392,6 +1400,7 @@ buffer-options.gzipped=GZIP (compress) file on disk buffer-options.editing=Editing buffer-options.mode=Edit mode: +buffer-options.locked=Locked #}}} #{{{ Global options dialog @@ -1605,7 +1614,8 @@ #{{{ Large files pane options.large-files.label=Large files options.editing.largefilemode.title=Large file mode -options.editing.largefilemode=What should I do about very big files: +options.editing.largefilemode=What should I do about very big files (> {0} chars, or line length > {1}): +options.editing.largefilemode.tooltip=Values can be changed via jEdit properties: largeBufferSize and longLineLimit options.editing.largefilemode.option.ask=Ask what to do when opening a large file options.editing.largefilemode.option.full=Keep Full syntax : jEdit's syntax highlight will work as usual, jEdit \ may become
    very slow, this is not recommended @@ -1682,11 +1692,16 @@ #}}} #{{{ Save & Backup pane +options.autosave=Autosave Options +options.backup=Backup Options options.save-back.label=Saving & Backup - options.save-back.autosave=Autosave frequency (secs): +options.save-back.autosave.tooltip=to disable, set to 0 options.save-back.backups=Max number of backups: +options.save-back.backups.tooltip=to disable, set to 0 +options.save-back.autosaveDirectory=Autosave directory: options.save-back.backupDirectory=Backup directory: +options.save-back.backupDirectory.tooltip=If blank, use buffer directory. $VARIABLE/prefixes allowed. options.save-back.backupPrefix=Backup filename prefix: options.save-back.backupSuffix=Backup filename suffix: options.save-back.backupEverySave=Backup on every save @@ -1694,9 +1709,10 @@ options.save-back.twoStageSave.tooltip=Stage 1: Create a temporary file and save to it. Stage 2: Rename the temporary file to the real name. options.save-back.confirmSaveAll="Save All Buffers" asks for confirmation options.save-back.autosaveUntitled=Autosave untitled buffers -options.save-back.suppressNotSavedConfirmUntitled=Never mark Untitled buffers dirty. -options.save-back.suppressNotSavedConfirmUntitled.tooltip=Checking this means untitled buffers get wiped out whenever a new one is created (it's a feature!) -options.save-back.useMD5forDirtyCalculation=Never mark buffers dirty if contents are unchanged. +options.save-back.autosaveUntitled.tooltip=Untitled buffers are saved and restored across jEdit sessions. +options.save-back.suppressNotSavedConfirmUntitled=Close dirty Untitled buffers without confirmation +options.save-back.suppressNotSavedConfirmUntitled.tooltip=Untitled dirty buffers are closed without confirmation +options.save-back.useMD5forDirtyCalculation=Never mark buffers dirty if contents are unchanged options.save-back.useMD5forDirtyCalculation.tooltip=Compare with length and MD5 hash of buffer at load time, to decide if an edited buffer is still dirty. options.save-back.saveAsUsesFSB="Save As" defaults to File System Browser directory #}}} @@ -1712,10 +1728,11 @@ options.shortcuts.resetkeymap.label=reset options.shortcuts.resetkeymap.dialog.label=Reset the keymap options.shortcuts.resetkeymap.dialog.title=reset keymap -options.shortcuts.keymap.label=Choose keymap: +options.shortcuts.keymap.label=Keymap: +options.shortcuts.keymap.tooltip=A named set of customized keyboard shortcuts options.shortcuts.label=Shortcuts -options.shortcuts.select.label=Edit Shortcuts: -options.shortcuts.select.tooltip=You can select globals, macros, or plugin shortcuts +options.shortcuts.select.label=Action Set: +options.shortcuts.select.tooltip=You can select built-ins, macros, or plugin shortcuts options.shortcuts.name=Command options.shortcuts.actionset=Action set options.shortcuts.shortcut1=Primary shortcut @@ -1885,7 +1902,7 @@ options.browser.general.defaultPath.favorites=Favorites options.browser.general.defaultPath.home=Home directory options.browser.general.defaultPath.last=Most recently visited directory -options.browser.general.defaultPath.buffer=Parent directory of current buffer +options.browser.general.defaultPath.buffer=Directory of current buffer options.browser.general.defaultPath.working=Working directory of jEdit process options.browser.general.showMenubar=Show menu bar options.browser.general.showToolbar=Show tool bar @@ -2214,7 +2231,6 @@ install-plugins.info.author=Author install-plugins.info.released=Released install-plugins.info.depends=Depends on -install-plugins.info.optionalDepends=Optionally depends on install-plugins.totalSize={0} plugin(s), total size: {1} install-plugins.select-all=Select All @@ -2494,8 +2510,6 @@ macro.rs.DisplayShortcuts.Close.label=Close macro.rs.DisplayShortcuts.WriteToBuffer.label=Write to buffer macro.rs.DisplayShortcuts.ShortcutList.label=Keyboard shortcut list -macro.rs.DisplayShortcuts.Center.label=Center -macro.rs.DisplayShortcuts.South.label=South #}}} #{{{ Hex Convert @@ -2508,12 +2522,7 @@ #{{{ Make Bug Report macro.rs.MakeBugReport.OpeningActivityLog.error=Error opening Activity Log. macro.rs.MakeBugReport.UsefulEntriesForReport.label=Activity log entries that might be useful in a bug report:\n\n. -macro.rs.MakeBugReport.MessagejEdit.label=[message] jEdit: -macro.rs.MakeBugReport.NoticejEdit.label=[notice] jEdit: -macro.rs.MakeBugReport.NoticeJarClassLoader.label=[notice] JARClassLoader: -macro.rs.MakeBugReport.MessagejEditStartupComplete.label=[message] jEdit: Startup complete -macro.rs.MakeBugReport.Error.label=[error] -macro.rs.MakeBugReport.ReadingActivityLog.error=Error reading Activity Log +macro.rs.MakeBugReport.ReadingActivityLog.error=Error reading Activity Log. #}}} #{{{ Run Script @@ -2638,6 +2647,7 @@ Editing/Duplicate_Lines_Above.label=Duplicate Lines Above Editing/Duplicate_Lines_Below.label=Duplicate Lines Below Editing/Go_to_Column.label=Go To Column +Editing/Go_to_Offset.label=Go to Offset Editing/Greedy_Backspace.label=Greedy Backspace Editing/Greedy_Delete.label=Greedy Delete Editing/Greedy_Left.label=Greedy Left @@ -2653,6 +2663,7 @@ #{{{ Emacs macros.folder.Emacs.label=Emacs + Emacs/Emacs_Align_Decls.label=Emacs Align Decls Emacs/Emacs_Backward_Sentence.label=Emacs Backward Sentence Emacs/Emacs_Capitalize_Word.label=Emacs Capitalize Word @@ -2671,10 +2682,11 @@ Emacs/Emacs_Open_Line.label=Emacs Open Line Emacs/Emacs_Previous_Line.label=Emacs Previous Line Emacs/Emacs_Set_Mark.label=Emacs Set Mark -Emacs/Emacs_Set_Wrap=Emacs Set Wrap +Emacs/Emacs_Set_Wrap.label=Emacs Set Wrap Emacs/Emacs_Transpose_Chars.label=Emacs Transpose Chars Emacs/Emacs_Transpose_Lines.label=Emacs Transpose Lines Emacs/Emacs_Upcase_Word.label=Emacs Upcase Word +Emacs/EmacsUtil.label=EmacsUtil #}}} #{{{ Files @@ -2683,7 +2695,6 @@ Files/Browse_Buffer_Directory.label=Browse Buffer Directory Files/Browse_Directory.label=Browse Directory Files/Buffer_Switcher.label=Buffer Switcher -Files/Close_All_Except_Active.label=Close All Except Active Files/Copy_Name_to_Clipboard.label=Copy Name to Clipboard Files/Copy_Path_to_Clipboard.label=Copy Path to Clipboard Files/Delete_Current.label=Delete Current @@ -2693,6 +2704,7 @@ Files/Next_Dirty_Buffer.label=Next Dirty Buffer Files/Open_Path.label=Open Path Files/Open_Selection.label=Open Selection +Files/Open_Selection_In_Desktop.label=Open Selection In Desktop Files/Send_Buffer_To_Next_Split.label=Send Buffer To Next Split Files/Toggle_ReadOnly.label=Toggle ReadOnly #}}} @@ -2732,8 +2744,11 @@ Misc/Display_Character_Code.label=Display Character Code Misc/Display_Shortcuts.label=Display Shortcuts Misc/Evaluate_Buffer_in_BeanShell.label=Evaluate Buffer in BeanShell +Misc/Generate_Encodings_List.label=Generate Encodings List +Misc/Generate_Modes_List.label=Generate Modes List Misc/Hex_Convert.label=Hex Convert Misc/HyperSearch_Results_to_Buffer.label=HyperSearch Results to Buffer +Misc/Insert_Plugins_List.label=Insert Plugins List Misc/Make_Bug_Report.label=Make Bug Report Misc/Run_Script.label=Run Script Misc/Show_Threads.label=Show Threads @@ -2761,6 +2776,7 @@ Text/Line_Filter.label=Line Filter Text/Next_Char.label=Next Char Text/Reverse_Lines.label=Reverse Lines +Text/Reverse_Selection.label=Reverse Selection Text/Single_Space_Buffer.label=Single Space Buffer #}}} diff -Nru jedit-5.4.0+dfsg/org/jedit/localization/jedit_fr.props jedit-5.5.0+dfsg/org/jedit/localization/jedit_fr.props --- jedit-5.4.0+dfsg/org/jedit/localization/jedit_fr.props 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/jedit/localization/jedit_fr.props 2018-04-08 23:58:42.000000000 +0000 @@ -53,7 +53,6 @@ action-set.plugin=Plugin : {0} macro-handler.beanshell.label=Script BeanShell -macro-handler.beanshell.glob=*.bsh save-layout-failed.message=Impossible d''enregistrer la disposition d'ancrage. load-layout.title=Chargement de la disposition d'ancrage @@ -541,7 +540,7 @@ view.status.linesep-tooltip=Séparateur de ligne (clic pour modifier) view.status.memory-tooltip=Mémoire allouée é Java : {0}Ko/{1}Ko view.status.mode-tooltip=Mode d'édition, mode de repli et encodage courants -view.st,atus.multi-changed=Le mode de sélection multiple est {0,choice,0#désactivé|1#activé} +view.status.multi-changed=Le mode de sélection multiple est {0,choice,0#désactivé|1#activé} view.status.multi-tooltip=Mode de sélection multiple (clic pour modifier) view.status.narrow=Sélectionner « Développer tous les replis » pour afficher à nouveau tout le texte view.status.no-markers=Aucun marqueur défini @@ -735,7 +734,7 @@ badurl.title=URL invalide # {0} - L'URL # {1} - L'erreur -badurl.message=Cette URL est invalide : {0}\n +badurl.message=Cette URL est invalide : {0}\n\ ({1}) #}}} @@ -1239,8 +1238,7 @@ options.general.checkModStatusUpon=Vérifier la modification de fichier lorsque : options.general.checkModStatusUpon.focus=l'application est active options.general.checkModStatusUpon.all=l'application est active, le tampon est visité ou un tampon est enregistré -options.general.checkModStatusUpon.operations=le tampon est visité ou un tampon est enregistré -options.general.checkModStatusUpon.focusBuffer=le tampon est visité ou enregistré +options.general.checkModStatusUpon.visitBuffer=le tampon est visité options.general.checkModStatusUpon.none=le tampon est enregistré options.general.recentFiles=Fichiers ouverts récemment à mémoriser : options.general.hypersearch.maxWarningResults=Nombre de résultats d'hyper-recherche max : @@ -1319,7 +1317,7 @@ options.docking.label=Ancrage options.docking.title=Fenêtre options.docking.dockPosition=Position d'ancrage -options.appearance.selectFramework.label=Système d'ancrage : +options.docking.selectFramework.label=Système d'ancrage : options.docking.autoSaveModeLayout.label=Enregistrer automatiquement la disposition d'ancrage spécifique au mode options.docking.autoLoadModeLayout.label=Charger automatiquement la disposition d'ancrage spécifique au mode options.docking.selectSet.label=Éléments ancrables : @@ -1482,7 +1480,6 @@ options.save-back.confirmSaveAll=Demander confirmation pour « Enregistrer tous les tampons » options.save-back.autosaveUntitled=Enregistrer automatiquement les tampons sans titre options.save-back.suppressNotSavedConfirmUntitled=Ne jamais marquer les tampons sans titre comme étant modifiés mais non enregistrés. -options.save-back.suppressNotSavedConfirmUntitled.tooltip=Si ceci est coché, cela signifie que les tampons sans titres seront supprimés quand un autre est créé (c'est une fonctionnalité !) options.save-back.useMD5forDirtyCalculation=Ne jamais marquer les tampons comme étant modifiés mais pas enregistrés si le contenu n'a pas changé. options.save-back.useMD5forDirtyCalculation.tooltip=Comparer la longueur et le MD5 hash du tampon à l'horaire de chargement pour décider si un tampon édité est modifié mais pas encore enregistré. options.save-back.saveAsUsesFSB="Enregistrer sous" par défaut vers le dossier de l'explorateur de fichiers @@ -1648,10 +1645,6 @@ options.view.fullScreenIncludesToolbar=Afficher les barres d'outils en mode plein écran options.view.fullScreenIncludesStatus=Afficher la barre d'état en mode plein écran options.bufferset.scope=Localisation du jeu de tampons : -options.editpane.bufferset.contain=Les nouveaux jeux de tampons se composent : -options.editpane.bufferset.newbufferset.copy=d'une copie du jeu de tampon courant -options.editpane.bufferset.newbufferset.empty=d'un tampon vide -options.editpane.bufferset.newbufferset.currentbuffer=du tampon courant uniquement #}}} @@ -1995,16 +1988,14 @@ install-plugins.info.releaseDate=Date de mise à disposition install-plugins.info.version=Version install-plugins.info.category=Catégorie +install-plugins.info.author=Auteur +install-plugins.info.released=Mis à disposition install-plugins.totalSize={0} plugin(s), taille totale : {1} install-plugins.select-all=Tout sélectionner install-plugins.install=Installer install-plugins.show-updates=Afficher les mises à jour -install-plugins.info=Auteur: {0}\n\ - Mis à disposition: {1}\n\ - {2} - update-plugins.title=Mise à jour plugin-manager.progress=Téléchargement de {0} à partir du miroir {1} @@ -2284,12 +2275,7 @@ #{{{ Make Bug Report macro.rs.MakeBugReport.OpeningActivityLog.error=Erreur lors de l'ouverture du journal d'activité. macro.rs.MakeBugReport.UsefulEntriesForReport.label=Les entrées du journal d'activité qui peuvent être utiles dans un signalement de bogue :\n\n. -macro.rs.MakeBugReport.MessagejEdit.label=[message] jEdit: -macro.rs.MakeBugReport.NoticejEdit.label=[notice] jEdit: -macro.rs.MakeBugReport.NoticeJarClassLoader.label=[notice] JARClassLoader: -macro.rs.MakeBugReport.MessagejEditStartupComplete.label=[message] jEdit: Startup complete -macro.rs.MakeBugReport.Error.label=[error] -macro.rs.MakeBugReport.ReadingActivityLog.error=Erreur lors de la lecture du journal d'activité +macro.rs.MakeBugReport.ReadingActivityLog.error=Erreur lors de la lecture du journal d'activité. #}}} #{{{ Run Script @@ -2413,9 +2399,6 @@ Editing/Duplicate_Lines_Above.label=Dupliquer les lignes vers le haut Editing/Duplicate_Lines_Below.label=Dupliquer les lignes vers le bas -Editing/Emacs_Ctrl-K.label=Emacs Ctrl-K -Editing/Emacs_Next_Line.label=Emacs ligne suivante -Editing/Emacs_Previous_Line.label=Emacs ligne précédente Editing/Go_to_Column.label=Atteindre la colonne Editing/Greedy_Backspace.label=Suppression arrière gourmande Editing/Greedy_Delete.label=Suppression gourmande @@ -2436,7 +2419,6 @@ Files/Browse_Buffer_Directory.label=Explorer le dossier du tampon courant Files/Browse_Directory.label=Ouvrir un dossier Files/Buffer_Switcher.label=Sélecteur de fichier -Files/Close_All_Except_Active.label=Fermer tous les autres Files/Copy_Name_to_Clipboard.label=Copier le nom de fichier Files/Copy_Path_to_Clipboard.label=Copier le chemin du fichier Files/Delete_Current.label=Supprimer le fichier courant @@ -2450,6 +2432,14 @@ Files/Toggle_ReadOnly.label=Modifier les permissions #}}} +#{{{ Emacs +macros.folder.Emacs.label=Emacs + +Emacs/Emacs_Ctrl-K.label=Emacs Ctrl-K +Emacs/Emacs_Next_Line.label=Emacs ligne suivante +Emacs/Emacs_Previous_Line.label=Emacs ligne précédente +#}}} + #{{{ Interface macros.folder.Interface.label=Interface diff -Nru jedit-5.4.0+dfsg/org/jedit/localization/jedit_ja.props jedit-5.5.0+dfsg/org/jedit/localization/jedit_ja.props --- jedit-5.4.0+dfsg/org/jedit/localization/jedit_ja.props 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/jedit/localization/jedit_ja.props 2018-04-08 23:58:42.000000000 +0000 @@ -52,7 +52,6 @@ action-set.plugin=プラグイン: {0} macro-handler.beanshell.label=BeanShell スクリプト -macro-handler.beanshell.glob=*.bsh save-layout-failed.message=ドッキングレイアウトの保存に失敗しました。 load-layout.title=ドッキングレイアウトの読み込み @@ -879,7 +878,7 @@ search.directoryField.mnemonic=Y search.filterField=フィルタ(F): search.filterField.mnemonic=F -search.filterField.tooltip={*.c,*.h} で拡張子複数対応 +glob.tooltip={*.c,*.h} で拡張子複数対応 search.subdirs=サブディレクトリの検索(U) search.subdirs.mnemonic=U search.choose=選択(E)... @@ -956,7 +955,7 @@ #{{{ Empty fileset error dialog empty-fileset.title=空のファイルセット -empty-fileset.message=指定された検索ファイルセットはファイルを含んでいません。 +empty-fileset.message=指定された検索ファイルセットはファイルを含んでいません。\n\ ファイル名フィルタと検索対象ディレクトリ(適用可能なら)を\n\ 正しく設定してください。 #}}} @@ -1205,7 +1204,7 @@ #{{{ Buffer options dialog buffer-options.title=バッファ オプション buffer-options.caption=このダイアログボックスは現在のバッファのみ設定を変更します。\n\ - 編集モードのデフォルト設定を変更するには、\n\n + 編集モードのデフォルト設定を変更するには、\n\ ユーティリティ->グローバル オプション->編集 ダイアログを参照してください。 buffer-options.loading-saving=読み込み/保存 buffer-options.lineSeparator=改行文字: @@ -1481,7 +1480,6 @@ options.save-back.confirmSaveAll="すべて保存"コマンドは確認ダイアログを表示 options.save-back.autosaveUntitled=無題バッファを自動保存 options.save-back.suppressNotSavedConfirmUntitled=無題バッファはダーティーとしてマークしない。 -options.save-back.suppressNotSavedConfirmUntitled.tooltip=これをチェックすると新規バッファが作られるとき常に無題バッファが排除されることになります。(これは仕様です!) options.save-back.useMD5forDirtyCalculation=内容が変わっていなければダーティーとしてマークしない。 options.save-back.useMD5forDirtyCalculation.tooltip=読み込み時のバッファの長さとMD5ハッシュで比較し、バッファがダーティーかどうか判別。 options.save-back.saveAsUsesFSB="名前を付けて保存" のデフォルトはファイルシステムブラウザのディレクトリ @@ -1525,7 +1523,7 @@ grab-key.duplicate-alt-shortcut.title=重複ショートカット grab-key.duplicate-alt-shortcut.message=\ - 選択されたショートカットはこの項目の別のショートカットと\n\n + 選択されたショートカットはこの項目の別のショートカットと\n\ 重複します。他のものを選択してください。 grab-key.duplicate-shortcut.title=重複ショートカット @@ -1577,8 +1575,8 @@ options.textarea.label=テキストエリア options.textarea.font=テキストフォント: options.textarea.fontSubst=フォント置換用の追加フォント -options.textarea.fontsubst.tooltip=選ばれた文字を表示できない場合、自動的に適切なフォントを選択します。 -options.textarea.fontsubstlist=フォント置換: 推奨フォント: +options.textarea.fontSubst.tooltip=選ばれた文字を表示できない場合、自動的に適切なフォントを選択します。 +options.textarea.fontSubstList=フォント置換: 推奨フォント: options.textarea.fontSubstSystemFonts=Font substitution: Search all system fonts options.textarea.fontSubstWarning.label=Font substitution options.textarea.fontSubstWarning=Without system fonts you will need preferred fonts. @@ -1992,16 +1990,14 @@ install-plugins.info.releaseDate=リリース日 install-plugins.info.version=バージョン install-plugins.info.category=カテゴリ +install-plugins.info.author=作者 +install-plugins.info.released=リリース日 install-plugins.totalSize=プラグイン数 {0} / 合計サイズ: {1} install-plugins.select-all=すべて選択 install-plugins.install=インストール install-plugins.show-updates=アップデートの表示 -install-plugins.info=作者: {0}\n\ - リリース日: {1}\n\ - {2} - update-plugins.title=アップデート plugin-manager.progress=ダウンロード中 {0} ミラー {1} から @@ -2272,8 +2268,6 @@ macro.rs.DisplayShortcuts.Close.label=閉じる macro.rs.DisplayShortcuts.WriteToBuffer.label=バッファに書き出し macro.rs.DisplayShortcuts.ShortcutList.label=キーボードショートカット リスト -macro.rs.DisplayShortcuts.Center.label=Center -macro.rs.DisplayShortcuts.South.label=South #}}} #{{{ Hex Convert @@ -2286,11 +2280,6 @@ #{{{ Make Bug Report macro.rs.MakeBugReport.OpeningActivityLog.error=アクティビティログを開くときエラーが発生しました。 macro.rs.MakeBugReport.UsefulEntriesForReport.label=Activity log entries that might be useful in a bug report:\n\n. -macro.rs.MakeBugReport.MessagejEdit.label=[message] jEdit: -macro.rs.MakeBugReport.NoticejEdit.label=[notice] jEdit: -macro.rs.MakeBugReport.NoticeJarClassLoader.label=[notice] JARClassLoader: -macro.rs.MakeBugReport.MessagejEditStartupComplete.label=[message] jEdit: Startup complete -macro.rs.MakeBugReport.Error.label=[error] macro.rs.MakeBugReport.ReadingActivityLog.error=アクティビティログ読み取りエラー #}}} @@ -2415,9 +2404,6 @@ Editing/Duplicate_Lines_Above.label=上の行を複製 Editing/Duplicate_Lines_Below.label=下の行を複製 -Editing/Emacs_Ctrl-K.label=Emacs の Ctrl-K -Editing/Emacs_Next_Line.label=Emacs の次行 -Editing/Emacs_Previous_Line.label=Emacs の前行 Editing/Go_to_Column.label=列に移動 Editing/Greedy_Backspace.label=貪欲なバックスペース Editing/Greedy_Delete.label=貪欲なデリート @@ -2438,7 +2424,6 @@ Files/Browse_Buffer_Directory.label=バッファのディレクトリをブラウズ Files/Browse_Directory.label=ディレクトリをブラウズ Files/Buffer_Switcher.label=バッファスイッチャ -Files/Close_All_Except_Active.label=アクティブ以外をすべて閉じる Files/Copy_Name_to_Clipboard.label=クリップボードに名前をコピー Files/Copy_Path_to_Clipboard.label=クリップボードにパスをコピー Files/Delete_Current.label=現在のファイルを削除 @@ -2452,6 +2437,14 @@ Files/Toggle_ReadOnly.label=読み込み専用の切り替え #}}} +#{{{ Emacs +macros.folder.Emacs.label=Emacs + +Emacs/Emacs_Ctrl-K.label=Emacs の Ctrl-K +Emacs/Emacs_Next_Line.label=Emacs の次行 +Emacs/Emacs_Previous_Line.label=Emacs の前行 +#}}} + #{{{ Interface macros.folder.Interface.label=インターフェース diff -Nru jedit-5.4.0+dfsg/org/jedit/localization/jedit_ko.props jedit-5.5.0+dfsg/org/jedit/localization/jedit_ko.props --- jedit-5.4.0+dfsg/org/jedit/localization/jedit_ko.props 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/jedit/localization/jedit_ko.props 2018-04-08 23:58:42.000000000 +0000 @@ -53,7 +53,6 @@ action-set.plugin=플러그인: {0} macro-handler.beanshell.label=BeanShell 스크립트 -macro-handler.beanshell.glob=*.bsh save-layout-failed.message=도킹 레이아웃 저장 실패. load-layout.title=도킹 레이아웃 로드 @@ -1892,7 +1891,7 @@ plugin-manager.remove-confirm.message=다음의 플러그인을 삭제하시겠습니까? plugin-manager.dependency.title=플러그인 의존성 -lugin-manager.dependency.message={0}를 다음과 같은 플러그인에서 필요로 합니다.\n\ +plugin-manager.dependency.message={0}를 다음과 같은 플러그인에서 필요로 합니다.\n\ {0}를 해제하시면 아래의 플러그인도 해제합니다: plugin-manager.remove-dependencies.title=플러그인 의존성 @@ -1961,7 +1960,6 @@ install-plugins.info.author=저자 install-plugins.info.released=릴리즈 일자 install-plugins.info.depends=의존성 -install-plugins.info.optionalDepends=옵션 의존성 install-plugins.totalSize={0} 플러그인, 총크기: {1} install-plugins.select-all=모두 선택 @@ -2240,8 +2238,6 @@ macro.rs.DisplayShortcuts.Close.label=닫기 macro.rs.DisplayShortcuts.WriteToBuffer.label=버퍼로 내보내기 macro.rs.DisplayShortcuts.ShortcutList.label=키보드 단축키 목록 -macro.rs.DisplayShortcuts.Center.label=가운데 -macro.rs.DisplayShortcuts.South.label=아래 #}}} #{{{ Hex Convert @@ -2254,11 +2250,6 @@ #{{{ Make Bug Report macro.rs.MakeBugReport.OpeningActivityLog.error=작업 로그 열기 오류. macro.rs.MakeBugReport.UsefulEntriesForReport.label=버그 리포트에 유용한 작업 로그 항목:\n\n. -macro.rs.MakeBugReport.MessagejEdit.label=[메시지] jEdit: -macro.rs.MakeBugReport.NoticejEdit.label=[주의] jEdit: -macro.rs.MakeBugReport.NoticeJarClassLoader.label=[주의] JARClassLoader: -macro.rs.MakeBugReport.MessagejEditStartupComplete.label=[메시지] jEdit: 시작 완료 -macro.rs.MakeBugReport.Error.label=[에러] macro.rs.MakeBugReport.ReadingActivityLog.error=작업 로그 읽기 오류 #}}} @@ -2417,7 +2408,7 @@ Emacs/Emacs_Open_Line.label=Emacs Open Line Emacs/Emacs_Previous_Line.label=Emacs Previous Line Emacs/Emacs_Set_Mark.label=Emacs Set Mark -Emacs/Emacs_Set_Wrap=Emacs Set Wrap +Emacs/Emacs_Set_Wrap.label=Emacs Set Wrap Emacs/Emacs_Transpose_Chars.label=Emacs Transpose Chars Emacs/Emacs_Transpose_Lines.label=Emacs Transpose Lines Emacs/Emacs_Upcase_Word.label=Emacs Upcase Word @@ -2429,7 +2420,6 @@ Files/Browse_Buffer_Directory.label=버퍼 디렉토리 보기 Files/Browse_Directory.label=디렉토리 보기 Files/Buffer_Switcher.label=버퍼 전환기 -Files/Close_All_Except_Active.label=작업중인것 제외하고 모두 닫기 Files/Copy_Name_to_Clipboard.label=이름을 클립보드에 복사 Files/Copy_Path_to_Clipboard.label=경로를 클립보드에 복사 Files/Delete_Current.label=현재 파일 삭제 diff -Nru jedit-5.4.0+dfsg/org/jedit/localization/jedit_ru.props jedit-5.5.0+dfsg/org/jedit/localization/jedit_ru.props --- jedit-5.4.0+dfsg/org/jedit/localization/jedit_ru.props 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/jedit/localization/jedit_ru.props 2018-04-08 23:58:42.000000000 +0000 @@ -34,9 +34,11 @@ common.removeCurrent=Удалить выбор common.moveUp=Вверх common.moveDown=Вниз -common.clearAll=Очистить Всё -common.selectAll=Выделить Всё -common.selectNone=Отменить ВЫделение +common.clearAll=Очистить всё +common.selectAll=Выделить всё +common.selectNone=Отменить выделение +common.loading=Загрузка... +common.reset=Сброс lineSep.unix=Unix (\\n) lineSep.windows=DOS/Windows (\\r\\n) @@ -46,13 +48,12 @@ #{{{ Miscellaneous history.caption=Ранее введённые строки: -action-set.jEdit=Встроеные Комманды +action-set.jEdit=Встроенные Команды action-set.browser=Обозреватель Файловой Системы -action-set.macros=Макро комманды -action-set.plugin=Модуль: {0} +action-set.macros=Макросы +action-set.plugin=Плагин: {0} macro-handler.beanshell.label=Программа BeanShell -macro-handler.beanshell.glob=*.bsh save-layout-failed.message=Не удалось сохранить раскладку дока. load-layout.title=Загрузить Раскладку Дока @@ -67,11 +68,11 @@ view.action.prompt=Действие: view.action.no-completions=Не найдено заданных действий -view.action.close-tooltip=Спрятать панел действий (ESCAPE) +view.action.close-tooltip=Спрятать панель действий (ESCAPE) #}}} #{{{ Context menu -view.context.customize=Персонализировать Меню... +view.context.customize=Настроить это меню... #}}} #{{{ System tray menu @@ -90,26 +91,27 @@ new-file-in-mode.dialog.message=Режим Редактирования: open-file.label=Открыть...($O) reload.label=Перезагрузить($R) -reload-all.label=Перезагрузить Все($d) +reload-all.label=Перезагрузить все($d) close-buffer.label=Закрыть($C) -close-buffer.tooltip=Закрыть буффер только в наборе EditPane +close-buffer.tooltip=Закрыть буфер только в наборе EditPane global-close-buffer.label=Закрыть (глобально) -global-close-buffer.tooltip=Закрыть буффер во всех видах +global-close-buffer.tooltip=Закрыть буфер во всех видах closeall-except-active.tooltip=Закрыть остальные в наборе EditPane closeall-except-active.label=Закрыть остальные($O) -closeall-bufferset.label=Закрыть Все($e) +closeall-bufferset.label=Закрыть все($e) closeall-bufferset.tooltip=Очистить набор Editpane bufferset-toggle-exclusive.label=Включить исключительный набор($x) -bufferset-toggle-exclusive.tooltip=Когда буффер открыт, закрыть его в других непересекающихся наборах -close-all.label=Закрыть Все (Глобально) -close-all.tooltip=Закрыть все буфферы во всех видах +bufferset-toggle-exclusive.tooltip=Когда буфер открыт, закрыть его в других непересекающихся наборах +close-all.label=Закрыть все (Глобально) +close-all.tooltip=Закрыть все буферы во всех видах save.label=Сохранить($S) save-as.label=Сохранить как...($a) save-a-copy-as.label=Сохранить копию как...($y) save-a-copy-as.tooltip=Не изменять путь к текущему буферу -save-all.label=Сохранить Все...($l) -print.label=Печатать...($P) -page-setup.label=Свойства Страницы...($g) +save-all.label=Сохранить все...($l) +print.label=Печать...($P) +print-preview.label=Предпросмотр печати...($v) +page-setup.label=Свойства страницы...($g) # Print selection not yet implemented #print-selection.label=Prin$t Selection... exit.label=Выход($x) @@ -118,30 +120,30 @@ recent-files.label=Последние Файлы($F) recent-files.textfield.tooltip=Здесь может быть фильтр из префикса или шаблон no-recent-files.label=Нет недавних файлов -clear-recent-files.label=Очистить Список Файлов +clear-recent-files.label=Очистить список Файлов #}}} -reload-encoding.label=Перезагрузить с новой кодировкой($E) +reload-encoding.label=Перезагрузить в кодировке($E) reload-encoding.error=Нет кодировки {0} #}}} #{{{ Edit menu -edit.label=Менять($E) +edit.label=Правка($E) undo.label=Отменить($U) -redo.label=Переприменить($R) +redo.label=Вернуть($R) cut.label=Вырезать($C) copy.label=Копировать($o) paste.label=Вставить($P) -select-all.label=Выделить Все($A) -word-count.label=Счётчик Слов...($W) -complete-word.label=Закончить слово($m) -expand-abbrev.label=Раскрыть сокращение($x) +select-all.label=Выделить все($A) +word-count.label=Счётчик слов...($W) +complete-word.label=Завершить слово($m) +expand-abbrev.label=Развернуть сокращение($x) goto-line.label=Перейти к строке...($G) #{{{ More Clipboard menu -clipboard.label=Вставка (ещё)($b) +clipboard.label=ещё вставка($b) cut-append.label=Вырезать с добавлением($C) copy-append.label=Копировать с добавлением($o) vertical-paste.label=Вертикальная вставка($V) @@ -159,7 +161,7 @@ #}}} #{{{ More Selection menu -selection.label=Выделение (ещё)($S) +selection.label=ещё выделение($S) select-none.label=Убрать выделение($N) select-word.label=Выделить слово($W) select-line.label=Выделить строку($L) @@ -178,8 +180,8 @@ join-lines.label=Соединить строки($J) delete-paragraph.label=Удалить абзац($P) format-paragraph.label=Форматировать абзац($F) -to-lower.label=В маленькие буквы($L) -to-upper.label=В большие буквы($U) +to-lower.label=В нижний регистр($L) +to-upper.label=В верхний регистр($U) #}}} #{{{ Indent menu @@ -187,15 +189,15 @@ indent-lines.label=Отступ в строках($I) shift-left.label=Сдвинуть влево($L) shift-right.label=Сдвинуть вправо($R) -remove-trailing-ws.label=Удалить пробелы на конце +remove-trailing-ws.label=Удалить пробелы в конце spaces-to-tabs.label=Пробелы в табуляцию($S) tabs-to-spaces.label=Табуляцию в пробелы($T) #}}} #{{{ Source menu source.label=Исходный код($S) -range-comment.label=Поточный коментарий($R) -line-comment.label=Построчный коментарий($L) +range-comment.label=Блочный комментарий($R) +line-comment.label=Однострочный комментарий($L) select-block.label=Выбрать блок кода($S) match-bracket.label=Перейти к связанной скобке($M) prev-bracket.label=Перейти к предыдущей скобке($P) @@ -209,32 +211,32 @@ find.label=Найти...($F) find-next.label=Найти следующее($n) find-prev.label=Найти предыдущее($v) -search-in-open-buffers.label=Поиск в открутых буферах...($B) -search-in-directory.label=Поиск в директории...($D) +search-in-open-buffers.label=Искать в открытых буферах...($B) +search-in-directory.label=Искать в каталоге...($D) replace-in-selection.label=Замена в выделении($R) replace-and-find-next.label=Заменить и продолжить поиск($p) replace-all.label=Заменить все($A) -quick-search.label=Панель постепенного поиска($I) -hypersearch.label=Панель глобального поиска($H) -quick-search-word.label=Постепенный поиск слова($n) -hypersearch-word.label=Глобальный поиск слова($y) -whole-word.label=Целое слово($W) -ignore-case.label=Игнороровать размер букв($C) -regexp.label=Регулярные выражения($x) -hypersearch-results.label=Глобальные результаты +quick-search.label=Панель быстрого поиска($I) +hypersearch.label=Панель гипер-поиска($H) +quick-search-word.label=Быстрый поиск слова($n) +hypersearch-word.label=Гипер-поиск слова($y) +whole-word.label=Целые слова($W) +ignore-case.label=Игнорировать регистр($C) +regexp.label=Регулярное выражение($x) +hypersearch-results.label=Результаты гипер-поиска #}}} #{{{ Markers menu -markers.label=закладки($M) -add-marker.label=Добавить/удалить закладку($A) -add-marker-shortcut.label=Добавить закладку с сокращением($W) -remove-all-markers.label=Удалить все закладки($m) -goto-marker.label=Перейти к закладке($G) -select-marker.label=Выделить до закладки($S) -swap-marker.label=Обменять каретку с закладкой($p) -prev-marker.label=Перейти к предыдущей закладке($P) -next-marker.label=Перейти к следующей закладке($N) -no-markers.label=Нет закладок +markers.label=Метки($M) +add-marker.label=Добавить/удалить метку($A) +add-marker-shortcut.label=Добавить метку с сокращением($W) +remove-all-markers.label=Удалить все метки($m) +goto-marker.label=Перейти к метке($G) +select-marker.label=Выделить до метки($S) +swap-marker.label=Обменять курсор с меткой($p) +prev-marker.label=Перейти к предыдущей метке($P) +next-marker.label=Перейти к следующей метке($N) +no-markers.label=Нет меток markers.blank-line=[Пустая строка] #}}} @@ -262,8 +264,8 @@ new-plain-view.label=Новый простой вид($w) new-plain-view.tooltip=Новое главное окно без дока и некоторых панелей close-view.label=Закрыть вид($C) -close-view.tooltip=Закрыть главное окно, и завершить работу, если оно единстевенное -prev-buffer.label=Перейти к предыдущему боферу($P) +close-view.tooltip=Закрыть главное окно и завершить работу, если оно единстевенное +prev-buffer.label=Перейти к предыдущему буферу($P) next-buffer.label=Перейти к следующему буферу($N) recent-buffer.label=Перейти к последнему буферу($R) toggle-buffer-switcher.label=Переключатель буферов($B) @@ -272,15 +274,15 @@ toggle-statusbar.label=Строка состояния($t) toggle-gutter.label=Кант($G) show-context-menu.label=Контекстное меню -set-view-title.label=Ввести имя виду... -set-view-title.tooltip=Ввести имя для окна для отличия от других окон. +set-view-title.label=Задать заголовок окна... +set-view-title.tooltip=Задать заголовок для окна для отличия от других окон. toggle-full-screen.label=Полный экран($f) #{{{ Scrolling menu scrolling.label=Прокрутка($g) scroll-to-current-line.label=Прокрутить к текущй строке($t) -scroll-and-center.label=Прокрутить и центрировать каретку($S) -center-caret.label=Каректу в центр экрана($C) +scroll-and-center.label=Прокрутить и центрировать курсор($S) +center-caret.label=Курсор в центр экрана($C) scroll-up-line.label=Прокрутить на строку вверх($U) scroll-down-line.label=Прокрутить на строку вниз($D) scroll-up-page.label=Прокрутить на страницу вверх($p) @@ -315,18 +317,18 @@ bottom-docking-area.label=К нижней области дока($B) focus-textarea.label=К тексту close-docking-area.label=Закрыть текущую область дока($C) -layout-load.label=Загрузить раскладку дока ...($L) -layout-save.label=Сохранить раскладку дока ...($S) -layout-load-current-mode.label=Загрузить раскладку дока для текущего режима -layout-save-current-mode.label=Сохранить раскладку дока для текущего режима +layout-load.label=Загрузить схему дока ...($L) +layout-save.label=Сохранить схему дока ...($S) +layout-load-current-mode.label=Загрузить схему дока для текущего режима +layout-save-current-mode.label=Сохранить схему дока для текущего режима #}}} #}}} #{{{ Utilities menu -utils.label=Услуги($U) -vfs.browser.label=Инспектор файлов($F) +utils.label=Сервис($U) +vfs.browser.label=Обозреватель файлов($F) action-bar.label=Панель действий($A) last-action.label=Повторить последнее действие($p) buffer-options.label=Настройки буфера...($B) @@ -334,42 +336,42 @@ combined-options.label=Настройки...($O) #{{{ Recent Directories menu -recent-directories.label=Последние директории($R) -no-recent-dirs.label=Нет директорий в списке +recent-directories.label=Последние каталоги($R) +no-recent-dirs.label=Нет каталогов в списке #}}} #{{{ Favorites menu -favorites.label=Избранные($v) -add-buffer-to-favorites.label=Добавить буфер в избранные -add-dir-to-favorites.label=Добавить директорию в избранные +favorites.label=Избранное($v) +add-buffer-to-favorites.label=Добавить буфер в избранное +add-dir-to-favorites.label=Добавить каталог в избранное edit-favorites.label=Настроить избранное #}}} #{{{ Current Directory menu -current-directory.label=Текущая директория($C) +current-directory.label=Текущий каталог($C) #}}} #{{{ jEdit Home Directory menu -jedit-directory.label=Директория $jEdit +jedit-directory.label=Каталог $jEdit #}}} #{{{ Settings Directory menu -settings-directory.label=Директория настроек($S) +settings-directory.label=Каталог настроек($S) #}}} #{{{ BeanShell menu beanshell.label=B$eanShell eval.label=Выполнить BeanShell...($E) eval-for-selected-lines.label=Выполнить для выделенных строк...($F) -eval-selection.label=Выполнить выделение($S) +eval-selection.label=Выполнить выделенное($S) #}}} #{{{ Troubleshooting menu troubleshooting.label=Отладка($T) -log-viewer.label=Записи активности($A) -update-log.label=Обновить записи активности на диске($U) +log-viewer.label=Журнал активности($A) +update-log.label=Обновить журнал активности на диске($U) io-progress-monitor.label=Прогресс ввода/вывода($I) -task-monitor.label=Инспектор активности($T) +task-monitor.label=Монитор заданий($T) keyboard-tester.label=Проверка клавиш...($K) memory-status.label=Состояние памяти...($M) reload-modes.label=Перезагрузить режимы редактирования($R) @@ -377,29 +379,29 @@ #{{{ Quick options menu quick-options.label=Быстрые настройки($Q) -edit-syntax-style.label=Редактировать стил синтаксиса для токена под кареткой +edit-syntax-style.label=Редактировать стиль синтаксиса для токена под курсором #}}} #}}} #{{{ Macros menu -macros.label=Макро-команда($c) -new-macro.label=Новая +macros.label=Макросы($c) +new-macro.label=Новый record-macro.label=Записать...($R) stop-recording.label=Закончить запись($S) -last-macro.label=Повторить последнюю -record-temp-macro.label=Записать временную($T) -run-temp-macro.label=Выполнить временную($p) -run-other-macro.label=Выполнить другую...($O) +last-macro.label=Повторить последний +record-temp-macro.label=Записать временный($T) +run-temp-macro.label=Выполнить временный($p) +run-other-macro.label=Выполнить другой...($O) rescan-macros.label=Пересканировать($n) -no-macros.label=Нет макро команд +no-macros.label=Нет макросов #}}} #{{{ Plugins menu -plugins.label=Модули($P) -plugin-manager.label=Управление модулями...($M) -plugin-options.label=Настройки модулей...($O) -no-plugins.label=Модулей не установлено +plugins.label=Плагины($P) +plugin-manager.label=Менеджер плагинов...($M) +plugin-options.label=Настройки плагинов...($O) +no-plugins.label=Плагины не установлены #}}} #{{{ Help menu @@ -468,7 +470,7 @@ select-end.label=Выделить до последнего символа строки select-home.label=Выделить до первого символа строки select-line-end.label=Выделить до конца строки -select-line-home.label=Выделит до начала строки +select-line-home.label=Выделить до начала строки select-next-char.label=Выделить следующий символ select-next-line.label=Выделить следующую строку select-next-page.label=Выделить следующую страницу @@ -507,58 +509,58 @@ view.docking.menu-left=В левый док view.docking.menu-bottom=В нижний док view.docking.menu-right=В правый док -view.docking.menu-clone=Новое плавающее оконце +view.docking.menu-clone=Новое плавающее окно view.docking.menu-close=Закрыть view.docking.menu-undock=Вынуть из дока view.docking.toggle.label={0} (Переключить) -view.docking.float.label={0} (Новое плавающее оконце) +view.docking.float.label={0} (Новое плавающее окно) -directory.not-local=Невозможен доступ к директориям на удалённой фаиловой системе +directory.not-local=Невозможен доступ к каталогам на удалённой фаиловой системе directory.no-files=Нет файлов #{{{ Gutter highlight -view.gutter.marker.no-name=Закладка -view.gutter.marker=Закладка: {0} +view.gutter.marker.no-name=Метка +view.gutter.marker=Метка: {0} #}}} #{{{ Status messages -view.status.add-marker=Клавиша для новой закладки? [{0}] +view.status.add-marker=Клавиша для новой метки? [{0}] view.status.auto-wrap=Строка не найдена: поиск перескочил на противоположную границу! view.status.bracket=Подходит к строке {0}: {1} -view.status.caret-tooltip=Смещение, номера строки и колонки (Относительные смещение, номера строки и колонки [-виртуалн]) +view.status.caret-tooltip=Смещение, номер строки и колонки (Относительные смещение, номер строки и колонки [-виртуалн]) view.status.copy-append-string-register=В какой регистр добавить? [{0}] view.status.copy-string-register=В какой регистр копировать? [{0}] view.status.cut-append-string-register=В какой регистр добавить вырезанное? [{0}] view.status.cut-string-register=В каой регистр поместить вырезанное? [{0}] view.status.expand-folds=Уровень свертки? [1-9] -view.status.goto-marker=К какой закладке перейти? [{0}] +view.status.goto-marker=К какой метке перейти? [{0}] view.status.incomplete-abbrev=Задано параметров - {0} , требуется - {1} ! -view.status.insert-literal=Нажмите клавишу для непсредственной вставки? +view.status.insert-literal=Нажмите клавишу для непосредственной вставки? view.status.io-1=Ввод/вывод: 1 операция активна view.status.io.done=Ввод/вывод закончен view.status.io=Ввод/вывод: активно {0} операций view.status.linesep-changed=Символ конца строки теперь {0} view.status.linesep-tooltip=Символ конца строки (щелчок для смены) view.status.memory-tooltip=Память доступная Java: {0}Kb/{1}Kb -view.status.mode-tooltip=Текущие режим редактирования и свертки, кодировка -view.status.multi-changed=Режим можественного выделения {0,choice,0#выключен|1#включён} -view.status.multi-tooltip=Режим можественного выделения (щелчок для смены) +view.status.mode-tooltip=Текущий режим редактирования и свертки, кодировка +view.status.multi-changed=Режим множественного выделения {0,choice,0#выключен|1#включён} +view.status.multi-tooltip=Режим множественного выделения (щелчок для смены) view.status.narrow=Выполнено "Развернуть все", весь текст видим -view.status.no-markers=нет закладок +view.status.no-markers=нет меток view.status.no-registers=регистры не заданы view.status.overwrite-changed=Режим перезаписи {0,choice,0#выключен|1#включён} -view.status.overwrite-tooltip=Индикатор режимавставки/перезаписи (щелчок для смены) +view.status.overwrite-tooltip=Индикатор режима вставки/перезаписи (щелчок для смены) view.status.paste-string-register=Из какого регистра вставить? [{0}] view.status.print=Печать страницы {0} view.status.quick-copy=Режим быстрого копирования -view.status.recording=Запись макро-команды +view.status.recording=Запись макроса view.status.rect-select-changed=Прямоугольное выделение {0,choice,0#выключено|1#включено} view.status.rect-tooltip=Режим прямоугольного выделения (щелчок для смены) view.status.replace-all=Замен: {0}, изменённых файлов: {1} view.status.search-not-found=Строка не найдена! -view.status.select-marker=До какой закладки выделить? [{0}] -view.status.swap-marker=С какой закладкой обменять каректу? \ +view.status.select-marker=До какой метки выделить? [{0}] +view.status.swap-marker=С какой меткой обменять курсор? \ [{0}] view.status.vertical-paste-string-register=Из какого регистра вставить? [{0}] view.status.wrap-changed=Режим переноса по словам сейчас "{0}" @@ -566,9 +568,11 @@ view.status.indent-tooltip=Режим автоматического отступа (щелчок для смены) view.status.autoindent-changed=Режим автоматического отступа сейчас "{0}" view.status.bufferset-tooltip=Набор буферов включает в себя {0} +view.status.locked-changed=Буфер {0,choice,0#разблокирован|1#заблокирован} +view.status.locked-tooltip=Буфер {0,choice,0#разблокирован|1#заблокирован} (щелчок для смены) wrap.none=выключен -wrap.hard=постоянный -wrap.soft=временный +wrap.hard=жёсткий +wrap.soft=мягкий #}}} #{{{ Status bar component visibility @@ -583,15 +587,182 @@ print.footerText={0} :: страница {1} print-error.title=Ошибка печати -print-error.message=При попытке печати произошла ошибка:\n\ - {0} +print-error.message=При попытке печати произошла ошибка:\n{0} + +print.dialog.title=Print +print.dialog.pageSetupTitle=Page Setup +print.dialog.Advanced=Advanced +print.dialog.All_pages=All pages +print.dialog.All_sheets=All sheets +print.dialog.At=At +print.dialog.Automatic-Feeder=Automatic Feeder +print.dialog.Bottom=Bottom +print.dialog.Cassette=Cassette +print.dialog.Collate=Collate +print.dialog.Color=Color +print.dialog.Copies=Copies +print.dialog.Current_page=Current page +print.dialog.Draft=Draft +print.dialog.Even_sheets=Even sheets +print.dialog.Finishing=Finishing +print.dialog.Form-Source=Form Source +print.dialog.General=General +print.dialog.High=High +print.dialog.Ink=Ink +print.dialog.Job=Job +print.dialog.Job_Details=Job Details +print.dialog.Large-Format=Large Format +print.dialog.Layout=Layout +print.dialog.Left=Left +print.dialog.Low=Low +print.dialog.Manual-Envelope=Manual Envelope +print.dialog.Margins=Margins +print.dialog.Medium=Medium +print.dialog.Monochrome=Monochrome +print.dialog.Normal=Normal +print.dialog.Now=Now +print.dialog.Odd_sheets=Odd sheets +print.dialog.On_Hold=On Hold +print.dialog.Only_print=Only print +print.dialog.Orientation=Orientation +print.dialog.Output_tray=Output tray +print.dialog.Page_Setup=Page Setup +print.dialog.Page_ordering=Page ordering +print.dialog.Pages=Pages +print.dialog.Pages_per_side=Pages per side +print.dialog.Paper=Paper +print.dialog.Paper_size=Paper size +print.dialog.Paper_source=Paper source +print.dialog.Print_Document=Print Document +print.dialog.Priority=Priority +print.dialog.Quality=Quality +print.dialog.Range=Range +print.dialog.Reverse=Reverse +print.dialog.Right=Right +print.dialog.Selection=Selection +print.dialog.Small-Format=Small Format +print.dialog.Top=Top +print.dialog.Tractor-Feeder=Tractor Feeder +print.dialog.Two-sided=Two-sided +print.dialog.Urgent=Urgent +print.dialog.a=Engineering A +print.dialog.accepting-jobs=Accepting jobs +print.dialog.auto-select=Automatically Select +print.dialog.b=Engineering B +print.dialog.c=Engineering C +print.dialog.d=Engineering D +print.dialog.e=Engineering E +print.dialog.envelope=Envelope +print.dialog.executive=Executive +print.dialog.folio=Folio +print.dialog.invite-envelope=Invitation Envelope +print.dialog.invoice=Invoice +print.dialog.iso-2a0=2A0 (ISO/DIN & JIS) +print.dialog.iso-4a0=4A0 (ISO/DIN & JIS) +print.dialog.iso-a0=A0 (ISO/DIN & JIS) +print.dialog.iso-a1=A1 (ISO/DIN & JIS) +print.dialog.iso-a2=A2 (ISO/DIN & JIS) +print.dialog.iso-a3=A3 (ISO/DIN & JIS) +print.dialog.iso-a4=A4 (ISO/DIN & JIS) +print.dialog.iso-a5=A5 (ISO/DIN & JIS) +print.dialog.iso-a6=A6 (ISO/DIN & JIS) +print.dialog.iso-a7=A7 (ISO/DIN & JIS) +print.dialog.iso-a8=A8 (ISO/DIN & JIS) +print.dialog.iso-a9=A9 (ISO/DIN & JIS) +print.dialog.iso-a10=A10 (ISO/DIN & JIS) +print.dialog.iso-b0=B0 (ISO/DIN) +print.dialog.iso-b1=B1 (ISO/DIN) +print.dialog.iso-b2=B2 (ISO/DIN) +print.dialog.iso-b3=B3 (ISO/DIN) +print.dialog.iso-b4=B4 (ISO/DIN) +print.dialog.iso-b5=B5 (ISO/DIN) +print.dialog.iso-b6=B6 (ISO/DIN) +print.dialog.iso-b7=B7 (ISO/DIN) +print.dialog.iso-b8=B8 (ISO/DIN) +print.dialog.iso-b9=B9 (ISO/DIN) +print.dialog.iso-b10=B10 (ISO/DIN) +print.dialog.iso-c0=C0 (ISO/DIN) +print.dialog.iso-c1=C1 (ISO/DIN) +print.dialog.iso-c2=C2 (ISO/DIN) +print.dialog.iso-c3=C3 (ISO/DIN) +print.dialog.iso-c4=C4 (ISO/DIN) +print.dialog.iso-c5=C5 (ISO/DIN) +print.dialog.iso-c6=C6 (ISO/DIN) +print.dialog.iso-c7=C7 (ISO/DIN) +print.dialog.iso-c8=C8 (ISO/DIN) +print.dialog.iso-c9=C9 (ISO/DIN) +print.dialog.iso-c10=C10 (ISO/DIN) +print.dialog.iso-designated-long=ISO Designated Long +print.dialog.italian-envelope=Italy Envelope +print.dialog.italy-envelope=Italy Envelope +print.dialog.japanese-postcard=Postcard (JIS) +print.dialog.jis-b0=B0 (JIS) +print.dialog.jis-b1=B1 (JIS) +print.dialog.jis-b2=B2 (JIS) +print.dialog.jis-b3=B3 (JIS) +print.dialog.jis-b4=B4 (JIS) +print.dialog.jis-b5=B5 (JIS) +print.dialog.jis-b6=B6 (JIS) +print.dialog.jis-b7=B7 (JIS) +print.dialog.jis-b8=B8 (JIS) +print.dialog.jis-b9=B9 (JIS) +print.dialog.jis-b10=B10 (JIS) +print.dialog.landscape=Landscape +print.dialog.main=Main +print.dialog.manual=Manual +print.dialog.middle=Middle +print.dialog.monarch-envelope=Monarch Envelope +print.dialog.na-5x7=5\" x 7\" Paper +print.dialog.na-6x9-envelope=6x9 Envelope +print.dialog.na-7x9-envelope=6x7 Envelope +print.dialog.na-8x10=8\" x 10\" Paper +print.dialog.na-9x11-envelope=9x11 Envelope +print.dialog.na-9x12-envelope=9x12 Envelope +print.dialog.na-10x13-envelope=10x13 Envelope +print.dialog.na-10x14-envelope=10x14 Envelope +print.dialog.na-10x15-envelope=10x15 Envelope +print.dialog.na-legal=Legal +print.dialog.na-letter=Letter +print.dialog.na-number-9-envelope=No. 9 Envelope +print.dialog.na-number-10-envelope=No. 10 Envelope +print.dialog.na-number-11-envelope=No. 11 Envelope +print.dialog.na-number-12-envelope=No. 12 Envelope +print.dialog.na-number-14-envelope=No. 14 Envelope +print.dialog.not-accepting-jobs=Not accepting jobs +print.dialog.one-sided=One sided +print.dialog.oufuko-postcard=Double Postcard (JIS) +print.dialog.personal-envelope=Personal Envelope +print.dialog.portrait=Portrait +print.dialog.quarto=Quarto +print.dialog.reverse-landscape=Reverse Landscape +print.dialog.reverse-portrait=Reverse Portrait +print.dialog.side=Side +print.dialog.tabloid=Tabloid +print.dialog.top=Top +print.dialog.two-sided-long-edge=Two Sided, Long Edge +print.dialog.two-sided-short-edge=Two Sided, Short Edge +print.dialog.error.Invalid_left_margin=Invalid left margin. +print.dialog.error.Invalid_top_margin=Invalid top margin. +print.dialog.error.Invalid_left_andor_right_margin=Invalid left and/or right margin. +print.dialog.error.Invalid_top_andor_bottom_margin=Invalid top and/or bottom margin. +print.dialog.preview=Preview + +print.toggle-show-page-breaks.label=Toggle Page Break Marker + +printpreview.dialog.title=Print Preview +printpreview.dialog.nextPage=Next Page +printpreview.dialog.prevPage=Previous Page +printpreview.dialog.zoomin=Zoom In +printpreview.dialog.zoomout=Zoom Out + + #}}} #{{{ Various dialog boxes #{{{ About dialog about.title=Информация о jEdit -about.version=jEdit {0} {1} mode, using {2} Java {3} +about.version=jEdit {0} в режиме {1}, использует {2} Java {3} about.mode.standalone=standalone about.mode.server=server about.mode.server-background=server-background @@ -602,36 +773,36 @@ # insert a space by itself in the text to create blank lines. about.text.prefix=jEdit был создан следующими разработчиками: about.text.suffix=Отдельная благодарность пользователям\n\ - за их коментарии, предложения и доклады об ошибках. + за их комментарии, предложения и сообщения об ошибках. #}}} #{{{ Error list dialog, used to report I/O and plugin load errors -error-list.plugin-manager=Управление модулями +error-list.plugin-manager=Управление плагинами #}}} #{{{ largeBufferDialog.title=Буфер{0} слишком велик largeBufferDialog.message=Этот буфер слишком велик, что может привести к\n\ - замдлению работы программы из-за цветового подсвечивания синтаксиса.\n\ + замедлению работы программы из-за подсветки синтаксиса.\n\ Следующие дейтвия могут помочь:\n\ - -Перейти в режим подсвтки нечувствительной к контексту. Подсветка \n\ + -Перейти в режим подсветки нечувствительной к контексту. Подсветка \n\ производится для каждой строки независимо, что увеличивает скорость\n\ работы, но результаты могут быть неверны.\n\ - Использовать режим 'текст' (подсветка будет отключена) largeBufferDialog.fullSyntax=Полная подсветка синтаксиса -largeBufferDialog.contextInsensitive=Подсветка синтаксиса, нечуствительная к контексту -largeBufferDialog.defaultMode=Текстовой режим редактирования +largeBufferDialog.contextInsensitive=Подсветка синтаксиса, нечувствительная к контексту +largeBufferDialog.defaultMode=Текстовый режим редактирования #}}} #{{{ I/O error dialog box ioerror.title=Ошибка ввода/вывода -ioerror.caption=Операции ввода/вывода (количеством {0}) не могут быть завершены: +ioerror.caption=Следующие операции ({0}) ввода/вывода не могут быть завершены: ioerror.caption-1=Операция ввода/вывода не может быть завершена: ioerror={0} -ioerror.directory-error=Невозможно считать директорию: {0} -ioerror.directory-error-nomsg=Невозможно считать директорию. -ioerror.encoding-error=Фаил не может быть корректно загружен (возможна потеря данных)\n\ +ioerror.directory-error=Невозможно прочитать каталог: {0} +ioerror.directory-error-nomsg=Невозможно прочитать каталог. +ioerror.encoding-error=Файл не может быть корректно загружен (возможна потеря данных)\n\ при использовании кодировки "{0}".\n\ ({1})\n\ Попробуйте использовать другую кодировку.\n\ @@ -643,8 +814,8 @@ ioerror.read-error=Невозможно загрузить: {0} ioerror.write-error=Невозможно сохранить: {0} ioerror.unsupported-encoding-error=Кодировка {0} не поддерживается Вашей JVM (виртуальной машиной Jawa) -ioerror.open-directory=Нельзя загрузить директорию в буфер. -ioerror.save-directory=Нельзя перезаписать директорию буфером. +ioerror.open-directory=Нельзя загрузить каталог в буфер. +ioerror.save-directory=Нельзя перезаписать каталог буфером. ioerror.no-read=Недостаточный уровень доступа для загрузки файла. ioerror.no-write=Недостаточный уровень доступа для сохранения файла. ioerror.write-error-readonly=Нельзя сохранить, файл только для чтения. @@ -653,25 +824,28 @@ ioerror.delete-error=Невозможно удалить файл. ioerror.rename-exists=Невозможно перезаписать существующий файл {0}. ioerror.rename-error=Невозможно переименовать в {0}. -ioerror.mkdir-error=Невозможно создать директорию. - -vfs.not-supported.list=Невозможно инспектировать директории на файловой системе "{0}". -vfs.not-supported.load=Невозможно открыть файлы с файловой системы "{0}". -vfs.not-supported.save=Невозможно сохранять файлы на файловую систему "{0}". +ioerror.mkdir-error=Невозможно создать каталог. +ioerror.backup-failed=Бэкап не удался. Проверьте настройки "Сохранение и бэкап". +ioerror.backup-same-name=Имя файла бэкапа совпадает с именем оригинального файла. +ioerror.copy-self=Деструктивная операция, копирование файла в самого себя, была отклонена: {0} + +vfs.not-supported.list=Невозможно инспектировать каталоги в файловой системе "{0}". +vfs.not-supported.load=Невозможно открыть файлы из файловой системы "{0}". +vfs.not-supported.save=Невозможно сохранить файлы в файловую систему "{0}". vfs.overwrite-readonly.title=Файл только для чтения vfs.overwrite-readonly.message=Файл {0} только для чтения.\n\ - Хотите все равно спасти его, сбросив флаг "только дла чтения"?\n\ - Это двухступенчатая операция (также меняет владельца файла на Unix) + Все равно хотите сохранить его, сбросив флаг "только дла чтения"?\n\ + Это двухэтапная операция (также меняет владельца файла на Unix) vfs.twostageimpossible.title=Двухступенчатое сохранение невозможно vfs.twostageimpossible.message=Двухступенчатое сохранение невозможно, желаете\n\ все равно продолжить сохранение? -out-of-memory-error=Недостаточно памяти у Java для завершения запроса.\n\ - Попробуйте увеличить максимум памяти отведенный Java.\n\ +out-of-memory-error=У Java недостаточно памяти для выполнения операции.\n\ + Попробуйте увеличить максимум памяти отведенный для Java.\n\ \n\ - Описание изменения памяти для Java находится в разделе\n\ + Описание изменения памяти Java находится в разделе\n\ "Буферы" главы "Основы jEdit" в руководстве пользователя. #}}} @@ -681,7 +855,7 @@ read-error.title=Ошибка чтения # {0} - the path name {1} - the error message read-error.message=Файл {0}\n\ - не может быть загружен ис-за ошибки ввода/вывода.\n\ + не может быть загружен из-за ошибки ввода/вывода.\n\ ({1}) write-error.title=Ошибка записи @@ -690,16 +864,16 @@ не может быть сохранён из-за ошибки ввода/вывода.\n\ ({1}) -directory-error.title=Ошибка директории +directory-error.title=Ошибка каталога # {0} - the path name {1} - the error message -directory-error.message=Директория {0}\n\ - не может быть прочитана ис-за ошибки ввода/вывода.\n\ +directory-error.message=Каталог {0}\n\ + не может быть прочитан из-за ошибки ввода/вывода.\n\ ({1}) -directory-error-nomsg.title=Ошибка директории +directory-error-nomsg.title=Ошибка каталога # {0} - the path name -directory-error-nomsg.message=Директория {0}\n\ - не может быть прочитана ис-за ошибки ввода/вывода. +directory-error-nomsg.message=Каталог {0}\n\ + не может быть прочитан ис-за ошибки ввода/вывода. encoding-error.title=Несовместимая кодировка encoding-error.message=Файл {0}\n\ @@ -712,13 +886,13 @@ В случае если не знаете какую кодировку использовать\n\ попробуйте "ASCII" или "8859_1". -open-directory.title=Невозможно открыть директорию -open-directory.message={0} - это директория.\n\ - Директории нельзя открывать для редактирования. - -save-directory.title=Невозможно сохранить директорию -save-directory.message={0} - это директория.\n\ - Буфер невозможно сохранить как директорию. +open-directory.title=Невозможно открыть каталог +open-directory.message={0} - это каталог.\n\ + Каталоги нельзя открывать для редактирования. + +save-directory.title=Невозможно сохранить каталог +save-directory.message={0} - это каталог.\n\ + Буфер невозможно сохранить как каталог. no-read.title=Невозможно открыть файл no-read.message=Невозможно читать {0}.\n\ @@ -775,9 +949,9 @@ autosave-loaded.title=Файл автосохранения загружен autosave-loaded.message=Файл автосохранения {0}\n\ - был загружен. Пожалуйста проверте, действительно ли он содержит Ваши\n\ + был загружен. Пожалуйста, проверьте, действительно ли он содержит Ваши\n\ несохранённые данные. Если Вы желаете сохранить эти изменения, сохраните\n\ - отркытый файл. В противном случае используйте меню Файл->Перезагрузить. + открытый файл. В противном случае используйте меню Файл->Перезагрузить. #}}} #{{{ Save all confirm dialog @@ -787,34 +961,34 @@ #{{{ Reload all confirm dialog reload-all.title=Перезагрузить все буферы -reload-all.message=Вы действительно хотите перезагрузить все жуферы с диска?\n\ - Не сохранённые изменения во всех открытых буферах БУДУТ ПОТЕРЯНЫ! +reload-all.message=Вы действительно хотите перезагрузить все буферы с диска?\n\ + Несохранённые изменения во всех открытых буферах БУДУТ ПОТЕРЯНЫ! #}}} #{{{ Encoding prompt -encoding-prompt.title=Отркыть с другой кодировкой +encoding-prompt.title=Открыть в другой кодировке encoding-prompt.message=Использовать кодировку: #}}} #{{{ Macro recording already in progress dialog -already-recording.title=Запись уже активна -already-recording.message=Сапис макро-команды уже активна. +already-recording.title=Запись уже идёт +already-recording.message=Запись макроса уже идёт. #}}} #{{{ No temporary macro dialog -no-temp-macro.title=Нет временной макро-команды -no-temp-macro.message=Временная макро-команда ещё не была записана. +no-temp-macro.title=Нет временного макроса +no-temp-macro.message=Временный макрос ещё не был записан. #}}} #{{{ Record macro dialog -record.title=Запись макро-команды -record.message=Има для макро-команды: +record.title=Запись макроса +record.message=Имя макроса: #}}} #{{{ Some features don't work with -nosettings dialog no-settings.title=Функция отключена -no-settings.message=jEdit был запущен с опцией -nosettings.\n\ - Чтобы использовать данную функцию, нужно зпаустить jEdit без этой опции. +no-settings.message=jEdit был запущен с параметром -nosettings.\n\ + Чтобы использовать данную функцию, нужно запустить jEdit без этого параметра. #}}} #{{{ Some features don't work with the web start version @@ -831,7 +1005,7 @@ search.replace=Замена: search.replace.mnemonic=w search.string-replace-btn=Текст -search.beanshell-replace-btn=Результат выполнения програмки на BeanShell +search.beanshell-replace-btn=Результат выполнения сниппета BeanShell search.settings=Настройки: search.keep=Не убирать диалог @@ -839,13 +1013,13 @@ search.word=Слово целиком (q) search.word.bar=Слово целиком search.word.mnemonic=q -search.case=Без учета размера букв +search.case=Без учета регистра search.case.mnemonic=i -search.regexp=Регулярные выражения +search.regexp=Регулярное выражение search.regexp.mnemonic=x -search.hypersearch=Глобально +search.hypersearch=Гипер-поиск search.hypersearch.mnemonic=h -search.wrap=Авто-заворот на границе +search.wrap=Автовозврат к началу search.wrap.mnemonic=t search.direction=Направление: @@ -861,25 +1035,25 @@ search.current.mnemonic=c search.all=Всех буферах search.all.mnemonic=l -search.directory=Директории: +search.directory=Каталоги: search.directory.mnemonic=d -search.skipHidden=Пропускать скрытые/запасные -search.skipBinary=Пропускать файлы с данными +search.skipHidden=Пропускать скрытые/бэкапы +search.skipBinary=Пропускать бинарные файлы search.skipHidden.mnemonic=h search.skipBinary.mnemonic=b -search.directoryField=Директория: +search.directoryField=Каталог: search.directoryField.mnemonic=y search.filterField=Фильтр: search.filterField.mnemonic=f glob.tooltip={*.c,*.h} для нескольких расширений -search.subdirs=Искать в под-директориях +search.subdirs=Искать в подкаталогах search.subdirs.mnemonic=u search.choose=Выбор... search.choose.mnemonic=e -search.synchronize=Согласовать +search.synchronize=Синхронизировать search.synchronize.mnemonic=z -search.synchronize.tooltip=Установить фильтр и дирекорию в соответсвии с текущим буфером. +search.synchronize.tooltip=Устанавливает фильтр и каталог в соответствии с расширением/расположением текущего буфера. search.findBtn=Искать search.findBtn.mnemonic=f search.replaceBtn=Заменить @@ -894,13 +1068,13 @@ #}}} #{{{ Keep searching dialog -keepsearching.title=Больше не найдено -keepsearching.message=Ничего не найдено. Продолжить поиск с\n\ +keepsearching.title=Не найдено +keepsearching.message=Больше ничего не найдено. Продолжить поиск с\n\ {0,choice,0#начала|1#конца}? #}}} #{{{ HyperSearch results dialog -hypersearch-results.title=Результаты глобального поиска +hypersearch-results.title=Результаты гипер-поиска hypersearch-results.result-caption={0} ({1,choice,1#1 совпадение|1<{1,number,integer} совпадений в '{2,choice,1#1 файле|1<{2,number,integer} файлах}'}) hypersearch-results.open=Открыть hypersearch-results.open-view=Открыть в новом окне @@ -911,10 +1085,10 @@ hypersearch-results.expand-child-nodes=Раскрыть содержимые узлы hypersearch-results.collapse-child-nodes=Схлопнуть содержимые узлы hypersearch-results.copy-to-clipboard=Копировать в буфер фрагментов -hypersearch-results.redo=Повторить глобальный поиск +hypersearch-results.redo=Повторить гипер-поиск hypersearch-results.tree-view=Переключить вид как дерево hypersearch-results.clear.label=Удалить все узлы -hypersearch-results.stop.label=Остановить глобальный поиск и показать текущие результаты +hypersearch-results.stop.label=Остановить гипер-поиск и показать текущие результаты hypersearch-results.multi.label=Переключить показ множественных результатов hypersearch-results.highlight.label=Задать вид показа совпадений hypersearch-results.file-caption={0} ({1,choice,1#1 совпадение|1<{1,number,integer} совпадений в '{2,choice,1#1 строке|1<{2,number,integer} строках}'}) @@ -928,7 +1102,7 @@ #{{{ HyperSearch too many results hypersearch.tooManyResults.label=Слишком много результатов hypersearch.tooManyResults.title=Слишком много результатов -hypersearch.tooManyResults.message=Заказанный поиск вернул {0} \ +hypersearch.tooManyResults.message=Поиск вернул {0} \ результатов и ещё не окончен. Желаете остановить поиск? #}}} @@ -951,15 +1125,15 @@ #{{{ Empty fileset error dialog empty-fileset.title=Пустое множество файлов empty-fileset.message=Указанное множество файлов для поиска не содержит файлов.\n\ - Пожалуйста, проверте что фильтр имён файлов и директория для поиска\n\ + Пожалуйста, проверьте что фильтр имеён файлов и каталог для поиска\n\ заданы правильно. #}}} #{{{ Can only search local directories dialog -remote-dir-search.title=Выбрана удалённая директория -remote-dir-search.message=Вы намереваетесь провести поиск в удалённой директории.\n\ +remote-dir-search.title=Выбран удалённый каталог +remote-dir-search.message=Вы намереваетесь провести поиск в удалённом каталоге.\n\ Такая операция может быть очень медленной из-за сетевого сообщения.\n\ - Вы уверенны, что желаете продолжать? + Вы уверены, что желаете продолжать? #}}} #{{{ "Search in selection" active but nothing selected in text area @@ -1018,13 +1192,21 @@ close.discard.mnemonic=d #}}} +#{{{ Close all confirm dialog +closeothers.title=Закрыть все остальные буферы +closeothers.message=Вы уверены, что хотите закрыть все остальные буферы? +closeall.title=Закрыть все буферы +closeall.message=Вы уверены, что хотите закрыть все буферы? +#}}} + + #{{{ Files changed on disk dialog files-changed.title=Файлы изменён на диске files-changed.caption=Следующие файлы были изменены на диске внешней программой: files-changed.deleted=Удалён с диска; сохраните чтобы создать вновь: files-changed.changed-auto=Автоматически перезагружен: files-changed.changed=Изменён на диске: -files-changed.changed-dirty-auto=Буфер с изменениями- не перезагружен: +files-changed.changed-dirty-auto=Буфер с изменениями; не перезагружен: files-changed.changed-dirty=Буфер с изменениями, а файл изменён на диске: files-changed.select-all=Выбрать все files-changed.select-all.mnemonic=a @@ -1036,20 +1218,20 @@ #{{{ Abbrev dialogs add-abbrev.title=Добавить сокращение -add-abbrev.mode=Доабвить только для режима -add-abbrev.global=Дабавить глобально +add-abbrev.mode=Добавить только для режима +add-abbrev.global=Добавить глобально edit-abbrev.title=Изменить сокращение -edit-abbrev.duplicate.title=Дублировать сокращенив +edit-abbrev.duplicate.title=Дублировать сокращение edit-abbrev.duplicate.message=\ Расширение для этого сокращения уже существует.\n\ \n\ Заменить существующее расширение? abbrev-editor.abbrev=Сокращение: -abbrev-editor.before=Текст до каретки: -abbrev-editor.after=Текст после каретки: +abbrev-editor.before=Текст до курсора: +abbrev-editor.after=Текст после курсора: #}}} #{{{ XMode errors @@ -1064,50 +1246,50 @@ xmode-error.token-invalid=Поле типа {0} недопустимо xmode-error.empty-keyword=Ключевое слово text не может быть пустым xmode-error.regexp=Недопустимое регулярное выражение\n({0}) -xmode-error.hash-char-and-hash-chars-mutually-exclusive=Недопустимо одновременное присутствие HASH_CHAR и HASH_CHARS +xmode-error.hash-char-and-hash-chars-mutually-exclusive=HASH_CHAR и HASH_CHARS не могут быть заданы одновременно xmode-error.delegate-invalid=Недопустимый делегат: {0} #}}} #{{{ JARClassLoader errors -plugin-error.title=Ошибка в модуле -plugin-error.caption=Следующий модуль не может быть загружен: -plugin-error.caption-1=Следующий модуль не может быть загружен: +plugin-error.title=Ошибка в плагине +plugin-error.caption=Следующий плагин не может быть загружен: +plugin-error.caption-1=Следующий плагин не может быть загружен: plugin-error.load-error=Невозможно загрузить: {0}\n\ Вероятнее всего файл JAR повреждён; попробуйте\n\ - переустановить его. Полная запись стэка в меню \n\ + переустановить его. Полная трассировка стека в меню \n\ Услуги->Отладка->Записи Активности. plugin-error.start-error=Невозможно запустить: {0}\n\ - Попробуйте обновление до последней версии модуля. + Попробуйте обновление до последней версии плагина. plugin-error.already-loaded=Установлено две копии. Пожалуйста, удалите одну из \ копий. -plugin-error.dep-jdk=Требуется Java {0} или новее, имеется версия {1}. -plugin-error.dep-jedit=Требуется jEdit {0} или новее, у Вас версия {1}.\n\ +plugin-error.dep-jdk=Требуется Java {0} или более новая, имеется версия {1}. +plugin-error.dep-jedit=Требуется jEdit {0} или более новая, у Вас версия {1}.\n\ Скачайте новую версия jEdit с сайта . plugin-error.dep-plugin.no-version=Требуется {1} версии {0} \ - Или новее,\n\ - однако {1} че установлено. + или новее,\n\ + однако {1} не установлено. plugin-error.dep-plugin.broken=Требуется {0}, однако {0}\n\ не может быть загружено. -plugin-error.dep-plugin=Требуется {1} версии {0} или новее, \ +plugin-error.dep-plugin=Требуется {1} версии {0} или более новый, \ однако имеется только {1} версии {2}. plugin-error.dep-class=Требуется класс {0}.\n\ - Попробуйте установить соотвествующее дополнение или библиотеку классов. + Попробуйте установить соответствующий плагин или библиотеку классов. plugin-error.missing-jar=Требуется JAR-файл {0}.\n\ - Этот файл, являеющийся частью данного дополнения, не чайден.\n\ - Попробуйте переустановить дополнение. -plugin-error.not-42=Это дополнение не поддерживает динамической загрузки.\n\ - Необходимо перезапустить jEdit после установки или удаления этого дополнения. + Этот файл, являющийся частью данного плагина, не найден.\n\ + Попробуйте переустановить плагин. +plugin-error.not-42=Этот плагин не поддерживает динамической загрузки.\n\ + Необходимо перезапустить jEdit после удаления или установки этого плагина. -plugin-error-download.title=Ошибка в дополнении -plugin-error-download.message=Ошибка при скачивании дополнения, попробуйте другое зеркало\n{0} +plugin-error-download.title=Ошибка плагина +plugin-error-download.message=Ошибка при скачивании плагина, попробуйте другое зеркало\n{0} #}}} #{{{ Macro dialogs -macro-input.title=Ввод макро-команды -macro-error.title=Ошибка макро-команды -macro-message.title=Сообщение макро-команды -macro-confirm.title=Подтверждение макро-команды +macro-input.title=Ввод макроса +macro-error.title=Ошибка макроса +macro-message.title=Сообщение макроса +macro-confirm.title=Подтверждение макроса #}}} #{{{ BeanShell stuff @@ -1131,7 +1313,7 @@ выбранной строки:\n\ \n\ Переменные:\n\ - line - Номер страоки от начала буфера\n\ + line - Номер строки от начала буфера\n\ index - Номер строки от начала выделения\n\ text - Текст строки\n\ view - Текущий вид\n\ @@ -1142,7 +1324,7 @@ #{{{ Macro not recording dialog macro-not-recording.title=Запись не активна -macro-not-recording.message=В данный момент запись макро-команды не активна. +macro-not-recording.message=В данный момент запись макроса не активна. #}}} #{{{ Large repeat count warning @@ -1168,14 +1350,14 @@ #{{{ Multiple I/O request errors buffer-multiple-io.title=Ошибка ввода/вывода buffer-multiple-io.message=Для каждого буфера может быть активна только одна \n\ - операция ввода/вывода. Пожалуйста. подождите пока текущая операция\n\ - не закончится (или прервите её в мониторе ввода/вывода),\n\ + операция ввода/вывода. Пожалуйста, подождите пока текущая операция\n\ + не закончится (или прервите её в мониторе ввода/вывода)\n\ прежде чем начинать новую операцию. browser-multiple-io.title=Ошибка ввода/вывода browser-multiple-io.message=Каждый обозреватель файловой системы может выполнять\n\ - только одну операцию ввода/вывода одновременно. Пожалуйста. подождите пока текущая операция\n\ - не закончится (или прервите её в мониторе ввода/вывода),\n\ + только одну операцию ввода/вывода единовременно. Пожалуйста, подождите пока текущая операция\n\ + не закончится (или прервите её в мониторе ввода/вывода)\n\ прежде чем начинать новую операцию. #}}} @@ -1186,9 +1368,9 @@ #}}} #{{{ Text under caret does not have a syntax style (token type) -syntax-style-no-token.title=Конфигурация стиля синтаксиса -syntax-style-no-token.message=Для текста под кареткой нет ассоциированного \ - стиля синтаксиса, который можно конфигурировать. +syntax-style-no-token.title=Настройка стиля синтаксиса +syntax-style-no-token.message=Для текста под курсором нет ассоциированного \ + стиля синтаксиса, который можно настраивать. #}}} #{{{ View title dialog @@ -1202,11 +1384,12 @@ Для изменения настроек режима редактирования смотри диалог\n\ Услуги->Общие настройки->Редактирование. buffer-options.loading-saving=Загрузка и сохранение -buffer-options.lineSeparator=Раззделитель строк: +buffer-options.lineSeparator=Разделитель строк: buffer-options.encoding=Кодировка: buffer-options.gzipped=Сжатие (GZIP) файлов на диске buffer-options.editing=Редактирование buffer-options.mode=режим редактирования: +buffer-options.locked=Заблокирован #}}} #{{{ Global options dialog @@ -1225,62 +1408,63 @@ options.general.label=Общие options.general.lineSeparator=Разделитель строк по умолчанию: options.general.encoding=Кодировка по умолчанию: -options.general.encodingAutodetect=Определють кодировку файла автоматически +options.general.encodingAutodetect=Определять кодировку файла автоматически, если возможно options.general.checkModStatus=Если открытые файлы изменены на диске: options.general.checkModStatus.nothing=ничего не делать options.general.checkModStatus.prompt=спросить -options.general.checkModStatus.reload=автоматически перегрузить и информировать -options.general.checkModStatus.silentReload=автоматически перегрузить без информирования -options.general.checkModStatusUpon=Проверять файлы после: -options.general.checkModStatusUpon.focus=получения фокуса программой -options.general.checkModStatusUpon.all=получения фокуса, посещения буфера, сохранения любого буфера -options.general.checkModStatusUpon.operations=посещения буфера или сохранения любого буфера -options.general.checkModStatusUpon.focusBuffer=посещения или сохранения буфера -options.general.checkModStatusUpon.none=сохранения буфера +options.general.checkModStatus.reload=автоматически перезагрузить и уведомить +options.general.checkModStatus.silentReload=автоматически перезагрузить без уведомления +options.general.checkModStatusUpon=Проверять файлы на изменения после: +options.general.checkModStatusUpon.focus=получения фокуса окном (проверять все буферы) +options.general.checkModStatusUpon.all=получения фокуса окном или посещения буфера +options.general.checkModStatusUpon.visitBuffer=посещения буфера +options.general.checkModStatusUpon.none=не проверять options.general.recentFiles=Количество запоминаемых недавних файлов: -options.general.hypersearch.maxWarningResults=Максимальное число результатов глобального поиска: +options.general.hypersearch.maxWarningResults=Максимальное число результатов гипер-поиска: options.general.sortRecent=Сортировать недавние файлы -options.general.saveCaret=Сохранять положение каретки с недавними файлами -options.general.persistentMarkers=Сохранять закладки -options.general.resetUndo=Ошищать историю действий после сохранения +options.general.hideOpen=Скрывать открытые файлы из списка недавних +options.general.closeAllConfirm="Закрыть все" требует подтверждения +options.general.saveCaret=Сохранять положение курсора в недавних файлах +options.general.persistentMarkers=Сохранять метки +options.general.resetUndo=Очищать историю после сохранения options.general.restore=Открывать все прежде открытые файлы во время старта options.general.restore.splits=Восстанавливать разделение options.general.restore.remote=... включая не локальные файлы options.general.restore.cli=... включая файлы указанные в командной строке options.general.encodingDetectors=Список автодетекторов кодировок: -options.general.fallbackEncodings=Список дублирующих кодировок: +options.general.fallbackEncodings=Список резервных кодировок: options.general.fallbackEncodings.tooltip=Список кодировок, разделённых пробелами, используемых при ошибках кодировки при загрузке -options.general.systrayicon=Показывать иконку в панели системы +options.general.systrayicon=Показывать иконку в панели операционной системы #}}} #{{{ Abbreviations pane options.abbrevs.label=Сокращения options.abbrevs.set=Набор сокращений: -options.abbrevs.expandOnInput=Клавиша пробел расширяет сокращение +options.abbrevs.expandOnInput=Пробел разворачивает сокращение options.abbrevs.abbrev=Сокращение -options.abbrevs.expand=Расширенный текст +options.abbrevs.expand=Полный текст options.abbrevs.add=Добавить... options.abbrevs.edit=Изменить... options.abbrevs.remove=Удалить #}}} #{{{ Appearance pane -options.appearance.label=Внешность +options.appearance.label=Вид options.appearance.iconTheme=Тема иконок: -options.appearance.fonts.antialias=Сглаживать шрифты в не-текстовых областях -options.appearance.lf=Внешность и поведение Swing'а: +options.appearance.fonts.antialias=Сглаживать шрифты в нетекстовых областях +options.appearance.lf=Вид и поведение Swing'а: options.appearance.primaryFont=Шрифт для кнопок, меню и ярлыков: options.appearance.secondaryFont=Шрифт для списков и текстовых полей: options.appearance.helpViewerFont=Шрифт для просмотра документации: options.appearance.history=Количество запоминаемых элементов для текстовых полей: -options.appearance.menuSpillover=Количество элементов ведущее к перетеканию меню: -options.appearance.startup.label=Настрйки запуска +options.appearance.menuSpillover=Количество элементов до переполнения меню: +options.appearance.startup.label=Опции запуска options.appearance.showSplash=Показывать заставку при запуске options.appearance.showTips=Показывать советы при запуске options.appearance.experimental.label=Экспериментальные настройки options.appearance.experimental.caption=Следующие три настройки могут работать \ с некоторыми версиями\n\ - Java. В случае проблем, отклющите их. + Java. В случае проблем, отключите их. options.appearance.textColors=Использовать цвета текстовой области во всех \ текстовых компонентах @@ -1294,20 +1478,20 @@ #{{{ Context Menu pane options.context.label=Контекстное меню -options.context.caption=Элементы в меню правой клавиши дле текстовой области: +options.context.caption=Элементы контекстного меню текстовой области: options.context.add=Добавить... options.context.remove=Удалить options.context.moveUp=Наверх options.context.moveDown=Вниз -options.context.reset=Вернуть оригинальное меню +options.context.reset=Восстановить меню по умолчанию options.context.add.title=Добавить к контекстному меню options.context.add.caption=Добавить к контекстному меню: options.context.add.separator=Разделитель -options.context.add.action=Команда или макро-команда: -options.context.includeOptionsLink.label=Включить "Изменить это Меню..." +options.context.add.action=Команда или макрос: +options.context.includeOptionsLink.label=Добавить пункт "Настроить это меню..." -options.context.reset.dialog.title=Вернуть к оригинальному -options.context.reset.dialog.message=Вы уверены что хотите верныть контекстное меню к оригинальному виду? +options.context.reset.dialog.title=Восстановить меню по умолчанию +options.context.reset.dialog.message=Вы уверены, что хотите вернуть контекстное меню к изначальному виду? #}}} #{{{ Docking pane @@ -1318,12 +1502,12 @@ options.docking.autoSaveModeLayout.label=Автоматически сохранять раскладку дока для режима редактирования options.docking.autoLoadModeLayout.label=Автоматически загружать раскладку дока для режима редактирования options.docking.selectSet.label=Набор панелей дока: -options.docking.system-change.note=(Экспериментальное) Перезапустите jEdit чтобы изменения вошли в силу +options.docking.system-change.note=(Экспериментальное) Перезапустите jEdit чтобы изменения вступили в силу #}}} #{{{ Editing pane options.editing.label=Редактирование -options.editing.defaultMode=Режим редактирования по умолчанию: +options.editing.defaultMode=Режим по умолчанию: options.editing.undoCount=Количество отменяемых действий: options.editing.caption-0=\ Для настроек режима редактирования, выберите режим из меню\n\ @@ -1332,37 +1516,53 @@ Отмените выбор "По умолчанию", чтобы изменить настройки для режима.\n\ В противном случае, в данном режиме будут активны настройки из раздела\n\ <По умолчанию>. -options.editing.mode=Настройки для режима: +options.editing.mode=Настройки режима: options.editing.global=<По умолчанию> options.editing.useDefaults=Использовать настройки по умолчанию -options.editing.filenameGlob=Шаблон имени: +options.editing.filenameGlob=Шаблон имени файла: options.editing.firstlineGlob=Шаблон первой строки: options.editing.folding=Режим свёртки: options.editing.collapseFolds=Первоначально свернуть до уровня: options.editing.wrap=Перенос по словам: options.editing.maxLineLen=Граница переноса: options.editing.maxLineLen.tooltip=Выберите 0 для границы текстовой области (только временный режим) -options.editing.tabSize=Размер табуляции: -options.editing.indentSize=Размер отступа: -options.editing.noWordSep=Дополнителые символы слова: -options.editing.camelCasedWords=Разделять слова в "ВерблюжемРегистре" +options.editing.tabSize=Ширина табуляции: +options.editing.indentSize=Ширина отступа: +options.editing.noWordSep=Дополнительные символы слова: +options.editing.camelCasedWords=Разделять слова в "CamelCase" options.editing.noTabs=Использовать пробелы для табуляции -options.editing.elasticTabstops=Эластичных шаги для отступа -options.editing.elasticTabstops.tooltip=(Эксперимент) - может привести к нестабильности +options.editing.elasticTabstops=Использовать эластичную табуляцию для отступа +options.editing.elasticTabstops.tooltip=Колонки в строках над и под "ячейкой" выравниваются по ширине табуляции которая может увеличиваться или уменьшаться в зависимости от ширины ячейки. options.editing.deepIndent=Глубокий отступ options.editing.autoIndent=Автоматический отступ -options.editing.largefilemode.title=Режим больших файлов -options.editing.largefilemode=Как работать с большими файлами: -options.editing.largefilemode.option.ask=Спросить что делать при открытии большого файла -options.editing.largefilemode.option.full=Использовать полный анализ : подцветка синтаксиса будет работать как обычно, \ - программа может стать
    очень медленнойс (не рекомендуется) -options.editing.largefilemode.option.limited=Подцветка без анализа контекста: Подзветка работает \ - быстро, но
    рультат возможно не вполне корректен. \ - Каждая строка подцвечивается независимо, вне контекста
    \ - предыдущей строки. Синтаксис будет подцвечен непровильно в случае \ - конструкций занимающих несколько строк (коментарии, xml ...) \ - Временные переносы тоже отключены
    (рекомендуется) -options.editing.largefilemode.option.nohighlight=Отключить подцветку и переносы +options.editing.deleteMode=Удалить этот режим +options.editing.addMode=Добавить режим +options.editing.addMode.dialog.title=Добавить режим +options.editing.addMode.dialog.browse=Просмотр +options.editing.addMode.dialog.modeName=Название режима: +options.editing.addMode.dialog.modeFile=Выберите файл режима: +options.editing.addMode.dialog.filenameGlob=Шаблон имени: +options.editing.addMode.dialog.firstLineGlob=Шаблон первой строки: +options.editing.addMode.dialog.warning.title=Подтвердите замену режима: +options.editing.addMode.dialog.warning.message=Этот режим уже существует. Вы хотите его заменить? +options.editing.addMode.dialog.warning.message1=Невозможно скопировать файл режима +options.editing.addMode.dialog.Mode_name_may_not_be_empty.=Название режима не может быть пустым. +options.editing.addMode.dialog.Mode_file_may_not_be_empty.=Файл режима не может быть пустым. +options.editing.addMode.dialog.Either_file_name_glob_or_first_line_glob_or_both_must_be_filled_in.=Either file name glob or first line glob or both must be filled in. +options.editing.addMode.dialog.errorTitle=Ошибка +options.editing.deleteMode.dialog.title=Подтвердите удаление режима +options.editing.deleteMode.dialog.message=Вы уверены, что хотите удалить этот режим? Удаление невозможно будет отменить. +options.editing.deleteMode.dialog.message1=Невозможно удалить файл режима +options.editing.deleteMode.dialog.message2=для режима +options.editing.modes.selectModes=Выберите режимы, которые должны быть видны в диалогах выбора режима: +options.editing.modes.available=Доступные режимы +options.editing.modes.selected=Выбранные режимы +options.editing.modes.available.tooltip=Режимы из этой колонки НЕ будут видны в списках выбора режима. \ + Перетащите их в правую колонку, чтобы показать. +options.editing.modes.selected.tooltip=Режимы из этой колонки будут видны в списках выбора режима. \ + Перетащите их в левую колонку, чтобы скрыть. +options.editing.modes.deleteSelected=Удалить выбранные +options.editing.modes.Delete_these_modes?=Удалить эти режимы? #}}} #{{{ Encodings pane @@ -1370,10 +1570,10 @@ options.encodings.selectEncodings=Выберите кодировки для показа в диалога выбора кодировки: options.encodings.available=Доступные кодировки options.encodings.selected=Выбранные кодировки -options.encodings.available.tooltip=Кодировки в этой колонке не будут включены в диалоги.\ - Перетащите их в правую колонку для использования -options.encodings.selected.tooltip=Кодировки в этой колонке будут показаны в диалогах выбора кодировки.\ - Перетащите их в левую колонку чтобы удалить их из диалогов. +options.encodings.available.tooltip=Кодировки из этой колонки НЕ будут видны в списках выбора кодировки. \ + Перетащите их в правую колонку, чтобы показать. +options.encodings.selected.tooltip=Кодировки из этой колонки будут видны в списках выбора кодировки. \ + Перетащите их в левую колонку, чтобы скрыть. #}}} #{{{ Gutter pane @@ -1384,26 +1584,44 @@ options.gutter.minLineNumberDigits=Минимальное количество разрядов для номеров строк: options.gutter.selectionAreaEnabled=Область выделения строк когда номера не показаны options.gutter.selectionAreaBgColor=Цвет фона области выделения -options.gutter.selectionAreaWidth=Ширина области выделения (пикселы): -options.gutter.font=Фонт: -options.gutter.foreground=Цвет номеров: +options.gutter.selectionAreaWidth=Ширина области выделения (пиксели): +options.gutter.font=Шрифт: +options.gutter.foreground=Цвет номера: options.gutter.background=Цвет фона: -options.gutter.borderWidth=Ширина границ канта: +options.gutter.borderWidth=Ширина границы канта: options.gutter.numberAlignment=Выравнивание номеров: options.gutter.interval-1=Подсвечивать каждые\u0020 options.gutter.interval-2=строк: options.gutter.currentLineHighlight=Подсвечивать текущую строку: options.gutter.structureHighlight=Показывать пределы структуры: -options.gutter.markerHighlight=Показывать позиции закладок: +options.gutter.markerHighlight=Показывать позиции меток: options.gutter.foldColor=Символы свёртки: options.gutter.focusBorderColor=Активная граница канта: options.gutter.noFocusBorderColor=Неактивная граница канта: -options.gutter.foldStyle.label=Символ свёртки: +options.gutter.foldStyle.label=Стиль свёртки: options.gutter.foldStyleNames.Triangle=Треугольник options.gutter.foldStyleNames.Square=Квадрат options.gutter.foldStyleNames.Circle=Круг #}}} +#{{{ Large files pane +options.large-files.label=Большие файлы +options.editing.largefilemode.title=Режим больших файлов +options.editing.largefilemode=Что делать с очень большими файлами (> {0} символов, или длина строки > {1}): +options.editing.largefilemode.tooltip=Значения можно изменить в свойствах jEdit: largeBufferSize и longLineLimit +options.editing.largefilemode.option.ask=Спросить что делать при открытии большого файла +options.editing.largefilemode.option.full=Полная подсветка синтаксиса : подсветка синтаксиса будет работать как обычно, \ + jEdit может работать
    очень медленно, не рекомендуется +options.editing.largefilemode.option.limited=\ + Подсветка, нечувствительная к контексту: В этом случае подсветка работает быстро, но
    \ + результат возможно не вполне корректен. Каждая строка подсвечивается независимо,
    \ + вне контекста предыдущей строки. Синтаксис вероятно будет подсвечен неправильно
    \ + в случае конструкций занимающих несколько строк (блочные комментарии, теги xml ...)
    \ + Мягкий перенос также отключен
    (рекомендуется) +options.editing.largefilemode.option.nohighlight=Без подсветки, без мягких переносов +#}}} + + #{{{ Mouse pane options.mouse.label=Мышь options.mouse.dragAndDrop=Перетаскивание в текстовой области @@ -1417,17 +1635,20 @@ #}}} #{{{ Plugin Manager pane -options.plugin-manager.label=Управление модулями +options.plugin-manager.label=Управление плагинами options.plugin-manager.updateMirrors=Обновить список зеркал options.plugin-manager.workthread=Обновляется список зеркал ... -options.plugin-manager.downloadSource=Сгружать исходный код модулей -options.plugin-manager.deleteDownloads=Удалять сгруженные архивы после установки +options.plugin-manager.downloadSource=Скачивать исходный код плагинов +options.plugin-manager.deleteDownloads=Удалять скачанные архивы после установки options.plugin-manager.mirror=Предпочтительное зеркало: -options.plugin-manager.location=Место установки модулей: -options.plugin-manager.settings-dir=Директория настроек -options.plugin-manager.app-dir=Директория программы +options.plugin-manager.location=Место установки плагинов: +options.plugin-manager.settings-dir=Каталог настроек +options.plugin-manager.app-dir=Каталог программы options.plugin-manager.none=Plugin Central default -options.plugin-manager.disable-obsolete=Запретить устаревшие модули +options.plugin-manager.disable-obsolete=Запретить устаревшие плагины +options.plugin-manager.list-cache.minutes=Кешировать список плагинов на: (минут) +options.plugin-manager.no-plugin-available=Нет доступных плагинов +options.plugin-manager.no-plugin-uptodate=Все плагины обновлены до последних версий. #}}} #{{{ Printing pane @@ -1441,63 +1662,68 @@ options.print.color=Цветная печать options.print.tabSize=Ширина табуляции при печати: options.print.workarounds=Коррекция проблем Java -options.print.glyphVector=Коррекция интервала (увеличивает размер файла спула) -options.print.force13=Использовать старый интерфейс (активируйте в случае, если \ - программа замораживается при печати) +options.print.glyphVector=Коррекция интервала (рекомендуется, но увеличивает размер файла спула) +options.print.force13=Использовать старый интерфейс печати (активируйте, если \ + jEdit зависает при печати) options.print.folds=Печатать свернутые области +options.print.useSystemDialog=Использовать системный диалог печати #}}} #{{{ Proxy pane -options.firewall.label=Серверы прокси +options.firewall.label=Прокси-серверы options.firewall.http.enabled=Использовать прокси для HTTP options.firewall.http.host=Адрес HTTP прокси: options.firewall.http.port=Порт HTTP прокси: options.firewall.http.user=Имя: options.firewall.http.password=Пароль: options.firewall.http.nonProxy=Прямое соединение с: -options.firewall.socks.enabled=Использовать SOCKS proxy server -options.firewall.socks.host=SOCKS proxy host: -options.firewall.socks.port=SOCKS proxy port: +options.firewall.socks.enabled=Использовать SOCKS-прокси +options.firewall.socks.host=SOCKS-прокси хост: +options.firewall.socks.port=SOCKS-прокси порт: #}}} #{{{ Save & Backup pane -options.save-back.label=Сохранение и резервирование - +options.save-back.label=Сохранение и бэкап options.save-back.autosave=Частота авто-сохранения (секунды): +options.save-back.autosave.tooltip=чтобы отключить, задайте 0 options.save-back.backups=Максимальное число резервных копий: -options.save-back.backupDirectory=Директория для резервных копий: -options.save-back.backupPrefix=Префикс резервной копии: -options.save-back.backupSuffix=Суффик резервной копии: -options.save-back.backupEverySave=Оставлять резервную копию при каждом сохранении -options.save-back.twoStageSave=Двух-ступенчатое сохранение (надёхнее, но изменяет владельца файла на некоторых файловых системах) -options.save-back.twoStageSave.tooltip=Стадия 1: Сиздать временный файл и сохранить в него. Стадия 2: Переименовать временный файл в редактируемый. -options.save-back.confirmSaveAll=Запрашивать подтверждение при исполнении "Сохранить всех буферы" -options.save-back.autosaveUntitled=Автосохранение неназванных буверов -options.save-back.suppressNotSavedConfirmUntitled=Не помечать неназванные буферы как изменённые. -options.save-back.suppressNotSavedConfirmUntitled.tooltip=Неназванные буферы будут стёрты при создании новых (так задумано, это не ошибка) -options.save-back.useMD5forDirtyCalculation=Не помечать неназванный буфер как изменённый, если содержимое не изменено. -options.save-back.useMD5forDirtyCalculation.tooltip=Сравнивать с длиной и суммой MD5 буфера при загрузке, чтобы определит, был ли буфер изменён. -options.save-back.saveAsUsesFSB="Сохранить как" начинает в директории Обозревателя файловой системы +options.save-back.backups.tooltip=чтобы отключить, задайте 0 +options.save-back.backupDirectory=Каталог для бэкапа, авто-сохранения: +options.save-back.backupDirectory.tooltip=Если не задан, используется каталог буфера. Допускаются $VARIABLE/префиксы. +options.save-back.backupPrefix=Префикс бэкапа: +options.save-back.backupSuffix=Суффикс бэкапа: +options.save-back.backupEverySave=Бэкап при каждом сохранении +options.save-back.twoStageSave=Двух-ступенчатое сохранение (надёжнее, но изменяет владельца файла на некоторых файловых системах) +options.save-back.twoStageSave.tooltip=Стадия 1: Создать временный файл и сохранить в него.\ + Стадия 2: Переименовать временный файл в редактируемый. +options.save-back.confirmSaveAll="Сохранить все буферы" требует подтверждения +options.save-back.autosaveUntitled=Авто-сохранение безымянных +options.save-back.suppressNotSavedConfirmUntitled=Закрывать безымянные буферы с изменениями без подтверждения. +options.save-back.useMD5forDirtyCalculation=Не помечать буфер как изменённый, если содержимое не изменено. +options.save-back.useMD5forDirtyCalculation.tooltip=Сравнивать с длиной и хешем MD5 буфера при загрузке, чтобы определить, что буфер всё-ещё изменён. +options.save-back.saveAsUsesFSB="Сохранить как" открывается в каталоге Обозревателя файловой системы #}}} #{{{ Shortcuts pane options.shortcuts.deletekeymap.label=удалить -options.shortcuts.deletekeymap.dialog.label=Удалить привязку клавиш +options.shortcuts.deletekeymap.dialog.label=Удалить раскладку options.shortcuts.deletekeymap.dialog.title=Удалить options.shortcuts.duplicatekeymap.label=дубликат -options.shortcuts.duplicatekeymap.dialog.label=Имя для привязки клавиш -options.shortcuts.duplicatekeymap.keymapalreadyexists.label=Это имя уже есть, выберите другое -options.shortcuts.duplicatekeymap.dialog.title=имя привязки клавиш +options.shortcuts.duplicatekeymap.dialog.label=Выберите название новой раскладки +options.shortcuts.duplicatekeymap.keymapalreadyexists.label=Это название уже есть, выберите другое +options.shortcuts.duplicatekeymap.dialog.title=название раскладки options.shortcuts.resetkeymap.label=очистить -options.shortcuts.resetkeymap.dialog.label=Очистить привязку клавиш -options.shortcuts.resetkeymap.dialog.title=очистить привязку клавиш -options.shortcuts.keymap.label=Выбор привязки клавиш: +options.shortcuts.resetkeymap.dialog.label=Сбросить раскладку +options.shortcuts.resetkeymap.dialog.title=сбросить раскладку +options.shortcuts.keymap.label=Раскладка: +options.shortcuts.keymap.tooltip=Именованный набор кастомизированных комбинаций клавиш options.shortcuts.label=Комбинации клавиш -options.shortcuts.select.label=Команды: -options.shortcuts.select.tooltip=Можно выбрать общие комманды, макро-команды и команды расширений +options.shortcuts.select.label=Категория: +options.shortcuts.select.tooltip=Можно выбрать встроенные коммнды, макросы и команды плагинов options.shortcuts.name=Команда +options.shortcuts.actionset=Категория options.shortcuts.shortcut1=Основная комбинация клавиш -options.shortcuts.shortcut2=Алтернативная комбинация клавиш +options.shortcuts.shortcut2=Альтернативная комбинация клавиш options.shortcuts.filter.label=Фильтр: options.shortcuts.filter.tooltip=Показывать только команды, содержащие текст options.shortcuts.clear.label=Очистить @@ -1509,51 +1735,51 @@ grab-key.assigned-to.none=<нет> grab-key.assigned-to.prefix={0} префикс grab-key.clear=Очистить -grab-key.remove=Очистить +grab-key.remove=Удалить текущую -grab-key.remove-ask.title=Удалить привязку клавиш? +grab-key.remove-ask.title=Удалить комбинацию клавиш? grab-key.remove-ask.message=\ Вы не ввели комбинацию.\n\ - Очистить комбинацию клавиш для команды? + Хотите удалить текущую комбинацию клавиш? grab-key.duplicate-alt-shortcut.title=Дубликат grab-key.duplicate-alt-shortcut.message=\ Эта комбинация клавиш уже привязана к этой команде.\n\ - Пожалуйста выберите другую. + Пожалуйста, выберите другую. grab-key.duplicate-shortcut.title=Дубликат grab-key.duplicate-shortcut.message=\ Эта комбинация клавиш уже привязана к\n\ "{0}".\n\ \n\ - Изменить привязку? + Хотите изменить привязку? -grab-key.prefix-shortcut.title=Привязка невозможна +grab-key.prefix-shortcut.title=Недопустимая комбинация клавиш grab-key.prefix-shortcut.message=\ - Нельзя использовать выбранные клавиши,\n\ - так как они используются в последовательности для другой команды.\n\ - Пожалуйста, измените выбор. + Нельзя использовать эту комбинацию,\n\ + так как она является префиксом к другим комбинациям.\n\ + Пожалуйста, выберите другую. #}}} #{{{ Status bar pane options.status.label=Панель состояния options.status.visible=Показывать панель состояния options.status.plainview.visible=Показывать панель состояния в простом виде -options.status.foreground=текст панели состояния: +options.status.foreground=Текст панели состояния: options.status.background=Фон панели состояния: options.status.memory.foreground=Индикатор памяти: options.status.memory.background=Фон индикатора памяти: options.status.edit.title=Изменить элемент панели состояния -options.status.edit.labelRadioButton=этикетка -options.status.edit.widgetRadioButton=элемент -options.status.edit.labelLabel=Тип этикетки: -options.status.edit.widgetLabel=Выберите элемент: -options.status.caret.linenumber=Показывать номер строки с кареткой -options.status.caret.dot=Показывать смещение каретки от начала строки -options.status.caret.virtual=Показывать виртуальное смещение каретки от начала строки -options.status.caret.offset=Показывать смещение каретки от начала файла +options.status.edit.labelRadioButton=текст +options.status.edit.widgetRadioButton=виджет +options.status.edit.labelLabel=Введите текст: +options.status.edit.widgetLabel=Выберите виджет: +options.status.caret.linenumber=Показывать номер строки с курсором +options.status.caret.dot=Показывать смещение курсора от начала строки +options.status.caret.virtual=Показывать виртуальное смещение курсора от начала строки +options.status.caret.offset=Показывать смещение курсора от начала файла options.status.caret.bufferlength=Показывать длину файла -options.status.caret.title=Настройки индикаторов позиции каретки: +options.status.caret.title=Опции отображения позиции курсора: #}}} #{{{ Syntax Highlighting pane @@ -1577,26 +1803,28 @@ options.textarea.fontSubstWarning=ББез системных шрифтов нужны предпочитаемые шрифты. options.textarea.foreground=Цвет текста: options.textarea.background=Цвет фона: -options.textarea.caret=Каретка: +options.textarea.caret=Курсор: options.textarea.blinkCaret=мерцание options.textarea.blockCaret=кирпич options.textarea.thickCaret=толстая options.textarea.selection=Единичное выделение: -options.textarea.multipleSelection=Множественные выделения: +options.textarea.multipleSelection=Множественное выделение: options.textarea.selectionFg=Цвет выделения: -options.textarea.lineHighlight=Подсветка строки каретки: -options.textarea.structureHighlight=Подсветка паных элементов: +options.textarea.lineHighlight=Подсветка текущей строки: +options.textarea.structureHighlight=Подсветка парных элементов: options.textarea.eolMarkers=Маркеры конца строки: -options.textarea.wrapGuide=Маркеры пословного переноса: -options.textarea.electricBorders=Электрические бордюры (авто-прокрутка) +options.textarea.wrapGuide=Направляющие переноса: +options.textarea.pageBreaks=Разрывы страниц: +options.textarea.electricBorders=Электрические границы (авто-прокрутка) options.textarea.stdNextPrevWord=Переход к следующему/предыдущему слову включает пробелы options.textarea.antiAlias=Сглаживание шрифта -options.textarea.antiAlias.tooltip=Может замедлять дисплей на некоторых системах +options.textarea.antiAlias.tooltip=Может замедлять отображение на некоторых системах options.textarea.fracFontMetrics=Дробная размерность шрифта options.textarea.fracFontMetrics.tooltip=Не рекомендуется с суб-пиксельным сглаживанием -options.textarea.stripTrailingEOL=Прятать последнюю пустую строку (когда она есть) +options.textarea.stripTrailingEOL=Прятать последнюю пустую строку (если она есть) options.textarea.completeFromAllBuffers=Оканчивать слова из всех буферов (изначально \ поиск ограничен только текущим буфером) +options.textarea.insertCompletionWithDigit=Завершать слово при вводе соответствующей цифры (иначе цифра считается частью слова) options.textarea.lineSpacing.label=Дополнительная разрядка строк (в пикселях): #}}} @@ -1613,7 +1841,7 @@ options.toolbar.edit.title=Изменить элемент панели инструментов options.toolbar.edit.caption=Тип: options.toolbar.edit.separator=Разделитель -options.toolbar.edit.action=Команда или макро-команда: +options.toolbar.edit.action=Команда или макрос: options.toolbar.edit.builtin=Использовать встроенную иконку: options.toolbar.edit.file=Загрузить иконку из файла: options.toolbar.edit.choose=Выбрать @@ -1625,20 +1853,23 @@ #{{{ View pane options.view.label=Вид -options.view.viewLayout=Раскладка вида +options.view.viewLayout=Схема options.view.floatableToolbars=Плавающие панели options.view.alternateDockingLayout=Изменить положение дока -options.view.alternateToolBarLayout=Изменить положения панели инструментов -options.view.showFullPath=Показывать полный путь буфера в панели заголовка -options.view.showSearchbar=Всегда показывать понель поиска -options.view.beepOnSearchAutoWrap=Пищать при завороте поиска через границу +options.view.alternateToolBarLayout=Изменить положение панели инструментов +options.view.abbreviatePaths=Сокращать пути с помощью переменных окружения, если возможно +options.view.showFullPath=Показывать полный путь буфера в заголовке +options.view.showSearchbar=Всегда показывать панель поиска +options.view.beepOnSearchAutoWrap=Звуковой сигнал при автоматическом возврате поиска к началу options.view.showBufferSwitcher=Показывать переключатель буферов +options.view.bufferswitcher.sortBuffers=Сортировать переключатель буферов +options.view.bufferswitcher.sortByName=Сортировать переключатель буферов по имени файла, а не по пути options.view.bufferSwitcherMaxRowsCount=Число видимых рядов в переключателе буферов: options.view.sortBuffers=Сортировать наборы буферов options.view.sortByName=Сортировать наборы буферов по имени файла, а не по пути -options.view.fullScreenIncludesMenu=Показывать панель меню в полно-экранном режиме -options.view.fullScreenIncludesToolbar=Показывать панель инструментов в полно-экранном режиме -options.view.fullScreenIncludesStatus=Показывать панел статуся в полно-экранном режиме +options.view.fullScreenIncludesMenu=Показывать меню в полноэкранном режиме +options.view.fullScreenIncludesToolbar=Показывать панель инструментов в полноэкранном режиме +options.view.fullScreenIncludesStatus=Показывать панель статуса в полноэкранном режиме options.bufferset.scope=Охват набора буферов: #}}} @@ -1653,28 +1884,28 @@ options.browser.colors.add=Добавить options.browser.colors.remove=Удалить -options.browser.general.label=Общие настройки -options.browser.general.defaultPath=Изначальный путь: +options.browser.general.label=Общие +options.browser.general.defaultPath=Начальный путь: options.browser.general.defaultPath.favorites=Избранное -options.browser.general.defaultPath.home=Домашняя директория -options.browser.general.defaultPath.last=Последняя посещённая директория -options.browser.general.defaultPath.buffer=Директория текущего буфера -options.browser.general.defaultPath.working=Рабочая директория процесса jEdit +options.browser.general.defaultPath.home=Домашний каталог +options.browser.general.defaultPath.last=Последний посещённый каталог +options.browser.general.defaultPath.buffer=Каталог текущего буфера +options.browser.general.defaultPath.working=Рабочий каталог процесса jEdit options.browser.general.showMenubar=Показывать панель меню options.browser.general.showToolbar=Показывать панель инструментов options.browser.general.showIcons=Показывать иконки options.browser.general.showHiddenFiles=Показывать скрытые файлы -options.browser.general.sortIgnoreCase=Игнорировать размер букв при сортировке -options.browser.general.sortMixFilesAndDirs=Файлы и директории подряд -options.browser.general.doubleClickClose=Двойной щёлк по открытому файлу закрывает его -options.browser.general.currentBufferFilter=Фильтр для файловых диалогов \ - из расширения текущего буфера +options.browser.general.sortIgnoreCase=Игнорировать регистр при сортировке +options.browser.general.sortMixFilesAndDirs=Файлы и каталоги подряд +options.browser.general.doubleClickClose=Двойной щелчок по открытому файлу закрывает его +options.browser.general.currentBufferFilter=Фильтровать файловые диалоги \ + по расширению текущего буфера options.browser.general.useDefaultIcons=Использовать иконки по умолчанию #}}} #{{{ Browser Context Menu options.browser.custom.context.label=Контекстное меню -options.browser.custom.context.caption=Дополнительные элементы в меню обозревателя при правом щёлке: +options.browser.custom.context.caption=Дополнительные элементы в меню обозревателя при шелчке правой кнопкой: #}}} #{{{ Font selector @@ -1707,8 +1938,8 @@ #{{{ Plugin options dialog plugin-options.title=Настройки -options.plugins.label=Модули -options.no-plugins.label=Нет настроек модуля +options.plugins.label=Плагины +options.no-plugins.label=У плагина нет настроек #}}} #{{{ Help viewer @@ -1716,8 +1947,7 @@ helpviewer.loading=Загрузка... helpviewer.back.label=Назад helpviewer.forward.label=Вперёд -# FIXME: missing translation -helpviewer.copy-link.label=Copy link to clipboard +helpviewer.copy-link.label=Копировать ссылку в буфер обмена helpviewer.toc.loading=Загрузка... helpviewer.toc.label=Содержание @@ -1728,8 +1958,8 @@ helpviewer.toc.copying=Всеобщая Публичная Лицензия GNU helpviewer.toc.copying-doc=Лицензия Свободной Документации GNU helpviewer.toc.copying-apache=Лицензия Apache -helpviewer.toc.copying-plugins=Поправка лицензирования модуля -helpviewer.toc.plugins=Модули +helpviewer.toc.copying-plugins=Поправка к лицензированию плагинов +helpviewer.toc.plugins=Плагины helpviewer.toc.online-apidocs=Спраочник программного интерфейса jEdit (интернет) helpviewer.search.label=Искать @@ -1744,37 +1974,37 @@ tip.show-next-time=Показывать советы при старте tip.next-tip=Следующий совет -tip.not-found=Директория с документацией/советами не найдена +tip.not-found=Каталог с документацией/советами не найден #}}} #{{{ Activity log -log-viewer.title=Записи активности -log-viewer.caption=Полный текст записей сохранён в {0}. +log-viewer.title=Журнал активности +log-viewer.caption=Полный текст журнала сохранён в {0}. log-viewer.copy=Копировать -log-viewer.tail.label=Окончание +log-viewer.tail.label=В конец #}}} #{{{ Marker Viewer -view-markers.label=Просмотр закладок($w) -view-markers.title=Закладки +view-markers.label=Просмотр меток($w) +view-markers.title=Метки #}}} #{{{ I/O progress monitor io-progress-monitor.title=Монитор ввода/вывода io-progress-monitor.caption={0} запросов в ожидании. -io-progress-monitor.idle=Бездействующий под-процесс +io-progress-monitor.idle=Бездействующий поток io-progress-monitor.abort=Прервать #{{{ I/O abort dialog box abort.title=Прервать ввод/вывод -abort.message=Действительно прервать исполняемый запрос ввода/вывода?\n\ +abort.message=Вы уверены, что хотите прервать исполняемый запрос ввода/вывода?\n\ Если вы прервёте запись файла, данные могут быть потеряны. #}}} #}}} #{{{ Task monitor -task-monitor.title=Обозреватель подпроцессов +task-monitor.title=Монитор заданий #}}} #{{{ VFS browser @@ -1791,8 +2021,8 @@ vfs.browser.name=Имя vfs.browser.type=Тип vfs.browser.type.file=Файл -vfs.browser.type.directory=Директория -vfs.browser.type.filesystem=Фаиловая система +vfs.browser.type.directory=Каталог +vfs.browser.type.filesystem=Файловая система vfs.browser.status=Статус vfs.browser.status.no=Нет доступа vfs.browser.status.ro=Только чтение @@ -1801,8 +2031,8 @@ vfs.browser.size=Размер vfs.browser.modified=Последнее изменение -vfs.browser.file_filter.glob=Фильтр по шаблону -vfs.browser.file_filter.dir_only=Только директории +vfs.browser.file_filter.glob=Шаблон Фильтра файлов +vfs.browser.file_filter.dir_only=Только каталоги #{{{ Actions vfs.browser.browse-window.label=Просмотр в новом окне @@ -1810,26 +2040,26 @@ vfs.browser.close.label=Закрыть vfs.browser.copy-path.label=Копия vfs.browser.delete.label=Удалить... -vfs.browser.home.label=Домашняя директория +vfs.browser.home.label=Домашний каталог vfs.browser.properties.label=Свойства -vfs.browser.properties.title=Свойства файля/директории +vfs.browser.properties.title=Свойства файла/каталога vfs.browser.insert.label=Вставить -vfs.browser.new-directory.label=Новая директория... +vfs.browser.new-directory.label=Новый каталог... vfs.browser.new-file.label=Новый файл vfs.browser.open.label=Открыть -vfs.browser.open-desktop.label=Отркыть на Столе($D) +vfs.browser.open-desktop.label=Открыть на рабочем столе($D) vfs.browser.other-encoding-2.label=Открыть ({0})... vfs.browser.other-encoding.label=Ещё... -vfs.browser.reload.label=Перегрузить директорию +vfs.browser.reload.label=Перезагрузить каталог vfs.browser.rename.label=Переименовать... -vfs.browser.roots.label=Корневая директория -vfs.browser.search-directory.label=Поиск в директории... +vfs.browser.roots.label=Корневой каталог +vfs.browser.search-directory.label=Поиск в каталоге... vfs.browser.show-hidden-files.label=Показывать скрытые файлы -vfs.browser.synchronize.label=Директория текущего буфера -vfs.browser.up.label=Содержащая директория +vfs.browser.synchronize.label=Каталог текущего буфера +vfs.browser.up.label=Родительский каталог vfs.browser.paste.label=Вставить -vfs.browser.previous.label=Предыдущая директория -vfs.browser.next.label=Следующая директория +vfs.browser.previous.label=Предыдущий каталог +vfs.browser.next.label=Следующий каталог #}}} #{{{ Tool bar @@ -1842,16 +2072,16 @@ vfs.browser.commands.encoding.auto-detect=Авто-определение vfs.browser.open-in.label=Открыть в -vfs.browser.open-view.label=Новом виде -vfs.browser.open-plain-view.label=Новом простом виде -vfs.browser.open-split.label=Новом под-окне +vfs.browser.open-view.label=Новом окне +vfs.browser.open-plain-view.label=Новом упрощенном окне +vfs.browser.open-split.label=Новой текстовой области #}}} #{{{ Plugins menu -vfs.browser.plugins.label=Модули($P) -vfs.browser.plugins.plugin-manager.label=Управление модулями... -vfs.browser.plugins.plugin-options.label=Настройки модуля... -vfs.browser.plugins.no-plugins.label=Нет модулей +vfs.browser.plugins.label=Плагины($P) +vfs.browser.plugins.plugin-manager.label=Менеджер плагинов... +vfs.browser.plugins.plugin-options.label=Настройки плагинов... +vfs.browser.plugins.no-plugins.label=Плагины не установлены #}}} #{{{ Favorites menu @@ -1868,62 +2098,62 @@ vfs.browser.dialog.filename.mnemonic=f #{{{ Dialogs -vfs.browser.bad-filter.title=Не пригодный фильтр -vfs.browser.bad-filter.message=Фильтр {0} не пригоден ({1}) +vfs.browser.bad-filter.title=Некорректный фильтр +vfs.browser.bad-filter.message=Фильтр {0} не является корректным ({1}) -vfs.browser.recurse-favorites.title=Невозможно добавить избранное само в себя +vfs.browser.recurse-favorites.title=Невозможно добавить из избранного в само себя vfs.browser.recurse-favorites.message=Список избранного не может быть добавлен сам в себя. vfs.browser.delete-confirm.title=Подтверждение удаления файла vfs.browser.delete-confirm.message=Действительно удалить {1}?\n\n\ vfs.browser.delete-favorites.title=Удаление из избранного -vfs.browser.delete-favorites.message=Действительно удалить следующие файлы из избранного?\n\n\ +vfs.browser.delete-favorites.message=Вы уверены, что хотите удалить следующие файлы из избранного?\n\n\ vfs.browser.rename.title=Переименование файла vfs.browser.rename.message=Новое имя для {0}: -vfs.browser.mkdir.title=Новая директория -vfs.browser.mkdir.message=Имя (или путь) для новой директории: +vfs.browser.mkdir.title=Новый каталог +vfs.browser.mkdir.message=Имя (или путь) для нового каталога: #}}} #}}} #{{{ I/O status messages vfs.status.load=Загрузка {0} -vfs.status.load-markers=Загрузка закладок для {0} +vfs.status.load-markers=Загрузка меток для {0} vfs.status.save=Сохранение {0} -vfs.status.save-markers=Сохранение закладок для {0} -vfs.status.autosave=Авто-сохранение {0} -vfs.status.listing-directory=Чтение {0} +vfs.status.save-markers=Сохранение меток для {0} +vfs.status.autosave=Автосохранение {0} +vfs.status.listing-directory=Чтение каталога {0} vfs.status.deleting=Удаление {0} vfs.status.renaming=Переименование {0} в {1} #}}} #{{{ Plugin manager -plugin-manager.title=Управление модулями +plugin-manager.title=Менеджер плагинов plugin-manager.hide-libraries=Скрыть библиотеки plugin-manager.mgr-options=Настройки скачивания... -plugin-manager.plugin-options=Настройки модуля... +plugin-manager.plugin-options=Настройки плагинов... plugin-manager.done=Закрыть -plugin-manager.remove-confirm.title=Удалить модули -plugin-manager.remove-confirm.message=Действительно удалить следующие модули? +plugin-manager.remove-confirm.title=Удалить плагины +plugin-manager.remove-confirm.message=Вы уверены, что хотите удалить следующие плагины? -plugin-manager.dependency.title=Зависимость модуля -plugin-manager.dependency.message={0} требуется для следующих модулей.\n\ - Удаление {0} также удалит следующие модули: - -plugin-manager.remove-dependencies.title=Зависимость модуля -plugin-manager.remove-dependencies.message=Удалённые модули требуются для следующих модулей.\n\ - Их удаление также удалит следующие модули: +plugin-manager.dependency.title=Зависимость плагина +plugin-manager.dependency.message={0} требуется для следующих плагинов.\n\ + Удаление {0} также удалит следующие плагины: + +plugin-manager.remove-dependencies.title=Зависимость плагина +plugin-manager.remove-dependencies.message=Удалённые плагины требуются для следующих плагинов.\n\ + Их удаление также удалит следующие плагины: plugin-manager.cleanup.label=Очистка -plugin-manager.cleanup.title=Очистка данных модуля -plugin-manager.cleanup.message=Удалить данные следующих модулей: +plugin-manager.cleanup.title=Очистка данных плагина +plugin-manager.cleanup.message=Удалить данные следующих плагинов: plugin-manager.noOrphan.label=Поиск сирот plugin-manager.noOrphan.title=Осиротевших jar-файлов не найдено @@ -1931,31 +2161,32 @@ plugin-manager.findOrphan.label=Найти сирот plugin-manager.findOrphan.title=Найти осиротевщие jar-файлы -plugin-manager.findOrphan.message=Следующие jar-файлы не принадлежат ни к одному модулю.\n\ - Удалить их?\n (Внимание, они могут динамически грузиться в такие модули \n\ +plugin-manager.findOrphan.message=Следующие jar-файлы не принадлежат ни одному плагину.\n\ + Удалить их?\n (Внимание, они могут динамически грузиться в такие плагины \n\ как JDBC драйверы): install-plugins.depend.title=Требуемая зависимость -install-plugins.depend.message=Один из устанавливаемых модулей требует \n\ - дополнительных модулей, которые будут установлены автоматически, в случае \n\ +install-plugins.depend.message=Один из устанавливаемых плагинов требует \n\ + дополнительных плагинов, которые будут установлены автоматически, в случае \n\ если Вы решите продолжить. plugin-manager.status.loaded=Загружен +plugin-manager.status.disabled=Не поддерживается plugin-manager.status.not-loaded=Не загружен plugin-manager.status.error=Ошибка plugin-manager.list-download-connect=Соединение с plugins.jedit.org -plugin-manager.list-download=Скачивается список модулей с plugins.jedit.org -plugin-manager.list-download.need-password.title=Прокси HTTP требует пароль -plugin-manager.list-download.need-password.message=Прокси HTTP требует пароль.\n\ -Пожалуйста введите имя и пароль в "Настройках скачивания". -plugin-manager.list-download.disconnected.title=Ошибка скачивания списка модулей -plugin-manager.list-download.disconnected.message=Невозможно скачать список модулей:\n\ -сервер {0} недоступен. Проверте Ваше соединение... -plugin-manager.list-download.generic-error.title=Ошибка скачивания списка модулей -plugin-manager.list-download.generic-error.message=Ошибка скачивания списка модулей:\n\ +plugin-manager.list-download=Скачивается список плагинов с plugins.jedit.org +plugin-manager.list-download.need-password.title=HTTP-прокси требует пароль +plugin-manager.list-download.need-password.message=HTTP-прокси требует пароль.\n\ +Пожалуйста задайте имя и пароль в "Настройках скачивания". +plugin-manager.list-download.disconnected.title=Ошибка скачивания списка плагинов +plugin-manager.list-download.disconnected.message=Невозможно скачать список плагинов:\n\ +сервер {0} недоступен. Проверьте Ваше соединение... +plugin-manager.list-download.generic-error.title=Ошибка скачивания списка плагинов +plugin-manager.list-download.generic-error.message=Ошибка скачивания списка плагинов:\n\ {0} - {1} -plugin-manager.filterField=Показывать только модули с именем, содержащим следующий текст +plugin-manager.filterField=Показывать только плагины с именем, содержащим следующий текст #{{{ Plugin management manage-plugins.title=Управление @@ -1969,38 +2200,37 @@ manage-plugins.remove=Удалить... manage-plugins.help=Помощь... -plugin-load-error.message=Невозможно загрузить модуль -plugin-load-error.title=Ошибка при загрузке модуля +plugin-load-error.message=Невозможно загрузить плагин +plugin-load-error.title=Ошибка загрузки плагина #}}} #{{{ Plugin installation -install-plugins.title=Добавление +install-plugins.title=Установка install-plugins.info.name=Имя install-plugins.info.size=Размер install-plugins.info.releaseDate=Дата выпуска install-plugins.info.version=Версия install-plugins.info.category=Категория +install-plugins.info.author=Автор +install-plugins.info.released=Выпущен +install-plugins.info.depends=Зависит от -install-plugins.totalSize=Всего модулей: {0}, размер: {1} +install-plugins.totalSize=Всего плагинов: {0}, размер: {1} install-plugins.select-all=Выбрать все install-plugins.install=Установить install-plugins.show-updates=Показать обновления -install-plugins.info=Автор: {0}\n\ - Выпущен: {1}\n\ - {2} - update-plugins.title=Обновление plugin-manager.progress=Скачивается {0} с зеркала {1} -plugin-manager.progress.title=Установка модулей -plugin-manager.progress.stop=Стоп +plugin-manager.progress.title=Установка плагинов +plugin-manager.progress.stop=Остановить #}}} #{{{ Plugin remove error -plugin-manager.remove-failed.title=Удаление не успешно -plugin-manager.remove-failed.message=Модуль {0}\n\ +plugin-manager.remove-failed.title=Не получилось удалить +plugin-manager.remove-failed.message=Плагин {0}\n\ не может быть удалён. #}}} @@ -2018,23 +2248,24 @@ fileprop.okBtn=OK fileprop.cancelBtn=Отмена fileprop.selectedFiles=Выбранные файлы -fileprop.selectedDirectories=Выбранные директории +fileprop.selectedDirectories=Выбранные каталоги #}}} #{{{ Activity log viewer -log-viewer.dialog.title=Настройки записи активности +log-viewer.dialog.title=Настройки журнала активности log-viewer.settings.label=Настройки log-viewer.message.label=Вид сообщений: log-viewer.message.debug.label=Отладка log-viewer.message.message.label=Сообщение -log-viewer.message.notice.label=Объявление -log-viewer.message.warning.label=Преддупреждение +log-viewer.message.notice.label=Уведомление +log-viewer.message.warning.label=Предупреждение log-viewer.message.error.label=Ошибка +debug.beepOnOutput.label=Звуковой сигнал при выводе #}}} logs-remove-all-errors.label=Удалить все ошибки -taskmanager.remainingtasks.label=Оствщиеся задания: {0} +taskmanager.remainingtasks.label=Осталось заданий: {0} #{{{ Statusbar Widgets # the widgets should have a label and a sample. @@ -2053,7 +2284,7 @@ statusbar.indent.sample=F statusbar.multiSelect.label=Режим множественного выделения (например:m) statusbar.multiSelect.sample=m -statusbar.rectSelect.label=Режим прамоуголььного выделения (например:r) +statusbar.rectSelect.label=Режим прямоугольного выделения (например:r) statusbar.rectSelect.sample=r statusbar.overwrite.label=Режим вставки (например:o) statusbar.overwrite.sample=o @@ -2069,13 +2300,13 @@ statusbar.selection-length.sample=192 statusbar.last-modified.label=Дата последнего изменения на диске (например:12/03/11 16:43) statusbar.last-modified.sample=12/03/11 16:43 -statusbar.task-monitor.label=Под-процессы (например: 7 проц.) -statusbar.task-monitor.tooltip=Щёлкните для окна со списком под-процессов -statusbar.task-monitor.sample=7 проц. -statusbar.task-monitor.template={0} проц. +statusbar.task-monitor.label=Монитор заданий (например: 7 заданий) +statusbar.task-monitor.tooltip=Щёлкните чтобы увидеть выполняющиеся задания в доке +statusbar.task-monitor.sample=7 заданий +statusbar.task-monitor.template={0} заданий #}}} -killring.load-memoryerror.message=Невозможно загрузить прежде удалённый текст. Пожалуйста увеличте выделенную память.
    \ +killring.load-memoryerror.message=Невозможно загрузить прежде удалённый текст. Пожалуйста, увеличьте выделенную память.
    \ Нажмите старт для запуска jEdit, или
    стоп что отменить запуск и изменить настройки.
    Также можно удалить файл истории и запустить jEdit killring.load-memoryerror.title=Ошибка памяти killring.start=старт @@ -2089,8 +2320,8 @@ #{{{ Properties used by macros #{{{ common -macro.rs.general.ErrorNotEditableDialog.title=Разрешение записи -macro.rs.general.ErrorNotEditableDialog.message=Буфер неизменяем! +macro.rs.general.ErrorNotEditableDialog.title=Права на запись +macro.rs.general.ErrorNotEditableDialog.message=Буфер нельзя редактировать! #}}} #{{{ Clipboard @@ -2110,11 +2341,14 @@ #{{{ Editing #{{{ Go to column -macro.rs.GoToColumn.label=Столбец (межды 1 и {0}): +macro.rs.GoToColumn.label=Столбец (между 1 и {0}): #}}} +# Go To Offset +macro.rs.GoToOffset.label=Смещение (между 0 и {0}): + #{{{ Key Words to Uppercase -macro.rs.KeywordsToUpperCase.ConvertedKeywords.message=Преобразовано слво верхний регистр +macro.rs.KeywordsToUpperCase.ConvertedKeywords.message=Преобразовано в верхний регистр #}}} #{{{ Mode Switcher @@ -2135,18 +2369,18 @@ #{{{ Files #{{{ Browse Directory -macro.rs.BrowseDirectory.DirectoryBrowse.label=Показывать директорию: +macro.rs.BrowseDirectory.DirectoryBrowse.label=Показывать каталог: #}}} #{{{ Buffer Switcher macro.rs.BufferSwitcher.OpenBuffers.label=открытые буферы macro.rs.BufferSwitcher.QuickHelp.label=[ENTER] активировать; [SPACE] активировать, продолжать диалог; [DEL] Закрыть диалог -macro.rs.BufferSwitcher.Help1.label=Помощь для макро-команды "Переключатель буферов": +macro.rs.BufferSwitcher.Help1.label=Помощь для макроса "Переключатель буферов": macro.rs.BufferSwitcher.Help2.label=DELETE закрывает выбранный буфер. macro.rs.BufferSwitcher.Help3.label=ENTER активирует выбранный буфер, закрывает диалог. macro.rs.BufferSwitcher.Help4.label=ESCAPE закрывает диалог. macro.rs.BufferSwitcher.Help5.label=SPACE активирует выбранный буфер, не закрывает диалог. -macro.rs.BufferSwitcher.Help6.label=Внимание: Этот диалог будет показан только однажды +macro.rs.BufferSwitcher.Help6.label=Внимание: Этот диалог будет показан только один раз #}}} #{{{ Delete Current @@ -2156,12 +2390,12 @@ #}}} #{{{ Glob Close -macro.rs.GlobClose.GlobPattern.label=Шаблон: +macro.rs.GlobClose.GlobPattern.label=Шаблон (например *.txt or /usr/include/*): macro.rs.GlobClose.ErrorGlobPattern.error=Ошибка в шаблоне: #}}} #{{{ Next Dirty Buffer -macro.rs.NextDirtyBuffer.NoOtherBufferDirty.message=Нет других измненённых буферов +macro.rs.NextDirtyBuffer.NoOtherBufferDirty.message=Нет других изменённых буферов macro.rs.NextDirtyBuffer.NoBufferDirty.message=Нет изменённых буферов #}}} @@ -2170,8 +2404,8 @@ #}}} #{{{Toggle ReadOnly -macro.rs.ToggleReadOnly.OnlyLocalFiles.error=Это макро работает только с локальными файлами. -macro.rs.ToggleReadOnly.OnlyWindowsUnixMacos.error=Это макро работает только с Windows, Unix, & MacOS X. +macro.rs.ToggleReadOnly.OnlyLocalFiles.error=Этот макрос работает только с локальными файлами. +macro.rs.ToggleReadOnly.OnlyWindowsUnixMacos.error=Этот макрос работает только с Windows, Unix и MacOS X. #}}} #}}} @@ -2187,12 +2421,12 @@ #{{{ Java #{{{ Create Constructor -macro.rs.CreateConstructor.UnevenNumber.message=Неровное количество типов имён и переменных. +macro.rs.CreateConstructor.UnevenNumber.message=Несоответствующее количество имён типов и переменных. #}}} #{{{ Get Package Name -macro.rs.GetPackageName.NotWorking1.error=Эта макро-команда не работает когда интерпретатор Java -macro.rs.GetPackageName.NotWorking2.error=загрузил jEdit с помощью '-jar' опции командной строки. +macro.rs.GetPackageName.NotWorking1.error=Этот макрос не работает когда интерпретатор Java +macro.rs.GetPackageName.NotWorking2.error=загружает jEdit с параметром '-jar'. macro.rs.GetPackageName.NotFind.error=Не найдено имя пакета. #}}} @@ -2201,10 +2435,10 @@ #}}} #{{{Make Get and Set Methods -macro.rs.MakeGetAndSetMethods.GenerateCode.label=Генерироватьь код -macro.rs.MakeGetAndSetMethods.CreateGetMethods.label=Создать методы доступа (Get) -macro.rs.MakeGetAndSetMethods.CreateSetMethods.label=Создать методы изменения (Set) -macro.rs.MakeGetAndSetMethods.CreateGetandSetMethods.label=Sozdat= metody Get i Set +macro.rs.MakeGetAndSetMethods.GenerateCode.label=Сгенерировать код +macro.rs.MakeGetAndSetMethods.CreateGetMethods.label=Создать геттеры +macro.rs.MakeGetAndSetMethods.CreateSetMethods.label=Создать сеттеры +macro.rs.MakeGetAndSetMethods.CreateGetandSetMethods.label=Создать геттеры и сеттеры #}}} #}}} @@ -2212,8 +2446,8 @@ #{{{ Misc #{{{ Buffer to HyperSearch Results - HyperSearch Results to Buffer -macro.rs.HyperSearchResults.WindowNotOpen.error=Окно "Результаты глобльного поиска" не открыто. -macro.rs.HyperSearchResults.NotMatch.error=Нет результов глобального ппоиска. +macro.rs.HyperSearchResults.WindowNotOpen.error=Окно "Результаты гипер-поиска" не открыто. +macro.rs.HyperSearchResults.NotMatch.error=Нет результов глобального поиска. #}}} #{{{ Debug BufferSets @@ -2234,10 +2468,10 @@ macro.rs.DisplayAbbreviations.AbbreviationList.label=Список сокращений macro.rs.DisplayAbbreviations.CallingWTTNB.label=вызов writeTableToNewBuffer для macro.rs.DisplayAbbreviations.SizeVector.label=размер вектора: -macro.rs.DisplayAbbreviations.jEditAbbreviationTable.label=jEdit Abbreviation Table -macro.rs.DisplayAbbreviations.AbbreviationSet.label=Abbreviation set: -macro.rs.DisplayAbbreviations.AbbreviationExpansion.label=Abbreviation Expansion -macro.rs.DisplayAbbreviations.NoAbbreviations.label=<< No abbreviations >> +macro.rs.DisplayAbbreviations.jEditAbbreviationTable.label=Таблица сокращений jEdit +macro.rs.DisplayAbbreviations.AbbreviationSet.label=Набор сокращений: +macro.rs.DisplayAbbreviations.AbbreviationExpansion.label=Разворачивание сокращения +macro.rs.DisplayAbbreviations.NoAbbreviations.label=<< Нет сокращений >> #}}} #{{{ Display Actions @@ -2247,7 +2481,7 @@ #}}} #{{{ Display Character Code -macro.rs.DisplayCharacterCode.CharacterAtCaret.label=Символ под кареткой: +macro.rs.DisplayCharacterCode.CharacterAtCaret.label=Символ под курсором: #}}} #{{{ Display Shorcuts @@ -2258,8 +2492,6 @@ macro.rs.DisplayShortcuts.Close.label=Close macro.rs.DisplayShortcuts.WriteToBuffer.label=Write to buffer macro.rs.DisplayShortcuts.ShortcutList.label=Keyboard shortcut list -macro.rs.DisplayShortcuts.Center.label=Center -macro.rs.DisplayShortcuts.South.label=South #}}} #{{{ Hex Convert @@ -2272,11 +2504,6 @@ #{{{ Make Bug Report macro.rs.MakeBugReport.OpeningActivityLog.error=Error opening Activity Log. macro.rs.MakeBugReport.UsefulEntriesForReport.label=Activity log entries that might be useful in a bug report:\n\n. -macro.rs.MakeBugReport.MessagejEdit.label=[message] jEdit: -macro.rs.MakeBugReport.NoticejEdit.label=[notice] jEdit: -macro.rs.MakeBugReport.NoticeJarClassLoader.label=[notice] JARClassLoader: -macro.rs.MakeBugReport.MessagejEditStartupComplete.label=[message] jEdit: Startup complete -macro.rs.MakeBugReport.Error.label=[error] macro.rs.MakeBugReport.ReadingActivityLog.error=Error reading Activity Log #}}} @@ -2329,11 +2556,11 @@ #}}} #{{{ Insert Date -macro.rs.InsertDate.InternetTime.label=Internet Time +macro.rs.InsertDate.InternetTime.label=Время Интернета #}}} #{{{ Insert Tag -macro.rs.InsertTag.EnterNameTag.label=Enter name of tag: +macro.rs.InsertTag.EnterNameTag.label=Введите название тега: #}}} #{{{ Line_Filter @@ -2354,8 +2581,8 @@ macro.rs.LineFilter.SummaryDeleted.label=Строки удалены! macro.rs.LineFilter.SummaryWritten.label=Строки записаны в новый буфер. -macro.rs.LineFilter.ErrorRegexpDialog.title=Не годное регулярное выражение -macro.rs.LineFilter.ErrorRegexpDialog.message=Негодное регулярное выражение! +macro.rs.LineFilter.ErrorRegexpDialog.title=Неверное регулярное выражение +macro.rs.LineFilter.ErrorRegexpDialog.message=Неверное регулярное выражение! #}}} #{{{ Next Char @@ -2363,7 +2590,7 @@ #}}} #{{{ Reverse Lines -macro.rs.ReverseLines.NotWorkingRectangularSelection.error=Эта макро-команда не работает с прямоугольным вуделением. +macro.rs.ReverseLines.NotWorkingRectangularSelection.error=Этот макрос не работает с прямоугольным выделением. #}}} #{{{ Single Space Buffer @@ -2389,7 +2616,7 @@ macros.folder.Clipboard.label=Буфер обмена Clipboard/Copy_Lines.label=Копировать строки -Clipboard/Copy_Lines_Containing.label=Копироватьь строки содержащие +Clipboard/Copy_Lines_Containing.label=Копировать строки содержащие Clipboard/Copy_Visible_Lines.label=Копировать видимые строки Clipboard/Cut_Lines.label=Вырезать строки Clipboard/Cut_Lines_Containing.label=Вырезать строки содержащие @@ -2399,42 +2626,64 @@ #{{{ Editing macros.folder.Editing.label=Редактировать -Editing/Duplicate_Lines_Above.label=Дублировать строки наверху -Editing/Duplicate_Lines_Below.label=Дублировать строки внизу -Editing/Emacs_Ctrl-K.label=Emacs Ctrl-K -Editing/Emacs_Next_Line.label=Emacs Next Line -Editing/Emacs_Previous_Line.label=Emacs Previous Line +Editing/Duplicate_Lines_Above.label=Дублировать строки сверху +Editing/Duplicate_Lines_Below.label=Дублировать строки снизу Editing/Go_to_Column.label=Перейти к столбцу Editing/Greedy_Backspace.label=Жадно Backspace Editing/Greedy_Delete.label=Жадно Delete Editing/Greedy_Left.label=Жадно Влево Editing/Greedy_Right.label=Жадно Вправо -Editing/Keywords_to_Upper_Case.label=Keywords to Upper Case +Editing/Keywords_to_Upper_Case.label=Ключевые слова в верхний регистр Editing/Mode_Switcher.label=Переключатель режима Editing/Move_Lines_Down.label=Передвинуть строки вверх Editing/Move_Lines_Up.label=Передвинуть строки вниз Editing/Open_Line_Above.label=Открыть строку сверху Editing/Open_Line_Below.label=Открыть строку снизу -Editing/Toggle_Fold.label=Переключитьь свёртку +Editing/Toggle_Fold.label=Переключить свёртку +#}}} + +#{{{ Emacs +macros.folder.Emacs.label=Emacs +Emacs/Emacs_Align_Decls.label=Emacs Align Decls +Emacs/Emacs_Backward_Sentence.label=Emacs Backward Sentence +Emacs/Emacs_Capitalize_Word.label=Emacs Capitalize Word +Emacs/Emacs_Center_Line.label=Emacs Center Line +Emacs/Emacs_Ctrl-K.label=Emacs Ctrl-K +Emacs/Emacs_Downcase_Word.label=Emacs Downcase Word +Emacs/Emacs_Exchange_Point_and_Mark.label=Emacs Exchange Point and Mark +Emacs/Emacs_Fixup_Whitespace.label=Emacs Fixup Whitespace +Emacs/Emacs_Forward_Sentence.label=Emacs Forward Sentence +Emacs/Emacs_Insert_File.label=Emacs Insert File +Emacs/Emacs_Kill_Line.label=Emacs Kill Line +Emacs/Emacs_Kill_Region.label=Emacs Kill Region +Emacs/Emacs_Kill_Ring_Save.label=Emacs Kill Ring Save +Emacs/Emacs_Kill_Sentence.label=Emacs Kill Sentence +Emacs/Emacs_Next_Line.label=Emacs Next Line +Emacs/Emacs_Open_Line.label=Emacs Open Line +Emacs/Emacs_Previous_Line.label=Emacs Previous Line +Emacs/Emacs_Set_Mark.label=Emacs Set Mark +Emacs/Emacs_Set_Wrap.label=Emacs Set Wrap +Emacs/Emacs_Transpose_Chars.label=Emacs Transpose Chars +Emacs/Emacs_Transpose_Lines.label=Emacs Transpose Lines +Emacs/Emacs_Upcase_Word.label=Emacs Upcase Word #}}} #{{{ Files macros.folder.Files.label=Файлы -Files/Browse_Buffer_Directory.label=Показать директорию буфера -Files/Browse_Directory.label=Показать Директорию -Files/Buffer_Switcher.label=Переключатель Буфера -Files/Close_All_Except_Active.label=Закрыть все кроме активного +Files/Browse_Buffer_Directory.label=Показать каталог буфера +Files/Browse_Directory.label=Показать Каталог +Files/Buffer_Switcher.label=Переключатель буфера Files/Copy_Name_to_Clipboard.label=Копировать имя в буфер обмена Files/Copy_Path_to_Clipboard.label=Копировать путь в буфер обмена Files/Delete_Current.label=Удалить текущий Files/Duplicate_Buffer.label=Дублировать буфер Files/Glob_Close.label=Закрыть по шаблону -Files/Insert_Selection.label=Вставить Выбор +Files/Insert_Selection.label=Вставить выделение Files/Next_Dirty_Buffer.label=Следующий изменённый буфер Files/Open_Path.label=Открыть путь -Files/Open_Selection.label=Открыть выбор -Files/Send_Buffer_To_Next_Split.label=Переслть буфер в следующее под-окно +Files/Open_Selection.label=Открыть выделение +Files/Send_Buffer_To_Next_Split.label=Отправить буфер в следующую область Files/Toggle_ReadOnly.label=Переключить "Только для Чтения" #}}} @@ -2444,8 +2693,8 @@ Interface/Decrease_Font_Size.label=Уменьшить размер шрифта Interface/Increase_Font_Size.label=Увеличить размер шрифта Interface/Open_Context_Menu.label=Открыть контекстное меню -Interface/Reset_TextArea.label=Очистить Текстовую область -Interface/Splitpane_Grow.label=Ивеличить разделение +Interface/Reset_TextArea.label=Сбросить текстовую область +Interface/Splitpane_Grow.label=Расширить текстовую область Interface/Toggle_Bottom_Docking_Area.label=Переключить нижний док Interface/Toggle_Left_Docking_Area.label=Переключить левый док Interface/Toggle_Right_Docking_Area.label=Переключить правый док @@ -2466,28 +2715,28 @@ #{{{ Misc macros.folder.Misc.label=Разное -Misc/Buffer_to_HyperSearch_Results.label=Буффер в глобальный поиск -Misc/Debug_BufferSets.label=Отладка наборов буферров +Misc/Buffer_to_HyperSearch_Results.label=Буфер в результаты гипер-поиска +Misc/Debug_BufferSets.label=Отладка наборов буферов Misc/Display_Abbreviations.label=Показать сокращения -Misc/Display_Actions.label=Показатьь действия +Misc/Display_Actions.label=Показать действия Misc/Display_Character_Code.label=Показать код символа -Misc/Display_Shortcuts.label=Показать клавиши +Misc/Display_Shortcuts.label=Показать комбинации клавиш Misc/Evaluate_Buffer_in_BeanShell.label=Выполнить BeanShell из буфера Misc/Hex_Convert.label=Hex Convert -Misc/HyperSearch_Results_to_Buffer.label=Глобальнйи поиск в буфер -Misc/Make_Bug_Report.label=Make Bug Report -Misc/Run_Script.label=Run Script -Misc/Show_Threads.label=Show Threads +Misc/HyperSearch_Results_to_Buffer.label=Результаты гипер-поиска в буфер +Misc/Make_Bug_Report.label=Создать отчет об ошибках +Misc/Run_Script.label=Запустить скрипт +Misc/Show_Threads.label=Показать потоки #}}} #{{{ Properties macros.folder.Properties.label=Свойства Properties/Create_Plugin_Announcement.label=Create Plugin Announcement -Properties/Insert_Buffer_Properties.label=Insert Buffer Properties +Properties/Insert_Buffer_Properties.label=Вставить свойства буфера Properties/jEdit_Properties.label=Свойства jEdit -Properties/Look_and_Feel_Properties.label=Look and Feel Properties -Properties/System_Properties.label=свойства системы +Properties/Look_and_Feel_Properties.label=Свойства Look and Feel +Properties/System_Properties.label=Свойства системы #}}} #{{{ Text @@ -2495,13 +2744,14 @@ Text/Add_Prefix_and_Suffix.label=Добавить префикс и суффикс Text/Color_Picker.label=Выбор цвета -Text/Compose_Tag.label=Compose Tag +Text/Compose_Tag.label=Составить тег Text/Duplicate_Line.label=Дублировать строку Text/Insert_Date.label=Вставить дату -Text/Insert_Tag.label=Insert Tag +Text/Insert_Tag.label=Вставить тег Text/Line_Filter.label=Фильтр строк Text/Next_Char.label=Следующий символ -Text/Reverse_Lines.label=Обратить порядок строк +Text/Reverse_Lines.label=Развернуть строки +Text/Reverse_Selection.label=Развернуть выделение Text/Single_Space_Buffer.label=Буфер в один интервал #}}} diff -Nru jedit-5.4.0+dfsg/org/jedit/localization/jedit_zh.props jedit-5.5.0+dfsg/org/jedit/localization/jedit_zh.props --- jedit-5.4.0+dfsg/org/jedit/localization/jedit_zh.props 2017-03-18 13:30:24.000000000 +0000 +++ jedit-5.5.0+dfsg/org/jedit/localization/jedit_zh.props 2018-04-08 23:58:42.000000000 +0000 @@ -52,7 +52,6 @@ action-set.plugin=插件: {0} macro-handler.beanshell.label=BeanShell 脚本 -macro-handler.beanshell.glob=*.bsh save-layout-failed.message=无法保存对接布局. load-layout.title=加载对接布局 @@ -964,8 +963,8 @@ #{{{ "Search in selection" active but nothing selected in text area search-no-selection.title=没有选择任何内容 -search-no-selection.message=选择一些文字或停用 -"在选择范围内搜索"选项. +search-no-selection.message=选择一些文字或停用\n\ + "在选择范围内搜索"选项. #}}} #{{{ Paste previous and paste deleted dialogs @@ -1467,7 +1466,6 @@ options.save-back.confirmSaveAll=“保存全部内容“要求进行确认 options.save-back.autosaveUntitled=自动保存未命名的内容 options.save-back.suppressNotSavedConfirmUntitled=不给未命名内容标记未混乱文件. -options.save-back.suppressNotSavedConfirmUntitled.tooltip=检查这意味着每当创建一个新的内容,未命名的内容就被删除(它是一个功能!) options.save-back.useMD5forDirtyCalculation=如果内容未改变,不标注内容紊乱. options.save-back.useMD5forDirtyCalculation.tooltip=在加载时比较内容长度以及MD5哈希值, 以判断已编辑的内容是否仍然混乱. options.save-back.saveAsUsesFSB=“另存为”默认到文件系统浏览器目录 @@ -1977,17 +1975,15 @@ install-plugins.info.size=大小 install-plugins.info.releaseDate=发布日期 install-plugins.info.version=版本 -install-plugins.info.category类别 +install-plugins.info.category=类别 +install-plugins.info.author=作者 +install-plugins.info.released=发布了 install-plugins.totalSize={0} 个插件), 总大小: {1} install-plugins.select-all=全选 install-plugins.install=安装 install-plugins.show-updates=显示更新 -install-plugins.info=作者: {0}\n\ - 发布了: {1}\n\ - {2} - update-plugins.title=更新 plugin-manager.progress=正在从 {1}下载 {0} @@ -2258,8 +2254,6 @@ macro.rs.DisplayShortcuts.Close.label=关闭 macro.rs.DisplayShortcuts.WriteToBuffer.label=写入到内容 macro.rs.DisplayShortcuts.ShortcutList.label=键盘快捷键列表 -macro.rs.DisplayShortcuts.Center.label=中心 -macro.rs.DisplayShortcuts.South.label=南部 #}}} #{{{ Hex Convert @@ -2272,12 +2266,7 @@ #{{{ Make Bug Report macro.rs.MakeBugReport.OpeningActivityLog.error=打开活动日志错误. macro.rs.MakeBugReport.UsefulEntriesForReport.label=活动日志条目在bug报告里可能是有用的:\n\n. -macro.rs.MakeBugReport.MessagejEdit.label=[message] jEdit: -macro.rs.MakeBugReport.NoticejEdit.label=[notice] jEdit: -macro.rs.MakeBugReport.NoticeJarClassLoader.label=[notice] JARClassLoader: -macro.rs.MakeBugReport.MessagejEditStartupComplete.label=[message] jEdit: 完成启动 -macro.rs.MakeBugReport.Error.label=[error] -macro.rs.MakeBugReport.ReadingActivityLog.error=阅读活动日志错误 +macro.rs.MakeBugReport.ReadingActivityLog.error=阅读活动日志错误. #}}} #{{{ Run Script @@ -2435,7 +2424,7 @@ Emacs/Emacs_Open_Line.label=Emacs 打开行 Emacs/Emacs_Previous_Line.label=Emacs 前一行 Emacs/Emacs_Set_Mark.label=Emacs 设置标记 -Emacs/Emacs_Set_Wrap=Emacs 设置自动换行 +Emacs/Emacs_Set_Wrap.label=Emacs 设置自动换行 Emacs/Emacs_Transpose_Chars.label=Emacs 转置字符 Emacs/Emacs_Transpose_Lines.label=Emacs 转置行 Emacs/Emacs_Upcase_Word.label=Emacs 单词大写 @@ -2447,7 +2436,6 @@ Files/Browse_Buffer_Directory.label=浏览内容目录 Files/Browse_Directory.label=浏览目录 Files/Buffer_Switcher.label=内容开关 -Files/Close_All_Except_Active.label=关闭除活动区外所有内容 Files/Copy_Name_to_Clipboard.label=复制内容到粘贴板 Files/Copy_Path_to_Clipboard.label=复制路径到粘贴板 Files/Delete_Current.label=删除当前