/** * Associates given file with proper {@link IgnoreFileType}. * * @param fileName to associate * @param fileType file type to bind with pattern */ public static void associateFileType(@NotNull final String fileName, @NotNull final IgnoreFileType fileType) { final Application application = ApplicationManager.getApplication(); if (application.isDispatchThread()) { final FileTypeManager fileTypeManager = FileTypeManager.getInstance(); application.invokeLater(() -> application.runWriteAction(() -> { fileTypeManager.associate(fileType, new ExactFileNameMatcher(fileName)); FILE_TYPES_ASSOCIATION_QUEUE.remove(fileName); }), ModalityState.NON_MODAL); } else if (!FILE_TYPES_ASSOCIATION_QUEUE.containsKey(fileName)) { FILE_TYPES_ASSOCIATION_QUEUE.put(fileName, fileType); } }
/** * Shorthand for consuming ignore file types. * * @param consumer file types consumer * @param fileType file type to consume */ private void consume(@NotNull FileTypeConsumer consumer, @NotNull IgnoreFileType fileType) { consumer.consume(fileType, new ExactFileNameMatcher(fileType.getIgnoreLanguage().getFilename())); consumer.consume(fileType, fileType.getIgnoreLanguage().getExtension()); } }
public void createFileTypes(@NotNull FileTypeConsumer consumer) { consumer.consume(BashFileType.BASH_FILE_TYPE, BashFileType.SH_EXTENSION); consumer.consume(BashFileType.BASH_FILE_TYPE, BashFileType.BASH_EXTENSION); consumer.consume(BashFileType.BASH_FILE_TYPE, new ExactFileNameMatcher(BashFileType.BASHRC_FILENAME), new ExactFileNameMatcher(BashFileType.PROFILE_FILENAME), new ExactFileNameMatcher(BashFileType.BASH_LOGOUT_FILENAME), new ExactFileNameMatcher(BashFileType.BASH_PROFILE_FILENAME), new ExactFileNameMatcher(BashFileType.BASH_ALIASES_FILENAME)); } }
@Override protected void createFileTypesInner(@NotNull FileTypeConsumer fileTypeConsumer) { fileTypeConsumer.consume(PerlFileTypePackage.INSTANCE, PerlFileTypePackage.EXTENSION); fileTypeConsumer.consume(PerlFileTypeScript.INSTANCE, PerlFileTypeScript.EXTENSION_CGI); fileTypeConsumer.consume(PerlFileTypeScript.INSTANCE, PerlFileTypeScript.EXTENSION_PL); fileTypeConsumer.consume(PerlFileTypeScript.INSTANCE, PerlFileTypeScript.EXTENSION_PH); fileTypeConsumer.consume(PerlFileTypeScript.INSTANCE, PerlFileTypeScript.EXTENSION_AL); fileTypeConsumer.consume(PerlFileTypeTest.INSTANCE, PerlFileTypeTest.EXTENSION); fileTypeConsumer.consume(PerlFileTypeCpanfile.INSTANCE, new ExactFileNameMatcher(PerlFileTypeCpanfile.CPANFILE, false)); } }