mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge branch 'stable'
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -126,6 +126,9 @@ Bugs fixed
|
||||
* #4249: PDF output: Pygments error highlighting increases line spacing in
|
||||
code blocks
|
||||
* #1238: Support ``:emphasize-lines:`` in PDF output
|
||||
* #4279: Sphinx crashes with pickling error when run with multiple processes and
|
||||
remote image
|
||||
* #1421: Respect the quiet flag in sphinx-quickstart
|
||||
|
||||
Testing
|
||||
--------
|
||||
|
||||
@@ -435,11 +435,13 @@ def generate(d, overwrite=True, silent=False, templatedir=None):
|
||||
def write_file(fpath, content, newline=None):
|
||||
# type: (unicode, unicode, unicode) -> None
|
||||
if overwrite or not path.isfile(fpath):
|
||||
print('Creating file %s.' % fpath)
|
||||
if 'quiet' not in d:
|
||||
print('Creating file %s.' % fpath)
|
||||
with open(fpath, 'wt', encoding='utf-8', newline=newline) as f:
|
||||
f.write(content)
|
||||
else:
|
||||
print('File %s already exists, skipping.' % fpath)
|
||||
if 'quiet' not in d:
|
||||
print('File %s already exists, skipping.' % fpath)
|
||||
|
||||
conf_path = os.path.join(templatedir, 'conf.py_t') if templatedir else None
|
||||
if not conf_path or not path.isfile(conf_path):
|
||||
|
||||
@@ -384,7 +384,7 @@
|
||||
\expandafter\let
|
||||
\csname @list\romannumeral\the\count@\expandafter\endcsname
|
||||
\csname @list\romannumeral\the\numexpr\count@-\@ne\endcsname
|
||||
% work around 2.6--3.2d babel-french issue (fixed in 3.2e; no change needed)
|
||||
% workaround 2.6--3.2d babel-french issue (fixed in 3.2e; no change needed)
|
||||
\ltx@ifundefined{leftmargin\romannumeral\the\count@}
|
||||
{\expandafter\let
|
||||
\csname leftmargin\romannumeral\the\count@\expandafter\endcsname
|
||||
@@ -867,8 +867,7 @@
|
||||
\newcommand*{\sphinxverbatimsmallskipamount}{\smallskipamount}
|
||||
% serves to implement line highlighting and line wrapping
|
||||
\newcommand\sphinxFancyVerbFormatLine[1]{%
|
||||
\expandafter\sphinx@verbatim@checkifhl
|
||||
\expandafter{\the\numexpr\value{FancyVerbLine}-\spx@verbatim@linedelta}%
|
||||
\expandafter\sphinx@verbatim@checkifhl\expandafter{\the\FV@CodeLineNo}%
|
||||
\ifin@
|
||||
\sphinxVerbatimHighlightLine{#1}%
|
||||
\else
|
||||
@@ -890,8 +889,6 @@
|
||||
\strut #1\strut}%
|
||||
}%
|
||||
\newcommand\sphinxVerbatimFormatLineNoWrap[1]{\hb@xt@\linewidth{\strut #1\hss}}%
|
||||
\def\sphinx@FancyVerbCodesHook
|
||||
{\FV@SetLineNo\edef\spx@verbatim@linedelta{\the\value{FancyVerbLine}}}%
|
||||
\g@addto@macro\FV@SetupFont{%
|
||||
\sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}%
|
||||
\sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}%
|
||||
@@ -955,18 +952,14 @@
|
||||
% Allow breaks at special characters using \PYG... macros.
|
||||
\sphinxbreaksatspecials
|
||||
% Breaks at punctuation characters . , ; ? ! and / (needs catcode activation)
|
||||
\expandafter\def\expandafter\sphinx@FancyVerbCodesHook\expandafter
|
||||
{\sphinx@FancyVerbCodesHook\sphinxbreaksviaactive}%
|
||||
\fvset{codes*=\sphinxbreaksviaactive}%
|
||||
\else % end of conditional code for wrapping long code lines
|
||||
\let\sphinxVerbatimFormatLine\sphinxVerbatimFormatLineNoWrap
|
||||
\fi
|
||||
\let\FancyVerbFormatLine\sphinxFancyVerbFormatLine
|
||||
% hook into \FancyVerbCodes to recover at first code line the numbering offset
|
||||
\expandafter\def\expandafter\FancyVerbCodes\expandafter
|
||||
{\FancyVerbCodes\sphinx@FancyVerbCodesHook}%
|
||||
% go around fancyvrb's check of \@currenvir
|
||||
% workaround to fancyvrb's check of \@currenvir
|
||||
\let\VerbatimEnvironment\sphinxVerbatimEnvironment
|
||||
% go around fancyvrb's check of current list depth
|
||||
% workaround to fancyvrb's check of current list depth
|
||||
\def\@toodeep {\advance\@listdepth\@ne}%
|
||||
% The list environment is needed to control perfectly the vertical space.
|
||||
% Note: \OuterFrameSep used by framed.sty is later set to \topsep hence 0pt.
|
||||
@@ -1063,7 +1056,7 @@
|
||||
\sphinxunactivateextras}%
|
||||
% now for the modified alltt environment
|
||||
\newenvironment{sphinxalltt}
|
||||
{% at start of next line to work around Emacs/AUCTeX issue with this file
|
||||
{% at start of next line to workaround Emacs/AUCTeX issue with this file
|
||||
\begin{alltt}%
|
||||
\ifspx@opt@parsedliteralwraps
|
||||
\sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}%
|
||||
@@ -1288,7 +1281,7 @@
|
||||
\spx@notice@border \dimexpr\csname spx@opt@#1border\endcsname\relax
|
||||
% start specific environment, passing the heading as argument
|
||||
\begin{sphinx#1}{#2}}
|
||||
% in end part, need to go around a LaTeX's "feature"
|
||||
% workaround some LaTeX "feature" of \end command
|
||||
{\edef\spx@temp{\noexpand\end{sphinx\spx@noticetype}}\spx@temp}
|
||||
|
||||
|
||||
|
||||
@@ -82,6 +82,10 @@ def convert_serializable(records):
|
||||
r.msg = r.getMessage()
|
||||
r.args = ()
|
||||
|
||||
location = getattr(r, 'location', None)
|
||||
if isinstance(location, nodes.Node):
|
||||
r.location = get_node_location(location) # type: ignore
|
||||
|
||||
|
||||
class SphinxWarningLogRecord(logging.LogRecord):
|
||||
"""Log record class supporting location"""
|
||||
@@ -415,21 +419,26 @@ class WarningLogRecordTranslator(logging.Filter):
|
||||
else:
|
||||
record.location = None
|
||||
elif isinstance(location, nodes.Node):
|
||||
(source, line) = get_source_line(location)
|
||||
if source and line:
|
||||
record.location = "%s:%s" % (source, line)
|
||||
elif source:
|
||||
record.location = "%s:" % source
|
||||
elif line:
|
||||
record.location = "<unknown>:%s" % line
|
||||
else:
|
||||
record.location = None
|
||||
record.location = get_node_location(location)
|
||||
elif location and ':' not in location:
|
||||
record.location = '%s' % self.app.env.doc2path(location)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def get_node_location(node):
|
||||
# type: (nodes.Node) -> str
|
||||
(source, line) = get_source_line(node)
|
||||
if source and line:
|
||||
return "%s:%s" % (source, line)
|
||||
elif source:
|
||||
return "%s:" % source
|
||||
elif line:
|
||||
return "<unknown>:%s" % line
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
class ColorizeFormatter(logging.Formatter):
|
||||
def format(self, record):
|
||||
# type: (logging.LogRecord) -> str
|
||||
|
||||
Reference in New Issue
Block a user