Commit Graph

43 Commits

Author SHA1 Message Date
Richard Heck
75bfed5507 Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
Enrico Forestieri
17ab47b3e6 Allow Input of local includes from local layout files
When including files, LyX always searches the user and the system
directory, in that order. This means that when using local layout
files broken down into multiple includes, the various includes should
be specified with a path relative to the user layouts directory
(typically ~/.lyx/layouts), making this very impractical.
This commit allows including local files by specifying their path
as explicitly relative to the main layout file position, i.e., by
specifying their path with either "./" or "../". If the main layout
is not loaded from a local file, the usual search order is used,
even if the path are explicitly relative. So, for system layouts,
both "Input ./name.inc" and "Input name.inc" are equivalent.
2017-03-01 09:19:18 +01:00
Guillaume Munch
489dca71cd Simplifications, mainly removal of boost::function and useless std::bind 2016-07-03 01:39:32 +02:00
Juergen Spitzmueller
0e62745995 Fix parsing of class and category declaration line in layout files
* Omit commented-out lines
* Properly escape backslash
* Do not allow non-space chars after delaration
* Allow blanks before # comment character

Fixes: #9746
2015-09-02 14:29:06 +02:00
Enrico Forestieri
306b136cc0 Fix bug #4812 (Layout in local directory lost on Save As, Copying)
The "save-as" part of the bug is fixed by extending the \textclass tag
such that, if a local layout file is used, its path relative to the
document directory is now stored together with the name. If a relative
path cannot be used, an absolute one is used but, in this case, the
document is not usable on a different platform.

The "copy" part is fixed by introducing a new \origin tag, which is
written when the file is saved. This tag stores the absolute path of
the document directory. If the document is manually copied to a
different location, the local layout file is retrivied by using
\origin (which is only updated on save).
This new tag may prove useful also for locating other files when the
document is manually moved to a different directory.

As in the original implementation the files needed for the layout
(for example, a latex class) had to be in the same directory as the
layout file, this directory has also to be added to TEXINPUTS.
2015-05-13 22:02:13 +02:00
Georg Baum
f09a9fe2e6 Remove unsafe method FileName::tempName()
FileName::tempName() created a new temp file name by using qt to create a
temporary file with a unique name, and then deleting that file and returning
the name. This was unsafe, since other processes or even other threads of the
running LyX could create files with the same name between deletion and then
using the temp name.
This is fixed by using the TempFile class instead. As a side effect, a few
cases where the temp files were not deleted after usage were fixed as well.
The only place that is still unsafe is createTmpDir().
2014-06-09 13:05:50 +02:00
Richard Heck
1b1f8dd235 Audit all the LASSERT calls, and try to do something sensible at
each failure.

There are several places I was not sure what to do. These are marked
by comments beginning "LASSERT:" so they can be found easily. At the
moment, they are at:

