<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
	
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->


 
	
<meta>
      <topic id="textsharedguideautocorr_urlxml" indexer="include">
         <title xml-lang="en-US" id="tit">Turning off Automatic URL Recognition</title>
         <filename>/text/shared/guide/autocorr_url.xhp</filename>
      </topic>
   </meta>
   <body>
<bookmark xml-lang="en-US" branch="index" id="bm_id3149346"><bookmark_value>AutoCorrect function; URL recognition</bookmark_value>
      <bookmark_value>recognizing URLs automatically</bookmark_value>
      <bookmark_value>automatic hyperlink formatting</bookmark_value>
      <bookmark_value>URL;turning off URL recognition</bookmark_value>
      <bookmark_value>hyperlinks;turning off automatic recognition</bookmark_value>
      <bookmark_value>links;turning off automatic recognition</bookmark_value>
      <bookmark_value>predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion</bookmark_value>
</bookmark>
<paragraph xml-lang="en-US" id="hd_id3149346" role="heading" level="1" l10n="U" oldref="6"><variable id="autocorr_url"><link href="text/shared/guide/autocorr_url.xhp" name="Turning off Automatic URL Recognition">Turning off Automatic URL Recognition</link>
</variable></paragraph>
      <paragraph xml-lang="en-US" id="par_id3166410" role="paragraph" l10n="U" oldref="7">When you enter text, $[officename] automatically recognizes a word that may be a <link href="text/shared/00/00000002.xhp#url" name="URL">URL</link> and replaces the word with a hyperlink. $[officename] formats the hyperlink with direct font attributes (color and underline) the properties of which are obtained from certain Character Styles.</paragraph>
      <paragraph xml-lang="en-US" id="par_id3153561" role="paragraph" l10n="U" oldref="2">If you do not want $[officename] to automatically recognize URLs as you are typing, there are several ways of turning off this feature.</paragraph>
      <paragraph xml-lang="en-US" id="hd_id3154306" role="heading" level="2" l10n="U" oldref="8">Undo URL Recognition</paragraph>
      <list type="ordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3149233" role="listitem" l10n="U" oldref="3">When you are typing and notice that a text has just been automatically converted into a hyperlink, press <switchinline select="sys"><caseinline select="MAC">Command
</caseinline><defaultinline>Ctrl</defaultinline></switchinline>+Z to undo this formatting.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3149235" role="listitem" l10n="CHG" oldref="4">If you do not notice this conversion until later, select the hyperlink and choose the menu command <emph>Format - Default Formatting</emph>.</paragraph>
         </listitem>
      </list>
      <paragraph xml-lang="en-US" id="hd_id3152350" role="heading" level="2" l10n="U" oldref="9">Turn off URL Recognition</paragraph>
      <list type="ordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3149514" role="listitem" l10n="U" oldref="10">Load a document of the type for which you want to modify the URL recognition.</paragraph>
            <paragraph xml-lang="en-US" id="par_id3151246" role="listitem" l10n="U" oldref="11">If you want to modify the URL recognition for text documents, open a text document.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3159413" role="listitem" l10n="U" oldref="12">Choose <emph>Tools - AutoCorrect Options</emph>.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3148550" role="listitem" l10n="U" oldref="13">In the <emph>AutoCorrect</emph> dialog, select the <emph>Options</emph> tab.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3153360" role="listitem" l10n="U" oldref="14">If you unmark <emph>URL Recognition</emph>, words will no longer be automatically replaced with hyperlinks.</paragraph>
            <paragraph xml-lang="en-US" id="par_id3156423" role="listitem" l10n="U" oldref="15">In $[officename] Writer there are two check boxes in front of <emph>URL Recognition</emph>. The box in the first column is for later post-editing and the box in the second column is for AutoCorrect as you type.</paragraph>
         </listitem>
      </list>
      <section id="relatedtopics">
         <embed href="text/swriter/guide/auto_off.xhp#auto_off"/>
      </section>
   </body>
</helpdocument>