improved tag list updating, should be a bit faster on opening files
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@322 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
parent
887f75bb18
commit
7a6efd0667
@ -996,7 +996,7 @@ on_editor_key_press_event (GtkWidget *widget,
|
||||
case 'R':
|
||||
{
|
||||
if (event->state & GDK_CONTROL_MASK)
|
||||
document_update_tag_list(idx);
|
||||
document_update_tag_list(idx, TRUE);
|
||||
else
|
||||
ret = FALSE;
|
||||
break;
|
||||
|
@ -574,7 +574,7 @@ void document_open_file(gint idx, const gchar *filename, gint pos, gboolean read
|
||||
(readonly) ? _(", read-only") : "");
|
||||
}
|
||||
//utils_update_tag_list(idx, TRUE);
|
||||
document_update_tag_list(idx);
|
||||
document_update_tag_list(idx, FALSE);
|
||||
document_set_text_changed(idx);
|
||||
|
||||
#if defined(HAVE_MMAP) && defined(HAVE_MUNMAP) && defined(HAVE_FCNTL_H)
|
||||
@ -896,7 +896,7 @@ void document_set_font(ScintillaObject *sci, const gchar *font_name, gint size)
|
||||
}
|
||||
|
||||
|
||||
void document_update_tag_list(gint idx)
|
||||
void document_update_tag_list(gint idx, gboolean update)
|
||||
{
|
||||
// if the filetype doesn't has a tag parser or it is a new file, leave
|
||||
if (idx == -1 || ! doc_list[idx].file_type->has_tags || ! doc_list[idx].file_name) return;
|
||||
@ -908,10 +908,13 @@ void document_update_tag_list(gint idx)
|
||||
g_free(locale_filename);
|
||||
if (! doc_list[idx].tm_file) return;
|
||||
tm_workspace_add_object(doc_list[idx].tm_file);
|
||||
/// TODO seems to be useless, but I'm not sure
|
||||
// parse the file after setting the filetype
|
||||
//TM_SOURCE_FILE(doc_list[idx].tm_file)->lang = getNamedLanguage((doc_list[idx].file_type)->name);
|
||||
//tm_source_file_update(doc_list[idx].tm_file, TRUE, FALSE, TRUE);
|
||||
if (update)
|
||||
{
|
||||
// parse the file after setting the filetype
|
||||
// this is necessary to switch between filetypes
|
||||
TM_SOURCE_FILE(doc_list[idx].tm_file)->lang = getNamedLanguage((doc_list[idx].file_type)->name);
|
||||
tm_source_file_update(doc_list[idx].tm_file, TRUE, FALSE, TRUE);
|
||||
}
|
||||
utils_update_tag_list(idx, TRUE);
|
||||
}
|
||||
else
|
||||
@ -941,7 +944,7 @@ void document_set_filetype(gint idx, filetype *type)
|
||||
if (type->id > GEANY_MAX_FILE_TYPES) return;
|
||||
|
||||
doc_list[idx].file_type = type;
|
||||
document_update_tag_list(idx);
|
||||
document_update_tag_list(idx, TRUE);
|
||||
type->style_func_ptr(doc_list[idx].sci);
|
||||
|
||||
// For C/C++/Java files, get list of typedefs for colourising
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
@ -100,7 +100,7 @@ void document_find_next(gint, const gchar*, gint, gboolean, gboolean);
|
||||
void document_set_font(ScintillaObject*, const gchar*, gint);
|
||||
|
||||
|
||||
void document_update_tag_list(gint);
|
||||
void document_update_tag_list(gint, gboolean);
|
||||
|
||||
|
||||
void document_set_filetype(gint, filetype*);
|
||||
|
Loading…
x
Reference in New Issue
Block a user