Author.cpp:105: // LASSERT: What should we do here?
Author.cpp:121: // LASSERT: What should we do here?
Buffer.cpp:4525:        // LASSERT: Is it safe to continue here, or should we just return?
Cursor.cpp:345:         // LASSERT: Is it safe to continue here, or should we return?
Cursor.cpp:403:         // LASSERT: Is it safe to continue here, or should we return?
Cursor.cpp:1143:                // LASSERT: There have been several bugs around this code, that seem
CursorSlice.cpp:83:     // LASSERT: This should only ever be called from an InsetMath.
CursorSlice.cpp:92:     // LASSERT: This should only ever be called from an InsetMath.
LayoutFile.cpp:303:                     // LASSERT: Why would this fail?
Text.cpp:995:           // LASSERT: Is it safe to continue here?
2013-04-25 17:27:10 -04:00
Richard Heck
0c61991c9a Do less indenting. 2013-04-11 21:41:52 -04:00
Richard Heck
72aee2a9c5 Add a FIXME.
(cherry picked from commit 4363ff2a93aa82ce2bcdc36351f0c041aff9f5bd)
2013-04-06 18:09:08 -04:00
Lars Gullik Bjønnes
6b2232a29c src/*.cpp: reformatting to increase consistency 2012-10-28 17:42:07 +01:00
Juergen Spitzmueller
f18af303fe Introduce textclass categories
The categories are ascribed by \DeclareCategory{<category>} in the layout file header.
UI follows.
2012-10-09 07:17:36 +02:00
Vincent van Ravesteijn
af5ecd1c8d Exclude stdinsets.inc from basic layout if we exclude stdclass.inc
If loading a basic layout fails, we try to load a basic layout without
stdclass.inc instead. However, this still 'implicitly' requires
stdinsets.inc. If the load failed because stdclass.inc couldn't be loaded,
we expect that stdinsets.inc can't be loaded as well, so we should exclude
stdinsets.inc as well.

This prevents an assertion if stdinsets.inc can't be found or can't be
loaded. This can happen when the layouts have the wrong format and python
is not available.
2012-05-03 16:14:38 +02:00
Vincent van Ravesteijn
5e4e4b674c Always require a mask to get a temporary filename
If no mask is supplied or the mask is attached to the end of the filename, we end up with unexpected names like
  <system-temp-dir>\lyx_tmpdir.qHp780.vcr780_<mask>
instead of a temporary file in the lyx temporary directory like
  <system-temp-dir>\lyx_tmpdir.qHp780\<mask>.vcr780.
2012-05-03 16:14:37 +02:00
Richard Heck
523056c092 Move the error message out of LayoutFileList::load() and have it be
reported by the caller. Otherwise, you could get the error message the
first time, and then it would succeed the second!!


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35019 a592a061-630c-0410-9148-cb99ea01b6c8
2010-07-28 21:03:27 +00:00
Richard Heck
88329a656c Fix problem reported by Vincent, that absence of python can cause
failure to load the empty class.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34971 a592a061-630c-0410-9148-cb99ea01b6c8
2010-07-18 11:58:38 +00:00
Richard Heck
9034323d59 Renaming and typo.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34970 a592a061-630c-0410-9148-cb99ea01b6c8
2010-07-18 11:52:12 +00:00
Vincent van Ravesteijn
da45f74df2 Compile fix for r34950.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34952 a592a061-630c-0410-9148-cb99ea01b6c8
2010-07-17 21:22:32 +00:00
Vincent van Ravesteijn
dd08dd8d0a * LayoutFile.cpp:
- it makes no sense to output the real filename if it is empty,
- success is already false.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34950 a592a061-630c-0410-9148-cb99ea01b6c8
2010-07-17 21:12:48 +00:00
Peter Kümmel
615d42d357 TR1: use std::tr1 regex with msvc10
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34725 a592a061-630c-0410-9148-cb99ea01b6c8
2010-06-29 17:09:40 +00:00
Peter Kümmel
61b2bd5e7f Using "using namespace std" with msvc10 makes also std::tr1::bind visible and generates conflicts with boost::bind.
Solution: don't use boost::bind for msvc10 (could also be extended  to several GCC versions)

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34257 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-22 11:16:58 +00:00
Pavel Sanda
62ca7f3ae5 Proper camel case for FileName.absFilename
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34234 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-21 01:19:09 +00:00
Richard Heck
f9fa189e02 Grant a long-standing wish of Lars's: LyX now functions even if we have
no text classes for some reason (e.g., a corrupt textclass.lst). We
still give the user a chance to reconfigure (Bo's idea).

I wonder if we still really need to "restart LyX to make use of any
updated document class specifications". What would happen if we just
reloaded?


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34081 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-07 17:02:44 +00:00
Richard Heck
907df4570d Fix bug #6611. This also gives us a more robust fall-back in case we are
completely unable to load a text class. At least not very long ago, if
we were unable even to load article, we would crash. Not now. We will
ALWAYS have at least a really basic class (nothing but Standard!)
available.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34080 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-07 16:15:26 +00:00
Richard Heck
36ddfbcdf2 Style.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33846 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-23 14:16:02 +00:00
Richard Heck
cf8646083f Fix bug #3686, by collecting information about missing prerequisites for
document classes, etc. Patch from Julien Rioux.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33838 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-22 12:25:16 +00:00
Abdelrazak Younes
16a82d6f97 * Move LFUN_TEXTCLASS_* and LFUN_TEXTCLASS_* to BufferView. This is a bit problematic because we don't check is this is a document BufferView or not for these LFUNs. We probably have to dispatch both to currentBufferView() and, if that fails, to documentBufferView(); same as we do know for current Buffer and document Buffer. Ideally those LFUN should go to Buffer as they operate on the full Buffer and the cursor is only needed either for an Undo record or to restore a cursor position. But we don't know how to do that inside Buffer of course.
* I transferred local function loadLayoutFile() in LyXFunc.cpp to a LayoutFileList::load().

Richard, as I am not into this layout thing, please check that these LFUNs still operate correctly (except from an embedded work area of course).


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31412 a592a061-630c-0410-9148-cb99ea01b6c8
2009-09-19 20:56:12 +00:00
Richard Heck
e445666594 Little bit of cleanup.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31058 a592a061-630c-0410-9148-cb99ea01b6c8
2009-08-15 16:50:44 +00:00
Richard Heck
7e4d4d2641 Cosmetics.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28455 a592a061-630c-0410-9148-cb99ea01b6c8
2009-02-11 20:02:53 +00:00
Georg Baum
030e249d91 fix potential problems detected by gcc
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27956 a592a061-630c-0410-9148-cb99ea01b6c8
2008-12-22 18:18:47 +00:00
André Pönitz
f1cba8ff64 more latin1..utf8 schanges. all of src/* should be utf8 now
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27425 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-14 15:58:50 +00:00
Uwe Stöhr
b18251d61b LayoutFile.cpp: typo
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27093 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-25 00:01:36 +00:00
Richard Heck
f854295dab 'Default'-->'Empty' in Bo's recent commit. Default means something else in the code.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25556 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-11 03:41:56 +00:00
Bo Peng
763ef015ce Improve the local layout feature by better handling of unknown textclass, unknown layouts, and switch between textclasses.
* src/TextClass.h[.cpp]: add addLayoutIfNeeded() and createDefaultLayout()
	* src/Layout.h[.cpp]: add unknown_ to mark if a layout is a default layout for an unknown one.
	* src/LayoutFile.cpp: add addDefaultClass and change addLayoutFile to addLocalLayout.
	* src/Text.cpp: add unknown layouts that are not recognizable by a new textclass.
	* src/frontends/qt4/GuiToolbar.cpp: display (unknown) for unknown layouts.
	* src/frontends/qt4/GuiDocument.cpp: restore 'browse layout' button.
	* src/frontends/qt4/ui/LaTeXUi.ui: restore 'browse layout' button.
	* src/CutAndPaste.cpp: do not convert unknown layouts from pasted text
	* src/BufferParams.cpp: add a default textclass when a document with unknown textclass is loaded.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25555 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-11 02:43:02 +00:00
Jean-Marc Lasgouttes
9b4a26a252 rename assert.h to lassert.h
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24559 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-30 08:26:40 +00:00
Richard Heck
8a69ffd3bf Complete the removal of the embedding stuff. Maybe. It's hard to be sure we got everything, but this does compile, and it seems to work at least reasonably well. Any problems should of course be reported to the list.
For the record, this developer is sorry that the problems with this code were not noticed much earlier. It's not fun to do so much work and then have it all reverted.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24373 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-20 03:08:11 +00:00
Peter Kümmel
c72634f95e fix some memory leaks
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24299 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-16 19:43:06 +00:00
André Pönitz
7f461f4392 infrastructure for 'graceful asserts'
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24216 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-10 21:49:34 +00:00
André Pönitz
11a0458d3f next try...
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24100 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-02 23:06:22 +00:00
André Pönitz
2012beb58e revert last patch. there's something wrong, possibly unrelated to this
patch, but as this was rather largish...


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24099 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-02 22:44:33 +00:00
André Pönitz
7677e9487c simplify Lexer use a bit
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24098 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-02 22:14:45 +00:00
Bo Peng
48f9225e27 Embed: allow the use of embedded layout and class (.cls, .sty) files.
* src/EmbeddedFiles.h|cpp: add validate() function to validate loaded .lyx file.
	* src/LayoutFile.h|cpp: add Layout_Type parameter to addLayoutFile to load an embedded layout.
	* src/BufferParams.h|cpp: read layout from temp directory, then local directory.
	* src/frontends/qt4/GuiDocument.cpp: handle embedded layout type
	* src/LyXFunc.cpp: handle embedded layout when a layout is re-read.
	* src/Buffer.cpp: validate after a buffer is read. handle exceptions properly.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23667 a592a061-630c-0410-9148-cb99ea01b6c8
2008-03-11 18:31:38 +00:00
Bo Peng
14eeac2e1c Allow selection of a local layout file from the document->settings dialog.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23652 a592a061-630c-0410-9148-cb99ea01b6c8
2008-03-10 21:31:22 +00:00
Richard Heck
6edb3984bf BaseClassList --> LayoutFileList
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23532 a592a061-630c-0410-9148-cb99ea01b6c8
2008-03-07 03:53:21 +00:00