mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
add support for TABs in Listings, fileformat change, fixes http://bugzilla.lyx.org/show_bug.cgi?id=3629 , patch by Vincent, lyx2lyx and UI stuff by me
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26647 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
ede2dbfade
commit
7382c55fd7
@ -1,6 +1,9 @@
|
|||||||
LyX file-format changes
|
LyX file-format changes
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
2008-09-30 Uwe Stöhr <uwestoehr@web.de>
|
||||||
|
* Format incremented to 341: support for TABs in listings".
|
||||||
|
|
||||||
2008-08-01 José Matos <jamatos@fc.up.pt>
|
2008-08-01 José Matos <jamatos@fc.up.pt>
|
||||||
* Format incremented to 340: move empty layouts to "Plain Layout".
|
* Format incremented to 340: move empty layouts to "Plain Layout".
|
||||||
|
|
||||||
@ -1023,5 +1026,3 @@ renamed as "size_kind" and "lyxsize_kind" respectively.
|
|||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2906,6 +2906,37 @@ def add_plain_layout(document):
|
|||||||
document.body[i] = "\\begin_layout Plain Layout"
|
document.body[i] = "\\begin_layout Plain Layout"
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
|
|
||||||
|
def revert_tabulators(document):
|
||||||
|
"Revert tabulators to 4 spaces"
|
||||||
|
i = 0
|
||||||
|
while True:
|
||||||
|
i = find_token(document.body, "\t", i)
|
||||||
|
if i == -1:
|
||||||
|
return
|
||||||
|
document.body[i] = document.body[i].replace("\t", " ")
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
|
||||||
|
def revert_tabsize(document):
|
||||||
|
"Revert the tabsize parameter of listings"
|
||||||
|
i = 0
|
||||||
|
j = 0
|
||||||
|
while True:
|
||||||
|
# either it is the only parameter
|
||||||
|
i = find_token(document.body, 'lstparams "tabsize=4"', i)
|
||||||
|
if i != -1:
|
||||||
|
del document.body[i]
|
||||||
|
# or the last one
|
||||||
|
j = find_token(document.body, "lstparams", j)
|
||||||
|
if j == -1:
|
||||||
|
return
|
||||||
|
pos = document.body[j].find(",tabsize=")
|
||||||
|
document.body[j] = document.body[j][:pos] + '"'
|
||||||
|
i += 1
|
||||||
|
j += 1
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Conversion hub
|
# Conversion hub
|
||||||
#
|
#
|
||||||
@ -2974,10 +3005,12 @@ convert = [[277, [fix_wrong_tables]],
|
|||||||
[337, [convert_display_enum]],
|
[337, [convert_display_enum]],
|
||||||
[338, []],
|
[338, []],
|
||||||
[339, []],
|
[339, []],
|
||||||
[340, [add_plain_layout]]
|
[340, [add_plain_layout]],
|
||||||
|
[341, []]
|
||||||
]
|
]
|
||||||
|
|
||||||
revert = [[339, []],
|
revert = [[340, [revert_tabulators, revert_tabsize]],
|
||||||
|
[339, []],
|
||||||
[338, [revert_removed_modules]],
|
[338, [revert_removed_modules]],
|
||||||
[337, [revert_polytonicgreek]],
|
[337, [revert_polytonicgreek]],
|
||||||
[336, [revert_display_enum]],
|
[336, [revert_display_enum]],
|
||||||
|
@ -115,7 +115,7 @@ namespace os = support::os;
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
int const LYX_FORMAT = 340; //jamatos: add plain layout
|
int const LYX_FORMAT = 341; //uwestoehr: TAB support for listings
|
||||||
|
|
||||||
typedef map<string, bool> DepClean;
|
typedef map<string, bool> DepClean;
|
||||||
typedef map<docstring, pair<InsetLabel const *, Buffer::References> > RefCache;
|
typedef map<docstring, pair<InsetLabel const *, Buffer::References> > RefCache;
|
||||||
@ -619,11 +619,8 @@ void Buffer::insertStringAsLines(ParagraphList & pars,
|
|||||||
++pos;
|
++pos;
|
||||||
space_inserted = true;
|
space_inserted = true;
|
||||||
} else {
|
} else {
|
||||||
const pos_type n = 8 - pos % 8;
|
par.insertChar(pos, *cit, font, params().trackChanges);
|
||||||
for (pos_type i = 0; i < n; ++i) {
|
++pos;
|
||||||
par.insertChar(pos, ' ', font, params().trackChanges);
|
|
||||||
++pos;
|
|
||||||
}
|
|
||||||
space_inserted = true;
|
space_inserted = true;
|
||||||
}
|
}
|
||||||
} else if (!isPrintable(*cit)) {
|
} else if (!isPrintable(*cit)) {
|
||||||
|
@ -499,7 +499,7 @@ bool Lexer::Pimpl::nextToken()
|
|||||||
char cc = 0;
|
char cc = 0;
|
||||||
is.get(cc);
|
is.get(cc);
|
||||||
c = cc;
|
c = cc;
|
||||||
if (c >= ' ' && is) {
|
if ((c >= ' ' || c == '\t') && is) {
|
||||||
buff.clear();
|
buff.clear();
|
||||||
|
|
||||||
if (c == '\\') { // first char == '\\'
|
if (c == '\\') { // first char == '\\'
|
||||||
@ -513,7 +513,7 @@ bool Lexer::Pimpl::nextToken()
|
|||||||
buff.push_back(c);
|
buff.push_back(c);
|
||||||
is.get(cc);
|
is.get(cc);
|
||||||
c = cc;
|
c = cc;
|
||||||
} while (c >= ' ' && c != '\\' && is);
|
} while ((c >= ' ' || c == '\t') && c != '\\' && is);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c == '\\')
|
if (c == '\\')
|
||||||
|
@ -2396,7 +2396,7 @@ docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
|
|||||||
|
|
||||||
for (pos_type i = beg; i < end; ++i) {
|
for (pos_type i = beg; i < end; ++i) {
|
||||||
char_type const c = d->text_[i];
|
char_type const c = d->text_[i];
|
||||||
if (isPrintable(c))
|
if (isPrintable(c) || c == '\t')
|
||||||
os.put(c);
|
os.put(c);
|
||||||
else if (c == META_INSET && options & AS_STR_INSETS)
|
else if (c == META_INSET && options & AS_STR_INSETS)
|
||||||
getInset(i)->textString(os);
|
getInset(i)->textString(os);
|
||||||
|
@ -220,6 +220,9 @@ int ParagraphMetrics::singleWidth(pos_type pos, Font const & font) const
|
|||||||
|
|
||||||
char_type c = par_->getChar(pos);
|
char_type c = par_->getChar(pos);
|
||||||
|
|
||||||
|
if (c == '\t')
|
||||||
|
return 4 * theFontMetrics(font).width(' ');
|
||||||
|
|
||||||
if (!isPrintable(c))
|
if (!isPrintable(c))
|
||||||
return theFontMetrics(font).width(c);
|
return theFontMetrics(font).width(c);
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "insets/InsetListings.h"
|
#include "insets/InsetListings.h"
|
||||||
#include "insets/InsetListingsParams.h"
|
#include "insets/InsetListingsParams.h"
|
||||||
|
|
||||||
|
#include "support/convert.h"
|
||||||
#include "support/debug.h"
|
#include "support/debug.h"
|
||||||
#include "support/gettext.h"
|
#include "support/gettext.h"
|
||||||
#include "support/lstrings.h"
|
#include "support/lstrings.h"
|
||||||
@ -198,6 +199,8 @@ GuiListings::GuiListings(GuiView & lv)
|
|||||||
this, SLOT(change_adaptor()));
|
this, SLOT(change_adaptor()));
|
||||||
connect(spaceInStringCB, SIGNAL(clicked()),
|
connect(spaceInStringCB, SIGNAL(clicked()),
|
||||||
this, SLOT(change_adaptor()));
|
this, SLOT(change_adaptor()));
|
||||||
|
connect(tabsizeSB, SIGNAL(valueChanged(int)),
|
||||||
|
this, SLOT(change_adaptor()));
|
||||||
connect(extendedcharsCB, SIGNAL(clicked()),
|
connect(extendedcharsCB, SIGNAL(clicked()),
|
||||||
this, SLOT(change_adaptor()));
|
this, SLOT(change_adaptor()));
|
||||||
|
|
||||||
@ -296,6 +299,7 @@ string GuiListings::construct_params()
|
|||||||
basicstyle += "\\" + fontstyle;
|
basicstyle += "\\" + fontstyle;
|
||||||
bool breakline = breaklinesCB->isChecked();
|
bool breakline = breaklinesCB->isChecked();
|
||||||
bool space = spaceCB->isChecked();
|
bool space = spaceCB->isChecked();
|
||||||
|
int tabsize = tabsizeSB->value();
|
||||||
bool spaceInString = spaceInStringCB->isChecked();
|
bool spaceInString = spaceInStringCB->isChecked();
|
||||||
bool extendedchars = extendedcharsCB->isChecked();
|
bool extendedchars = extendedcharsCB->isChecked();
|
||||||
string extra = fromqstr(listingsED->toPlainText());
|
string extra = fromqstr(listingsED->toPlainText());
|
||||||
@ -331,6 +335,8 @@ string GuiListings::construct_params()
|
|||||||
par.addParam("showspaces", "true");
|
par.addParam("showspaces", "true");
|
||||||
if (!spaceInString)
|
if (!spaceInString)
|
||||||
par.addParam("showstringspaces", "false");
|
par.addParam("showstringspaces", "false");
|
||||||
|
if (tabsize != 8)
|
||||||
|
par.addParam("tabsize", convert<string>(tabsize));
|
||||||
if (extendedchars)
|
if (extendedchars)
|
||||||
par.addParam("extendedchars", "true");
|
par.addParam("extendedchars", "true");
|
||||||
par.addParams(extra);
|
par.addParams(extra);
|
||||||
@ -456,6 +462,7 @@ void GuiListings::updateContents()
|
|||||||
breaklinesCB->setChecked(false);
|
breaklinesCB->setChecked(false);
|
||||||
spaceCB->setChecked(false);
|
spaceCB->setChecked(false);
|
||||||
spaceInStringCB->setChecked(true);
|
spaceInStringCB->setChecked(true);
|
||||||
|
tabsizeSB->setValue(8);
|
||||||
extendedcharsCB->setChecked(false);
|
extendedcharsCB->setChecked(false);
|
||||||
|
|
||||||
// set values from param string
|
// set values from param string
|
||||||
@ -583,6 +590,9 @@ void GuiListings::updateContents()
|
|||||||
} else if (prefixIs(*it, "showstringspaces=")) {
|
} else if (prefixIs(*it, "showstringspaces=")) {
|
||||||
spaceInStringCB->setChecked(contains(*it, "true"));
|
spaceInStringCB->setChecked(contains(*it, "true"));
|
||||||
*it = "";
|
*it = "";
|
||||||
|
} else if (prefixIs(*it, "tabsize=")) {
|
||||||
|
tabsizeSB->setValue(convert<int>(plainParam(it->substr(8))));
|
||||||
|
*it = "";
|
||||||
} else if (prefixIs(*it, "extendedchars=")) {
|
} else if (prefixIs(*it, "extendedchars=")) {
|
||||||
extendedcharsCB->setChecked(contains(*it, "true"));
|
extendedcharsCB->setChecked(contains(*it, "true"));
|
||||||
*it = "";
|
*it = "";
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>612</width>
|
<width>654</width>
|
||||||
<height>317</height>
|
<height>349</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle" >
|
<property name="windowTitle" >
|
||||||
@ -28,9 +28,7 @@
|
|||||||
<item row="0" column="0" >
|
<item row="0" column="0" >
|
||||||
<widget class="QTabWidget" name="listingsTW" >
|
<widget class="QTabWidget" name="listingsTW" >
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy>
|
<sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
|
||||||
<hsizetype>3</hsizetype>
|
|
||||||
<vsizetype>3</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
@ -49,150 +47,6 @@
|
|||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<item rowspan="2" row="0" column="2" >
|
|
||||||
<widget class="QGroupBox" name="basicstyleGB" >
|
|
||||||
<property name="title" >
|
|
||||||
<string>Style</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" >
|
|
||||||
<property name="margin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="1" >
|
|
||||||
<widget class="QComboBox" name="fontsizeCO" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy>
|
|
||||||
<hsizetype>7</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip" >
|
|
||||||
<string>The content's base font size</string>
|
|
||||||
</property>
|
|
||||||
<property name="editable" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="autoCompletion" >
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="duplicatesEnabled" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0" >
|
|
||||||
<widget class="QLabel" name="fontsize_label_3" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>F&ont size:</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="buddy" >
|
|
||||||
<cstring>fontsizeCO</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1" >
|
|
||||||
<widget class="QComboBox" name="fontstyleCO" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy>
|
|
||||||
<hsizetype>7</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip" >
|
|
||||||
<string>The content's base font style</string>
|
|
||||||
</property>
|
|
||||||
<property name="editable" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="autoCompletion" >
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="duplicatesEnabled" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0" >
|
|
||||||
<widget class="QLabel" name="fontstyle_label_3" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Font Famil&y:</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="buddy" >
|
|
||||||
<cstring>fontstyleCO</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="0" colspan="2" >
|
|
||||||
<widget class="QCheckBox" name="extendedcharsCB" >
|
|
||||||
<property name="enabled" >
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip" >
|
|
||||||
<string>Use extended character table</string>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>&Extended character table</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<number>276824133</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0" colspan="2" >
|
|
||||||
<widget class="QCheckBox" name="spaceInStringCB" >
|
|
||||||
<property name="toolTip" >
|
|
||||||
<string>Make spaces in strings visible by a special symbol</string>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Space i&n string as symbol</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<number>276824147</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0" colspan="2" >
|
|
||||||
<widget class="QCheckBox" name="spaceCB" >
|
|
||||||
<property name="toolTip" >
|
|
||||||
<string>Make spaces visible by a special symbol</string>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>S&pace as symbol</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<number>276824147</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0" colspan="2" >
|
|
||||||
<widget class="QCheckBox" name="breaklinesCB" >
|
|
||||||
<property name="toolTip" >
|
|
||||||
<string>Break lines longer than the linewidth</string>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>&Break long lines</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<number>276824130</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0" >
|
<item row="0" column="0" >
|
||||||
<widget class="QGroupBox" name="placementGB" >
|
<widget class="QGroupBox" name="placementGB" >
|
||||||
<property name="title" >
|
<property name="title" >
|
||||||
@ -285,9 +139,7 @@
|
|||||||
<item row="2" column="1" >
|
<item row="2" column="1" >
|
||||||
<widget class="QComboBox" name="numberFontSizeCO" >
|
<widget class="QComboBox" name="numberFontSizeCO" >
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy>
|
<sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
|
||||||
<hsizetype>7</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
@ -478,6 +330,175 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
<zorder>numberfontsizeL_2</zorder>
|
||||||
|
<zorder>lastlineLE</zorder>
|
||||||
|
<zorder>firstlineLE</zorder>
|
||||||
|
<zorder>numberfontsizeL_3</zorder>
|
||||||
|
<zorder>basicstyleGB</zorder>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item rowspan="2" row="0" column="2" >
|
||||||
|
<widget class="QGroupBox" name="basicstyleGB" >
|
||||||
|
<property name="title" >
|
||||||
|
<string>Style</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" >
|
||||||
|
<property name="sizeConstraint" >
|
||||||
|
<enum>QLayout::SetDefaultConstraint</enum>
|
||||||
|
</property>
|
||||||
|
<property name="margin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0" >
|
||||||
|
<widget class="QLabel" name="fontsize_label_3" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>F&ont size:</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="buddy" >
|
||||||
|
<cstring>fontsizeCO</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1" >
|
||||||
|
<widget class="QComboBox" name="fontsizeCO" >
|
||||||
|
<property name="sizePolicy" >
|
||||||
|
<sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip" >
|
||||||
|
<string>The content's base font size</string>
|
||||||
|
</property>
|
||||||
|
<property name="editable" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoCompletion" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="duplicatesEnabled" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" >
|
||||||
|
<widget class="QLabel" name="fontstyle_label_3" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Font Famil&y:</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="buddy" >
|
||||||
|
<cstring>fontstyleCO</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1" >
|
||||||
|
<widget class="QComboBox" name="fontstyleCO" >
|
||||||
|
<property name="sizePolicy" >
|
||||||
|
<sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip" >
|
||||||
|
<string>The content's base font style</string>
|
||||||
|
</property>
|
||||||
|
<property name="editable" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoCompletion" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="duplicatesEnabled" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0" colspan="2" >
|
||||||
|
<widget class="QCheckBox" name="breaklinesCB" >
|
||||||
|
<property name="toolTip" >
|
||||||
|
<string>Break lines longer than the linewidth</string>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>&Break long lines</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut" >
|
||||||
|
<number>276824130</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0" colspan="2" >
|
||||||
|
<widget class="QCheckBox" name="spaceCB" >
|
||||||
|
<property name="toolTip" >
|
||||||
|
<string>Make spaces visible by a special symbol</string>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>S&pace as symbol</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut" >
|
||||||
|
<number>276824147</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0" colspan="2" >
|
||||||
|
<widget class="QCheckBox" name="spaceInStringCB" >
|
||||||
|
<property name="toolTip" >
|
||||||
|
<string>Make spaces in strings visible by a special symbol</string>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Space i&n string as symbol</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut" >
|
||||||
|
<number>276824147</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0" >
|
||||||
|
<widget class="QLabel" name="tabsizeL" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Tabulator size</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1" >
|
||||||
|
<widget class="QSpinBox" name="tabsizeSB" />
|
||||||
|
</item>
|
||||||
|
<item row="7" column="0" colspan="2" >
|
||||||
|
<widget class="QCheckBox" name="extendedcharsCB" >
|
||||||
|
<property name="enabled" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip" >
|
||||||
|
<string>Use extended character table</string>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>&Extended character table</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut" >
|
||||||
|
<number>276824133</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
<zorder>fontsizeCO</zorder>
|
||||||
|
<zorder>fontsize_label_3</zorder>
|
||||||
|
<zorder>fontstyleCO</zorder>
|
||||||
|
<zorder>fontstyle_label_3</zorder>
|
||||||
|
<zorder>extendedcharsCB</zorder>
|
||||||
|
<zorder>spaceCB</zorder>
|
||||||
|
<zorder>breaklinesCB</zorder>
|
||||||
|
<zorder>label_2</zorder>
|
||||||
|
<zorder>tabsizeL</zorder>
|
||||||
|
<zorder>tabsizeSB</zorder>
|
||||||
|
<zorder>horizontalSpacer</zorder>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
@ -496,9 +517,7 @@
|
|||||||
<item row="0" column="0" >
|
<item row="0" column="0" >
|
||||||
<widget class="QGroupBox" name="listingsGB" >
|
<widget class="QGroupBox" name="listingsGB" >
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy>
|
<sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
|
||||||
<hsizetype>3</hsizetype>
|
|
||||||
<vsizetype>3</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
@ -535,8 +554,8 @@
|
|||||||
<height>16777215</height>
|
<height>16777215</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="cursor" >
|
<property name="cursor" stdset="0" >
|
||||||
<cursor>0</cursor>
|
<cursorShape>ArrowCursor</cursorShape>
|
||||||
</property>
|
</property>
|
||||||
<property name="acceptDrops" >
|
<property name="acceptDrops" >
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
@ -556,9 +575,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
<widget class="QTextEdit" name="listingsED" >
|
<widget class="QTextEdit" name="listingsED" >
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy>
|
<sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
|
||||||
<hsizetype>3</hsizetype>
|
|
||||||
<vsizetype>3</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
@ -578,12 +595,12 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="1" column="0" >
|
<item row="1" column="0" >
|
||||||
<layout class="QHBoxLayout" >
|
<layout class="QHBoxLayout" >
|
||||||
<property name="margin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="margin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
@ -592,7 +609,7 @@
|
|||||||
<property name="sizeType" >
|
<property name="sizeType" >
|
||||||
<enum>QSizePolicy::Expanding</enum>
|
<enum>QSizePolicy::Expanding</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" >
|
<property name="sizeHint" stdset="0" >
|
||||||
<size>
|
<size>
|
||||||
<width>221</width>
|
<width>221</width>
|
||||||
<height>27</height>
|
<height>27</height>
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "support/docstream.h"
|
#include "support/docstream.h"
|
||||||
#include "support/gettext.h"
|
#include "support/gettext.h"
|
||||||
#include "support/lstrings.h"
|
#include "support/lstrings.h"
|
||||||
|
#include "support/lassert.h"
|
||||||
|
|
||||||
#include "frontends/alert.h"
|
#include "frontends/alert.h"
|
||||||
#include "frontends/Application.h"
|
#include "frontends/Application.h"
|
||||||
@ -289,6 +290,87 @@ void InsetListings::doDispatch(Cursor & cur, FuncRequest & cmd)
|
|||||||
case LFUN_INSET_DIALOG_UPDATE:
|
case LFUN_INSET_DIALOG_UPDATE:
|
||||||
cur.bv().updateDialog("listings", params2string(params()));
|
cur.bv().updateDialog("listings", params2string(params()));
|
||||||
break;
|
break;
|
||||||
|
case LFUN_CELL_FORWARD:
|
||||||
|
if (cur.selection()) {
|
||||||
|
// If there is a selection, a tab is inserted at the
|
||||||
|
// beginning of each paragraph.
|
||||||
|
cur.recordUndoSelection();
|
||||||
|
pit_type const pit_end = cur.selEnd().pit();
|
||||||
|
for (pit_type pit = cur.selBegin().pit(); pit <= pit_end; pit++) {
|
||||||
|
LASSERT(pit < paragraphs().size(), /**/);
|
||||||
|
paragraphs()[pit].insertChar(0, '\t',
|
||||||
|
buffer().params().trackChanges);
|
||||||
|
// Update the selection pos to make sure the selection does not
|
||||||
|
// change as the inserted tab will increase the logical pos.
|
||||||
|
if (cur.anchor_.pit() == pit)
|
||||||
|
cur.anchor_.forwardPos();
|
||||||
|
if (cur.pit() == pit)
|
||||||
|
cur.forwardPos();
|
||||||
|
}
|
||||||
|
cur.finishUndo();
|
||||||
|
} else {
|
||||||
|
// Maybe we shouldn't allow tabs within a line, because they
|
||||||
|
// are not (yet) aligned as one might do expect.
|
||||||
|
cur.recordUndo();
|
||||||
|
cur.insert(from_ascii("\t"));
|
||||||
|
cur.finishUndo();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LFUN_CELL_BACKWARD:
|
||||||
|
if (cur.selection()) {
|
||||||
|
// If there is a selection, a tab (if present) is removed from
|
||||||
|
// the beginning of each paragraph.
|
||||||
|
cur.recordUndoSelection();
|
||||||
|
pit_type const pit_end = cur.selEnd().pit();
|
||||||
|
for (pit_type pit = cur.selBegin().pit(); pit <= pit_end; pit++) {
|
||||||
|
LASSERT( pit < paragraphs().size(), /**/ );
|
||||||
|
Paragraph & par = paragraphs()[pit];
|
||||||
|
if (par.getChar(0) == '\t') {
|
||||||
|
if (cur.pit() == pit)
|
||||||
|
cur.posBackward();
|
||||||
|
if (cur.anchor_.pit() == pit && cur.anchor_.pos() > 0 )
|
||||||
|
cur.anchor_.backwardPos();
|
||||||
|
|
||||||
|
par.eraseChar(0, buffer().params().trackChanges);
|
||||||
|
} else
|
||||||
|
// If no tab was present, try to remove up to four spaces.
|
||||||
|
for (int n_spaces = 0;
|
||||||
|
par.getChar(0) == ' ' && n_spaces < 4; ++n_spaces) {
|
||||||
|
if (cur.pit() == pit)
|
||||||
|
cur.posBackward();
|
||||||
|
if (cur.anchor_.pit() == pit && cur.anchor_.pos() > 0 )
|
||||||
|
cur.anchor_.backwardPos();
|
||||||
|
|
||||||
|
par.eraseChar(0, buffer().params().trackChanges);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cur.finishUndo();
|
||||||
|
} else {
|
||||||
|
// If there is no selection, try to remove a tab or some spaces
|
||||||
|
// before the position of the cursor.
|
||||||
|
LASSERT(cur.pit() >= 0 && cur.pit() < paragraphs().size(), /**/);
|
||||||
|
|
||||||
|
Paragraph & par = paragraphs()[cur.pit()];
|
||||||
|
pos_type const pos = cur.pos();
|
||||||
|
|
||||||
|
if (pos == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
char_type const c = par.getChar(pos - 1);
|
||||||
|
cur.recordUndo();
|
||||||
|
if (c == '\t') {
|
||||||
|
cur.posBackward();
|
||||||
|
par.eraseChar(cur.pos(), buffer().params().trackChanges);
|
||||||
|
} else
|
||||||
|
for (int n_spaces = 0; cur.pos() > 0
|
||||||
|
&& par.getChar(cur.pos() - 1) == ' ' && n_spaces < 4;
|
||||||
|
++n_spaces) {
|
||||||
|
cur.posBackward();
|
||||||
|
par.eraseChar(cur.pos(), buffer().params().trackChanges);
|
||||||
|
}
|
||||||
|
cur.finishUndo();
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
InsetCollapsable::doDispatch(cur, cmd);
|
InsetCollapsable::doDispatch(cur, cmd);
|
||||||
break;
|
break;
|
||||||
@ -307,6 +389,10 @@ bool InsetListings::getStatus(Cursor & cur, FuncRequest const & cmd,
|
|||||||
case LFUN_CAPTION_INSERT:
|
case LFUN_CAPTION_INSERT:
|
||||||
status.setEnabled(!params().isInline());
|
status.setEnabled(!params().isInline());
|
||||||
return true;
|
return true;
|
||||||
|
case LFUN_CELL_BACKWARD:
|
||||||
|
case LFUN_CELL_FORWARD:
|
||||||
|
status.setEnabled(true);
|
||||||
|
return true;
|
||||||
default:
|
default:
|
||||||
return InsetCollapsable::getStatus(cur, cmd, status);
|
return InsetCollapsable::getStatus(cur, cmd, status);
|
||||||
}
|
}
|
||||||
|
@ -246,6 +246,7 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo const & font,
|
|||||||
// selected text?
|
// selected text?
|
||||||
bool const selection = pos >= row_.sel_beg && pos < row_.sel_end;
|
bool const selection = pos >= row_.sel_beg && pos < row_.sel_end;
|
||||||
|
|
||||||
|
char_type prev_char = ' ';
|
||||||
// collect as much similar chars as we can
|
// collect as much similar chars as we can
|
||||||
for (++vpos ; vpos < end ; ++vpos) {
|
for (++vpos ; vpos < end ; ++vpos) {
|
||||||
pos = bidi_.vis2log(vpos);
|
pos = bidi_.vis2log(vpos);
|
||||||
@ -264,6 +265,11 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo const & font,
|
|||||||
|
|
||||||
char_type c = par_.getChar(pos);
|
char_type c = par_.getChar(pos);
|
||||||
|
|
||||||
|
if (c == '\t' || prev_char == '\t') {
|
||||||
|
prev_char = c;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (!isPrintableNonspace(c))
|
if (!isPrintableNonspace(c))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -308,6 +314,9 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo const & font,
|
|||||||
|
|
||||||
docstring s(&str[0], str.size());
|
docstring s(&str[0], str.size());
|
||||||
|
|
||||||
|
if (s[0] == '\t')
|
||||||
|
s.replace(0,1,from_ascii(" "));
|
||||||
|
|
||||||
if (!selection && !change_running.changed()) {
|
if (!selection && !change_running.changed()) {
|
||||||
x_ += pi_.pain.text(int(x_), yo_, s, font);
|
x_ += pi_.pain.text(int(x_), yo_, s, font);
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user