code: private Set<String> readLocalFormatters(I_CmsXmlContentLocation node) {
  
          Set<String> addFormatters = new HashSet<String>();
          String path = m_cms.getSitePath(node.getDocument().getFile());
          path = CmsStringUtil.joinPaths(CmsResource.getParentFolder(path), ".formatters");
          try {
              if (m_cms.existsResource(path, CmsResourceFilter.IGNORE_EXPIRATION)) {
                  I_CmsResourceType macroType = OpenCms.getResourceManager().getResourceType(
                      CmsFormatterConfigurationCache.TYPE_MACRO_FORMATTER);
                  CmsResourceFilter filter = CmsResourceFilter.IGNORE_EXPIRATION.addRequireType(macroType);
                  List<CmsResource> macroFormatters = m_cms.readResources(path, filter);
                  for (CmsResource formatter : macroFormatters) {
                      addFormatters.add(formatter.getStructureId().toString());
                  }
                  I_CmsResourceType flexType = OpenCms.getResourceManager().getResourceType(
                      CmsFormatterConfigurationCache.TYPE_FLEX_FORMATTER);
                  CmsResourceFilter filterFlex = CmsResourceFilter.IGNORE_EXPIRATION.addRequireType(flexType);
                  List<CmsResource> flexFormatters = m_cms.readResources(path, filterFlex);
                  for (CmsResource formatter : flexFormatters) {
                      addFormatters.add(formatter.getStructureId().toString());
                  }
              }
          } catch (CmsException e) {
              LOG.warn(e.getMessage(), e);
          }
          return addFormatters;
      }
docs: Reads the local macro or flex formatters from the .formatters folder if present.<p>
  
  @param node the xml content node
  
  @return the local formatters